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 80391 Details for
Bug 193849
allow filtering of completed tasks open task dialog
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]
Updated patch
clipboard.txt (text/plain), 29.27 KB, created by
Willian Mitsuda
on 2007-10-15 18:20:36 EDT
(
hide
)
Description:
Updated patch
Filename:
MIME Type:
Creator:
Willian Mitsuda
Created:
2007-10-15 18:20:36 EDT
Size:
29.27 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.context.ui >Index: src/org/eclipse/mylyn/internal/context/ui/actions/ContextCopyAction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.context.ui/src/org/eclipse/mylyn/internal/context/ui/actions/ContextCopyAction.java,v >retrieving revision 1.13 >diff -u -r1.13 ContextCopyAction.java >--- src/org/eclipse/mylyn/internal/context/ui/actions/ContextCopyAction.java 26 Sep 2007 18:31:50 -0000 1.13 >+++ src/org/eclipse/mylyn/internal/context/ui/actions/ContextCopyAction.java 15 Oct 2007 22:19:55 -0000 >@@ -9,8 +9,6 @@ > package org.eclipse.mylyn.internal.context.ui.actions; > > import org.eclipse.jface.action.IAction; >-import org.eclipse.jface.dialogs.Dialog; >-import org.eclipse.jface.dialogs.IDialogSettings; > import org.eclipse.jface.dialogs.MessageDialog; > import org.eclipse.jface.window.Window; > import org.eclipse.mylyn.context.core.ContextCorePlugin; >@@ -29,8 +27,6 @@ > */ > public class ContextCopyAction extends TaskContextAction { > >- private static final String OPEN_TASK_ACTION_DIALOG_SETTINGS = "open.task.action.dialog.settings"; >- > private static final String ID_ACTION = "org.eclipse.mylyn.context.ui.task.copy.context.to"; > > public ContextCopyAction() { >@@ -64,16 +60,9 @@ > .getActiveWorkbenchWindow() > .getShell()); > dialog.setTitle("Select Target Task"); >+ dialog.setMessage("&Select the target task (? = any character, * = any String):"); > >- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings(); >- IDialogSettings dlgSettings = settings.getSection(OPEN_TASK_ACTION_DIALOG_SETTINGS); >- if (dlgSettings == null) { >- dlgSettings = settings.addNewSection(OPEN_TASK_ACTION_DIALOG_SETTINGS); >- } >- dialog.setDialogBoundsSettings(dlgSettings, Dialog.DIALOG_PERSISTLOCATION | Dialog.DIALOG_PERSISTSIZE); >- >- int ret = dialog.open(); >- if (ret != Window.OK) { >+ if (dialog.open() != Window.OK) { > return; > } > >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskDialogAction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskDialogAction.java,v >retrieving revision 1.6 >diff -u -r1.6 ActivateTaskDialogAction.java >--- src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskDialogAction.java 23 Aug 2007 00:00:05 -0000 1.6 >+++ src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskDialogAction.java 15 Oct 2007 22:19:56 -0000 >@@ -9,8 +9,6 @@ > package org.eclipse.mylyn.internal.tasks.ui.actions; > > import org.eclipse.jface.action.IAction; >-import org.eclipse.jface.dialogs.Dialog; >-import org.eclipse.jface.dialogs.IDialogSettings; > import org.eclipse.jface.window.Window; > import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; > import org.eclipse.mylyn.tasks.core.AbstractTask; >@@ -32,19 +30,11 @@ > this.window = window; > } > >- private static final String ACTIVATE_TASK_ACTION_DIALOG_SETTINGS = "activate.task.action.dialog.settings"; >- > @Override > public void run(IAction action) { > TaskSelectionDialog dlg = new TaskSelectionDialog(window.getShell()); > dlg.setTitle("Activate Task"); >- >- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings(); >- IDialogSettings dlgSettings = settings.getSection(ACTIVATE_TASK_ACTION_DIALOG_SETTINGS); >- if (dlgSettings == null) { >- dlgSettings = settings.addNewSection(ACTIVATE_TASK_ACTION_DIALOG_SETTINGS); >- } >- dlg.setDialogBoundsSettings(dlgSettings, Dialog.DIALOG_PERSISTLOCATION | Dialog.DIALOG_PERSISTSIZE); >+ dlg.setMessage("&Select a task to activate (? = any character, * = any String):"); > > if (dlg.open() != Window.OK) { > return; >Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java,v >retrieving revision 1.13 >diff -u -r1.13 OpenTaskAction.java >--- src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java 23 Aug 2007 00:00:05 -0000 1.13 >+++ src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java 15 Oct 2007 22:19:56 -0000 >@@ -9,11 +9,8 @@ > package org.eclipse.mylyn.internal.tasks.ui.actions; > > import org.eclipse.jface.action.IAction; >-import org.eclipse.jface.dialogs.Dialog; >-import org.eclipse.jface.dialogs.IDialogSettings; > import org.eclipse.jface.window.Window; > import org.eclipse.mylyn.tasks.core.AbstractTask; >-import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; > import org.eclipse.mylyn.tasks.ui.TasksUiUtil; > import org.eclipse.ui.IWorkbenchWindow; > import org.eclipse.ui.IWorkbenchWindowActionDelegate; >@@ -30,27 +27,14 @@ > this.window = window; > } > >- private static final String OPEN_TASK_ACTION_DIALOG_SETTINGS = "open.task.action.dialog.settings"; >- >- private static final String SHOW_IN_BROWSER_SETTING = "show.in.browser.setting"; >- > @Override > public void run(IAction action) { > TaskSelectionDialog dlg = new TaskSelectionDialog(window.getShell()); > dlg.setTitle("Open Task"); >+ dlg.setMessage("&Select a task to open (? = any character, * = any String):"); > dlg.setShowOpenInBrowserOption(true); > >- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings(); >- IDialogSettings dlgSettings = settings.getSection(OPEN_TASK_ACTION_DIALOG_SETTINGS); >- if (dlgSettings == null) { >- dlgSettings = settings.addNewSection(OPEN_TASK_ACTION_DIALOG_SETTINGS); >- } >- dlg.setDialogBoundsSettings(dlgSettings, Dialog.DIALOG_PERSISTLOCATION | Dialog.DIALOG_PERSISTSIZE); >- dlg.setOpenInBrowser(dlgSettings.getBoolean(SHOW_IN_BROWSER_SETTING)); >- >- int ret = dlg.open(); >- dlgSettings.put(SHOW_IN_BROWSER_SETTING, dlg.getOpenInBrowser()); >- if (ret != Window.OK) { >+ if (dlg.open() != Window.OK) { > return; > } > >Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java,v >retrieving revision 1.25 >diff -u -r1.25 TaskSelectionDialog.java >--- src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java 27 Aug 2007 21:56:49 -0000 1.25 >+++ src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java 15 Oct 2007 22:19:56 -0000 >@@ -8,52 +8,46 @@ > > package org.eclipse.mylyn.internal.tasks.ui.actions; > >-import java.util.ArrayList; >-import java.util.Collections; >+import java.util.Comparator; > import java.util.HashSet; >-import java.util.LinkedHashSet; >-import java.util.List; > import java.util.Set; >-import java.util.regex.Pattern; > >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Status; >+import org.eclipse.core.runtime.SubProgressMonitor; >+import org.eclipse.jface.action.Action; >+import org.eclipse.jface.action.IAction; >+import org.eclipse.jface.action.IMenuManager; >+import org.eclipse.jface.dialogs.IDialogSettings; >+import org.eclipse.jface.layout.GridDataFactory; >+import org.eclipse.jface.layout.GridLayoutFactory; > import org.eclipse.jface.text.ITextSelection; >-import org.eclipse.jface.viewers.ArrayContentProvider; >-import org.eclipse.jface.viewers.IOpenListener; >+import org.eclipse.jface.viewers.DecoratingLabelProvider; > import org.eclipse.jface.viewers.ISelection; >-import org.eclipse.jface.viewers.IStructuredSelection; >-import org.eclipse.jface.viewers.OpenEvent; >-import org.eclipse.jface.viewers.StructuredSelection; >-import org.eclipse.jface.viewers.TableViewer; >-import org.eclipse.jface.viewers.Viewer; >-import org.eclipse.jface.viewers.ViewerComparator; >-import org.eclipse.jface.viewers.ViewerFilter; > import org.eclipse.mylyn.internal.tasks.ui.TaskListColorsAndFonts; > import org.eclipse.mylyn.internal.tasks.ui.TaskSearchPage; >+import org.eclipse.mylyn.internal.tasks.ui.views.TaskActivationHistory; >+import org.eclipse.mylyn.internal.tasks.ui.views.TaskDetailLabelProvider; > import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider; > import org.eclipse.mylyn.internal.tasks.ui.views.TaskListFilteredTree; >-import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; > import org.eclipse.mylyn.tasks.core.AbstractTask; >-import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; > import org.eclipse.mylyn.tasks.core.TaskList; > import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; > import org.eclipse.search.internal.ui.SearchDialog; > import org.eclipse.swt.SWT; >-import org.eclipse.swt.events.KeyAdapter; >-import org.eclipse.swt.events.KeyEvent; >-import org.eclipse.swt.events.ModifyEvent; >-import org.eclipse.swt.events.ModifyListener; >-import org.eclipse.swt.layout.GridData; > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.swt.widgets.Control; >-import org.eclipse.swt.widgets.Label; > import org.eclipse.swt.widgets.Shell; >-import org.eclipse.swt.widgets.Text; >+import org.eclipse.ui.IMemento; > import org.eclipse.ui.IWorkbenchWindow; > import org.eclipse.ui.PlatformUI; >-import org.eclipse.ui.dialogs.SelectionStatusDialog; >+import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; >+import org.eclipse.ui.dialogs.SearchPattern; >+import org.eclipse.ui.forms.events.HyperlinkAdapter; > import org.eclipse.ui.forms.events.HyperlinkEvent; >-import org.eclipse.ui.forms.events.IHyperlinkListener; > import org.eclipse.ui.forms.widgets.ImageHyperlink; > > /** >@@ -61,62 +55,110 @@ > * @author Mik Kersten > * @author Eugene Kuleshov > */ >-public class TaskSelectionDialog extends SelectionStatusDialog { >+public class TaskSelectionDialog extends FilteredItemsSelectionDialog { >+ >+ private Button openInBrowserCheck; >+ >+ private static final String TASK_SELECTION_DIALOG_SECTION = "TaskSelectionDialogSection"; >+ >+ private static final String OPEN_IN_BROWSER_SETTING = "OpenInBrowser"; >+ >+ private static final String SHOW_COMPLETED_TASKS_SETTING = "ShowCompletedTasks"; >+ >+ private boolean openInBrowser; >+ >+ public boolean getOpenInBrowser() { >+ return openInBrowser; >+ } >+ >+ public void setOpenInBrowser(boolean openInBrowser) { >+ this.openInBrowser = openInBrowser; >+ } > > /** >- * Implements a {@link ViewFilter} based on content typed in the filter field >+ * Integrates {@link FilteredItemsSelectionDialog} history management with Mylyn's task list activation history >+ * <p> >+ * Due to {@link SelectionHistory} use of memento-based history storage, many methods are overridden > */ >- private static class TaskFilter extends ViewerFilter { >+ private class TaskSelectionHistory extends SelectionHistory { > >- private Pattern pattern; >+ /** >+ * Mylyn's task activation history >+ */ >+ private TaskActivationHistory history = TasksUiPlugin.getTaskListManager().getTaskActivationHistory(); > >- public void setFilterText(String filterText) { >- if (filterText.trim().equals("")) { >- pattern = null; >- } else { >- filterText = filterText.replace("\\", "\\\\"); >- filterText = filterText.replace(".", "\\."); >- filterText = filterText.replace("*", ".*"); >- filterText = filterText.replace("?", ".?"); >- pattern = Pattern.compile(filterText, Pattern.CASE_INSENSITIVE); >- } >+ @Override >+ public synchronized void accessed(Object object) { >+ history.addTask((AbstractTask) object); > } > > @Override >- public boolean select(Viewer viewer, Object parentElement, Object element) { >- if (pattern == null) { >- return TasksUiPlugin.getTaskListManager().getTaskActivationHistory().getPreviousTasks().contains( >- element); >- } >- if (element instanceof AbstractTask) { >- AbstractTask repositoryTask = (AbstractTask) element; >- String taskString = repositoryTask.getTaskKey() + ": " + repositoryTask.getSummary(); >- return pattern.matcher(taskString).find(); >- } else if (element instanceof AbstractTask) { >- String taskString = ((AbstractTask) element).getSummary(); >- return pattern.matcher(taskString).find(); >- } >- return false; >+ public synchronized boolean contains(Object object) { >+ return history.containsTask((AbstractTask) object); > } >- } > >- private TableViewer viewer; >+ @Override >+ public synchronized boolean remove(Object object) { >+ return history.removeTask((AbstractTask) object); >+ } > >- private Button openInBrowserCheck; >+ @Override >+ public synchronized boolean isEmpty() { >+ return !history.hasPrevious(); >+ } > >- private boolean openInBrowser; >+ @Override >+ public void load(IMemento memento) { >+ // do nothing because tasklist history handles this >+ } > >- public boolean getOpenInBrowser() { >- return openInBrowser; >- } >+ @Override >+ public void save(IMemento memento) { >+ // do nothing because tasklist history handles this >+ } > >- public void setOpenInBrowser(boolean openInBrowser) { >- this.openInBrowser = openInBrowser; >+ @Override >+ protected Object restoreItemFromMemento(IMemento memento) { >+ // do nothing because tasklist history handles this >+ return null; >+ } >+ >+ @Override >+ protected void storeItemToMemento(Object item, IMemento memento) { >+ // do nothing because tasklist history handles this >+ } >+ >+ @Override >+ public synchronized Object[] getHistoryItems() { >+ return history.getPreviousTasks().toArray(); >+ } > } > >+ private TaskElementLabelProvider labelProvider; >+ > public TaskSelectionDialog(Shell parent) { > super(parent); >- setShellStyle(getShellStyle() | SWT.RESIZE); >+ setSelectionHistory(new TaskSelectionHistory()); >+ >+ labelProvider = new TaskElementLabelProvider(true); >+ setListLabelProvider(new DecoratingLabelProvider(labelProvider, PlatformUI.getWorkbench() >+ .getDecoratorManager() >+ .getLabelDecorator())); >+ setDetailsLabelProvider(new TaskDetailLabelProvider()); >+ setSeparatorLabel("Task list matches"); >+ >+ // If there is a text selection, use it as the initial filter >+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); >+ ISelection selection = window.getSelectionService().getSelection(); >+ if (selection instanceof ITextSelection) { >+ // Get only get first line >+ String text = ((ITextSelection) selection).getText(); >+ int n = text.indexOf('\n'); >+ if (n > -1) { >+ text.substring(0, n); >+ } >+ setInitialPattern(text); >+ } > } > > private boolean showOpenInBrowserOption; >@@ -129,172 +171,204 @@ > return showOpenInBrowserOption; > } > >+ private ShowCompletedTasksAction showCompletedTasksAction = new ShowCompletedTasksAction(); >+ > @Override >- protected Control createDialogArea(Composite parent) { >- Composite area = (Composite) super.createDialogArea(parent); >+ protected void fillViewMenu(IMenuManager menuManager) { >+ super.fillViewMenu(menuManager); >+ menuManager.add(showCompletedTasksAction); >+ } > >- Label message = new Label(area, SWT.NONE); >- message.setText("&Select a task to open (? = any character, * = any String):"); >- final Text filterText = new Text(area, SWT.SINGLE | SWT.BORDER); >- filterText.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false)); >- >- Label matches = new Label(area, SWT.NONE); >- matches.setText("&Matching tasks:"); >- viewer = new TableViewer(area, SWT.SINGLE | SWT.BORDER); >- Control control = viewer.getControl(); >- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); >- control.setLayoutData(gd); >- gd.widthHint = 400; >- gd.heightHint = 200; >- >- if (showOpenInBrowserOption) { >- openInBrowserCheck = new Button(area, SWT.CHECK); >- openInBrowserCheck.setText("Open with &Browser"); >- openInBrowserCheck.setSelection(openInBrowser); >+ private boolean showCompletedTasks; >+ >+ private class ShowCompletedTasksAction extends Action { >+ >+ public ShowCompletedTasksAction() { >+ super("Show &Completed Tasks", IAction.AS_CHECK_BOX); > } > >- ImageHyperlink openHyperlink = new ImageHyperlink(area, SWT.NONE); >+ @Override >+ public void run() { >+ showCompletedTasks = isChecked(); >+ applyFilter(); >+ } >+ >+ } >+ >+ @Override >+ protected Control createExtendedContentArea(Composite parent) { >+ if (!showOpenInBrowserOption) { >+ return null; >+ } >+ >+ Composite composite = new Composite(parent, SWT.NONE); >+ composite.setLayout(GridLayoutFactory.swtDefaults().margins(0, 5).create()); >+ composite.setLayoutData(GridDataFactory.fillDefaults().create()); >+ >+ openInBrowserCheck = new Button(composite, SWT.CHECK); >+ openInBrowserCheck.setText("Open with &Browser"); >+ openInBrowserCheck.setSelection(openInBrowser); >+ >+ ImageHyperlink openHyperlink = new ImageHyperlink(composite, SWT.NONE); > openHyperlink.setText(TaskListFilteredTree.LABEL_SEARCH); > openHyperlink.setForeground(TaskListColorsAndFonts.COLOR_HYPERLINK_WIDGET); > openHyperlink.setUnderlined(true); >- openHyperlink.addHyperlinkListener(new IHyperlinkListener() { >+ openHyperlink.addHyperlinkListener(new HyperlinkAdapter() { > > public void linkActivated(HyperlinkEvent e) { > getShell().close(); > new SearchDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), TaskSearchPage.ID).open(); > } > >- public void linkEntered(HyperlinkEvent e) { >- // ignore >- } >+ }); > >- public void linkExited(HyperlinkEvent e) { >- // ignore >- } >+ return composite; >+ } > >- }); >- >- final TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(true); >- viewer.setLabelProvider(labelProvider); >- viewer.setContentProvider(new ArrayContentProvider()); >- >- // Compute all existing tasks or query hits (if corresponding task does >- // not exist yet...) >- Set<AbstractTaskContainer> allTasks = new HashSet<AbstractTaskContainer>(); >- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList(); >- allTasks.addAll(taskList.getAllTasks()); >- for (AbstractRepositoryQuery query : taskList.getQueries()) { >- allTasks.addAll(query.getChildren()); >- } >- >- // Compute the task navigation history (in recent-to-older order) >- final List<AbstractTask> taskHistory = new ArrayList<AbstractTask>(TasksUiPlugin.getTaskListManager() >- .getTaskActivationHistory() >- .getPreviousTasks()); >- Collections.reverse(taskHistory); >- >- // Compute the task set who will be presented on dialog; the trick to >- // make the task history appear first on the list is to add them before >- // all other tasks; being a LinkedHashSet, it will not be duplicated >- // (this is VERY IMPORTANT) >- Set<AbstractTaskContainer> taskSet = new LinkedHashSet<AbstractTaskContainer>(taskHistory); >- taskSet.addAll(allTasks); >- viewer.setInput(taskSet); >- >- final TaskSelectionDialog.TaskFilter filter = new TaskSelectionDialog.TaskFilter(); >- viewer.addFilter(filter); >- viewer.setComparator(new ViewerComparator() { >- >- private AbstractTask getCorrespondingTask(Object o) { >- if (o instanceof AbstractTask) { >- return (AbstractTask) o; >- } >- return null; >- } >+ @Override >+ public boolean close() { >+ if (openInBrowserCheck != null) { >+ openInBrowser = openInBrowserCheck.getSelection(); >+ } >+ return super.close(); >+ } > >- @Override >- public int compare(Viewer viewer, Object e1, Object e2) { >- AbstractTask t1 = getCorrespondingTask(e1); >- AbstractTask t2 = getCorrespondingTask(e2); >- boolean isInHistory1 = taskHistory.contains(t1); >- boolean isInHistory2 = taskHistory.contains(t2); >- >- // Being on task history takes precedence... >- if (isInHistory1 && !isInHistory2) { >- return -1; >- } >- if (!isInHistory1 && isInHistory2) { >- return 1; >- } >- >- // Both are in task history; who is more recent? >- if (isInHistory1 && isInHistory2) { >- return taskHistory.indexOf(t1) - taskHistory.indexOf(t2); >- } >+ private class TasksFilter extends ItemsFilter { > >- // Both are not in task history; sort by summary... >- return labelProvider.getText(e1).compareTo(labelProvider.getText(e2)); >- } >+ private boolean showCompletedTasks; > >- }); >- viewer.addOpenListener(new IOpenListener() { >+ public TasksFilter(boolean showCompletedTasks) { >+ super(new SearchPattern()); >+ // Little hack to force always a match inside any part of task text >+ patternMatcher.setPattern("*" + patternMatcher.getPattern()); >+ this.showCompletedTasks = showCompletedTasks; >+ } > >- public void open(OpenEvent event) { >- if (getOkButton().getEnabled()) { >- okPressed(); >- } >+ @Override >+ public boolean isSubFilter(ItemsFilter filter) { >+ if (!super.isSubFilter(filter)) { >+ return false; > } >+ if (filter instanceof TasksFilter) { >+ return showCompletedTasks == ((TasksFilter) filter).showCompletedTasks; >+ } >+ return true; >+ } > >- }); >+ @Override >+ public boolean equalsFilter(ItemsFilter filter) { >+ if (!super.equalsFilter(filter)) { >+ return false; >+ } >+ if (filter instanceof TasksFilter) { >+ return showCompletedTasks == ((TasksFilter) filter).showCompletedTasks; >+ } >+ return true; >+ } > >- filterText.addKeyListener(new KeyAdapter() { >+ @Override >+ public boolean isConsistentItem(Object item) { >+ return item instanceof AbstractTask; >+ } > >- @Override >- public void keyPressed(KeyEvent e) { >- if (e.keyCode == SWT.ARROW_DOWN) { >- viewer.getControl().setFocus(); >- } >+ @Override >+ public boolean matchItem(Object item) { >+ if (!(item instanceof AbstractTask)) { >+ return false; >+ } >+ if (!showCompletedTasks && ((AbstractTask) item).isCompleted()) { >+ return false; > } >+ return matches(labelProvider.getText(item)); >+ } >+ } > >- }); >- filterText.addModifyListener(new ModifyListener() { >+ @Override >+ protected ItemsFilter createFilter() { >+ return new TasksFilter(showCompletedTasks); >+ } > >- public void modifyText(ModifyEvent e) { >- filter.setFilterText(filterText.getText()); >- viewer.refresh(false); >- Object first = viewer.getElementAt(0); >- if (first != null) { >- viewer.setSelection(new StructuredSelection(first)); >- } >- } >+ /** >+ * Caches all tasks; populated at first access >+ */ >+ private Set<AbstractTask> allTasks; > >- }); >- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); >- ISelection selection = window.getSelectionService().getSelection(); >- if (selection instanceof ITextSelection) { >- String text = ((ITextSelection) selection).getText(); >- int n = text.indexOf('\n'); >- if (n > -1) { >- text.substring(0, n); >- } >- filterText.setText(text); >- filterText.setSelection(0, text.length()); >+ @Override >+ protected void fillContentProvider(AbstractContentProvider contentProvider, ItemsFilter itemsFilter, >+ IProgressMonitor progressMonitor) throws CoreException { >+ progressMonitor.beginTask("Search for tasks", 100); >+ >+ if (allTasks == null) { >+ allTasks = new HashSet<AbstractTask>(); >+ TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList(); >+ allTasks.addAll(taskList.getAllTasks()); >+ } >+ progressMonitor.worked(10); >+ >+ SubProgressMonitor subMonitor = new SubProgressMonitor(progressMonitor, 90); >+ subMonitor.beginTask("Scanning tasks", allTasks.size()); >+ for (AbstractTask task : allTasks) { >+ contentProvider.add(task, itemsFilter); >+ subMonitor.worked(1); > } >+ subMonitor.done(); > >- return area; >+ progressMonitor.done(); > } > > @Override >- protected void computeResult() { >- setResult(((IStructuredSelection) viewer.getSelection()).toList()); >+ protected IDialogSettings getDialogSettings() { >+ IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings(); >+ IDialogSettings section = settings.getSection(TASK_SELECTION_DIALOG_SECTION); >+ if (section == null) { >+ section = settings.addNewSection(TASK_SELECTION_DIALOG_SECTION); >+ section.put(OPEN_IN_BROWSER_SETTING, false); >+ section.put(SHOW_COMPLETED_TASKS_SETTING, true); >+ } >+ return section; > } > > @Override >- public boolean close() { >- if (openInBrowserCheck != null) { >- openInBrowser = openInBrowserCheck.getSelection(); >+ protected void restoreDialog(IDialogSettings settings) { >+ openInBrowser = settings.getBoolean(OPEN_IN_BROWSER_SETTING); >+ showCompletedTasks = settings.getBoolean(SHOW_COMPLETED_TASKS_SETTING); >+ showCompletedTasksAction.setChecked(showCompletedTasks); >+ super.restoreDialog(settings); >+ } >+ >+ @Override >+ protected void storeDialog(IDialogSettings settings) { >+ settings.put(OPEN_IN_BROWSER_SETTING, openInBrowser); >+ settings.put(SHOW_COMPLETED_TASKS_SETTING, showCompletedTasks); >+ super.storeDialog(settings); >+ } >+ >+ @Override >+ public String getElementName(Object item) { >+ return labelProvider.getText(item); >+ } >+ >+ /** >+ * Sort tasks by summary >+ */ >+ @SuppressWarnings("unchecked") >+ @Override >+ protected Comparator getItemsComparator() { >+ return new Comparator() { >+ >+ public int compare(Object o1, Object o2) { >+ return labelProvider.getText(o1).compareTo(labelProvider.getText(o2)); >+ } >+ >+ }; >+ } >+ >+ @Override >+ protected IStatus validateItem(Object item) { >+ if (item instanceof AbstractTask) { >+ return Status.OK_STATUS; > } >- return super.close(); >+ return new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Selected item is not a task"); > } > > } >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java,v >retrieving revision 1.14 >diff -u -r1.14 TaskActivationHistory.java >--- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java 27 Sep 2007 14:13:13 -0000 1.14 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java 15 Oct 2007 22:19:57 -0000 >@@ -8,6 +8,7 @@ > package org.eclipse.mylyn.internal.tasks.ui.views; > > import java.util.ArrayList; >+import java.util.Collections; > import java.util.List; > > import org.eclipse.mylyn.context.core.ContextCorePlugin; >@@ -87,6 +88,14 @@ > } > } > >+ public boolean containsTask(AbstractTask task) { >+ return history.contains(task); >+ } >+ >+ public boolean removeTask(AbstractTask task) { >+ return history.remove(task); >+ } >+ > public AbstractTask getPreviousTask() { > try { > boolean active = false; >@@ -113,7 +122,7 @@ > } > > public List<AbstractTask> getPreviousTasks() { >- return history; >+ return Collections.unmodifiableList(history); > } > > public boolean hasPrevious() { >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskDetailLabelProvider.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskDetailLabelProvider.java >diff -N src/org/eclipse/mylyn/internal/tasks/ui/views/TaskDetailLabelProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskDetailLabelProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,55 @@ >+/******************************************************************************* >+ * Copyright (c) 2004, 2007 Mylyn project 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.mylyn.internal.tasks.ui.views; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.viewers.ILabelProvider; >+import org.eclipse.jface.viewers.LabelProvider; >+import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; >+import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; >+import org.eclipse.mylyn.tasks.core.AbstractTask; >+import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; >+import org.eclipse.swt.graphics.Image; >+ >+/** >+ * Displays task repository info from a {@link AbstractTask} >+ * >+ * @author Willian Mitsuda >+ */ >+public class TaskDetailLabelProvider extends LabelProvider implements ILabelProvider { >+ >+ @Override >+ public Image getImage(Object element) { >+ if (!(element instanceof AbstractTask)) { >+ return super.getImage(element); >+ } >+ >+ AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector( >+ (AbstractTask) element); >+ ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(connector.getConnectorKind()); >+ if (overlay != null) { >+ return TasksUiImages.getImageWithOverlay(TasksUiImages.REPOSITORY, overlay, false, false); >+ } else { >+ return TasksUiImages.getImage(TasksUiImages.REPOSITORY); >+ } >+ } >+ >+ @Override >+ public String getText(Object element) { >+ if (!(element instanceof AbstractTask)) { >+ return super.getText(element); >+ } >+ >+ TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository( >+ ((AbstractTask) element).getRepositoryUrl()); >+ return repository.getRepositoryLabel(); >+ } >+ >+}
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 193849
:
73797
|
73798
|
75413
|
75414
| 80391 |
80392
|
81232
|
81233