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 65721 Details for
Bug 153573
support filtering top level task list elements, e.g. via working sets
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
a quick prototype of the task working set
clipboard19296.txt (text/plain), 23.02 KB, created by
Eugene Kuleshov
on 2007-05-02 22:43:50 EDT
(
hide
)
Description:
a quick prototype of the task working set
Filename:
MIME Type:
Creator:
Eugene Kuleshov
Created:
2007-05-02 22:43:50 EDT
Size:
23.02 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylar.tasks.ui >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/plugin.xml,v >retrieving revision 1.207 >diff -u -r1.207 plugin.xml >--- plugin.xml 1 May 2007 23:19:10 -0000 1.207 >+++ plugin.xml 3 May 2007 02:40:46 -0000 >@@ -773,6 +773,16 @@ > targetId="org.eclipse.ui.DefaultTextEditor"> > </hyperlinkDetector> > </extension> >+ <extension >+ point="org.eclipse.ui.workingSets"> >+ <workingSet >+ elementAdapterClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetElementAdapter" >+ id="org.eclipse.mylar.tasks.ui.workingSet" >+ name="Tasks" >+ pageClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetPage" >+ updaterClass="org.eclipse.mylar.internal.tasks.ui.workingset.TaskWorkingSetUpdater"> >+ </workingSet> >+ </extension> > > > </plugin> >Index: src/org/eclipse/mylar/internal/tasks/ui/views/TaskListContentProvider.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/views/TaskListContentProvider.java,v >retrieving revision 1.17 >diff -u -r1.17 TaskListContentProvider.java >--- src/org/eclipse/mylar/internal/tasks/ui/views/TaskListContentProvider.java 5 Apr 2007 00:04:24 -0000 1.17 >+++ src/org/eclipse/mylar/internal/tasks/ui/views/TaskListContentProvider.java 3 May 2007 02:40:46 -0000 >@@ -15,6 +15,9 @@ > import java.util.List; > import java.util.Set; > >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.jface.util.IPropertyChangeListener; >+import org.eclipse.jface.util.PropertyChangeEvent; > import org.eclipse.jface.viewers.IStructuredContentProvider; > import org.eclipse.jface.viewers.ITreeContentProvider; > import org.eclipse.jface.viewers.Viewer; >@@ -27,6 +30,9 @@ > import org.eclipse.mylar.tasks.core.Task; > import org.eclipse.mylar.tasks.core.TaskArchive; > import org.eclipse.mylar.tasks.ui.TasksUiPlugin; >+import org.eclipse.ui.IWorkingSet; >+import org.eclipse.ui.IWorkingSetManager; >+import org.eclipse.ui.PlatformUI; > > /** > * Provides custom content for the task list, e.g. guaranteed visibility of some >@@ -37,12 +43,19 @@ > * > * @author Mik Kersten > */ >-public class TaskListContentProvider implements IStructuredContentProvider, ITreeContentProvider { >+public class TaskListContentProvider implements IStructuredContentProvider, ITreeContentProvider, IPropertyChangeListener { > > protected final TaskListView view; >+ >+ private final IWorkingSetManager workingSetManager; >+ >+ private IWorkingSet currentWorkingSet; > > public TaskListContentProvider(TaskListView view) { > this.view = view; >+ >+ this.workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); >+ this.workingSetManager.addPropertyChangeListener(this); > } > > public void inputChanged(Viewer v, Object oldInput, Object newInput) { >@@ -50,7 +63,7 @@ > } > > public void dispose() { >- // ignore >+ workingSetManager.removePropertyChangeListener(this); > } > > public Object[] getElements(Object parent) { >@@ -118,11 +131,15 @@ > } > } else if (element instanceof AbstractRepositoryQuery) { > if (selectQuery((AbstractRepositoryQuery) element)) { >- filteredRoots.add(element); >+ if(selectWorkingSet((AbstractRepositoryQuery) element)) { >+ filteredRoots.add(element); >+ } > } > } else if (element instanceof AbstractTaskContainer) { > if (selectContainer((AbstractTaskContainer) element)) { >- filteredRoots.add(element); >+ if(selectWorkingSet((AbstractTaskContainer) element)) { >+ filteredRoots.add(element); >+ } > } > } > } >@@ -132,6 +149,22 @@ > } > } > >+ private boolean selectWorkingSet(AbstractTaskContainer container) { >+ if(currentWorkingSet==null) { >+ return true; >+ } >+ boolean seenTaskWorkingSets = false; >+ for (IAdaptable adaptable : currentWorkingSet.getElements()) { >+ if(adaptable instanceof AbstractTaskContainer) { >+ seenTaskWorkingSets = true; >+ if(container.getHandleIdentifier().equals(((AbstractTaskContainer) adaptable).getHandleIdentifier())) { >+ return true; >+ } >+ } >+ } >+ return !seenTaskWorkingSets; >+ } >+ > /** > * See bug 109693 > */ >@@ -263,4 +296,21 @@ > return false; > } > >+ >+ // IPropertyChangeListener >+ >+ public void propertyChange(PropertyChangeEvent event) { >+ // System.err.println(event.getProperty() + " : " + event.getNewValue()); >+ >+ if(IWorkingSetManager.CHANGE_WORKING_SET_CONTENT_CHANGE.equals(event.getProperty())) { >+ currentWorkingSet = (IWorkingSet) event.getNewValue(); >+ // for (IAdaptable adaptable : currentWorkingSet.getElements()) { >+ // System.err.println(" " + adaptable); >+ // } >+ } >+ >+ // System.err.println(Arrays.toString(currentWorkingSets)); >+ this.view.refreshAndFocus(true); >+ } >+ > } >Index: src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetPage.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetPage.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetPage.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetPage.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,321 @@ >+/******************************************************************************* >+ * Copyright (c) 2004 - 2006 Mylar committers 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 >+ *******************************************************************************/ >+ >+package org.eclipse.mylar.internal.tasks.ui.workingset; >+ >+import java.util.ArrayList; >+import java.util.List; >+import java.util.Set; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.jface.dialogs.Dialog; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.viewers.CheckStateChangedEvent; >+import org.eclipse.jface.viewers.CheckboxTreeViewer; >+import org.eclipse.jface.viewers.ICheckStateListener; >+import org.eclipse.jface.viewers.ITreeContentProvider; >+import org.eclipse.jface.viewers.Viewer; >+import org.eclipse.jface.wizard.WizardPage; >+import org.eclipse.mylar.tasks.core.AbstractTaskContainer; >+import org.eclipse.mylar.tasks.core.ITaskListElement; >+import org.eclipse.mylar.tasks.ui.TasksUiPlugin; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.custom.BusyIndicator; >+import org.eclipse.swt.events.ModifyEvent; >+import org.eclipse.swt.events.ModifyListener; >+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.Label; >+import org.eclipse.swt.widgets.Text; >+import org.eclipse.ui.IWorkingSet; >+import org.eclipse.ui.IWorkingSetManager; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.dialogs.IWorkingSetPage; >+import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; >+ >+/** >+ * Adapted from org.eclipse.ui.internal.ide.dialogs.ResourceWorkingSetPage >+ */ >+public class TaskWorkingSetPage extends WizardPage implements IWorkingSetPage { >+ >+ private final static int SIZING_SELECTION_WIDGET_WIDTH = 50; >+ >+ private final static int SIZING_SELECTION_WIDGET_HEIGHT = 200; >+ >+ private Text text; >+ >+ private CheckboxTreeViewer tree; >+ >+ private IWorkingSet workingSet; >+ >+ private boolean firstCheck = false; >+ >+ >+ public TaskWorkingSetPage() { >+ super("taskWorkingSetPage", //$NON-NLS-1$ >+ "Task Working Set", null); // the icon >+ setDescription("Enter a working set name and select task categories/queries."); >+ } >+ >+ @SuppressWarnings("unchecked") >+ public void finish() { >+ // List<AbstractTaskContainer> elements = getCheckedElements((List<AbstractTaskContainer>) tree.getInput()); >+ Object[] elements = tree.getCheckedElements(); >+ IAdaptable[] adaptables = new IAdaptable[elements.length]; >+ for (int i = 0; i < adaptables.length; i++) { >+ adaptables[i] = (IAdaptable) elements[i]; >+ } >+ >+ if (workingSet == null) { >+ IWorkingSetManager workingSetManager = PlatformUI.getWorkbench().getWorkingSetManager(); >+ workingSet = workingSetManager.createWorkingSet(getWorkingSetName(), adaptables); >+ } else { >+ workingSet.setName(getWorkingSetName()); >+ workingSet.setElements(adaptables); >+ } >+ } >+ >+ public IWorkingSet getSelection() { >+ return workingSet; >+ } >+ >+ public void setSelection(IWorkingSet workingSet) { >+ this.workingSet = workingSet; >+ if (getShell() != null && text != null) { >+ firstCheck = true; >+ initializeCheckedState(); >+ text.setText(workingSet.getName()); >+ } >+ } >+ >+ private String getWorkingSetName() { >+ return text.getText(); >+ } >+ >+ public void createControl(Composite parent) { >+ initializeDialogUnits(parent); >+ >+ Composite composite = new Composite(parent, SWT.NULL); >+ >+ GridLayout layout = new GridLayout(); >+ layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); >+ layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); >+ layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); >+ composite.setLayout(layout); >+ composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); >+ setControl(composite); >+ >+ // PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IIDEHelpContextIds.WORKING_SET_RESOURCE_PAGE); >+ Label label = new Label(composite, SWT.WRAP); >+ label.setText(IDEWorkbenchMessages.ResourceWorkingSetPage_message); >+ label.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL >+ | GridData.HORIZONTAL_ALIGN_FILL >+ | GridData.VERTICAL_ALIGN_CENTER)); >+ >+ text = new Text(composite, SWT.SINGLE | SWT.BORDER); >+ text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL >+ | GridData.HORIZONTAL_ALIGN_FILL)); >+ text.addModifyListener(new ModifyListener() { >+ public void modifyText(ModifyEvent e) { >+ validateInput(); >+ } >+ }); >+ text.setFocus(); >+ // text.setBackground(FieldAssistColors.getRequiredFieldBackgroundColor(text)); >+ >+ label = new Label(composite, SWT.WRAP); >+ label.setText(IDEWorkbenchMessages.ResourceWorkingSetPage_label_tree); >+ label.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL >+ | GridData.HORIZONTAL_ALIGN_FILL >+ | GridData.VERTICAL_ALIGN_CENTER)); >+ >+ tree = new CheckboxTreeViewer(composite); >+ tree.setUseHashlookup(true); >+ >+ final ITreeContentProvider treeContentProvider = new ITreeContentProvider() { >+ >+ @SuppressWarnings("unchecked") >+ public Object[] getChildren(Object parentElement) { >+ if(parentElement instanceof List) { >+ List containers = (List) parentElement; >+ return containers.toArray(new Object[containers.size()]); >+ } >+ return new Object[0]; >+ } >+ >+ @SuppressWarnings("unchecked") >+ public boolean hasChildren(Object element) { >+ return getChildren(element).length > 0; >+ } >+ >+ public Object[] getElements(Object element) { >+ return getChildren(element); >+ } >+ >+ public Object getParent(Object element) { >+ return null; >+ } >+ >+ public void dispose() { >+ } >+ >+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { >+ } >+ }; >+ >+ tree.setContentProvider(treeContentProvider); >+ >+ // XXX get real label provider from the task list >+ // tree.setLabelProvider(new TaskListLabelProvider()); >+ >+ ArrayList<Object> containers = new ArrayList<Object>(); >+ for (ITaskListElement element : (Set<ITaskListElement>) TasksUiPlugin.getTaskListManager().getTaskList().getRootElements()) { >+ if (element instanceof AbstractTaskContainer) { >+ containers.add(element); >+ } >+ } >+ tree.setInput(containers); >+ >+ // tree.setComparator(new ResourceComparator(ResourceComparator.NAME)); >+ >+ GridData data = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL); >+ data.heightHint = SIZING_SELECTION_WIDGET_HEIGHT; >+ data.widthHint = SIZING_SELECTION_WIDGET_WIDTH; >+ tree.getControl().setLayoutData(data); >+ >+ tree.addCheckStateListener(new ICheckStateListener() { >+ public void checkStateChanged(CheckStateChangedEvent event) { >+ handleCheckStateChange(event); >+ } >+ }); >+ >+// tree.addTreeListener(new ITreeViewerListener() { >+// public void treeCollapsed(TreeExpansionEvent event) { >+// } >+// >+// public void treeExpanded(TreeExpansionEvent event) { >+// final Object element = event.getElement(); >+// if (tree.getGrayed(element) == false) { >+// BusyIndicator.showWhile(getShell().getDisplay(), >+// new Runnable() { >+// public void run() { >+// setSubtreeChecked((IContainer) element, >+// tree.getChecked(element), false); >+// } >+// }); >+// } >+// } >+// }); >+ >+ // Add select / deselect all buttons for bug 46669 >+ Composite buttonComposite = new Composite(composite, SWT.NONE); >+ layout = new GridLayout(2, false); >+ layout.marginWidth = 0; >+ layout.marginHeight = 0; >+ layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); >+ buttonComposite.setLayout(layout); >+ buttonComposite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); >+ >+ Button selectAllButton = new Button(buttonComposite, SWT.PUSH); >+ selectAllButton.setText(IDEWorkbenchMessages.ResourceWorkingSetPage_selectAll_label); >+ selectAllButton.setToolTipText(IDEWorkbenchMessages.ResourceWorkingSetPage_selectAll_toolTip); >+ selectAllButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent selectionEvent) { >+ tree.setCheckedElements(treeContentProvider.getElements(tree.getInput())); >+ validateInput(); >+ } >+ }); >+ setButtonLayoutData(selectAllButton); >+ >+ Button deselectAllButton = new Button(buttonComposite, SWT.PUSH); >+ deselectAllButton.setText(IDEWorkbenchMessages.ResourceWorkingSetPage_deselectAll_label); >+ deselectAllButton.setToolTipText(IDEWorkbenchMessages.ResourceWorkingSetPage_deselectAll_toolTip); >+ deselectAllButton.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent selectionEvent) { >+ tree.setCheckedElements(new Object[0]); >+ validateInput(); >+ } >+ }); >+ setButtonLayoutData(deselectAllButton); >+ >+ initializeCheckedState(); >+ if (workingSet != null) { >+ text.setText(workingSet.getName()); >+ } >+ setPageComplete(false); >+ >+ Dialog.applyDialogFont(composite); >+ } >+ >+ private void initializeCheckedState() { >+ BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() { >+ public void run() { >+ Object[] items = null; >+ if (workingSet != null) { >+ items = workingSet.getElements(); >+ if (items != null) { >+ tree.setCheckedElements(items); >+ } >+ } >+ } >+ }); >+ } >+ >+ protected void handleCheckStateChange(final CheckStateChangedEvent event) { >+ BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() { >+ public void run() { >+ AbstractTaskContainer element = (AbstractTaskContainer) event.getElement(); >+ tree.setGrayed(element, false); >+ >+ // boolean state = event.getChecked(); >+ // if (element instanceof AbstractTaskContainer) { >+ // setSubtreeChecked((AbstractTaskContainer) element, state, true); >+ // } >+ // updateParentState(element); >+ validateInput(); >+ } >+ }); >+ } >+ >+ protected void validateInput() { >+ String errorMessage = null; >+ String infoMessage= null; >+ String newText = text.getText(); >+ >+ if (!newText.equals(newText.trim())) { >+ errorMessage = "The name must not have a leading or trailing whitespace."; >+ } else if (firstCheck) { >+ firstCheck = false; >+ return; >+ } >+ if ("".equals(newText)) { //$NON-NLS-1$ >+ errorMessage = "The name must not be empty."; >+ } >+ if (errorMessage == null >+ && (workingSet == null || !newText.equals(workingSet.getName()))) { >+ IWorkingSet[] workingSets = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets(); >+ for (int i = 0; i < workingSets.length; i++) { >+ if (newText.equals(workingSets[i].getName())) { >+ errorMessage = "A working set with the same name already exists."; >+ } >+ } >+ } >+ if (infoMessage == null && tree.getCheckedElements().length == 0) { >+ infoMessage = "No categories/queries selected."; >+ } >+ setMessage(infoMessage, INFORMATION); >+ setErrorMessage(errorMessage); >+ setPageComplete(errorMessage == null); >+ } >+ >+} >+ >Index: src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetUpdater.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,84 @@ >+/******************************************************************************* >+ * Copyright (c) 2004 - 2006 Mylar committers 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 >+ *******************************************************************************/ >+ >+package org.eclipse.mylar.internal.tasks.ui.workingset; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.mylar.tasks.core.AbstractTaskContainer; >+import org.eclipse.mylar.tasks.core.ITask; >+import org.eclipse.mylar.tasks.core.ITaskListChangeListener; >+import org.eclipse.mylar.tasks.ui.TasksUiPlugin; >+import org.eclipse.ui.IWorkingSet; >+import org.eclipse.ui.IWorkingSetUpdater; >+ >+public class TaskWorkingSetUpdater implements IWorkingSetUpdater, ITaskListChangeListener { >+ >+ private List<IWorkingSet> workingSets = new ArrayList<IWorkingSet>(); >+ >+ >+ public TaskWorkingSetUpdater() { >+ TasksUiPlugin.getTaskListManager().getTaskList().addChangeListener(this); >+ } >+ >+ // IWorkingSetUpdater >+ >+ public void add(IWorkingSet workingSet) { >+ // checkElementExistence(workingSet); >+ synchronized (workingSets) { >+ workingSets.add(workingSet); >+ } >+ } >+ >+ public boolean contains(IWorkingSet workingSet) { >+ synchronized(workingSets) { >+ return workingSets.contains(workingSet); >+ } >+ } >+ >+ public boolean remove(IWorkingSet workingSet) { >+ synchronized(workingSets) { >+ return workingSets.remove(workingSet); >+ } >+ } >+ >+ public void dispose() { >+ TasksUiPlugin.getTaskListManager().getTaskList().removeChangeListener(this); >+ } >+ >+ >+ // ITaskListChangeListener >+ >+ public void containerAdded(AbstractTaskContainer container) { >+ } >+ >+ public void containerDeleted(AbstractTaskContainer container) { >+ // XXX remove container from working set >+ } >+ >+ public void containerInfoChanged(AbstractTaskContainer container) { >+ // XXX need to do anything? >+ } >+ >+ public void localInfoChanged(ITask task) { >+ } >+ >+ public void repositoryInfoChanged(ITask task) { >+ } >+ >+ public void taskAdded(ITask task) { >+ } >+ >+ public void taskDeleted(ITask task) { >+ } >+ >+ public void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { >+ } >+ >+} >Index: src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetElementAdapter.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetElementAdapter.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetElementAdapter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/workingset/TaskWorkingSetElementAdapter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,44 @@ >+/******************************************************************************* >+ * Copyright (c) 2004 - 2006 Mylar committers 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 >+ *******************************************************************************/ >+ >+package org.eclipse.mylar.internal.tasks.ui.workingset; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.mylar.tasks.core.AbstractTaskContainer; >+import org.eclipse.ui.IWorkingSet; >+import org.eclipse.ui.IWorkingSetElementAdapter; >+ >+public class TaskWorkingSetElementAdapter implements IWorkingSetElementAdapter { >+ >+ public IAdaptable[] adaptElements(IWorkingSet ws, IAdaptable[] elements) { >+ for (int i = 0; i < elements.length; i++) { >+ IAdaptable adaptable = elements[i]; >+ if (!(adaptable instanceof AbstractTaskContainer)) { >+ return selectContainers(elements); >+ } >+ } >+ return elements; >+ } >+ >+ private IAdaptable[] selectContainers(IAdaptable[] elements) { >+ List<IAdaptable> containers = new ArrayList<IAdaptable>(elements.length); >+ for (IAdaptable adaptable : elements) { >+ if (adaptable instanceof AbstractTaskContainer) { >+ containers.add(adaptable); >+ } >+ } >+ return (IAdaptable[]) containers.toArray(new IAdaptable[containers.size()]); >+ } >+ >+ public void dispose() { >+ } >+ >+}
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 153573
: 65721 |
65722
|
65986
|
65991
|
65992