Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[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);
-		}
-	}
-
-}

Back to the top