Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 166015 Details for
Bug 157878
[CommonNavigator] Confusing working set menu items when showing working sets at top level
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Work in progress
clipboard.txt (text/plain), 36.78 KB, created by
Francis Upton IV
on 2010-04-25 06:25:26 EDT
(
hide
)
Description:
Work in progress
Filename:
MIME Type:
Creator:
Francis Upton IV
Created:
2010-04-25 06:25:26 EDT
Size:
36.78 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.ide >Index: src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java,v >retrieving revision 1.27 >diff -u -r1.27 ResourceWorkingSetPage.java >--- src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java 8 Feb 2010 15:02:15 -0000 1.27 >+++ src/org/eclipse/ui/internal/ide/dialogs/ResourceWorkingSetPage.java 25 Apr 2010 10:24:39 -0000 >@@ -73,6 +73,12 @@ > */ > public class ResourceWorkingSetPage extends WizardPage implements > IWorkingSetPage { >+ >+ /** >+ * >+ */ >+ public static final String ID = "org.eclipse.ui.resourceWorkingSetPage"; //$NON-NLS-1$ >+ > private final static int SIZING_SELECTION_WIDGET_WIDTH = 50; > > private final static int SIZING_SELECTION_WIDGET_HEIGHT = 200; >#P org.eclipse.ui.navigator.resources >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF,v >retrieving revision 1.31 >diff -u -r1.31 MANIFEST.MF >--- META-INF/MANIFEST.MF 20 Apr 2010 05:05:53 -0000 1.31 >+++ META-INF/MANIFEST.MF 25 Apr 2010 10:24:40 -0000 >@@ -21,6 +21,7 @@ > org.eclipse.ui.views.properties.tabbed;bundle-version="[3.5.0,4.0.0)", > org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.0.0)", > org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)", >- org.eclipse.ltk.ui.refactoring;bundle-version="[3.5.0,4.0.0)" >+ org.eclipse.ltk.ui.refactoring;bundle-version="[3.5.0,4.0.0)", >+ com.ibm.icu > Bundle-RequiredExecutionEnvironment: J2SE-1.4 > Bundle-ActivationPolicy: lazy >Index: src/org/eclipse/ui/internal/navigator/resources/actions/ConfigureWorkingSetAction.java >=================================================================== >RCS file: src/org/eclipse/ui/internal/navigator/resources/actions/ConfigureWorkingSetAction.java >diff -N src/org/eclipse/ui/internal/navigator/resources/actions/ConfigureWorkingSetAction.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/navigator/resources/actions/ConfigureWorkingSetAction.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,72 @@ >+/******************************************************************************* >+ * Copyright (c) 2000, 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.ui.internal.navigator.resources.actions; >+ >+ >+import org.eclipse.jface.action.Action; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.viewers.ILabelProvider; >+import org.eclipse.jface.viewers.ViewerFilter; >+ >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.IAggregateWorkingSet; >+import org.eclipse.ui.IWorkingSet; >+import org.eclipse.ui.IWorkingSetManager; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.actions.WorkingSetFilterActionGroup; >+import org.eclipse.ui.internal.dialogs.WorkingSetConfigurationDialog; >+import org.eclipse.ui.internal.ide.dialogs.ResourceWorkingSetPage; >+import org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorMessages; >+import org.eclipse.ui.internal.navigator.resources.plugin.WorkbenchNavigatorPlugin; >+import org.eclipse.ui.internal.navigator.workingsets.WorkingSetsLabelProvider; >+ >+ >+public class ConfigureWorkingSetAction extends Action { >+ public static final String ID = WorkbenchNavigatorPlugin.PLUGIN_ID + ".ConfigureWorkingSetAction"; //$NON-NLS-1$ >+ >+ private final Shell fShell; >+ private ViewerFilter fFilter; >+ private WorkingSetFilterActionGroup fFilterActionGroup; >+ >+ public ConfigureWorkingSetAction(Shell theShell, ViewerFilter filter, WorkingSetFilterActionGroup filterActionGroup) { >+ super(WorkbenchNavigatorMessages.ConfigureWorkingSetAction_0); >+ setId(ID); >+ fShell= theShell; >+ fFilter = filter; >+ fFilterActionGroup = filterActionGroup; >+ //PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IJavaHelpContextIds.CONFIGURE_WORKING_SETS_ACTION); >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ public void run() { >+ IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); >+ IWorkingSet[] workingSets = workingSetManager.getWorkingSets(); >+ >+ ILabelProvider lp = new WorkingSetsLabelProvider(); >+ WorkingSetConfigurationDialog dialog= new WorkingSetConfigurationDialog(fShell, workingSets, new String[] {ResourceWorkingSetPage.ID},lp, fFilter, "FIXMEhelpContext", false); //$NON-NLS-1$ >+ >+ IWorkingSet workingSet = fFilterActionGroup.getWorkingSet(); >+ if (workingSet != null) { >+ if (workingSet instanceof IAggregateWorkingSet) >+ dialog.setSelection(((IAggregateWorkingSet)workingSet).getComponents()); >+ else >+ dialog.setSelection(new IWorkingSet[] { workingSet }); >+ } >+ >+ if (dialog.open() == IDialogConstants.OK_ID) { >+ IWorkingSet[] selection = dialog.getSelection(); >+ IAggregateWorkingSet selectedWs = (IAggregateWorkingSet) workingSetManager.createAggregateWorkingSet("","",selection); //$NON-NLS-1$ //$NON-NLS-2$ >+ fFilterActionGroup.setWorkingSet(selectedWs); >+ } >+ } >+} >Index: src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java,v >retrieving revision 1.8 >diff -u -r1.8 WorkingSetActionProvider.java >--- src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java 27 Mar 2009 21:50:25 -0000 1.8 >+++ src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetActionProvider.java 25 Apr 2010 10:24:41 -0000 >@@ -19,6 +19,7 @@ > import org.eclipse.ui.IActionBars; > import org.eclipse.ui.IAggregateWorkingSet; > import org.eclipse.ui.IMemento; >+import org.eclipse.ui.IWorkbenchActionConstants; > import org.eclipse.ui.IWorkbenchPreferenceConstants; > import org.eclipse.ui.IWorkingSet; > import org.eclipse.ui.IWorkingSetManager; >@@ -50,6 +51,7 @@ > > private WorkingSetFilterActionGroup workingSetActionGroup; > private WorkingSetRootModeActionGroup workingSetRootModeActionGroup; >+ private ConfigureWorkingSetAction configureWorkingSetAction; > > private Object originalViewerInput = ResourcesPlugin.getWorkspace().getRoot(); > >@@ -71,13 +73,6 @@ > > private boolean listening = false; > >- /* >- * (non-Javadoc) >- * >- * @see >- * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org >- * .eclipse.jface.util.PropertyChangeEvent) >- */ > public void propertyChange(PropertyChangeEvent event) { > String property = event.getProperty(); > Object newValue = event.getNewValue(); >@@ -205,13 +200,6 @@ > > }; > >- /* >- * (non-Javadoc) >- * >- * @see >- * org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator >- * .ICommonActionExtensionSite) >- */ > public void init(ICommonActionExtensionSite aSite) { > viewer = (CommonViewer) aSite.getStructuredViewer(); > contentService = aSite.getContentService(); >@@ -220,6 +208,9 @@ > > workingSetActionGroup = new WorkingSetFilterActionGroup(aSite.getViewSite().getShell(), filterChangeListener); > workingSetRootModeActionGroup = new WorkingSetRootModeActionGroup(viewer, extensionStateModel); >+ >+ configureWorkingSetAction = new ConfigureWorkingSetAction(aSite.getViewSite().getShell(), >+ workingSetFilter, workingSetActionGroup); > > topLevelModeListener = new IPropertyChangeListener() { > public void propertyChange(PropertyChangeEvent event) { >@@ -301,13 +292,6 @@ > emptyWorkingSet = workingSet != null && workingSet.isAggregateWorkingSet() && workingSet.isEmpty(); > } > >- /* >- * (non-Javadoc) >- * >- * @see >- * org.eclipse.ui.navigator.CommonActionProvider#restoreState(org.eclipse >- * .ui.IMemento) >- */ > public void restoreState(IMemento aMemento) { > super.restoreState(aMemento); > >@@ -330,13 +314,6 @@ > } > } > >- /* >- * (non-Javadoc) >- * >- * @see >- * org.eclipse.ui.navigator.CommonActionProvider#saveState(org.eclipse.ui >- * .IMemento) >- */ > public void saveState(IMemento aMemento) { > super.saveState(aMemento); > >@@ -352,13 +329,6 @@ > > } > >- /* >- * (non-Javadoc) >- * >- * @see >- * org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars >- * ) >- */ > public void fillActionBars(IActionBars actionBars) { > if (!contributedToViewMenu) { > try { >@@ -371,13 +341,31 @@ > contributedToViewMenu = true; > } > } >+ >+ if (false) { >+ >+ >+ >+ super.fillActionBars(actionBars); >+ >+ if (!contributedToViewMenu) { >+ if (workingSetRootModeActionGroup != null) { >+ workingSetRootModeActionGroup.fillActionBars(actionBars); >+ } >+ workingSetActionGroup.fillActionBars(actionBars); >+ } >+ >+ contributedToViewMenu = true; >+ >+ if (false) { >+ if (extensionStateModel.getBooleanProperty( >+ WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS)) { >+ if (actionBars.getMenuManager().find(ConfigureWorkingSetAction.ID) == null) >+ actionBars.getMenuManager().insertAfter(IWorkbenchActionConstants.MB_ADDITIONS, configureWorkingSetAction); >+ } else { >+ }}} > } > >- /* >- * (non-Javadoc) >- * >- * @see org.eclipse.ui.actions.ActionGroup#dispose() >- */ > public void dispose() { > super.dispose(); > workingSetActionGroup.dispose(); >Index: src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java,v >retrieving revision 1.11 >diff -u -r1.11 WorkingSetRootModeActionGroup.java >--- src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java 12 May 2009 00:09:25 -0000 1.11 >+++ src/org/eclipse/ui/internal/navigator/resources/actions/WorkingSetRootModeActionGroup.java 25 Apr 2010 10:24:41 -0000 >@@ -83,6 +83,14 @@ > WorkingSetsContentProvider.SHOW_TOP_LEVEL_WORKING_SETS, > groupWorkingSets); > >+ if (groupWorkingSets /*&& fWorkingSetModel.needsConfiguration()*/) { >+ // Need the filter >+ //ConfigureWorkingSetAction action= new ConfigureWorkingSetAction(structuredViewer.getControl().getShell(), stateModel); >+ //action.setWorkingSetModel(fWorkingSetModel); >+ //action.run(); >+ //fWorkingSetModel.configured(); >+ } >+ > structuredViewer.getControl().setRedraw(false); > try { > structuredViewer.refresh(); >Index: src/org/eclipse/ui/internal/navigator/resources/plugin/WorkbenchNavigatorMessages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/plugin/WorkbenchNavigatorMessages.java,v >retrieving revision 1.12 >diff -u -r1.12 WorkbenchNavigatorMessages.java >--- src/org/eclipse/ui/internal/navigator/resources/plugin/WorkbenchNavigatorMessages.java 25 May 2009 20:52:23 -0000 1.12 >+++ src/org/eclipse/ui/internal/navigator/resources/plugin/WorkbenchNavigatorMessages.java 25 Apr 2010 10:24:41 -0000 >@@ -49,6 +49,8 @@ > public static String WorkingSetRootModeActionGroup_Working_Set_; > public static String WorkingSetActionProvider_multipleWorkingSets; > >+ public static String ConfigureWorkingSetAction_0; >+ > public static String CopyAction_Cop_; > public static String CopyAction_Copy_selected_resource_s_; > >Index: src/org/eclipse/ui/internal/navigator/resources/plugin/messages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.navigator.resources/src/org/eclipse/ui/internal/navigator/resources/plugin/messages.properties,v >retrieving revision 1.13 >diff -u -r1.13 messages.properties >--- src/org/eclipse/ui/internal/navigator/resources/plugin/messages.properties 25 May 2009 20:52:22 -0000 1.13 >+++ src/org/eclipse/ui/internal/navigator/resources/plugin/messages.properties 25 Apr 2010 10:24:41 -0000 >@@ -27,6 +27,7 @@ > DropAdapter_problemsMoving=Problems occurred while moving resources. > DropAdapter_dropOperationErrorOther=An error occurred during the drop operation. > NewActionProvider_NewMenu_label=&New >+ConfigureWorkingSetAction_0=Configure &Working Sets... > CopyAction_Cop_=Copy > CopyAction_Copy_selected_resource_s_=Copy selected resource(s) > PasteAction_Past_=Paste >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java,v >retrieving revision 1.124 >diff -u -r1.124 WorkbenchMessages.java >--- Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java 19 Jan 2010 14:03:56 -0000 1.124 >+++ Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java 25 Apr 2010 10:24:42 -0000 >@@ -846,6 +846,17 @@ > public static String WorkingSetSelectionDialog_newButton_label; > public static String WorkingSetSelectionDialog_removeButton_label; > >+ public static String WorkingSetConfigurationDialog_title; >+ public static String WorkingSetConfigurationDialog_message; >+ public static String WorkingSetConfigurationDialog_new_label; >+ public static String WorkingSetConfigurationDialog_edit_label; >+ public static String WorkingSetConfigurationDialog_remove_label; >+ public static String WorkingSetConfigurationDialog_up_label; >+ public static String WorkingSetConfigurationDialog_down_label; >+ public static String WorkingSetConfigurationDialog_selectAll_label; >+ public static String WorkingSetConfigurationDialog_deselectAll_label; >+ public static String WorkingSetConfigurationDialog_sort_working_sets; >+ > public static String WorkbenchPage_workingSet_default_label; > public static String WorkbenchPage_workingSet_multi_label; > >Index: Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetConfigurationDialog.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetConfigurationDialog.java >diff -N Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetConfigurationDialog.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/dialogs/WorkingSetConfigurationDialog.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,672 @@ >+/******************************************************************************* >+ * Copyright (c) 2000, 2010 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ * Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font >+ * should be activated and used by other components. >+ *******************************************************************************/ >+package org.eclipse.ui.internal.dialogs; >+ >+import java.util.ArrayList; >+import java.util.Arrays; >+import java.util.Comparator; >+import java.util.HashMap; >+import java.util.HashSet; >+import java.util.Iterator; >+import java.util.List; >+import java.util.Map; >+import java.util.Set; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.viewers.CheckStateChangedEvent; >+import org.eclipse.jface.viewers.CheckboxTableViewer; >+import org.eclipse.jface.viewers.DoubleClickEvent; >+import org.eclipse.jface.viewers.ICheckStateListener; >+import org.eclipse.jface.viewers.IDoubleClickListener; >+import org.eclipse.jface.viewers.ILabelProvider; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.ISelectionChangedListener; >+import org.eclipse.jface.viewers.IStructuredContentProvider; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.SelectionChangedEvent; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.jface.viewers.Viewer; >+import org.eclipse.jface.viewers.ViewerComparator; >+import org.eclipse.jface.viewers.ViewerFilter; >+import org.eclipse.jface.window.Window; >+import org.eclipse.jface.wizard.WizardDialog; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.SelectionAdapter; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.IWorkingSet; >+import org.eclipse.ui.IWorkingSetManager; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.dialogs.IWorkingSetEditWizard; >+import org.eclipse.ui.dialogs.IWorkingSetNewWizard; >+import org.eclipse.ui.dialogs.SelectionDialog; >+import org.eclipse.ui.internal.WorkbenchMessages; >+import org.eclipse.ui.internal.WorkingSetComparator; >+ >+public class WorkingSetConfigurationDialog extends SelectionDialog { >+ >+ private List fAllWorkingSets; >+ private CheckboxTableViewer fTableViewer; >+ >+ private Button fNewButton; >+ private Button fEditButton; >+ private Button fRemoveButton; >+ private Button fUpButton; >+ private Button fDownButton; >+ private Button fSelectAll; >+ private Button fDeselectAll; >+ >+ /** >+ * Sort working sets button. >+ * >+ * @since 3.5 >+ */ >+ private Button fSortWorkingSet; >+ >+ // Sorting not presently supported by the platform >+ private boolean fShowSort = false; >+ >+ private IWorkingSet[] fResult; >+ private List fAddedWorkingSets; >+ private List fRemovedWorkingSets; >+ private Map fEditedWorkingSets; >+ private List fRemovedMRUWorkingSets; >+ private String[] fNewWorkingSets; >+ >+ private ILabelProvider fLabelProvider; >+ private ViewerFilter fFilter; >+ private String fHelpContext; >+ >+ private int nextButtonId= IDialogConstants.CLIENT_ID + 1; >+ >+ /** >+ * Value of sorted state of working sets. >+ * >+ * @since 3.5 >+ */ >+ private boolean fIsSortingEnabled; >+ >+ /** >+ * The working set comparator. >+ * >+ * @since 3.5 >+ */ >+ private Comparator fComparator; >+ >+ public WorkingSetConfigurationDialog(Shell parentShell, IWorkingSet[] allWorkingSets, >+ String[] newWorkingSets, ILabelProvider labelProvider, ViewerFilter filter, >+ String helpContext, boolean isSortingEnabled) { >+ super(parentShell); >+ setTitle(WorkbenchMessages.WorkingSetConfigurationDialog_title); >+ setMessage(WorkbenchMessages.WorkingSetConfigurationDialog_message); >+ fNewWorkingSets = newWorkingSets; >+ fAllWorkingSets= new ArrayList(allWorkingSets.length); >+ fFilter = filter; >+ for (int i= 0; i < allWorkingSets.length; i++) { >+ if (fFilter.select(null, null, allWorkingSets[i])) >+ fAllWorkingSets.add(allWorkingSets[i]); >+ } >+ fLabelProvider = labelProvider; >+ fHelpContext = helpContext; >+ fIsSortingEnabled= isSortingEnabled; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ protected void configureShell(Shell shell) { >+ super.configureShell(shell); >+ PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, fHelpContext); >+ } >+ >+ /** >+ * Returns the selected working sets >+ * >+ * @return the selected working sets >+ */ >+ public IWorkingSet[] getSelection() { >+ return fResult; >+ } >+ >+ /** >+ * Sets the initial selection >+ * >+ * @param workingSets the initial selection >+ */ >+ public void setSelection(IWorkingSet[] workingSets) { >+ fResult= workingSets; >+ setInitialSelections(workingSets); >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ protected Control createContents(Composite parent) { >+ Control control= super.createContents(parent); >+ setInitialSelection(); >+ updateButtonAvailability(); >+ return control; >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ protected Control createDialogArea(Composite parent) { >+ Composite composite= (Composite)super.createDialogArea(parent); >+ >+ createMessageArea(composite); >+ Composite inner= new Composite(composite, SWT.NONE); >+ inner.setLayoutData(new GridData(GridData.FILL_BOTH)); >+ GridLayout layout= new GridLayout(); >+ layout.numColumns= 2; >+ layout.marginHeight= 0; >+ layout.marginWidth= 0; >+ inner.setLayout(layout); >+ createTableViewer(inner); >+ createOrderButtons(inner); >+ createModifyButtons(composite); >+ if (fIsSortingEnabled) { >+ fTableViewer.setComparator(new ViewerComparator(getComparator()) { >+ /* >+ * @see ViewerComparator#compare(Viewer, Object, Object) >+ * @since 3.5 >+ */ >+ public int compare(Viewer viewer, Object e1, Object e2) { >+ return getComparator().compare(e1, e2); >+ } >+ }); >+ } >+ fTableViewer.setInput(fAllWorkingSets); >+ applyDialogFont(composite); >+ >+ return composite; >+ } >+ >+ private void createTableViewer(Composite parent) { >+ fTableViewer= CheckboxTableViewer.newCheckList(parent, SWT.BORDER | SWT.MULTI); >+ fTableViewer.addCheckStateListener(new ICheckStateListener() { >+ public void checkStateChanged(CheckStateChangedEvent event) { >+ updateButtonAvailability(); >+ } >+ }); >+ GridData data= new GridData(GridData.FILL_BOTH); >+ data.heightHint= convertHeightInCharsToPixels(20); >+ data.widthHint= convertWidthInCharsToPixels(50); >+ fTableViewer.getTable().setLayoutData(data); >+ >+ fTableViewer.addFilter(fFilter); >+ fTableViewer.setLabelProvider(fLabelProvider); >+ fTableViewer.setContentProvider(new IStructuredContentProvider() { >+ public Object[] getElements(Object element) { >+ return ((List)element).toArray(); >+ } >+ public void dispose() { >+ } >+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { >+ } >+ }); >+ fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() { >+ public void selectionChanged(SelectionChangedEvent event) { >+ handleSelectionChanged(); >+ } >+ }); >+ fTableViewer.addDoubleClickListener(new IDoubleClickListener() { >+ public void doubleClick(DoubleClickEvent event) { >+ if (fEditButton.isEnabled()) >+ editSelectedWorkingSet(); >+ } >+ }); >+ } >+ >+ private void createModifyButtons(Composite composite) { >+ Composite buttonComposite= new Composite(composite, SWT.RIGHT); >+ GridLayout layout= new GridLayout(); >+ layout.numColumns= 2; >+ buttonComposite.setLayout(layout); >+ GridData data= new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.GRAB_HORIZONTAL); >+ data.grabExcessHorizontalSpace= true; >+ composite.setData(data); >+ >+ fNewButton= createButton(buttonComposite, nextButtonId++, >+ WorkbenchMessages.WorkingSetConfigurationDialog_new_label, false); >+ fNewButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ createWorkingSet(); >+ } >+ }); >+ >+ fEditButton= createButton(buttonComposite, nextButtonId++, >+ WorkbenchMessages.WorkingSetConfigurationDialog_edit_label, false); >+ fEditButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ editSelectedWorkingSet(); >+ } >+ }); >+ >+ fRemoveButton= createButton(buttonComposite, nextButtonId++, >+ WorkbenchMessages.WorkingSetConfigurationDialog_remove_label, false); >+ fRemoveButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ removeSelectedWorkingSets(); >+ } >+ }); >+ } >+ >+ private void createOrderButtons(Composite parent) { >+ Composite buttons= new Composite(parent, SWT.NONE); >+ buttons.setLayoutData(new GridData(GridData.FILL_VERTICAL)); >+ GridLayout layout= new GridLayout(); >+ layout.marginHeight= 0; >+ layout.marginWidth= 0; >+ buttons.setLayout(layout); >+ >+ fUpButton= new Button(buttons, SWT.PUSH); >+ fUpButton.setText(WorkbenchMessages.WorkingSetConfigurationDialog_up_label); >+ setButtonLayoutData(fUpButton); >+ fUpButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ moveUp(((IStructuredSelection)fTableViewer.getSelection()).toList()); >+ } >+ }); >+ >+ fDownButton= new Button(buttons, SWT.PUSH); >+ fDownButton.setText(WorkbenchMessages.WorkingSetConfigurationDialog_down_label); >+ setButtonLayoutData(fDownButton); >+ fDownButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ moveDown(((IStructuredSelection)fTableViewer.getSelection()).toList()); >+ } >+ }); >+ >+ fSelectAll= new Button(buttons, SWT.PUSH); >+ fSelectAll.setText(WorkbenchMessages.WorkingSetConfigurationDialog_selectAll_label); >+ setButtonLayoutData(fSelectAll); >+ fSelectAll.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ selectAll(); >+ } >+ }); >+ >+ fDeselectAll= new Button(buttons, SWT.PUSH); >+ fDeselectAll.setText(WorkbenchMessages.WorkingSetConfigurationDialog_deselectAll_label); >+ setButtonLayoutData(fDeselectAll); >+ fDeselectAll.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ deselectAll(); >+ } >+ }); >+ /** >+ * A check box that has persistence to sort the working sets alphabetically in the >+ * WorkingSetConfigurationDialog. It restores the unsorted order of the working sets when >+ * unchecked. >+ * >+ * @since 3.5 >+ */ >+ if (fShowSort) { >+ fSortWorkingSet = new Button(parent, SWT.CHECK); >+ fSortWorkingSet >+ .setText(WorkbenchMessages.WorkingSetConfigurationDialog_sort_working_sets); >+ fSortWorkingSet.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, true, false)); >+ fSortWorkingSet.setSelection(fIsSortingEnabled); >+ fSortWorkingSet.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent e) { >+ fIsSortingEnabled = fSortWorkingSet.getSelection(); >+ updateButtonAvailability(); >+ if (fIsSortingEnabled) { >+ fTableViewer.setComparator(new ViewerComparator(getComparator()) { >+ /* >+ * @see ViewerComparator#compare(Viewer, Object, >+ * Object) >+ * >+ * @since 3.5 >+ */ >+ public int compare(Viewer viewer, Object e1, Object e2) { >+ return getComparator().compare(e1, e2); >+ } >+ }); >+ } else { >+ fTableViewer.setComparator(null); >+ } >+ } >+ }); >+ } >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ protected void okPressed() { >+ List newResult= getResultWorkingSets(); >+ fResult= (IWorkingSet[])newResult.toArray(new IWorkingSet[newResult.size()]); >+ setResult(newResult); >+ super.okPressed(); >+ } >+ >+ private List getResultWorkingSets() { >+ Object[] checked= fTableViewer.getCheckedElements(); >+ return new ArrayList(Arrays.asList(checked)); >+ } >+ >+ /** >+ * {@inheritDoc} >+ */ >+ protected void cancelPressed() { >+ restoreAddedWorkingSets(); >+ restoreChangedWorkingSets(); >+ restoreRemovedWorkingSets(); >+ super.cancelPressed(); >+ } >+ >+ private void setInitialSelection() { >+ List selections= getInitialElementSelections(); >+ if (!selections.isEmpty()) { >+ fTableViewer.setCheckedElements(selections.toArray()); >+ } >+ } >+ >+ private void createWorkingSet() { >+ IWorkingSetManager manager= PlatformUI.getWorkbench().getWorkingSetManager(); >+ IWorkingSetNewWizard wizard = manager.createWorkingSetNewWizard(fNewWorkingSets); >+ // the wizard can't be null since we have at least the Java working set. >+ WizardDialog dialog= new WizardDialog(getShell(), wizard); >+ dialog.create(); >+ if (dialog.open() == Window.OK) { >+ IWorkingSet workingSet= wizard.getSelection(); >+ if (fFilter.select(null, null, workingSet)) { >+ fAllWorkingSets.add(workingSet); >+ fTableViewer.add(workingSet); >+ fTableViewer.setSelection(new StructuredSelection(workingSet), true); >+ fTableViewer.setChecked(workingSet, true); >+ manager.addWorkingSet(workingSet); >+ fAddedWorkingSets.add(workingSet); >+ } >+ } >+ } >+ >+ private void editSelectedWorkingSet() { >+ IWorkingSetManager manager= PlatformUI.getWorkbench().getWorkingSetManager(); >+ IWorkingSet editWorkingSet= (IWorkingSet)((IStructuredSelection)fTableViewer.getSelection()).getFirstElement(); >+ IWorkingSetEditWizard wizard= manager.createWorkingSetEditWizard(editWorkingSet); >+ WizardDialog dialog= new WizardDialog(getShell(), wizard); >+ IWorkingSet originalWorkingSet= (IWorkingSet)fEditedWorkingSets.get(editWorkingSet); >+ boolean firstEdit= originalWorkingSet == null; >+ >+ // save the original working set values for restoration when selection >+ // dialog is cancelled. >+ if (firstEdit) { >+ originalWorkingSet= >+ PlatformUI.getWorkbench().getWorkingSetManager(). >+ createWorkingSet(editWorkingSet.getName(), editWorkingSet.getElements()); >+ } else { >+ fEditedWorkingSets.remove(editWorkingSet); >+ } >+ dialog.create(); >+ if (dialog.open() == Window.OK) { >+ editWorkingSet= wizard.getSelection(); >+ if (fIsSortingEnabled) >+ fTableViewer.refresh(); >+ else >+ fTableViewer.update(editWorkingSet, null); >+ >+ // make sure ok button is enabled when the selected working set >+ // is edited. Fixes bug 33386. >+ updateButtonAvailability(); >+ } >+ fEditedWorkingSets.put(editWorkingSet, originalWorkingSet); >+ } >+ >+ /** >+ * Called when the selection has changed. >+ */ >+ void handleSelectionChanged() { >+ updateButtonAvailability(); >+ } >+ >+ /** >+ * Overrides method in Dialog >+ * >+ * @see org.eclipse.jface.dialogs.Dialog#open() >+ */ >+ public int open() { >+ fAddedWorkingSets= new ArrayList(); >+ fRemovedWorkingSets= new ArrayList(); >+ fEditedWorkingSets= new HashMap(); >+ fRemovedMRUWorkingSets= new ArrayList(); >+ return super.open(); >+ } >+ >+ /** >+ * Removes the selected working sets from the workbench. >+ */ >+ private void removeSelectedWorkingSets() { >+ ISelection selection= fTableViewer.getSelection(); >+ if (selection instanceof IStructuredSelection) { >+ IWorkingSetManager manager= PlatformUI.getWorkbench().getWorkingSetManager(); >+ Iterator iter= ((IStructuredSelection)selection).iterator(); >+ while (iter.hasNext()) { >+ IWorkingSet workingSet= (IWorkingSet)iter.next(); >+ if (fAddedWorkingSets.contains(workingSet)) { >+ fAddedWorkingSets.remove(workingSet); >+ } else { >+ IWorkingSet[] recentWorkingSets= manager.getRecentWorkingSets(); >+ for (int i= 0; i < recentWorkingSets.length; i++) { >+ if (workingSet.equals(recentWorkingSets[i])) { >+ fRemovedMRUWorkingSets.add(workingSet); >+ break; >+ } >+ } >+ fRemovedWorkingSets.add(workingSet); >+ } >+ fAllWorkingSets.remove(workingSet); >+ manager.removeWorkingSet(workingSet); >+ } >+ fTableViewer.remove(((IStructuredSelection)selection).toArray()); >+ } >+ } >+ >+ /** >+ * Removes newly created working sets from the working set manager. >+ */ >+ private void restoreAddedWorkingSets() { >+ IWorkingSetManager manager= PlatformUI.getWorkbench().getWorkingSetManager(); >+ Iterator iterator= fAddedWorkingSets.iterator(); >+ >+ while (iterator.hasNext()) { >+ manager.removeWorkingSet(((IWorkingSet)iterator.next())); >+ } >+ } >+ >+ /** >+ * Rolls back changes to working sets. >+ */ >+ private void restoreChangedWorkingSets() { >+ Iterator iterator= fEditedWorkingSets.keySet().iterator(); >+ >+ while (iterator.hasNext()) { >+ IWorkingSet editedWorkingSet= (IWorkingSet)iterator.next(); >+ IWorkingSet originalWorkingSet= (IWorkingSet)fEditedWorkingSets.get(editedWorkingSet); >+ >+ if (editedWorkingSet.getName().equals(originalWorkingSet.getName()) == false) { >+ editedWorkingSet.setName(originalWorkingSet.getName()); >+ } >+ if (editedWorkingSet.getElements().equals(originalWorkingSet.getElements()) == false) { >+ editedWorkingSet.setElements(originalWorkingSet.getElements()); >+ } >+ } >+ } >+ >+ /** >+ * Adds back removed working sets to the working set manager. >+ */ >+ private void restoreRemovedWorkingSets() { >+ IWorkingSetManager manager= PlatformUI.getWorkbench().getWorkingSetManager(); >+ Iterator iterator= fRemovedWorkingSets.iterator(); >+ >+ while (iterator.hasNext()) { >+ manager.addWorkingSet(((IWorkingSet)iterator.next())); >+ } >+ iterator= fRemovedMRUWorkingSets.iterator(); >+ while (iterator.hasNext()) { >+ manager.addRecentWorkingSet(((IWorkingSet)iterator.next())); >+ } >+ } >+ >+ /** >+ * Updates the modify buttons' enabled state based on the current seleciton. >+ */ >+ private void updateButtonAvailability() { >+ IStructuredSelection selection= (IStructuredSelection) fTableViewer.getSelection(); >+ boolean hasSelection= !selection.isEmpty(); >+ boolean hasSingleSelection= selection.size() == 1; >+ >+ fRemoveButton.setEnabled(hasSelection && areAllGlobalWorkingSets(selection)); >+ fEditButton.setEnabled(hasSingleSelection && ((IWorkingSet)selection.getFirstElement()).isEditable()); >+ if (fUpButton != null) { >+ fUpButton.setEnabled(canMoveUp()); >+ } >+ if (fDownButton != null) { >+ fDownButton.setEnabled(canMoveDown()); >+ } >+ } >+ >+ private boolean areAllGlobalWorkingSets(IStructuredSelection selection) { >+ Set globals= new HashSet(Arrays.asList(PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets())); >+ for (Iterator iter= selection.iterator(); iter.hasNext();) { >+ if (!globals.contains(iter.next())) >+ return false; >+ } >+ return true; >+ } >+ >+ private void moveUp(List toMoveUp) { >+ if (toMoveUp.size() > 0) { >+ setElements(moveUp(fAllWorkingSets, toMoveUp)); >+ fTableViewer.reveal(toMoveUp.get(0)); >+ } >+ } >+ >+ private void moveDown(List toMoveDown) { >+ if (toMoveDown.size() > 0) { >+ setElements(reverse(moveUp(reverse(fAllWorkingSets), toMoveDown))); >+ fTableViewer.reveal(toMoveDown.get(toMoveDown.size() - 1)); >+ } >+ } >+ >+ private void setElements(List elements) { >+ fAllWorkingSets= elements; >+ fTableViewer.setInput(fAllWorkingSets); >+ updateButtonAvailability(); >+ } >+ >+ private List moveUp(List elements, List move) { >+ int nElements= elements.size(); >+ List res= new ArrayList(nElements); >+ Object floating= null; >+ for (int i= 0; i < nElements; i++) { >+ Object curr= elements.get(i); >+ if (move.contains(curr)) { >+ res.add(curr); >+ } else { >+ if (floating != null) { >+ res.add(floating); >+ } >+ floating= curr; >+ } >+ } >+ if (floating != null) { >+ res.add(floating); >+ } >+ return res; >+ } >+ >+ private List reverse(List p) { >+ List reverse= new ArrayList(p.size()); >+ for (int i= p.size() - 1; i >= 0; i--) { >+ reverse.add(p.get(i)); >+ } >+ return reverse; >+ } >+ >+ private boolean canMoveUp() { >+ if (!fIsSortingEnabled) { >+ int[] indc= fTableViewer.getTable().getSelectionIndices(); >+ for (int i= 0; i < indc.length; i++) { >+ if (indc[i] != i) { >+ return true; >+ } >+ } >+ } >+ return false; >+ } >+ >+ private boolean canMoveDown() { >+ if (!fIsSortingEnabled) { >+ int[] indc= fTableViewer.getTable().getSelectionIndices(); >+ int k= fAllWorkingSets.size() - 1; >+ for (int i= indc.length - 1; i >= 0; i--, k--) { >+ if (indc[i] != k) { >+ return true; >+ } >+ } >+ } >+ return false; >+ } >+ >+ //---- select / deselect -------------------------------------------------- >+ >+ private void selectAll() { >+ fTableViewer.setAllChecked(true); >+ } >+ >+ private void deselectAll() { >+ fTableViewer.setAllChecked(false); >+ } >+ >+ /** >+ * Returns the list of newly added working sets through this dialog. >+ * >+ * @return the list of newly added working sets >+ * @since 3.5 >+ */ >+ public List getNewlyAddedWorkingSets() { >+ return fAddedWorkingSets; >+ >+ } >+ >+ /** >+ * Returns whether sorting is enabled for working sets. >+ * >+ * @return <code>true</code> if sorting is enabled, <code>false</code> otherwise >+ * @since 3.5 >+ */ >+ public boolean isSortingEnabled() { >+ return fIsSortingEnabled; >+ } >+ >+ /** >+ * Returns the working set comparator. >+ * >+ * @return the working set comparator >+ * @since 3.5 >+ */ >+ private Comparator getComparator() { >+ if (fComparator == null) { >+ fComparator = new WorkingSetComparator(); >+ } >+ return fComparator; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/messages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties,v >retrieving revision 1.406 >diff -u -r1.406 messages.properties >--- Eclipse UI/org/eclipse/ui/internal/messages.properties 19 Jan 2010 14:03:56 -0000 1.406 >+++ Eclipse UI/org/eclipse/ui/internal/messages.properties 25 Apr 2010 10:24:44 -0000 >@@ -812,6 +812,18 @@ > WorkingSetSelectionDialog_newButton_label= &New... > WorkingSetSelectionDialog_removeButton_label= &Remove > >+#---- working set configuration dialog ------------------------------------------------ >+WorkingSetConfigurationDialog_title=Configure Working Sets >+WorkingSetConfigurationDialog_message=Select visible &working sets: >+WorkingSetConfigurationDialog_new_label=&New... >+WorkingSetConfigurationDialog_edit_label=&Edit... >+WorkingSetConfigurationDialog_remove_label=&Remove >+WorkingSetConfigurationDialog_up_label=&Up >+WorkingSetConfigurationDialog_down_label=&Down >+WorkingSetConfigurationDialog_selectAll_label=Select &All >+WorkingSetConfigurationDialog_deselectAll_label=Dese&lect All >+WorkingSetConfigurationDialog_sort_working_sets=&Sort working sets >+ > WorkbenchPage_workingSet_default_label=Window Working Set > WorkbenchPage_workingSet_multi_label=Multiple Working Sets >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 157878
:
161472
|
161473
| 166015