Author: rob.stryker(a)jboss.com
Date: 2007-05-02 14:15:00 -0400 (Wed, 02 May 2007)
New Revision: 1991
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/PrefsInitializer.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
Log:
Added project-specific preferences
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/PrefsInitializer.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/PrefsInitializer.java 2007-05-02
18:14:57 UTC (rev 1990)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/PrefsInitializer.java 2007-05-02
18:15:00 UTC (rev 1991)
@@ -8,6 +8,7 @@
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.jboss.ide.eclipse.archives.core.CorePreferenceManager;
public class PrefsInitializer extends AbstractPreferenceInitializer {
@@ -54,12 +55,39 @@
}
+ /**
+ * Get the global pref value for this key
+ * @param key
+ * @return
+ */
public static boolean getBoolean(String key) {
- return getBoolean(key, null);
+ return getBoolean(key, null, true);
}
- public static boolean getBoolean(String key, IAdaptable adaptable) {
+
+ /**
+ * Get the *effective* value of this preference upon this adaptable / resource
+ * Effective values are the stored value if project-specific prefs are turned on.
+ * Effective values are the global value if project-specific prefs are *NOT* turned on.
+ *
+ * @param key
+ * @param adaptable
+ * @return
+ */
+// public static boolean getBoolean(String key, IAdaptable adaptable) {
+// return getBoolean(key, adaptable, true);
+// }
+
+ /**
+ *
+ * @param key the preference to be gotten
+ * @param adaptable the project / resource where the pref might be stored
+ * @param effective whether or not to get the raw pref value or the effective value
+ * (based on whether project specific prefs are turned on)
+ * @return
+ */
+ public static boolean getBoolean(String key, IAdaptable adaptable, boolean effective) {
QualifiedName name = new QualifiedName(PackagesUIPlugin.PLUGIN_ID, key);
- if( adaptable != null ) {
+ if( adaptable != null &&
CorePreferenceManager.areProjectSpecificPrefsEnabled(adaptable)) {
IResource project = (IResource)adaptable.getAdapter(IResource.class);
try {
if( project != null && project.getPersistentProperty(name) != null) {
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java 2007-05-02
18:14:57 UTC (rev 1990)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java 2007-05-02
18:15:00 UTC (rev 1991)
@@ -3,6 +3,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -22,8 +23,9 @@
private Button showPackageOutputPath, showFullFilesetRootDir;
private Button showProjectRoot, showAllProjects;
- private Button automaticBuilder;
+ private Button automaticBuilder, overrideButton;
private Group corePrefGroup, viewPrefGroup;
+ private Composite overrideComp;
public MainPreferencePage() {
@@ -44,28 +46,54 @@
}
protected void fillValues() {
+ if( getElement() != null )
+ overrideButton.setSelection(CorePreferenceManager.areProjectSpecificPrefsEnabled(getElement()));
automaticBuilder.setSelection(CorePreferenceManager.isBuilderEnabled(getElement()));
showAllProjects.setSelection(
- PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS, getElement()));
+ PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS, getElement(),
false));
showPackageOutputPath.setSelection(
- PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PACKAGE_OUTPUT_PATH,
getElement()));
+ PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PACKAGE_OUTPUT_PATH,
getElement(), false));
showFullFilesetRootDir.setSelection(
- PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_FULL_FILESET_ROOT_DIR,
getElement()));
+ PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_FULL_FILESET_ROOT_DIR,
getElement(), false));
showProjectRoot.setSelection(
- PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT, getElement()));
+ PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT, getElement(),
false));
showAllProjects.setEnabled(showProjectRoot.getSelection());
if (!showProjectRoot.getSelection())
showAllProjects.setSelection(false);
+
+ if( getElement() != null ) {
+ setWidgetsEnabled(overrideButton.getSelection());
+ }
}
protected void createOverridePrefs(Composite main) {
- System.out.println(getElement());
if( getElement() != null ) {
+ overrideComp = new Composite(main, SWT.NONE);
+ overrideComp.setLayout(new FillLayout());
+ overrideButton = new Button(overrideComp, SWT.CHECK);
+ overrideButton.setText("Enable Project Specific Settings");
+ overrideButton.addSelectionListener(new SelectionListener(){
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ public void widgetSelected(SelectionEvent e) {
+ setWidgetsEnabled(overrideButton.getSelection());
+ }
+ });
}
}
+ protected void setWidgetsEnabled(boolean val) {
+ showPackageOutputPath.setEnabled(val);
+ showProjectRoot.setEnabled(val);
+ showFullFilesetRootDir.setEnabled(val);
+ if( showProjectRoot.getSelection())
+ showAllProjects.setEnabled(val);
+ automaticBuilder.setEnabled(val);
+ }
+
protected void createCorePrefs(Composite main) {
corePrefGroup = new Group(main, SWT.NONE);
corePrefGroup.setText("Core Preferences");
@@ -118,6 +146,9 @@
}
public boolean performOk() {
+ if( getElement() != null ) {
+ CorePreferenceManager.setProjectSpecificPrefs(getElement(),
overrideButton.getSelection());
+ }
CorePreferenceManager.setBuilderEnabled(getElement(),
automaticBuilder.getSelection());
PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_PACKAGE_OUTPUT_PATH,
showPackageOutputPath.getSelection(), getElement());
PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_FULL_FILESET_ROOT_DIR,
showFullFilesetRootDir.getSelection(), getElement());
@@ -125,24 +156,6 @@
PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS,
showAllProjects.getSelection(), getElement());
ProjectArchivesView.getInstance().refreshViewer(null);
- /*
- *
- *
- IProject[] projects;
- if( getElement() == null )
- projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- else
- projects = new IProject[]{ (IProject)getElement().getAdapter(IProject.class)};
-
- for( int i = 0; i < projects.length; i++ ) {
- CorePreferenceManager.setBuilderEnabled(getElement(),
automaticBuilder.getSelection());
- PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_PACKAGE_OUTPUT_PATH,
showPackageOutputPath.getSelection(), getElement());
- PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_FULL_FILESET_ROOT_DIR,
showFullFilesetRootDir.getSelection(), getElement());
- PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT,
showProjectRoot.getSelection(), getElement());
- PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS,
showAllProjects.getSelection(), getElement());
- }
-
- */
return true;
}
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java 2007-05-02
18:14:57 UTC (rev 1990)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java 2007-05-02
18:15:00 UTC (rev 1991)
@@ -1,16 +1,13 @@
package org.jboss.ide.eclipse.archives.ui.providers;
-import java.util.ArrayList;
-
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesCore;
import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
import org.jboss.ide.eclipse.archives.core.model.IArchiveModelNode;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
+import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
public class ArchivesContentProvider implements ITreeContentProvider {
@@ -41,14 +38,7 @@
if( parentElement instanceof IArchiveModelNode && showProjectRoot()) {
IProject[] projects;
if( PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS)) {
- IProject[] projects2 = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- ArrayList list = new ArrayList();
- for( int i = 0; i < projects2.length; i++ ) {
- if( ArchivesCore.packageFileExists(projects2[i])) {
- list.add(projects2[i]);
- }
- }
- projects = (IProject[]) list.toArray(new IProject[list.size()]);
+ projects = ProjectArchivesView.getInstance().getAllProjectsWithPackages();
} else {
projects = new IProject[] { ((IArchiveModelNode)parentElement).getProject()};
}
@@ -79,6 +69,9 @@
}
public boolean hasChildren(Object element) {
+ if( element == null || getChildren(element) == null ) {
+ System.out.println("pause");
+ }
return getChildren(element).length > 0;
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java 2007-05-02
18:14:57 UTC (rev 1990)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java 2007-05-02
18:15:00 UTC (rev 1991)
@@ -5,6 +5,7 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.ISelection;
@@ -37,6 +38,7 @@
import org.jboss.ide.eclipse.archives.core.model.ArchivesCore;
import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
+import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
import org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProvider;
import org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider;
@@ -205,7 +207,11 @@
else {
this.project = project;
book.showPage(loadingPackagesComposite);
- registerProject(project);
+ if( PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS, project,
true)) {
+ registerProjects(getAllProjectsWithPackages(), this.project);
+ } else {
+ registerProjects(new IProject[] {this.project}, this.project);
+ }
return;
}
} else {
@@ -220,16 +226,33 @@
return project;
}
- protected void registerProject(final IProject project) {
+ /**
+ * Registers the projects if and only if a file exists already
+ * @param projects
+ * @param projectToShow
+ */
+ protected void registerProjects(final IProject[] projects, final IProject projectToShow)
{
getSite().getShell().getDisplay().asyncExec(new Runnable () {
public void run () {
- ArchivesModel.instance().registerProject(project, loadingProgress);
+ for( int i = 0; i < projects.length; i++ ) {
+ ArchivesModel.instance().registerProject(projects[i], loadingProgress);
+ }
book.showPage(viewerComposite);
- packageViewer.setInput(ArchivesModel.instance().getRoot(project));
+ packageViewer.setInput(ArchivesModel.instance().getRoot(projectToShow));
}
});
}
+ public IProject[] getAllProjectsWithPackages() {
+ IProject[] projects2 = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ ArrayList list = new ArrayList();
+ for( int i = 0; i < projects2.length; i++ ) {
+ if( ArchivesCore.packageFileExists(projects2[i])) {
+ list.add(projects2[i]);
+ }
+ }
+ return (IProject[]) list.toArray(new IProject[list.size()]);
+ }
public IStructuredSelection getSelection() {
return (IStructuredSelection)packageViewer.getSelection();
}