[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Clean up of Working Set
|
Oops ... should have sent this to the patch list, not the dev list.
----- Original Message -----
From: "Thomas Fletcher" <thomasf@xxxxxxx>
To: <cdt-dev@xxxxxxxxxxx>
Sent: Monday, June 09, 2003 1:45 PM
Subject: [cdt-dev] Clean up of Working Set
> Folks,
>
> Here is a clean up of all the working set code that got accepted as a
> patch < Eclipse 2.1.
> Note that this patch was made from org.eclipse.cdt.internal.ui.cview down
> because I have
> other things in my tree not ready for release.
>
> This patch should remove the need for the following files:
> NewWorkingSetFilterAction.java,
> AdjustWorkingSetFilterAction.java, EditWorkingSetFilterAction.java,
> CWorkingSetFilter.java
>
> For the changelog:
> Removal of the homegrown working set implementation of filters and
actions
> to use the
> stock actions available with the Eclipse 2.1 release.
>
> Thanks,
> Thomas
>
Index: AdjustWorkingSetFilterAction.java
===================================================================
RCS file: AdjustWorkingSetFilterAction.java
diff -N AdjustWorkingSetFilterAction.java
--- AdjustWorkingSetFilterAction.java 20 Feb 2003 21:15:19 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,27 +0,0 @@
-package org.eclipse.cdt.internal.ui.cview;
-
-import org.eclipse.jface.action.Action;
-
-/**
- * @author ThomasF
- *
- * Set a manager with a specific filter type/working set
- */
-public class AdjustWorkingSetFilterAction extends Action {
- CWorkingSetFilter fFilter;
- String fName;
-
- public AdjustWorkingSetFilterAction(String name, String setName, CWorkingSetFilter filter) {
- super(name);
- fName = setName;
- fFilter = filter;
- }
-
- public void run() {
- if(fFilter == null) {
- return;
- }
-
- fFilter.setWorkingSetName(fName);
- }
-}
Index: CView.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java,v
retrieving revision 1.25
diff -u -r1.25 CView.java
--- CView.java 27 May 2003 21:33:02 -0000 1.25
+++ CView.java 9 Jun 2003 17:41:22 -0000
@@ -43,9 +43,7 @@
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
@@ -94,6 +92,7 @@
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ResourceWorkingSetFilter;
import org.eclipse.ui.actions.AddBookmarkAction;
import org.eclipse.ui.actions.BuildAction;
import org.eclipse.ui.actions.CloseResourceAction;
@@ -108,6 +107,7 @@
import org.eclipse.ui.actions.OpenWithMenu;
import org.eclipse.ui.actions.RefreshAction;
import org.eclipse.ui.actions.RenameResourceAction;
+import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
import org.eclipse.ui.dialogs.PropertyDialogAction;
import org.eclipse.ui.part.ISetSelectionTarget;
import org.eclipse.ui.part.PluginTransfer;
@@ -154,8 +154,7 @@
ForwardAction forwardAction;
GoIntoAction goIntoAction;
UpAction upAction;
- NewWorkingSetFilterAction wsFilterAction;
- AdjustWorkingSetFilterAction wsClearFilterAction;
+ WorkingSetFilterActionGroup wsFilterActionGroup;
FrameList frameList;
CViewFrameSource frameSource;
@@ -166,7 +165,8 @@
CLibFilter clibFilter = new CLibFilter ();
ShowLibrariesAction clibFilterAction;
- CWorkingSetFilter workingSetFilter = new CWorkingSetFilter ();
+ ResourceWorkingSetFilter workingSetFilter = new ResourceWorkingSetFilter();
+
ActionContributionItem adjustWorkingSetContributions [] = new ActionContributionItem[5];
// Collapsing
@@ -201,40 +201,34 @@
};
private IPropertyChangeListener workingSetListener = new IPropertyChangeListener() {
+ private void doViewerUpdate() {
+ viewer.getControl().setRedraw(false);
+ viewer.refresh();
+ viewer.getControl().setRedraw(true);
+ }
+
public void propertyChange(PropertyChangeEvent ev) {
String prop = ev.getProperty();
if(prop == null) {
return;
}
- if(prop.equals(CWorkingSetFilter.WORKING_SET_ACTIVE_CHANGED)) {
- updateWorkingSetMenu();
- viewer.getControl().setRedraw(false);
- viewer.refresh();
- viewer.getControl().setRedraw(true);
- } else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_ADD)) {
- updateWorkingSetMenu();
- } else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_NAME_CHANGE)) {
- updateWorkingSetMenu();
+ if(prop.equals(WorkingSetFilterActionGroup.CHANGE_WORKING_SET)) {
+ workingSetFilter.setWorkingSet((IWorkingSet)ev.getNewValue());
+ doViewerUpdate();
} else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE)){
- if(ev.getOldValue() instanceof IWorkingSet) {
- String name = ((IWorkingSet)(ev.getOldValue())).getName();
- String wsName = workingSetFilter.getWorkingSetName();
- if(wsName != null && name.equals(wsName)) {
- viewer.getControl().setRedraw(false);
- viewer.refresh();
- viewer.getControl().setRedraw(true);
+ if(ev.getOldValue() instanceof IWorkingSet && workingSetFilter.getWorkingSet() != null) {
+ if(workingSetFilter.getWorkingSet().equals(ev.getOldValue())) {
+ doViewerUpdate();
}
}
} else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_REMOVE)) {
- if(ev.getOldValue() instanceof IWorkingSet) {
- String name = ((IWorkingSet)(ev.getOldValue())).getName();
- String wsName = workingSetFilter.getWorkingSetName();
- if(wsName != null && name.equals(wsName)) {
- workingSetFilter.setWorkingSetName(null);
+ if(ev.getOldValue() instanceof IWorkingSet && workingSetFilter.getWorkingSet() != null) {
+ if(workingSetFilter.getWorkingSet().equals(ev.getOldValue())) {
+ workingSetFilter.setWorkingSet(null);
+ doViewerUpdate();
}
}
- updateWorkingSetMenu();
}
}
};
@@ -422,10 +416,6 @@
CUIPlugin.getDefault().getProblemMarkerManager().addListener(viewer);
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
- IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
- workingSetFilter.setWorkingSetManager(wsmanager);
-
-
// FIXME: Add Drag and Drop support.
initFrameList();
initRefreshKey();
@@ -455,8 +445,8 @@
makeActions();
//Add the property changes after all of the UI work has been done.
+ IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
wsmanager.addPropertyChangeListener(workingSetListener);
- workingSetFilter.addChangeListener(workingSetListener);
viewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
@@ -559,13 +549,13 @@
return patternFilter;
}
- /**
- * Returns the working set filter for this view.
- * @return the working set filter
- */
- CWorkingSetFilter getWorkingSetFilter() {
- return workingSetFilter;
- }
+// /**
+// * Returns the working set filter for this view.
+// * @return the working set filter
+// */
+// CWorkingSetFilter getWorkingSetFilter() {
+// return workingSetFilter;
+// }
TreeViewer getViewer () {
return viewer;
@@ -601,8 +591,7 @@
patternFilterAction = new FilterSelectionAction(shell, this, "Filters...");
clibFilterAction = new ShowLibrariesAction(shell, this, "Show Referenced Libs");
- wsFilterAction = new NewWorkingSetFilterAction(getViewSite().getShell(), this, "Select Working Set...");
- wsClearFilterAction = new AdjustWorkingSetFilterAction("Deselect Working Set", null, workingSetFilter);
+ wsFilterActionGroup = new WorkingSetFilterActionGroup(getViewSite().getShell(), workingSetListener);
goIntoAction = new GoIntoAction(frameList);
backAction = new BackAction(frameList);
@@ -1039,65 +1028,14 @@
toolBar.add(collapseAllAction);
actionBars.updateActionBars();
- IMenuManager menu = actionBars.getMenuManager();
- menu.add(wsFilterAction);
- menu.add(wsClearFilterAction);
+ wsFilterActionGroup.fillActionBars(actionBars);
- menu.add(new Separator());
- menu.add(new GroupMarker(WORKING_GROUP_MARKER));
- menu.add(new GroupMarker(WORKING_GROUP_MARKER_END));
- menu.add(new Separator());
-
- updateWorkingSetMenu();
+ IMenuManager menu = actionBars.getMenuManager();
//menu.add (clibFilterAction);
menu.add (patternFilterAction);
}
- void updateWorkingSetMenu() {
- IMenuManager menu = getViewSite().getActionBars().getMenuManager();
-
- //Remove the previous entries
- for(int i = 0; i < adjustWorkingSetContributions.length; i++) {
- if(adjustWorkingSetContributions[i] != null) {
- menu.remove(adjustWorkingSetContributions[i]);
- }
- }
-
- //Find out what we are currently using
- String currentWorkingSetName = workingSetFilter.getWorkingSetName();
-
- //If we have no working set, then we can't disable it
- if(wsClearFilterAction != null) {
- wsClearFilterAction.setEnabled((currentWorkingSetName != null));
- }
-
- IWorkingSetManager manager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
- IWorkingSet recentsets [] = manager.getWorkingSets();
- for(int i = 0; i < adjustWorkingSetContributions.length; i++) {
- if(i < recentsets.length) {
- Action action = new AdjustWorkingSetFilterAction(recentsets[i].getName(),
- recentsets[i].getName(),
- workingSetFilter);
- adjustWorkingSetContributions[i] = new ActionContributionItem(action);
- if(currentWorkingSetName != null &&
- currentWorkingSetName.equals(recentsets[i].getName())) {
- adjustWorkingSetContributions[i].getAction().setChecked(true);
- }
- } else {
- adjustWorkingSetContributions[i] = null;
- }
- }
-
- //Put the new entries in
- for(int i = 0; i < adjustWorkingSetContributions.length; i++) {
- if(adjustWorkingSetContributions[i] != null) {
- menu.appendToGroup(WORKING_GROUP_MARKER, adjustWorkingSetContributions[i]);
- }
- }
- }
-
-
/**
* Sets the decorator for the package explorer.
*
@@ -1200,18 +1138,19 @@
}
else
initFilterFromPreferences();
+ }
- //restore working set
+ void restoreState(IMemento memento) {
+ //Restore the working set before we re-build the tree
String wsname = memento.getString(TAG_WORKINGSET);
- if(wsname != null && workingSetFilter != null) {
- IWorkingSet set = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager().getWorkingSet(wsname);
- if(set != null) {
- workingSetFilter.setWorkingSetName(wsname);
- }
+ if(wsname != null) {
+ IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
+ IWorkingSet set = wsmanager.getWorkingSet(wsname);
+ wsFilterActionGroup.setWorkingSet(set);
+ } else {
+ wsFilterActionGroup.setWorkingSet(null);
}
- }
- void restoreState(IMemento memento) {
//ICelement container = CElementFactory.getDefault().getRoot();
CoreModel factory = CoreModel.getDefault();
IMemento childMem = memento.getChild(TAG_EXPANDED);
@@ -1268,7 +1207,7 @@
position = new Integer(posStr).intValue();
bar.setSelection(position);
} catch (NumberFormatException e){}
- }
+ }
}
public void saveState(IMemento memento) {
@@ -1342,9 +1281,12 @@
show= "false"; //$NON-NLS-1$
memento.putString(TAG_SHOWLIBRARIES, show);
- String wsname = workingSetFilter.getWorkingSetName();
- if(wsname != null) {
- memento.putString(TAG_WORKINGSET, wsname);
+ //Save the working set away
+ if(workingSetFilter.getWorkingSet() != null) {
+ String wsname = workingSetFilter.getWorkingSet().getName();
+ if(wsname != null) {
+ memento.putString(TAG_WORKINGSET, wsname);
+ }
}
}
}
Index: CWorkingSetFilter.java
===================================================================
RCS file: CWorkingSetFilter.java
diff -N CWorkingSetFilter.java
--- CWorkingSetFilter.java 20 Feb 2003 21:15:19 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,114 +0,0 @@
-package org.eclipse.cdt.internal.ui.cview;
-
-/*
- * (c) Copyright QNX Software Systems Ltd. 2002.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-
-import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-
-public class CWorkingSetFilter extends ViewerFilter {
- public static final String WORKING_SET_ACTIVE_CHANGED = CUIPlugin.getPluginId() + ".ACTIVE_CHANGED";
-
- private IWorkingSetManager fWorkingSetManager;
- private IWorkingSet fWorkingSet;
- private String fWorkingSetName;
- private ArrayList fListeners;
-
- public CWorkingSetFilter() {
- this(null);
- }
-
- public CWorkingSetFilter(IWorkingSetManager manager) {
- fWorkingSetManager = manager;
- fWorkingSet = null;
- fListeners = new ArrayList(1);
- }
-
- public void setWorkingSetManager(IWorkingSetManager manager) {
- fWorkingSetManager = manager;
- }
-
- public void setWorkingSetName(String name) {
- fWorkingSetName = name;
- if(name == null) {
- fWorkingSet = null;
- notifyChange();
- return;
- }
-
- if(fWorkingSetManager != null) {
- fWorkingSet = fWorkingSetManager.getWorkingSet(fWorkingSetName);
- } else {
- fWorkingSet = null;
- }
-
- notifyChange();
- }
-
- public String getWorkingSetName() {
- return fWorkingSetName;
- }
-
- public void addChangeListener(IPropertyChangeListener listener) {
- fListeners.remove(listener);
- fListeners.add(listener);
- }
-
- public void removeChangeListener(IPropertyChangeListener listener) {
- fListeners.remove(listener);
- }
-
- private void notifyChange() {
- PropertyChangeEvent ev = new PropertyChangeEvent(this, WORKING_SET_ACTIVE_CHANGED, null, null);
- for(int i = 0; i < fListeners.size(); i++) {
- IPropertyChangeListener l = (IPropertyChangeListener)fListeners.get(i);
- l.propertyChange(ev);
- }
- }
-
- /* (non-Javadoc)
- * Method declared on ViewerFilter.
- */
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- //No filter set, everything allowed
- if(fWorkingSet == null) {
- return true;
- }
-
- IResource resource = null;
- if (element instanceof IResource) {
- resource = (IResource) element;
- } else if (element instanceof IAdaptable) {
- IAdaptable adaptable = (IAdaptable) element;
- resource = (IResource) adaptable.getAdapter(IResource.class);
- }
-
- //We only filter projects out (should this be ICProjects?)
- if(!(resource instanceof IProject)) {
- return true;
- }
-
- //Run our list to see if we are included in this working set
- IAdaptable [] adaptables = fWorkingSet.getElements();
- for(int i = 0; i < adaptables.length; i++) {
- if(adaptables[i].equals(resource)) {
- return true;
- }
- }
-
- //Not in the working set, so we aren't shown
- return false;
- }
-}
Index: NewWorkingSetFilterAction.java
===================================================================
RCS file: NewWorkingSetFilterAction.java
diff -N NewWorkingSetFilterAction.java
--- NewWorkingSetFilterAction.java 20 Feb 2003 21:15:19 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,55 +0,0 @@
-package org.eclipse.cdt.internal.ui.cview;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
-
-/**
- * @author ThomasF
- *
- * This action is specifically designed to invoke the working set selection
- * dialog to allow the user to select/edit a working set.
- */
-public class NewWorkingSetFilterAction extends Action {
- CView cview;
- Shell shell;
-
- public NewWorkingSetFilterAction(Shell shell, CView cview, String label) {
- super(label);
- this.cview = cview;
- this.shell = shell;
- }
-
- public void run() {
- if(cview == null || shell == null) {
- return;
- }
-
- IWorkingSetManager wsmanager = cview.getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
- IWorkingSetSelectionDialog dialog;
- dialog = wsmanager.createWorkingSetSelectionDialog(shell, false);
- if(dialog.open() == Window.CANCEL) {
- return;
- }
-
- IWorkingSet [] selection = dialog.getSelection();
- if(selection.length != 0) {
- CWorkingSetFilter filter = cview.getWorkingSetFilter();
- if(filter == null) {
- return;
- }
-
- filter.setWorkingSetName(selection[0].getName());
-
- TreeViewer viewer= cview.getViewer();
- viewer.getControl().setRedraw(false);
- viewer.refresh();
- viewer.getControl().setRedraw(true);
- }
- }
-
-}