mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Patch from Thomas Fletcher to reuse the component
of Working set in the platform part of 2.1.
This commit is contained in:
parent
4f184d5fef
commit
ed9940f5ac
4 changed files with 49 additions and 303 deletions
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -43,9 +43,7 @@ import org.eclipse.core.resources.IncrementalProjectBuilder;
|
||||||
import org.eclipse.core.runtime.IAdaptable;
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.jface.action.Action;
|
|
||||||
import org.eclipse.jface.action.ActionContributionItem;
|
import org.eclipse.jface.action.ActionContributionItem;
|
||||||
import org.eclipse.jface.action.GroupMarker;
|
|
||||||
import org.eclipse.jface.action.IMenuListener;
|
import org.eclipse.jface.action.IMenuListener;
|
||||||
import org.eclipse.jface.action.IMenuManager;
|
import org.eclipse.jface.action.IMenuManager;
|
||||||
import org.eclipse.jface.action.IToolBarManager;
|
import org.eclipse.jface.action.IToolBarManager;
|
||||||
|
@ -94,6 +92,7 @@ import org.eclipse.ui.IWorkingSet;
|
||||||
import org.eclipse.ui.IWorkingSetManager;
|
import org.eclipse.ui.IWorkingSetManager;
|
||||||
import org.eclipse.ui.PartInitException;
|
import org.eclipse.ui.PartInitException;
|
||||||
import org.eclipse.ui.PlatformUI;
|
import org.eclipse.ui.PlatformUI;
|
||||||
|
import org.eclipse.ui.ResourceWorkingSetFilter;
|
||||||
import org.eclipse.ui.actions.AddBookmarkAction;
|
import org.eclipse.ui.actions.AddBookmarkAction;
|
||||||
import org.eclipse.ui.actions.BuildAction;
|
import org.eclipse.ui.actions.BuildAction;
|
||||||
import org.eclipse.ui.actions.CloseResourceAction;
|
import org.eclipse.ui.actions.CloseResourceAction;
|
||||||
|
@ -108,6 +107,7 @@ import org.eclipse.ui.actions.OpenSystemEditorAction;
|
||||||
import org.eclipse.ui.actions.OpenWithMenu;
|
import org.eclipse.ui.actions.OpenWithMenu;
|
||||||
import org.eclipse.ui.actions.RefreshAction;
|
import org.eclipse.ui.actions.RefreshAction;
|
||||||
import org.eclipse.ui.actions.RenameResourceAction;
|
import org.eclipse.ui.actions.RenameResourceAction;
|
||||||
|
import org.eclipse.ui.actions.WorkingSetFilterActionGroup;
|
||||||
import org.eclipse.ui.dialogs.PropertyDialogAction;
|
import org.eclipse.ui.dialogs.PropertyDialogAction;
|
||||||
import org.eclipse.ui.part.ISetSelectionTarget;
|
import org.eclipse.ui.part.ISetSelectionTarget;
|
||||||
import org.eclipse.ui.part.PluginTransfer;
|
import org.eclipse.ui.part.PluginTransfer;
|
||||||
|
@ -154,8 +154,7 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
ForwardAction forwardAction;
|
ForwardAction forwardAction;
|
||||||
GoIntoAction goIntoAction;
|
GoIntoAction goIntoAction;
|
||||||
UpAction upAction;
|
UpAction upAction;
|
||||||
NewWorkingSetFilterAction wsFilterAction;
|
WorkingSetFilterActionGroup wsFilterActionGroup;
|
||||||
AdjustWorkingSetFilterAction wsClearFilterAction;
|
|
||||||
|
|
||||||
FrameList frameList;
|
FrameList frameList;
|
||||||
CViewFrameSource frameSource;
|
CViewFrameSource frameSource;
|
||||||
|
@ -166,7 +165,8 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
CLibFilter clibFilter = new CLibFilter ();
|
CLibFilter clibFilter = new CLibFilter ();
|
||||||
ShowLibrariesAction clibFilterAction;
|
ShowLibrariesAction clibFilterAction;
|
||||||
|
|
||||||
CWorkingSetFilter workingSetFilter = new CWorkingSetFilter ();
|
ResourceWorkingSetFilter workingSetFilter = new ResourceWorkingSetFilter();
|
||||||
|
|
||||||
ActionContributionItem adjustWorkingSetContributions [] = new ActionContributionItem[5];
|
ActionContributionItem adjustWorkingSetContributions [] = new ActionContributionItem[5];
|
||||||
|
|
||||||
// Collapsing
|
// Collapsing
|
||||||
|
@ -201,40 +201,34 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
};
|
};
|
||||||
|
|
||||||
private IPropertyChangeListener workingSetListener = new IPropertyChangeListener() {
|
private IPropertyChangeListener workingSetListener = new IPropertyChangeListener() {
|
||||||
|
private void doViewerUpdate() {
|
||||||
|
viewer.getControl().setRedraw(false);
|
||||||
|
viewer.refresh();
|
||||||
|
viewer.getControl().setRedraw(true);
|
||||||
|
}
|
||||||
|
|
||||||
public void propertyChange(PropertyChangeEvent ev) {
|
public void propertyChange(PropertyChangeEvent ev) {
|
||||||
String prop = ev.getProperty();
|
String prop = ev.getProperty();
|
||||||
if(prop == null) {
|
if(prop == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prop.equals(CWorkingSetFilter.WORKING_SET_ACTIVE_CHANGED)) {
|
if(prop.equals(WorkingSetFilterActionGroup.CHANGE_WORKING_SET)) {
|
||||||
updateWorkingSetMenu();
|
workingSetFilter.setWorkingSet((IWorkingSet)ev.getNewValue());
|
||||||
viewer.getControl().setRedraw(false);
|
doViewerUpdate();
|
||||||
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();
|
|
||||||
} else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE)){
|
} else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE)){
|
||||||
if(ev.getOldValue() instanceof IWorkingSet) {
|
if(ev.getOldValue() instanceof IWorkingSet && workingSetFilter.getWorkingSet() != null) {
|
||||||
String name = ((IWorkingSet)(ev.getOldValue())).getName();
|
if(workingSetFilter.getWorkingSet().equals(ev.getOldValue())) {
|
||||||
String wsName = workingSetFilter.getWorkingSetName();
|
doViewerUpdate();
|
||||||
if(wsName != null && name.equals(wsName)) {
|
|
||||||
viewer.getControl().setRedraw(false);
|
|
||||||
viewer.refresh();
|
|
||||||
viewer.getControl().setRedraw(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_REMOVE)) {
|
} else if(prop.equals(IWorkingSetManager.CHANGE_WORKING_SET_REMOVE)) {
|
||||||
if(ev.getOldValue() instanceof IWorkingSet) {
|
if(ev.getOldValue() instanceof IWorkingSet && workingSetFilter.getWorkingSet() != null) {
|
||||||
String name = ((IWorkingSet)(ev.getOldValue())).getName();
|
if(workingSetFilter.getWorkingSet().equals(ev.getOldValue())) {
|
||||||
String wsName = workingSetFilter.getWorkingSetName();
|
workingSetFilter.setWorkingSet(null);
|
||||||
if(wsName != null && name.equals(wsName)) {
|
doViewerUpdate();
|
||||||
workingSetFilter.setWorkingSetName(null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
updateWorkingSetMenu();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -422,10 +416,6 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
CUIPlugin.getDefault().getProblemMarkerManager().addListener(viewer);
|
CUIPlugin.getDefault().getProblemMarkerManager().addListener(viewer);
|
||||||
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
|
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
|
||||||
|
|
||||||
IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
|
|
||||||
workingSetFilter.setWorkingSetManager(wsmanager);
|
|
||||||
|
|
||||||
|
|
||||||
// FIXME: Add Drag and Drop support.
|
// FIXME: Add Drag and Drop support.
|
||||||
initFrameList();
|
initFrameList();
|
||||||
initRefreshKey();
|
initRefreshKey();
|
||||||
|
@ -455,8 +445,8 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
makeActions();
|
makeActions();
|
||||||
|
|
||||||
//Add the property changes after all of the UI work has been done.
|
//Add the property changes after all of the UI work has been done.
|
||||||
|
IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
|
||||||
wsmanager.addPropertyChangeListener(workingSetListener);
|
wsmanager.addPropertyChangeListener(workingSetListener);
|
||||||
workingSetFilter.addChangeListener(workingSetListener);
|
|
||||||
|
|
||||||
viewer.addDoubleClickListener(new IDoubleClickListener() {
|
viewer.addDoubleClickListener(new IDoubleClickListener() {
|
||||||
public void doubleClick(DoubleClickEvent event) {
|
public void doubleClick(DoubleClickEvent event) {
|
||||||
|
@ -559,13 +549,13 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
return patternFilter;
|
return patternFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Returns the working set filter for this view.
|
// * Returns the working set filter for this view.
|
||||||
* @return the working set filter
|
// * @return the working set filter
|
||||||
*/
|
// */
|
||||||
CWorkingSetFilter getWorkingSetFilter() {
|
// CWorkingSetFilter getWorkingSetFilter() {
|
||||||
return workingSetFilter;
|
// return workingSetFilter;
|
||||||
}
|
// }
|
||||||
|
|
||||||
TreeViewer getViewer () {
|
TreeViewer getViewer () {
|
||||||
return viewer;
|
return viewer;
|
||||||
|
@ -601,8 +591,7 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
patternFilterAction = new FilterSelectionAction(shell, this, "Filters...");
|
patternFilterAction = new FilterSelectionAction(shell, this, "Filters...");
|
||||||
clibFilterAction = new ShowLibrariesAction(shell, this, "Show Referenced Libs");
|
clibFilterAction = new ShowLibrariesAction(shell, this, "Show Referenced Libs");
|
||||||
|
|
||||||
wsFilterAction = new NewWorkingSetFilterAction(getViewSite().getShell(), this, "Select Working Set...");
|
wsFilterActionGroup = new WorkingSetFilterActionGroup(getViewSite().getShell(), workingSetListener);
|
||||||
wsClearFilterAction = new AdjustWorkingSetFilterAction("Deselect Working Set", null, workingSetFilter);
|
|
||||||
|
|
||||||
goIntoAction = new GoIntoAction(frameList);
|
goIntoAction = new GoIntoAction(frameList);
|
||||||
backAction = new BackAction(frameList);
|
backAction = new BackAction(frameList);
|
||||||
|
@ -1039,65 +1028,14 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
toolBar.add(collapseAllAction);
|
toolBar.add(collapseAllAction);
|
||||||
actionBars.updateActionBars();
|
actionBars.updateActionBars();
|
||||||
|
|
||||||
|
wsFilterActionGroup.fillActionBars(actionBars);
|
||||||
|
|
||||||
IMenuManager menu = actionBars.getMenuManager();
|
IMenuManager menu = actionBars.getMenuManager();
|
||||||
menu.add(wsFilterAction);
|
|
||||||
menu.add(wsClearFilterAction);
|
|
||||||
|
|
||||||
menu.add(new Separator());
|
|
||||||
menu.add(new GroupMarker(WORKING_GROUP_MARKER));
|
|
||||||
menu.add(new GroupMarker(WORKING_GROUP_MARKER_END));
|
|
||||||
menu.add(new Separator());
|
|
||||||
|
|
||||||
updateWorkingSetMenu();
|
|
||||||
|
|
||||||
//menu.add (clibFilterAction);
|
//menu.add (clibFilterAction);
|
||||||
menu.add (patternFilterAction);
|
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.
|
* Sets the decorator for the package explorer.
|
||||||
*
|
*
|
||||||
|
@ -1200,18 +1138,19 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
initFilterFromPreferences();
|
initFilterFromPreferences();
|
||||||
|
|
||||||
//restore working set
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void restoreState(IMemento memento) {
|
void restoreState(IMemento memento) {
|
||||||
|
//Restore the working set before we re-build the tree
|
||||||
|
String wsname = memento.getString(TAG_WORKINGSET);
|
||||||
|
if(wsname != null) {
|
||||||
|
IWorkingSetManager wsmanager = getViewSite().getWorkbenchWindow().getWorkbench().getWorkingSetManager();
|
||||||
|
IWorkingSet set = wsmanager.getWorkingSet(wsname);
|
||||||
|
wsFilterActionGroup.setWorkingSet(set);
|
||||||
|
} else {
|
||||||
|
wsFilterActionGroup.setWorkingSet(null);
|
||||||
|
}
|
||||||
|
|
||||||
//ICelement container = CElementFactory.getDefault().getRoot();
|
//ICelement container = CElementFactory.getDefault().getRoot();
|
||||||
CoreModel factory = CoreModel.getDefault();
|
CoreModel factory = CoreModel.getDefault();
|
||||||
IMemento childMem = memento.getChild(TAG_EXPANDED);
|
IMemento childMem = memento.getChild(TAG_EXPANDED);
|
||||||
|
@ -1342,9 +1281,12 @@ public class CView extends ViewPart implements IMenuListener, ISetSelectionTarge
|
||||||
show= "false"; //$NON-NLS-1$
|
show= "false"; //$NON-NLS-1$
|
||||||
memento.putString(TAG_SHOWLIBRARIES, show);
|
memento.putString(TAG_SHOWLIBRARIES, show);
|
||||||
|
|
||||||
String wsname = workingSetFilter.getWorkingSetName();
|
//Save the working set away
|
||||||
if(wsname != null) {
|
if(workingSetFilter.getWorkingSet() != null) {
|
||||||
memento.putString(TAG_WORKINGSET, wsname);
|
String wsname = workingSetFilter.getWorkingSet().getName();
|
||||||
|
if(wsname != null) {
|
||||||
|
memento.putString(TAG_WORKINGSET, wsname);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue