Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.mylyn-feature/feature.xml86
-rw-r--r--org.eclipse.mylyn.bugzilla-feature/build.properties1
-rw-r--r--org.eclipse.mylyn.bugzilla-feature/feature.xml47
-rw-r--r--org.eclipse.mylyn.bugzilla.core/.classpath13
-rw-r--r--org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF18
-rw-r--r--org.eclipse.mylyn.bugzilla.core/about.html27
-rw-r--r--org.eclipse.mylyn.bugzilla.core/build.properties22
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java151
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java246
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java94
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java331
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java118
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java622
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java682
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java284
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java171
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java155
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java177
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java370
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java106
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java154
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java261
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java399
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java65
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/.classpath7
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF24
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java45
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java92
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java122
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java110
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java109
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java106
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java77
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore1
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt0
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html859
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/.classpath11
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF33
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/plugin.xml205
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java75
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java69
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java366
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java574
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java65
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java1649
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java1083
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java125
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java1602
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java100
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java129
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java85
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java732
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java131
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java176
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java55
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java295
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java265
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java100
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java98
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java48
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java209
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java770
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java260
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java128
-rw-r--r--org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch7
-rw-r--r--org.eclipse.mylyn.help.ui/.project22
-rw-r--r--org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF8
-rw-r--r--org.eclipse.mylyn.help.ui/about.html27
-rw-r--r--org.eclipse.mylyn.help.ui/doc/contributing.html176
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/changes.html12395
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsdbin0 -> 42496 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/index.html20
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/model.vsdbin0 -> 144384 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/plan.html371
-rw-r--r--org.eclipse.mylyn.help.ui/doc/faq.html486
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gifbin0 -> 7895 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gifbin0 -> 4141 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gifbin0 -> 12445 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gifbin0 -> 17872 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gifbin0 -> 8954 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gifbin0 -> 8943 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gifbin0 -> 11573 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gifbin0 -> 6499 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gifbin0 -> 13133 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gifbin0 -> 3880 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gifbin0 -> 10298 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gifbin0 -> 12552 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gifbin0 -> 13441 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gifbin0 -> 4296 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gifbin0 -> 10232 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gifbin0 -> 8868 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gifbin0 -> 15495 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gifbin0 -> 4448 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gifbin0 -> 9627 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gifbin0 -> 3263 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gifbin0 -> 12522 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gifbin0 -> 10283 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gifbin0 -> 15052 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gifbin0 -> 13519 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gifbin0 -> 7361 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gifbin0 -> 19255 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/dev/gray.gifbin0 -> 35 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gifbin0 -> 76 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gifbin0 -> 76 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gifbin0 -> 23060 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/integrating.html80
-rw-r--r--org.eclipse.mylyn.help.ui/doc/new-0.3.html711
-rw-r--r--org.eclipse.mylyn.help.ui/doc/new-0.4.html1053
-rw-r--r--org.eclipse.mylyn.help.ui/doc/new.html407
-rw-r--r--org.eclipse.mylyn.help.ui/doc/overview.html69
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java35
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java344
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java64
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java125
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java3
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java5
-rw-r--r--org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.mylyn.tasks.ui/build.xml70
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gifbin164 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gifbin350 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gifbin220 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gifbin337 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gifbin179 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gifbin154 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gifbin133 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gifbin55 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gifbin190 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gifbin199 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gifbin202 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gifbin55 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gifbin175 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gifbin581 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gifbin2749 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/plugin.xml34
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java83
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java59
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java14
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java26
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java54
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java95
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java130
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java453
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java2
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java1
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java50
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java83
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java10
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java84
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java142
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java580
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java193
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java58
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java81
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java90
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java3
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java10
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java8
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java11
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java2
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java36
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java28
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java7
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java12
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java44
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java29
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryClient.java (renamed from org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java)12
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java100
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java259
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java212
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java15
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java45
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java38
182 files changed, 31934 insertions, 3491 deletions
diff --git a/org.eclipse.mylyn-feature/feature.xml b/org.eclipse.mylyn-feature/feature.xml
index e936c5343..a95b188f3 100644
--- a/org.eclipse.mylyn-feature/feature.xml
+++ b/org.eclipse.mylyn-feature/feature.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.mylar_feature"
- label="Mylar Task List (Required)"
- version="0.4.9"
+ label="Mylar IDE Integration"
+ version="0.4.2"
provider-name="Eclipse.org"
plugin="org.eclipse.mylar">
<description url="http://eclipse.org/mylar">
- Mylar Task List, personal task management facilities, and task repository integration support.
+ Mylar UI and support for the Eclipse SDK.
</description>
<license url="http://www.eclipse.org/legal/epl-v10.html">
@@ -214,39 +214,103 @@ litigation.
</url>
<requires>
- <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui" version="3.1.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.resources" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.ui.browser"/>
+ <import plugin="org.eclipse.jdt" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.jdt.core" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui.editors" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.jface.text" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui.workbench.texteditor" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.search" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui.views" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.jdt.debug.ui"/>
+ <import plugin="org.eclipse.jdt.ui" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.team.cvs.ui"/>
+ <import plugin="org.eclipse.debug.ui"/>
+ <import plugin="org.eclipse.jdt.junit"/>
+ <import plugin="org.eclipse.jdt.junit.runtime"/>
+ <import plugin="org.eclipse.pde.junit.runtime"/>
+ <import plugin="org.eclipse.jdt.launching"/>
+ <import plugin="org.eclipse.debug.core"/>
+ <import plugin="org.eclipse.pde.ui" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.pde.core" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui.ide" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ant.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui.forms" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.update.ui"/>
+ <import plugin="org.eclipse.update.core"/>
+ <import plugin="org.eclipse.ui.browser"/>
</requires>
<plugin
id="org.eclipse.mylar.doc"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2"
unpack="false"/>
<plugin
- id="org.eclipse.mylar"
+ id="org.eclipse.mylar.java"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2"
unpack="false"/>
<plugin
- id="org.eclipse.mylar.core"
+ id="org.eclipse.mylar.ui"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.xml"
+ download-size="0"
+ install-size="0"
+ version="0.4.2"
unpack="false"/>
<plugin
id="org.eclipse.mylar.tasklist"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.ide"
+ download-size="0"
+ install-size="0"
+ version="0.4.2"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.monitor"
+ download-size="0"
+ install-size="0"
+ version="0.4.2"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.hypertext"
+ download-size="0"
+ install-size="0"
+ version="0.4.2"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.core"
+ download-size="0"
+ install-size="0"
+ version="0.4.2"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar"
+ download-size="0"
+ install-size="0"
+ version="0.4.2"
unpack="false"/>
</feature>
diff --git a/org.eclipse.mylyn.bugzilla-feature/build.properties b/org.eclipse.mylyn.bugzilla-feature/build.properties
index 69b877f71..4e728a03d 100644
--- a/org.eclipse.mylyn.bugzilla-feature/build.properties
+++ b/org.eclipse.mylyn.bugzilla-feature/build.properties
@@ -16,4 +16,3 @@ src.includes = epl-v10.html,\
feature.xml,\
license.html,\
about.html
-jre.compilation.profile = J2SE-1.5
diff --git a/org.eclipse.mylyn.bugzilla-feature/feature.xml b/org.eclipse.mylyn.bugzilla-feature/feature.xml
index 87a83fb55..2147b6f37 100644
--- a/org.eclipse.mylyn.bugzilla-feature/feature.xml
+++ b/org.eclipse.mylyn.bugzilla-feature/feature.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.mylar.bugzilla_feature"
- label="Mylar Connector: Bugzilla"
- version="0.4.9"
+ label="Mylar Bugzilla Client"
+ version="0.4.2.1"
provider-name="Eclipse.org"
- plugin="org.eclipse.mylar">
+ plugin="org.eclipse.mylar.bugzilla.core">
<description>
Bugzilla client integrated with Eclipse and Mylar, can be used standalone.
@@ -210,51 +210,58 @@ litigation.
</license>
<url>
- <update label="Mylar for Eclipse 3.1" url="http://download.eclipse.org/technology/mylar/update-site/e3.1"/>
+ <update label="Mylar Bugzilla Client" url="http://download.eclipse.org/technology/mylar/update-site/e3.2"/>
</url>
<requires>
- <import feature="org.eclipse.mylar_feature" version="0.4.9" match="greaterOrEqual"/>
- <import plugin="org.eclipse.ui" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.core.resources" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.compare" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.search" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.help" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.help.ui" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui.ide" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.update.core"/>
- <import plugin="org.eclipse.update.ui"/>
<import plugin="org.eclipse.ui.views" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.ui.forms"/>
<import plugin="org.eclipse.jface.text" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.team.ui"/>
- <import plugin="org.eclipse.team.cvs.ui"/>
<import plugin="org.eclipse.ui.workbench.texteditor" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui.editors" version="0.0.0" match="greaterOrEqual"/>
- <import plugin="org.eclipse.team.core"/>
- <import plugin="org.eclipse.team.cvs.core"/>
- <import plugin="org.eclipse.mylar.core"/>
- <import plugin="org.eclipse.mylar.tasklist"/>
+ <import plugin="org.eclipse.pde.ui" version="0.0.0" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.compare" version="0.0.0" match="greaterOrEqual"/>
</requires>
<plugin
id="org.eclipse.mylar.bugzilla.core"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2.1"
unpack="false"/>
<plugin
id="org.eclipse.mylar.bugzilla.ui"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2.1"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.core"
+ download-size="0"
+ install-size="0"
+ version="0.4.2.1"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.mylar.tasklist"
+ download-size="0"
+ install-size="0"
+ version="0.4.2.1"
unpack="false"/>
<plugin
id="org.eclipse.mylar.bugs"
download-size="0"
install-size="0"
- version="0.4.9"
+ version="0.4.2.1"
unpack="false"/>
</feature>
diff --git a/org.eclipse.mylyn.bugzilla.core/.classpath b/org.eclipse.mylyn.bugzilla.core/.classpath
new file mode 100644
index 000000000..fd8d0f145
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/.classpath
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+ <accessrules>
+ <accessrule kind="accessible" pattern="**/internal/**"/>
+ <accessrule kind="nonaccessible" pattern="**/System"/>
+ </accessrules>
+ </classpathentry>
+ <classpathentry kind="lib" path="lib/commons-httpclient-3.0.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs b/org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 000000000..bbebc5a04
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Fri Jun 02 15:30:24 PDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=true
diff --git a/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..38545f58f
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylar Bugzilla Client Plug-in
+Bundle-SymbolicName: org.eclipse.mylar.bugzilla.core; singleton:=true
+Bundle-Version: 0.5.3
+Bundle-Activator: org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.mylar.tasklist
+Eclipse-AutoStart: true
+Bundle-Vendor: Eclipse.org
+Bundle-ClassPath: bugzilla-core.jar,
+ lib/commons-logging.jar,
+ lib/commons-codec-1.3.jar,
+ lib/commons-httpclient-3.0.jar
+Export-Package: org.apache.commons.httpclient,
+ org.eclipse.mylar.internal.bugzilla.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.bugzilla.core/about.html b/org.eclipse.mylyn.bugzilla.core/about.html
new file mode 100644
index 000000000..1aeb16b5f
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/about.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>May 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.core/build.properties b/org.eclipse.mylyn.bugzilla.core/build.properties
new file mode 100644
index 000000000..c4bc1a8a8
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# Copyright (c) 2003 - 2005 University Of British Columbia 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:
+# University Of British Columbia - initial API and implementation
+###############################################################################
+bin.includes = META-INF/,\
+ about.html,\
+ bugzilla-core.jar,\
+ lib/
+src.includes = META-INF/,\
+ src/,\
+ about.html,\
+ lib/
+jars.compile.order = bugzilla-core.jar
+source.bugzilla-core.jar = src/
+output.bugzilla-core.jar = bin/
+jre.compilation.profile = J2SE-1.5
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java
new file mode 100644
index 000000000..c578009f1
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.net.HttpURLConnection;
+import java.net.Proxy;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.security.auth.login.LoginException;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * @author Rob Elves
+ */
+public class AbstractReportFactory {
+
+ private static final int COM_TIME_OUT = 15000;
+
+ private static final String CONTENT_TYPE_TEXT_HTML = "text/html";
+
+ private static final String CONTENT_TYPE_APP_RDF_XML = "application/rdf+xml";
+
+ private static final String CONTENT_TYPE_APP_XML = "application/xml";
+
+ private static final String CONTENT_TYPE_TEXT_XML = "text/xml";
+
+ public static final int RETURN_ALL_HITS = -1;
+
+ private BufferedReader in = null;
+
+ private boolean clean = false;
+
+ protected void collectResults(URL url, Proxy proxySettings, String characterEncoding, DefaultHandler contentHandler)
+ throws IOException, LoginException, KeyManagementException, NoSuchAlgorithmException {
+ URLConnection cntx = BugzillaPlugin.getUrlConnection(url, proxySettings);
+ if (cntx == null || !(cntx instanceof HttpURLConnection)) {
+ throw new IOException("Could not form URLConnection.");
+ }
+
+ HttpURLConnection connection = (HttpURLConnection) cntx;
+ connection.setConnectTimeout(COM_TIME_OUT);
+ connection.setReadTimeout(COM_TIME_OUT);
+ connection.connect();
+ int responseCode = connection.getResponseCode();
+ if (responseCode != HttpURLConnection.HTTP_OK) {
+ String msg;
+ if (responseCode == -1 || responseCode == HttpURLConnection.HTTP_FORBIDDEN)
+ msg = "Repository does not seem to be a valid Bugzilla server: " + url.toExternalForm();
+ else
+ msg = "HTTP Error " + responseCode + " (" + connection.getResponseMessage()
+ + ") while querying Bugzilla server: " + url.toExternalForm();
+
+ throw new IOException(msg);
+ }
+
+ if (characterEncoding != null) {
+ in = new BufferedReader(new InputStreamReader(connection.getInputStream(), characterEncoding));
+ } else {
+ in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ }
+
+
+
+ if(clean) {
+ StringBuffer result = XmlCleaner.clean(in);
+ StringReader strReader = new StringReader(result.toString());
+ in = new BufferedReader(strReader);
+ }
+
+ if (connection.getContentType().contains(CONTENT_TYPE_APP_RDF_XML)
+ || connection.getContentType().contains(CONTENT_TYPE_APP_XML)
+ || connection.getContentType().contains(CONTENT_TYPE_TEXT_XML)) {
+
+ try {
+ final XMLReader reader = XMLReaderFactory.createXMLReader();
+ reader.setContentHandler(contentHandler);
+ reader.setErrorHandler(new ErrorHandler() {
+
+ public void error(SAXParseException exception) throws SAXException {
+ throw exception;
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException {
+ throw exception;
+ }
+
+ public void warning(SAXParseException exception) throws SAXException {
+ throw exception;
+ }
+ });
+ reader.parse(new InputSource(in));
+ } catch (SAXException e) {
+ if (e.getMessage().equals(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD)) {
+ throw new LoginException(e.getMessage());
+ } else {
+ throw new IOException(e.getMessage());
+ }
+ }
+ } else if (connection.getContentType().contains(CONTENT_TYPE_TEXT_HTML)) {
+ in.mark(10);
+ BugzillaRepositoryUtil.parseHtmlError(in);
+ in.reset();
+ String message = "";
+ String newLine = in.readLine();
+ while (newLine != null) {
+ message += newLine;
+ newLine = in.readLine();
+ }
+ throw new UnrecognizedBugzillaError(message);
+
+ } else {
+ throw new IOException("Unrecognized content type: " + connection.getContentType());
+ }
+ }
+
+ public class UnrecognizedBugzillaError extends IOException {
+ private static final long serialVersionUID = 8419167415822022988L;
+
+ public UnrecognizedBugzillaError(String message) {
+ super(message);
+ }
+ }
+
+ protected void setClean(boolean clean) {
+ this.clean = clean;
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java
new file mode 100644
index 000000000..240278945
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java
@@ -0,0 +1,246 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.Proxy;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.GeneralSecurityException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
+import org.apache.commons.httpclient.methods.multipart.Part;
+import org.apache.commons.httpclient.methods.multipart.PartBase;
+import org.apache.commons.httpclient.methods.multipart.StringPart;
+import org.apache.commons.httpclient.params.HttpMethodParams;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.mylar.internal.tasklist.LocalAttachment;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
+import org.eclipse.mylar.provisional.tasklist.IAttachmentHandler;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+
+/**
+ * @author Mik Kersten
+ * @author Rob Elves
+ */
+public class BugzillaAttachmentHandler implements IAttachmentHandler {
+
+ public static final String POST_ARGS_ATTACHMENT_DOWNLOAD = "/attachment.cgi?id=";
+
+ public static final String POST_ARGS_ATTACHMENT_UPLOAD = "/attachment.cgi";// ?action=insert";//&bugid=";
+
+ private static final String VALUE_CONTENTTYPEMETHOD_MANUAL = "manual";
+
+ private static final String VALUE_ISPATCH = "1";
+
+ private static final String VALUE_ACTION_INSERT = "insert";
+
+ private static final String ATTRIBUTE_CONTENTTYPEENTRY = "contenttypeentry";
+
+ private static final String ATTRIBUTE_CONTENTTYPEMETHOD = "contenttypemethod";
+
+ private static final String ATTRIBUTE_ISPATCH = "ispatch";
+
+ private static final String ATTRIBUTE_DATA = "data";
+
+ private static final String ATTRIBUTE_COMMENT = "comment";
+
+ private static final String ATTRIBUTE_DESCRIPTION = "description";
+
+ private static final String ATTRIBUTE_BUGID = "bugid";
+
+ private static final String ATTRIBUTE_BUGZILLA_PASSWORD = "Bugzilla_password";
+
+ private static final String ATTRIBUTE_BUGZILLA_LOGIN = "Bugzilla_login";
+
+ private static final String ATTRIBUTE_ACTION = "action";
+
+ public void downloadAttachment(TaskRepository repository, AbstractRepositoryTask task, int attachmentId, File file, Proxy proxySettings) throws CoreException {
+ try {
+ downloadAttachment(repository.getUrl(), repository.getUserName(), repository.getPassword(), proxySettings, attachmentId, file, true);
+ } catch (Exception e) {
+ throw new CoreException(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, 0, "could not download", e));
+ }
+ }
+
+ public void uploadAttachment(TaskRepository repository, AbstractRepositoryTask task, String comment, String description, File file, String contentType, boolean isPatch, Proxy proxySettings) throws CoreException {
+ try {
+ uploadAttachment(repository.getUrl(), repository.getUserName(), repository.getPassword(), AbstractRepositoryTask.getTaskIdAsInt(task.getHandleIdentifier()), comment, description, file, contentType, isPatch, proxySettings);
+ } catch (Exception e) {
+ throw new CoreException(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, 0, "could not download", e));
+ }
+ }
+
+ private boolean uploadAttachment(String repositoryUrl, String userName, String password, int bugReportID,
+ String comment, String description, File sourceFile, String contentType, boolean isPatch, Proxy proxySettings)
+ throws IOException {
+
+ // Note: The following debug code requires http commons-logging and
+ // commons-logging-api jars
+ // System.setProperty("org.apache.commons.logging.Log",
+ // "org.apache.commons.logging.impl.SimpleLog");
+ // System.setProperty("org.apache.commons.logging.simplelog.showdatetime",
+ // "true");
+ // System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire",
+ // "debug");
+ // System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
+ // "debug");
+
+ boolean uploadResult = true;
+
+ HttpClient client = new HttpClient();
+ if (proxySettings != null && proxySettings.address() instanceof InetSocketAddress) {
+ InetSocketAddress address = (InetSocketAddress)proxySettings.address();
+ client.getHostConfiguration().setProxy(address.getHostName(), address.getPort());
+ }
+
+ PostMethod postMethod = new PostMethod(repositoryUrl + POST_ARGS_ATTACHMENT_UPLOAD);
+
+ // My understanding is that this option causes the client to first check
+ // with the server to see if it will in fact recieve the post before
+ // actually sending the contents.
+ postMethod.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE, true);
+
+ try {
+ List<PartBase> parts = new ArrayList<PartBase>();
+ parts.add(new StringPart(ATTRIBUTE_ACTION, VALUE_ACTION_INSERT));
+ parts.add(new StringPart(ATTRIBUTE_BUGZILLA_LOGIN, userName));
+ parts.add(new StringPart(ATTRIBUTE_BUGZILLA_PASSWORD, password));
+ parts.add(new StringPart(ATTRIBUTE_BUGID, String.valueOf(bugReportID)));
+ parts.add(new StringPart(ATTRIBUTE_DESCRIPTION, description));
+ parts.add(new StringPart(ATTRIBUTE_COMMENT, comment));
+ parts.add(new FilePart(ATTRIBUTE_DATA, sourceFile));
+
+ if (isPatch) {
+ parts.add(new StringPart(ATTRIBUTE_ISPATCH, VALUE_ISPATCH));
+ } else {
+ parts.add(new StringPart(ATTRIBUTE_CONTENTTYPEMETHOD, VALUE_CONTENTTYPEMETHOD_MANUAL));
+ parts.add(new StringPart(ATTRIBUTE_CONTENTTYPEENTRY, contentType));
+ }
+
+ postMethod.setRequestEntity(new MultipartRequestEntity(parts.toArray(new Part[1]), postMethod.getParams()));
+
+ client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
+ int status = client.executeMethod(postMethod);
+ if (status == HttpStatus.SC_OK) {
+ InputStreamReader reader = new InputStreamReader(postMethod.getResponseBodyAsStream(), postMethod
+ .getResponseCharSet());
+ BufferedReader bufferedReader = new BufferedReader(reader);
+ String newLine;
+ while ((newLine = bufferedReader.readLine()) != null) {
+ if (newLine.indexOf("Invalid Username Or Password") >= 0) {
+ throw new IOException(
+ "Invalid Username Or Password - Check credentials in Task Repositories view.");
+ }
+ // TODO: test for no comment and no description etc.
+ }
+ } else {
+ // MylarStatusHandler.log(HttpStatus.getStatusText(status),
+ // BugzillaRepositoryUtil.class);
+ uploadResult = false;
+ }
+ // } catch (HttpException e) {
+ // MylarStatusHandler.log("Attachment upload failed\n" +
+ // e.getMessage(), BugzillaRepositoryUtil.class);
+ // uploadResult = false;
+ } finally {
+ postMethod.releaseConnection();
+ }
+
+ return uploadResult;
+ }
+
+
+ public boolean uploadAttachment(LocalAttachment attachment, String uname, String password, Proxy proxySettings) throws IOException {
+
+ File file = new File(attachment.getFilePath());
+ if (!file.exists() || file.length() <= 0) {
+ return false;
+ }
+
+ return uploadAttachment(attachment.getReport().getRepositoryUrl(), uname, password, attachment.getReport().getId(),
+ attachment.getComment(), attachment.getDescription(), file,
+ attachment.getContentType(), attachment.isPatch(), proxySettings);
+ }
+
+ private boolean downloadAttachment(String repositoryUrl, String userName, String password,
+ Proxy proxySettings, int id, File destinationFile, boolean overwrite) throws IOException,
+ GeneralSecurityException {
+ BufferedInputStream in = null;
+ FileOutputStream outStream = null;
+ try {
+ String url = repositoryUrl + POST_ARGS_ATTACHMENT_DOWNLOAD + id;
+ url = BugzillaRepositoryUtil.addCredentials(url, userName, password);
+ URL downloadUrl = new URL(url);
+ URLConnection connection = BugzillaPlugin.getUrlConnection(downloadUrl, proxySettings);
+ if (connection != null) {
+ InputStream input = connection.getInputStream();
+ outStream = new FileOutputStream(destinationFile);
+ copyByteStream(input, outStream);
+ return true;
+
+ }
+ } finally {
+ try {
+ if (in != null)
+ in.close();
+ if (outStream != null)
+ outStream.close();
+ } catch (IOException e) {
+ BugzillaPlugin.log(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, IStatus.ERROR,
+ "Problem closing the stream", e));
+ }
+ }
+ return false;
+ }
+
+ private void copyByteStream(InputStream in, OutputStream out) throws IOException {
+ if (in != null && out != null) {
+ BufferedInputStream inBuffered = new BufferedInputStream(in);
+
+ int bufferSize = 1000;
+ byte[] buffer = new byte[bufferSize];
+
+ int readCount;
+
+ BufferedOutputStream fout = new BufferedOutputStream(out);
+
+ while ((readCount = inBuffered.read(buffer)) != -1) {
+ if (readCount < bufferSize) {
+ fout.write(buffer, 0, readCount);
+ } else {
+ fout.write(buffer);
+ }
+ }
+ fout.flush();
+ fout.close();
+ in.close();
+ }
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java
new file mode 100644
index 000000000..62b15e9d7
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import org.eclipse.mylar.internal.tasklist.AbstractAttributeFactory;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute;
+
+public class BugzillaAttributeFactory extends AbstractAttributeFactory {
+
+ private static final long serialVersionUID = 5087501781682994759L;
+
+ @Override
+ public String mapCommonAttributeKey(String key) {
+ if (key == null) {
+ return key;
+ } else if (key.equals(RepositoryTaskAttribute.COMMENT_DATE)) {
+ return BugzillaReportElement.BUG_WHEN.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.USER_OWNER)) {
+ return BugzillaReportElement.WHO.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.USER_CC)) {
+ return BugzillaReportElement.CC.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.COMMENT_TEXT)) {
+ return BugzillaReportElement.THETEXT.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.DATE_CREATION)) {
+ return BugzillaReportElement.CREATION_TS.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.DESCRIPTION)) {
+ return BugzillaReportElement.DESC.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_ID)) {
+ return BugzillaReportElement.ATTACHID.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_TYPE)) {
+ return BugzillaReportElement.TYPE.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_CTYPE)) {
+ return BugzillaReportElement.CTYPE.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.USER_ASSIGNED)) {
+ return BugzillaReportElement.ASSIGNED_TO.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.RESOLUTION)) {
+ return BugzillaReportElement.RESOLUTION.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.STATUS)) {
+ return BugzillaReportElement.BUG_STATUS.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.DATE_MODIFIED)) {
+ return BugzillaReportElement.DELTA_TS.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.USER_REPORTER)) {
+ return BugzillaReportElement.REPORTER.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.SUMMARY)) {
+ return BugzillaReportElement.SHORT_DESC.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.PRODUCT)) {
+ return BugzillaReportElement.PRODUCT.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.DATE_CREATION)) {
+ return BugzillaReportElement.CREATION_TS.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.KEYWORDS)) {
+ return BugzillaReportElement.KEYWORDS.getKeyString();
+ } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_DATE)) {
+ return BugzillaReportElement.DATE.getKeyString();
+ }
+ return key;
+ }
+
+ @Override
+ public boolean getIsHidden(String key) {
+ try {
+ return BugzillaReportElement.valueOf(key.trim().toUpperCase()).isHidden();
+ } catch (IllegalArgumentException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public String getName(String key) {
+ try {
+ return BugzillaReportElement.valueOf(key.trim().toUpperCase()).toString();
+ } catch (IllegalArgumentException e) {
+ return "<unknown>";
+ }
+ }
+
+ @Override
+ public boolean isReadOnly(String key) {
+ try {
+ return BugzillaReportElement.valueOf(key.trim().toUpperCase()).isReadOnly();
+ } catch (IllegalArgumentException e) {
+ return true;
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java
new file mode 100644
index 000000000..bdaab80ad
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.IOException;
+import java.net.Proxy;
+import java.net.URL;
+import java.net.URLConnection;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The main plugin class to be used in the desktop.
+ *
+ * @author Mik Kersten (added support for multiple repositories)
+ */
+public class BugzillaPlugin extends Plugin {
+
+ public static final String REPOSITORY_KIND = "bugzilla";
+
+ public static final String ENCODING_UTF_8 = "UTF-8";
+
+ public static final String PLUGIN_ID = "org.eclipse.mylar.bugzilla";
+
+ /** Singleton instance of the plug-in */
+ private static BugzillaPlugin plugin;
+
+ // /** The file that contains all of the bugzilla favorites */
+ // private FavoritesFile favoritesFile;
+
+ /** Product configuration for the current server */
+ private static Map<String, RepositoryConfiguration> repositoryConfigurations = new HashMap<String, RepositoryConfiguration>();
+
+ public BugzillaPlugin() {
+ super();
+ }
+
+ /**
+ * Get the singleton instance for the plugin
+ *
+ * @return The instance of the plugin
+ */
+ public static BugzillaPlugin getDefault() {
+ return plugin;
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+
+ // readFavoritesFile();
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ // /**
+ // * Get the favorites file contatining the favorites
+ // *
+ // * @return The FavoritesFile
+ // */
+ // public FavoritesFile getFavorites() {
+ // return favoritesFile;
+ // }
+
+ // /**
+ // * // * Get the name of the bugzilla server // * // *
+ // *
+ // * @return A string containing the prefered name of the bugzilla server //
+ // */
+ // // public String getServerName() {
+ // // return
+ // //
+ // plugin.getPreferenceStore().getString(IBugzillaConstants.BUGZILLA_SERVER);
+ // // }
+ // public boolean isServerCompatability218() {
+ // return
+ // IBugzillaConstants.SERVER_218.equals(getPreferenceStore().getString(IBugzillaConstants.SERVER_VERSION))
+ // || IBugzillaConstants.SERVER_220.equals(getPreferenceStore().getString(
+ // IBugzillaConstants.SERVER_VERSION));
+ // }
+ //
+ // public boolean isServerCompatability220() {
+ // return
+ // IBugzillaConstants.SERVER_220.equals(getPreferenceStore().getString(IBugzillaConstants.SERVER_VERSION));
+ // }
+
+ public static RepositoryConfiguration getRepositoryConfiguration(String repositoryUrl, Proxy proxySettings, String userName, String password, String encoding) throws IOException, KeyManagementException, LoginException, NoSuchAlgorithmException {
+ if (!repositoryConfigurations.containsKey(repositoryUrl)) {
+ repositoryConfigurations.put(repositoryUrl, RepositoryConfigurationFactory.getInstance()
+ .getConfiguration(repositoryUrl, proxySettings, userName, password, encoding));
+ }
+ return repositoryConfigurations.get(repositoryUrl);
+ }
+
+ // public RepositoryConfiguration getProductConfiguration(String serverUrl)
+ // {
+ // if (!repositoryConfigurations.containsKey(serverUrl)) {
+ // try {
+ // repositoryConfigurations.put(serverUrl,
+ // RepositoryConfigurationFactory.getInstance().getConfiguration(
+ // serverUrl));
+ // } catch (IOException e) {
+ // MessageDialog.openInformation(null, "Retrieval of Bugzilla
+ // Configuration",
+ // "Bugzilla configuration retrieval failed.");
+ // }
+ // }
+ //
+ // return repositoryConfigurations.get(serverUrl);
+ // }
+
+ // protected void setProductConfiguration(String serverUrl,
+ // RepositoryConfiguration repositoryConfiguration) {
+ // repositoryConfigurations.put(serverUrl, repositoryConfiguration);
+ // // this.productConfiguration = productConfiguration;
+ // }
+
+ // private void readFavoritesFile() {
+ // IPath favoritesPath = getFavoritesFile();
+ //
+ // try {
+ // favoritesFile = new FavoritesFile(favoritesPath.toFile());
+ // } catch (Exception e) {
+ // logAndShowExceptionDetailsDialog(e, "occurred while restoring saved
+ // Bugzilla favorites.",
+ // "Bugzilla Favorites Error");
+ // }
+ // }
+
+ // /**
+ // * Returns the path to the file cacheing the query favorites.
+ // */
+ // private IPath getFavoritesFile() {
+ // IPath stateLocation =
+ // Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle());
+ // IPath configFile = stateLocation.append("favorites");
+ // return configFile;
+ // }
+
+ // /**
+ // * Reads cached product configuration and stores it in the
+ // * <code>productConfiguration</code> field.
+ // *
+ // * TODO remove this?
+ // */
+ // private void readCachedProductConfiguration(String serverUrl) {
+ // IPath configFile = getProductConfigurationCachePath(serverUrl);
+ //
+ // try {
+ // productConfigurations.put(serverUrl,
+ // ServerConfigurationFactory.getInstance().readConfiguration(
+ // configFile.toFile()));
+ // } catch (IOException ex) {
+ // try {
+ // log(ex);
+ // productConfigurations.put(serverUrl,
+ // ServerConfigurationFactory.getInstance().getConfiguration(
+ // serverUrl));
+ // } catch (IOException e) {
+ // log(e);
+ // MessageDialog
+ // .openInformation(
+ // null,
+ // "Bugzilla product attributes check",
+ // "An error occurred while restoring saved Bugzilla product attributes:
+ // \n\n"
+ // + ex.getMessage()
+ // + "\n\nUpdating them from the server also caused an error:\n\n"
+ // + e.getMessage()
+ // + "\n\nCheck the server URL in Bugzila preferences.\n"
+ // + "Offline submission of new bugs will be disabled until valid product
+ // attributes have been loaded.");
+ // }
+ // }
+ // }
+
+ /**
+ * Returns the path to the file cacheing the product configuration.
+ */
+ protected IPath getProductConfigurationCachePath(String serverUrl) {
+ IPath stateLocation = Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle());
+ IPath configFile = stateLocation.append("productConfig." + serverUrl.replace('/', '-'));
+ return configFile;
+ }
+
+ /**
+ * Convenience method for logging statuses to the plugin log
+ *
+ * @param status
+ * the status to log
+ */
+ public static void log(IStatus status) {
+ getDefault().getLog().log(status);
+ }
+
+ /**
+ * Convenience method for logging exceptions to the plugin log
+ *
+ * @param e
+ * the exception to log
+ */
+ public static void log(Exception e) {
+ log(new Status(Status.ERROR, BugzillaPlugin.PLUGIN_ID, 0, e.getMessage(), e));
+ }
+
+ /**
+ * Returns the path to the file caching bug reports created while offline.
+ */
+ protected IPath getCachedBugReportPath() {
+ IPath stateLocation = Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle());
+ IPath bugFile = stateLocation.append("bugReports");
+ return bugFile;
+ }
+
+ /**
+ * @param url
+ * @param proxy
+ * can be null
+ */
+ public static URLConnection getUrlConnection(URL url, Proxy proxy) throws IOException, NoSuchAlgorithmException,
+ KeyManagementException {
+ SSLContext ctx = SSLContext.getInstance("TLS");
+
+ javax.net.ssl.TrustManager[] tm = new javax.net.ssl.TrustManager[] { new TrustAll() };
+ ctx.init(null, tm, null);
+ HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
+
+ if (proxy == null) {
+ proxy = Proxy.NO_PROXY;
+ }
+ URLConnection connection = url.openConnection(proxy);
+ return connection;
+ }
+
+ // public IStatus logAndShowExceptionDetailsDialog(Exception e, String
+ // message, String title) {
+ // MultiStatus status = new MultiStatus(BugzillaPlugin.PLUGIN_ID,
+ // IStatus.ERROR, e.getClass().toString() + " "
+ // + message + "\n\n" + "Click Details or see log for more information.",
+ // e);
+ // Status s = new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID,
+ // IStatus.ERROR, e.getClass().toString()
+ // + ": ", e);
+ // status.add(s);
+ // String error = (e.getMessage() == null) ? e.getClass().toString() :
+ // e.getMessage();
+ // s = new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, IStatus.ERROR,
+ // error, e);
+ // status.add(s);
+ // log(status);
+ // ErrorDialog.openError(null, title, null, status);
+ // return status;
+ // }
+
+ // public boolean refreshOnStartUpEnabled() {
+ // return getPreferenceStore().getBoolean(IBugzillaConstants.REFRESH_QUERY);
+ // }
+
+ // private void setDefaultQueryOptions() {
+ // // get the preferences store for the bugzilla preferences
+ // IPreferenceStore prefs = getPreferenceStore();
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_STATUS, BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_STATUS_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUSE_STATUS_PRESELECTED,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_PRESELECTED_STATUS_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_RESOLUTION,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_RESOLUTION_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_SEVERITY,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_SEVERITY_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_PRIORITY,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_PRIORITY_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_HARDWARE,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_HARDWARE_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_OS, BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_OS_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_PRODUCT,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_PRODUCT_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_COMPONENT,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_COMPONENT_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_VERSION,
+ // BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_VERSION_VALUES));
+ //
+ // prefs.setDefault(IBugzillaConstants.VALUES_TARGET, BugzillaRepositoryUtil
+ // .queryOptionsToString(IBugzillaConstants.DEFAULT_TARGET_VALUES));
+ // }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java
new file mode 100644
index 000000000..4c871f9f5
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+/**
+ * Bugzilla XML element enum. Each enum has the attribute name
+ * and associated xml element tag name.
+ *
+ * @author Rob Elves
+ */
+public enum BugzillaReportElement {
+ // Format: ENUM ( "pretty name", "xml key", <hidden: true/false>, <readonly: true/false>)
+ // Hidden elements are not automatically displayed in ui
+ ASSIGNED_TO ("Assigned to:", "assigned_to", false, true),
+ ATTACHID ("attachid", "attachid"),
+ ATTACHMENT ("attachment", "attachment"),
+ BLOCKED ("Bug blocks:", "blocked"),
+ BUG ("bug","bug", true),
+ BUG_FILE_LOC ("URL:", "bug_file_loc", true),
+ BUG_ID ("Bug:", "bug_id", true),
+ BUG_SEVERITY ("Severity:", "bug_severity", false),
+ BUG_STATUS ("Status:", "bug_status", false, true),
+ BUG_WHEN ("bug_when", "bug_when", true, true),
+ BUGZILLA ("bugzilla", "bugzilla", true),
+ CC ("CC:", "cc", true, true),
+ CCLIST_ACCESSIBLE ("cclist_accessible", "cclist_accessible", true),
+ CLASSIFICATION ("Classification:", "classification", true),
+ CLASSIFICATION_ID ("Classification ID:", "classification_id", true),
+ COMPONENT ("Component:", "component", false),
+ CREATION_TS ("Creation date:", "creation_ts", true),
+ CTYPE ("Content Type", "ctype"),
+ DATA ("data", "data"),
+ DATE ("Date", "date"),
+ DELTA_TS ("Last Modification", "delta_ts", true),
+ DEPENDSON ("Bug depends on:", "dependson"),
+ DESC ("desc", "desc"),
+ EVERCONFIRMED ("everconfirmed", "everconfirmed", true),
+ FILENAME ("filename", "filename"),
+ IS_OBSOLETE ("Obsolete", "isobsolete", true),
+ KEYWORDS ("Keywords:", "keywords", true),
+ LONG_DESC ("Description:", "long_desc"),
+ LONGDESCLENGTH ("Number of comments", "longdesclength", true),
+ NEWCC ("Add CC:", "newcc", true),
+ OP_SYS ("OS:", "op_sys", false),
+ PRIORITY ("Priority:", "priority", false),
+ PRODUCT ("Product:", "product", false),
+ REP_PLATFORM ("Platform:", "rep_platform", false),
+ REPORTER ("Reporter:", "reporter", false, true),
+ REPORTER_ACCESSIBLE ("reporter_accessible", "reporter_accessible", true),
+ RESOLUTION ("Resolution:", "resolution", false, true), // Exiting bug field, new cc
+ SHORT_DESC ("Summary:", "short_desc", true),
+ TARGET_MILESTONE ("Target milestone:", "target_milestone", false),
+ THETEXT ("thetext", "thetext"),
+ TYPE ("type", "type"),
+ UNKNOWN ("UNKNOWN", "UNKNOWN"),
+ VERSION ("Version:", "version", false),
+ VOTES ("Votes:", "votes", false, true),
+ WHO ("who", "who"),
+ QA_CONTACT("QA Contact", "qa_contact", false, false),
+ ADDSELFCC ("Add self to CC", "addselfcc", true, false),
+ // Used by search engine
+ LI ("used by search engine", "li", true),
+ ID ("used by search engine", "id", true),
+ SHORT_SHORT_DESC ("used by search engine", "short_short_desc", false),
+ SEQ ("used by search engine", "seq", false),
+ RESULT ("used by search engine", "result", false),
+ RDF ("used by search engine", "rdf", false),
+ INSTALLATION ("used by search engine", "installation", false),
+ BUGS ("used by search engine", "bugs", false);
+
+ private final boolean isHidden;
+
+ private final boolean isReadOnly;
+
+ private final String keyString;
+
+ private final String prettyName;
+
+ BugzillaReportElement(String prettyName, String fieldName) {
+ this(prettyName, fieldName, false, false);
+ }
+
+ BugzillaReportElement(String prettyName, String fieldName, boolean hidden) {
+ this(prettyName, fieldName, hidden, false);
+ }
+
+ BugzillaReportElement(String prettyName, String fieldName, boolean hidden, boolean readonly) {
+ this.prettyName = prettyName;
+ this.keyString = fieldName;
+ this.isHidden = hidden;
+ this.isReadOnly = readonly;
+ }
+
+ public String getKeyString() {
+ return keyString;
+ }
+
+ public boolean isHidden() {
+ return isHidden;
+ }
+
+ public boolean isReadOnly() {
+ return isReadOnly;
+ }
+
+ public String toString() {
+ return prettyName;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java
new file mode 100644
index 000000000..7d20659c0
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java
@@ -0,0 +1,622 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.Proxy;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.mylar.internal.tasklist.LocalAttachment;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskData;
+import org.eclipse.mylar.internal.tasklist.RepositoryOperation;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer;
+import org.eclipse.mylar.internal.tasklist.util.HtmlTag;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token;
+
+/**
+ *
+ * @author Shawn Minto
+ * @author Mik Kersten (hardening of prototype)
+ * @author Rob Elves
+ *
+ * Class to handle the positing of a bug
+ */
+public class BugzillaReportSubmitForm {
+
+ private static final String KEY_ID = "id";
+
+ private static final String VAL_TRUE = "true";
+
+ private static final String KEY_REMOVECC = "removecc";
+
+ private static final String KEY_CC = "cc";
+
+ private static final String POST_CONTENT_TYPE = "application/x-www-form-urlencoded";
+
+ private static final String REQUEST_PROPERTY_CONTENT_TYPE = "Content-Type";
+
+ private static final String REQUEST_PROPERTY_CONTENT_LENGTH = "Content-Length";
+
+ private static final String METHOD_POST = "POST";
+
+ private static final String KEY_BUGZILLA_PASSWORD = "Bugzilla_password";
+
+ private static final String KEY_BUGZILLA_LOGIN = "Bugzilla_login";
+
+ private static final String POST_BUG_CGI = "post_bug.cgi";
+
+ private static final String PROCESS_BUG_CGI = "process_bug.cgi";
+
+ public static final int WRAP_LENGTH = 90;
+
+ private static final String VAL_PROCESS_BUG = "process_bug";
+
+ private static final String KEY_FORM_NAME = "form_name";
+
+ private static final String VAL_NONE = "none";
+
+ private static final String KEY_KNOB = "knob";
+
+ private static final String KEY_COMMENT = "comment";
+
+ private static final String KEY_SHORT_DESC = "short_desc";
+
+ public static final String FORM_POSTFIX_218 = " Submitted";
+
+ public static final String FORM_POSTFIX_216 = " posted";
+
+ public static final String FORM_PREFIX_BUG_218 = "Bug ";
+
+ public static final String FORM_PREFIX_BUG_220 = "Issue ";
+
+ private BugzillaAttachmentHandler attachmentHandler = new BugzillaAttachmentHandler();
+
+ /** The fields that are to be changed/maintained */
+ private Map<String, String> fields = new HashMap<String, String>();
+
+ private URL postUrl;
+
+ private Proxy proxySettings = Proxy.NO_PROXY;
+
+ private String charset;
+
+ /** The prefix for how to find the bug number from the return */
+ private String prefix;
+
+ private String prefix2;
+
+ /** The postfix for how to find the bug number from the return */
+ private String postfix;
+
+ /** An alternate postfix for how to find the bug number from the return */
+ private String postfix2;
+
+ private String error = null;
+
+ /** The local attachment to attach to this report, null if none */
+ private LocalAttachment attachment = null;
+
+
+ public BugzillaReportSubmitForm(String charEncoding) {
+ charset = charEncoding;
+ }
+
+ public static BugzillaReportSubmitForm makeNewBugPost(String repositoryUrl, String userName, String password,
+ Proxy proxySettings, String characterEncoding, NewBugzillaReport model, boolean wrapDescription)
+ throws UnsupportedEncodingException {
+
+ BugzillaReportSubmitForm form;
+
+ if (characterEncoding != null) {
+ form = new BugzillaReportSubmitForm(characterEncoding);
+ } else {
+ form = new BugzillaReportSubmitForm(BugzillaPlugin.ENCODING_UTF_8);
+ }
+
+ form.setPrefix(BugzillaReportSubmitForm.FORM_PREFIX_BUG_218);
+ form.setPrefix2(BugzillaReportSubmitForm.FORM_PREFIX_BUG_220);
+
+ form.setPostfix(BugzillaReportSubmitForm.FORM_POSTFIX_216);
+ form.setPostfix2(BugzillaReportSubmitForm.FORM_POSTFIX_218);
+
+ setConnectionsSettings(form, repositoryUrl, userName, password, proxySettings, POST_BUG_CGI);
+
+ // go through all of the attributes and add them to
+ // the bug post
+ Iterator<RepositoryTaskAttribute> itr = model.getAttributes().iterator();
+ while (itr.hasNext()) {
+ RepositoryTaskAttribute a = itr.next();
+ if (a != null && a.getID() != null && a.getID().compareTo("") != 0) {
+ String value = null;
+ value = a.getValue();
+ if (value == null)
+ continue;
+ form.add(a.getID(), value);
+ }
+ }
+
+ // form.add(KEY_BUG_FILE_LOC, "");
+
+ // specify the product
+ form.add(BugzillaReportElement.PRODUCT.getKeyString(), model.getProduct());
+
+ // add the summary to the bug post
+ form.add(BugzillaReportElement.SHORT_DESC.getKeyString(), model.getSummary());
+
+ String formattedDescription = formatTextToLineWrap(model.getDescription(), wrapDescription);
+ model.setDescription(formattedDescription);
+
+ if (model.getDescription().length() != 0) {
+ // add the new comment to the bug post if there
+ // is some text in
+ // it
+ form.add(KEY_COMMENT, model.getDescription());
+ }
+ return form;
+ }
+
+ /**
+ * TODO: refactor common stuff with new bug post
+ *
+ * @param removeCC
+ * @param characterEncoding
+ * TODO
+ *
+ * @throws UnsupportedEncodingException
+ */
+ public static BugzillaReportSubmitForm makeExistingBugPost(RepositoryTaskData bug, String repositoryUrl,
+ String userName, String password, Proxy proxySettings, Set<String> removeCC, String characterEncoding)
+ throws UnsupportedEncodingException {
+
+ BugzillaReportSubmitForm bugReportPostHandler;
+
+ if (characterEncoding != null) {
+ bugReportPostHandler = new BugzillaReportSubmitForm(characterEncoding);
+ } else {
+ bugReportPostHandler = new BugzillaReportSubmitForm(BugzillaPlugin.ENCODING_UTF_8);
+ }
+
+ //setDefaultCCValue(bug, userName);
+ setConnectionsSettings(bugReportPostHandler, repositoryUrl, userName, password, proxySettings, PROCESS_BUG_CGI);
+
+ // go through all of the attributes and add them to the bug post
+ for (Iterator<RepositoryTaskAttribute> it = bug.getAttributes().iterator(); it.hasNext();) {
+ RepositoryTaskAttribute a = it.next();
+ if (a.getID().equals(BugzillaReportElement.CC.getKeyString())
+ || a.getID().equals(BugzillaReportElement.REPORTER.getKeyString())
+ || a.getID().equals(BugzillaReportElement.ASSIGNED_TO.getKeyString())
+ || a.getID().equals(BugzillaReportElement.CREATION_TS.getKeyString())) {
+ continue;
+ }
+ if (a != null && a.getID() != null && a.getID().compareTo("") != 0 && !a.isHidden()) {
+ String value = a.getValue();
+ // System.err.println(a.getID()+" "+a.getValue());
+ // add the attribute to the bug post
+ bugReportPostHandler.add(a.getID(), value != null ? value : "");
+ } else if (a != null && a.getID() != null && a.getID().compareTo("") != 0 && a.isHidden()) {
+ // we have a hidden attribute and we should send it back.
+ // System.err.println(a.getID()+" "+a.getValue());
+ bugReportPostHandler.add(a.getID(), a.getValue());
+ }
+ }
+
+ // when posting the bug id is encoded in a hidden field named 'id'
+ bugReportPostHandler.add(KEY_ID, bug.getAttributeValue(BugzillaReportElement.BUG_ID.getKeyString()));
+
+ // add the operation to the bug post
+ RepositoryOperation o = bug.getSelectedOperation();
+ if (o == null)
+ bugReportPostHandler.add(KEY_KNOB, VAL_NONE);
+ else {
+ bugReportPostHandler.add(KEY_KNOB, o.getKnobName());
+ if (o.hasOptions()) {
+ String sel = o.getOptionValue(o.getOptionSelection());
+ bugReportPostHandler.add(o.getOptionName(), sel);
+ } else if (o.isInput()) {
+ String sel = o.getInputValue();
+ bugReportPostHandler.add(o.getInputName(), sel);
+ }
+ }
+ bugReportPostHandler.add(KEY_FORM_NAME, VAL_PROCESS_BUG);
+
+ if (bug.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString()) != null) {
+ bugReportPostHandler.add(KEY_SHORT_DESC, bug.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString()).getValue());
+ }
+
+ if (bug.getNewComment().length() != 0) {
+ bugReportPostHandler.add(KEY_COMMENT, bug.getNewComment());
+ }
+
+ if (removeCC != null && removeCC.size() > 0) {
+ String[] s = new String[removeCC.size()];
+ bugReportPostHandler.add(KEY_CC, toCommaSeparatedList(removeCC.toArray(s)));
+ bugReportPostHandler.add(KEY_REMOVECC, VAL_TRUE);
+ }
+
+ bugReportPostHandler.attachment = bug.getNewAttachment();
+
+ return bugReportPostHandler;
+ }
+
+ private static String toCommaSeparatedList(String[] strings) {
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < strings.length; i++) {
+ buffer.append(strings[i]);
+ if (i != strings.length - 1) {
+ buffer.append(",");
+ }
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Add a value to be posted to the bug
+ *
+ * @param key
+ * The key for the value to be added
+ * @param value
+ * The value to be added
+ * @throws UnsupportedEncodingException
+ */
+ private void add(String key, String value) throws UnsupportedEncodingException {
+ // try {
+ fields.put(key, URLEncoder.encode(value == null ? "" : value, charset));
+ // BugzillaPlugin.ENCODING_UTF_8
+ // } catch (UnsupportedEncodingException e) {
+ // // ignore
+ // }
+ }
+
+ /**
+ * Post the bug to the bugzilla server
+ *
+ * @return The result of the responses
+ * @throws BugzillaException
+ * @throws PossibleBugzillaFailureException
+ */
+ public String submitReportToRepository() throws BugzillaException, LoginException, PossibleBugzillaFailureException {
+ BufferedOutputStream out = null;
+ BufferedReader in = null;
+ String result = null;
+ try {
+ // connect to the bugzilla server
+ URLConnection cntx = BugzillaPlugin.getUrlConnection(postUrl, proxySettings);
+ if (cntx == null || !(cntx instanceof HttpURLConnection))
+ return null;
+
+ HttpURLConnection postConnection = (HttpURLConnection) cntx;
+
+ // set the connection method
+ postConnection.setRequestMethod(METHOD_POST);
+ String contentTypeString = POST_CONTENT_TYPE;
+ if (charset != null) {
+ contentTypeString += ";charset=" + charset;
+ }
+ postConnection.setRequestProperty(REQUEST_PROPERTY_CONTENT_TYPE, contentTypeString);
+ // get the url for the update with all of the changed values
+
+ byte[] body = getPostBody().getBytes();
+ postConnection.setRequestProperty(REQUEST_PROPERTY_CONTENT_LENGTH, String.valueOf(body.length));
+
+ // allow outgoing streams and open a stream to post to
+ postConnection.setDoOutput(true);
+
+ out = new BufferedOutputStream(postConnection.getOutputStream());
+
+ // write the data and close the stream
+ out.write(body);
+ out.flush();
+
+ int responseCode = postConnection.getResponseCode();
+ if (responseCode != HttpURLConnection.HTTP_OK && responseCode != HttpURLConnection.HTTP_CREATED) {
+ throw new BugzillaException("Server returned HTTP error: " + responseCode + " - "
+ + postConnection.getResponseMessage());
+ }
+
+ // open a stream to receive response from bugzilla
+ in = new BufferedReader(new InputStreamReader(postConnection.getInputStream()));
+
+
+ String aString = in.readLine();
+
+ // Used to debug reponse from bugzilla server
+ // while (aString != null) {
+ // System.err.println(aString);
+ // aString = in.readLine();
+ // }
+
+ boolean possibleFailure = true;
+ error = "";
+
+ while (aString != null) {
+ error += aString == null ? "" : aString + "\n";
+
+ // check if we have run into an error
+
+ if (result == null
+ && (aString.toLowerCase().indexOf("check e-mail") != -1 || aString.toLowerCase().indexOf(
+ "error") != -1)) {
+ throw new LoginException("Bugzilla login problem.");
+ } else if (aString.indexOf("Invalid Username Or Password") != -1) {
+ throw new LoginException("Invalid Username or Password.");
+ } else if (aString.toLowerCase().matches(".*bug\\s+processed.*") // TODO:
+ // make
+ // this
+ // configurable
+ || aString.toLowerCase().matches(".*defect\\s+processed.*")) {
+ possibleFailure = false;
+ }
+ // // get the bug number if it is required
+ if (prefix != null && prefix2 != null && postfix != null && postfix2 != null && result == null) {
+ int startIndex = -1;
+ int startIndexPrefix = aString.toLowerCase().indexOf(prefix.toLowerCase());
+ int startIndexPrefix2 = aString.toLowerCase().indexOf(prefix2.toLowerCase());
+
+ if (startIndexPrefix != -1 || startIndexPrefix2 != -1) {
+ if (startIndexPrefix != -1) {
+ startIndex = startIndexPrefix + prefix.length();
+ } else {
+ startIndex = startIndexPrefix2 + prefix2.length();
+ }
+ int stopIndex = aString.toLowerCase().indexOf(postfix.toLowerCase(), startIndex);
+ if (stopIndex == -1)
+ stopIndex = aString.toLowerCase().indexOf(postfix2.toLowerCase(), startIndex);
+ if (stopIndex > -1) {
+ result = (aString.substring(startIndex, stopIndex)).trim();
+ possibleFailure = false;
+ }
+ }
+ }
+ aString = in.readLine();
+ }
+
+ if ((result == null || result.compareTo("") == 0)
+ && (prefix != null && prefix2 == null && postfix != null && postfix2 != null)) {
+ throw new PossibleBugzillaFailureException("Could not find bug number for new bug.");
+ } else if (possibleFailure) {
+ throw new PossibleBugzillaFailureException(
+ "Bug report may not have been submitted. Bugzilla message was: ");
+ }
+
+ // set the error to null if we dont think that there was one
+ error = null;
+
+ } catch (IOException e) {
+ throw new BugzillaException("An exception occurred while submitting the bug: " + e.getMessage(), e);
+ } catch (KeyManagementException e) {
+ throw new BugzillaException("Could not POST form. Communications error: " + e.getMessage(), e);
+ } catch (NoSuchAlgorithmException e) {
+ throw new BugzillaException("Could not POST form. Communications error: " + e.getMessage(), e);
+ } finally {
+ try {
+ if (in != null)
+ in.close();
+ if (out != null)
+ out.close();
+
+ } catch (IOException e) {
+ BugzillaPlugin.log(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, IStatus.ERROR,
+ "Problem posting the bug", e));
+ }
+
+ try {
+ // upload the attachment if any
+ if (attachment != null) {
+ if (attachment.getDescription() == null || attachment.getDescription().equals("")) {
+ throw new BugzillaException("Attachment must have a description");
+ }
+
+ String uname = URLDecoder.decode(fields.get(KEY_BUGZILLA_LOGIN), this.charset);
+ String password = URLDecoder.decode(fields.get(KEY_BUGZILLA_PASSWORD), this.charset);
+ if (!attachmentHandler.uploadAttachment(attachment, uname, password, proxySettings)) {
+ throw new BugzillaException("Could not upload attachment.");
+ }
+
+ }
+ } catch (IOException e) {
+ throw new BugzillaException("Could not upload attachment. Communications error: " + e.getMessage(), e);
+ }
+
+ }
+ // return the bug number
+ return result;
+ }
+
+ /**
+ * Get the url that contains the attributes to be posted
+ *
+ * @return The url for posting
+ */
+ private String getPostBody() {
+ String postBody = "";
+
+ // go through all of the attributes and add them to the body of the post
+ Iterator<Map.Entry<String, String>> anIterator = fields.entrySet().iterator();
+ while (anIterator.hasNext()) {
+ Map.Entry<String, String> entry = anIterator.next();
+ postBody = postBody + entry.getKey() + "=" + entry.getValue();
+ if (anIterator.hasNext())
+ postBody = postBody + "&";
+ }
+ return postBody;
+ }
+
+ private void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ private void setPostfix(String postfix) {
+ this.postfix = postfix;
+ }
+
+ private void setPostfix2(String postfix) {
+ this.postfix2 = postfix;
+ }
+
+ public String getError() {
+ return parseError();
+ }
+
+ /**
+ * remove all of the hyperlinks and erroneous info
+ *
+ * @return
+ */
+ private String parseError() {
+ String newError = "";
+ try {
+ HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(new StringReader(error), null);
+ for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
+ if (token.getType() == Token.TAG && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.A) {
+
+ } else if (token.getType() == Token.TAG
+ && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.FORM) {
+ for (Token token2 = tokenizer.nextToken(); token2.getType() != Token.EOF; token2 = tokenizer
+ .nextToken()) {
+ if (token2.getType() == Token.TAG) {
+ HtmlTag tag = (HtmlTag) token2.getValue();
+ if (tag.getTagType() == HtmlTag.Type.FORM && tag.isEndTag())
+ break;
+
+ }
+ }
+ } else {
+ newError += token.getWhitespace().toString() + token.getValue();
+ }
+ }
+ } catch (Exception e) {
+ newError = error;
+ }
+ return newError;
+ }
+
+ private void setPrefix2(String prefix2) {
+ this.prefix2 = prefix2;
+ }
+
+ // private void setCharset(String charset) {
+ // this.charset = charset;
+ // }
+
+ private static void setConnectionsSettings(BugzillaReportSubmitForm form, String repositoryUrl, String userName,
+ String password, Proxy proxySettings, String formName) throws UnsupportedEncodingException {
+
+ String baseURL = repositoryUrl;
+
+ if (!baseURL.endsWith("/"))
+ baseURL += "/";
+ try {
+ form.postUrl = new URL(baseURL + formName);
+ if (proxySettings != null) {
+ form.proxySettings = proxySettings;
+ }
+ } catch (MalformedURLException e) {
+ // we should be ok here
+ }
+
+ // add the login information to the bug post
+ form.add(KEY_BUGZILLA_LOGIN, userName);
+ form.add(KEY_BUGZILLA_PASSWORD, password);
+ }
+
+// /**
+// * Sets the cc field to the user's address if a cc has not been specified to
+// * ensure that commenters are on the cc list. TODO: Review this mechanism
+// *
+// * @author Wesley Coelho
+// */
+// private static void setDefaultCCValue(BugzillaReport bug, String userName) {
+// // RepositoryTaskAttribute newCCattr =
+// // bug.getAttributeForKnobName(KEY_NEWCC);
+// RepositoryTaskAttribute owner = bug.getAttribute(BugzillaReportElement.ASSIGNED_TO);
+//
+// // Don't add the cc if the user is the bug owner
+// if (userName == null || (owner != null && owner.getValue().indexOf(userName) != -1)) {
+// // MylarStatusHandler.log("Could not determine CC value for
+// // repository: " + repository, null);
+// return;
+// }
+// // Don't add cc if already there
+// RepositoryTaskAttribute ccAttribute = bug.getAttribute(BugzillaReportElement.CC);
+// if (ccAttribute != null && ccAttribute.getValues().contains(userName)) {
+// return;
+// }
+// RepositoryTaskAttribute newCCattr = bug.getAttribute(BugzillaReportElement.NEWCC);
+// if (newCCattr == null) {
+// newCCattr = new RepositoryTaskAttribute(BugzillaReportElement.NEWCC);
+// bug.addAttribute(BugzillaReportElement.NEWCC, newCCattr);
+// }
+// // Add the user to the cc list
+// newCCattr.setValue(userName);
+// }
+
+ /**
+ * Break text up into lines of about 80 characters so that it is displayed
+ * properly in bugzilla
+ */
+ private static String formatTextToLineWrap(String origText, boolean hardWrap) {
+ // BugzillaServerVersion bugzillaServerVersion =
+ // IBugzillaConstants.BugzillaServerVersion.fromString(repository
+ // .getVersion());
+ // if (bugzillaServerVersion != null &&
+ // bugzillaServerVersion.compareTo(BugzillaServerVersion.SERVER_220) >=
+ // 0) {
+ // return origText;
+ if (!hardWrap) {
+ return origText;
+ } else {
+ String[] textArray = new String[(origText.length() / WRAP_LENGTH + 1) * 2];
+ for (int i = 0; i < textArray.length; i++)
+ textArray[i] = null;
+ int j = 0;
+ while (true) {
+ int spaceIndex = origText.indexOf(" ", WRAP_LENGTH - 5);
+ if (spaceIndex == origText.length() || spaceIndex == -1) {
+ textArray[j] = origText;
+ break;
+ }
+ textArray[j] = origText.substring(0, spaceIndex);
+ origText = origText.substring(spaceIndex + 1, origText.length());
+ j++;
+ }
+
+ String newText = "";
+
+ for (int i = 0; i < textArray.length; i++) {
+ if (textArray[i] == null)
+ break;
+ newText += textArray[i] + "\n";
+ }
+ return newText;
+ }
+ }
+} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java
new file mode 100644
index 000000000..65b339372
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java
@@ -0,0 +1,682 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.Proxy;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.security.GeneralSecurityException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.List;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BUGZILLA_OPERATION;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BUGZILLA_REPORT_STATUS;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BUGZILLA_RESOLUTION;
+import org.eclipse.mylar.internal.tasklist.RepositoryOperation;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskData;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer;
+import org.eclipse.mylar.internal.tasklist.util.HtmlTag;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token;
+
+/**
+ * @author Mik Kersten (some rewriting)
+ * @author Rob Elves
+ */
+public class BugzillaRepositoryUtil {
+
+ private static final String ATTR_CHARSET = "charset";
+
+ private static final String OPERATION_INPUT_ASSIGNED_TO = "assigned_to";
+
+ private static final String OPERATION_INPUT_DUP_ID = "dup_id";
+
+ private static final String OPERATION_OPTION_RESOLUTION = "resolution";
+
+ private static final String OPERATION_LABEL_CLOSE = "Mark bug as CLOSED";
+
+ private static final String OPERATION_LABEL_VERIFY = "Mark bug as VERIFIED";
+
+ private static final String OPERATION_LABEL_REOPEN = "Reopen bug";
+
+ private static final String OPERATION_LABEL_REASSIGN_DEFAULT = "Reassign bug to default assignee of selected component";
+
+ private static final String OPERATION_LABEL_REASSIGN = "Reassign bug to";
+
+ private static final String OPERATION_LABEL_DUPLICATE = "Resolve bug, mark it as duplicate of bug #";
+
+ private static final String OPERATION_LABEL_RESOLVE = "Resolve bug, changing resolution to";
+
+ private static final String OPERATION_LABEL_ACCEPT = "Accept bug (change status to ASSIGNED)";
+
+ private static final String BUG_STATUS_NEW = "NEW";
+
+ private static final String POST_ARGS_PASSWORD = "&Bugzilla_password=";
+
+ public static final String POST_ARGS_SHOW_BUG = "/show_bug.cgi?id=";// ctype=xml&
+
+ private static final String POST_ARGS_LOGIN = "GoAheadAndLogIn=1&Bugzilla_login=";
+
+ private static final BugzillaAttributeFactory attributeFactory = new BugzillaAttributeFactory();
+
+ public static RepositoryTaskData getBug(String repositoryUrl, String userName, String password, Proxy proxySettings,
+ String characterEncoding, int id) throws IOException, MalformedURLException, LoginException,
+ GeneralSecurityException {
+
+
+ RepositoryTaskData bugReport = new RepositoryTaskData(new BugzillaAttributeFactory(), BugzillaPlugin.REPOSITORY_KIND, repositoryUrl, id);
+ setupExistingBugAttributes(repositoryUrl, bugReport);
+
+ RepositoryReportFactory reportFactory = RepositoryReportFactory.getInstance();
+ reportFactory.populateReport(bugReport, repositoryUrl, proxySettings, userName, password, characterEncoding);
+ updateBugAttributeOptions(repositoryUrl, proxySettings, userName, password, bugReport, characterEncoding);
+ addValidOperations(bugReport, userName);
+
+ return bugReport;
+ }
+
+ public static String addCredentials(String url, String userName, String password)
+ throws UnsupportedEncodingException {
+ if (userName != null && password != null) {
+ // if (repository.hasCredentials()) {
+ url += "&" + POST_ARGS_LOGIN + URLEncoder.encode(userName, BugzillaPlugin.ENCODING_UTF_8)
+ + POST_ARGS_PASSWORD + URLEncoder.encode(password, BugzillaPlugin.ENCODING_UTF_8);
+ }
+ return url;
+ }
+
+ /**
+ * Get the list of products
+ * @param proxySettings TODO
+ * @param encoding
+ * TODO
+ *
+ * @return The list of valid products a bug can be logged against
+ * @throws IOException
+ * LoginException Exception
+ */
+ public static List<String> getProductList(String repositoryUrl, Proxy proxySettings, String userName, String password, String encoding)
+ throws IOException, LoginException, Exception {
+
+ return BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, password, encoding)
+ .getProducts();
+
+ // BugzillaQueryPageParser parser = new
+ // BugzillaQueryPageParser(repository, new NullProgressMonitor());
+ // if (!parser.wasSuccessful()) {
+ // throw new RuntimeException("Couldn't get products");
+ // } else {
+ // return Arrays.asList(parser.getProductValues());
+ // }
+
+ }
+
+ // TODO: move to repository connector?
+ public static void validateCredentials(String repositoryUrl, String userid, String password) throws IOException,
+ LoginException {
+
+ String url = repositoryUrl + "/index.cgi?" + POST_ARGS_LOGIN
+ + URLEncoder.encode(userid, BugzillaPlugin.ENCODING_UTF_8) + POST_ARGS_PASSWORD
+ + URLEncoder.encode(password, BugzillaPlugin.ENCODING_UTF_8);
+
+ URL serverURL = new URL(url);
+ URLConnection connection = serverURL.openConnection();
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ parseHtmlError(in);
+ }
+
+ /**
+ * Utility method for determining what potential error has occurred from a
+ * bugzilla html reponse page
+ */
+ public static void parseHtmlError(BufferedReader in) throws IOException, LoginException {
+ HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(in, null);
+
+ boolean isTitle = false;
+ String title = "";
+
+ try {
+
+ for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
+
+ if (token.getType() == Token.TAG && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.TITLE
+ && !((HtmlTag) (token.getValue())).isEndTag()) {
+ isTitle = true;
+ continue;
+ }
+
+ if (isTitle) {
+ // get all of the data in the title tag
+ if (token.getType() != Token.TAG) {
+ title += ((StringBuffer) token.getValue()).toString().toLowerCase() + " ";
+ continue;
+ } else if (token.getType() == Token.TAG
+ && ((HtmlTag) token.getValue()).getTagType() == HtmlTag.Type.TITLE
+ && ((HtmlTag) token.getValue()).isEndTag()) {
+
+ if (title.indexOf("login") != -1
+ || (title.indexOf("invalid") != -1 && title.indexOf("password") != -1)
+ || title.indexOf("check e-mail") != -1) {
+ throw new LoginException(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD);
+ }
+ return;
+ }
+ }
+ }
+ } catch (ParseException e) {
+ throw new IOException("Unable to parse result from repository:\n" + e.getMessage());
+ }
+ }
+
+ /**
+ * Adds bug attributes to new bug model and sets defaults
+ * @param proxySettings TODO
+ * @param characterEncoding
+ * TODO
+ *
+ * @throws IOException
+ * @throws NoSuchAlgorithmException
+ * @throws LoginException
+ * @throws KeyManagementException
+ */
+ public static void setupNewBugAttributes(String repositoryUrl, Proxy proxySettings, String userName,
+ String password, NewBugzillaReport newReport, String characterEncoding) throws IOException, KeyManagementException, LoginException, NoSuchAlgorithmException {
+
+ newReport.removeAllAttributes();
+
+ RepositoryTaskAttribute a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.PRODUCT);
+ List<String> optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings,
+ userName, password, characterEncoding).getProducts();
+ Collections.sort(optionValues);
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ a.setValue(newReport.getProduct());
+ newReport.addAttribute(BugzillaReportElement.PRODUCT.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.BUG_STATUS);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getStatusValues();
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ a.setValue(BUG_STATUS_NEW);
+ newReport.addAttribute(BugzillaReportElement.BUG_STATUS.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.VERSION);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getVersions(newReport.getProduct());
+ Collections.sort(optionValues);
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ if (optionValues != null && optionValues.size() > 0) {
+ a.setValue(optionValues.get(optionValues.size() - 1));
+ }
+ newReport.addAttribute(BugzillaReportElement.VERSION.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.COMPONENT);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getComponents(newReport.getProduct());
+ Collections.sort(optionValues);
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ newReport.addAttribute(BugzillaReportElement.COMPONENT.getKeyString(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.REP_PLATFORM);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getPlatforms();
+ Collections.sort(optionValues);
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ newReport.addAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.OP_SYS);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getOSs();
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ newReport.addAttribute(BugzillaReportElement.OP_SYS.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.PRIORITY);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getPriorities();
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ a.setValue(optionValues.get((optionValues.size() / 2)));
+ newReport.addAttribute(BugzillaReportElement.PRIORITY.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.BUG_SEVERITY);
+ optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName,
+ password, characterEncoding).getSeverities();
+ for (String option : optionValues) {
+ a.addOptionValue(option, option);
+ }
+ a.setValue(optionValues.get((optionValues.size() / 2)));
+ newReport.addAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ // a = new
+ // RepositoryTaskAttribute(BugzillaReportElement.TARGET_MILESTONE);
+ // optionValues =
+ // BugzillaPlugin.getDefault().getProductConfiguration(serverUrl).getTargetMilestones(
+ // newReport.getProduct());
+ // for (String option : optionValues) {
+ // a.addOptionValue(option, option);
+ // }
+ // if(optionValues.size() > 0) {
+ // // new bug posts will fail if target_milestone element is included
+ // // and there are no milestones on the server
+ // newReport.addAttribute(BugzillaReportElement.TARGET_MILESTONE, a);
+ // }
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.ASSIGNED_TO);
+ a.setValue("");
+ newReport.addAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.BUG_FILE_LOC);
+ a.setValue("http://");
+ a.setHidden(false);
+ newReport.addAttribute(BugzillaReportElement.BUG_FILE_LOC.getKeyString(), a);
+ // attributes.put(a.getName(), a);
+
+ // newReport.attributes = attributes;
+ }
+
+ public static void setupExistingBugAttributes(String serverUrl, RepositoryTaskData existingReport) {
+ // ordered list of elements as they appear in UI
+ // and additional elements that may not appear in the incoming xml
+ // stream but need to be present for bug submission
+ BugzillaReportElement[] reportElements = { BugzillaReportElement.BUG_STATUS, BugzillaReportElement.RESOLUTION,
+ BugzillaReportElement.BUG_ID, BugzillaReportElement.REP_PLATFORM, BugzillaReportElement.PRODUCT,
+ BugzillaReportElement.OP_SYS, BugzillaReportElement.COMPONENT, BugzillaReportElement.VERSION,
+ BugzillaReportElement.PRIORITY, BugzillaReportElement.BUG_SEVERITY, BugzillaReportElement.ASSIGNED_TO,
+ BugzillaReportElement.TARGET_MILESTONE, BugzillaReportElement.REPORTER,
+ BugzillaReportElement.DEPENDSON, BugzillaReportElement.BLOCKED, BugzillaReportElement.BUG_FILE_LOC,
+ BugzillaReportElement.NEWCC, BugzillaReportElement.KEYWORDS };
+
+ for (BugzillaReportElement element : reportElements) {
+ RepositoryTaskAttribute reportAttribute = BugzillaRepositoryUtil.makeNewAttribute(element);
+ existingReport.addAttribute(element.getKeyString(), reportAttribute);
+ }
+ }
+
+ private static void updateBugAttributeOptions(String repositoryUrl, Proxy proxySettings, String userName,
+ String password, RepositoryTaskData existingReport, String characterEncoding) throws IOException, KeyManagementException, LoginException, NoSuchAlgorithmException {
+ String product = existingReport.getAttributeValue(BugzillaReportElement.PRODUCT.getKeyString());
+ for (RepositoryTaskAttribute attribute : existingReport.getAttributes()) {
+ BugzillaReportElement element = BugzillaReportElement.valueOf(attribute.getID().trim().toUpperCase());
+ attribute.clearOptions();
+ List<String> optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings,
+ userName, password, characterEncoding).getOptionValues(element, product);
+ if (element != BugzillaReportElement.OP_SYS && element != BugzillaReportElement.BUG_SEVERITY
+ && element != BugzillaReportElement.PRIORITY && element != BugzillaReportElement.BUG_STATUS) {
+ Collections.sort(optionValues);
+ }
+ if (element == BugzillaReportElement.TARGET_MILESTONE && optionValues.isEmpty()) {
+ existingReport.removeAttribute(BugzillaReportElement.TARGET_MILESTONE);
+ continue;
+ }
+ for (String option : optionValues) {
+ attribute.addOptionValue(option, option);
+ }
+ }
+
+ }
+
+ public static void addValidOperations(RepositoryTaskData bugReport, String userName) {
+ BUGZILLA_REPORT_STATUS status = BUGZILLA_REPORT_STATUS.valueOf(bugReport.getStatus());
+ switch (status) {
+ case UNCONFIRMED:
+ case REOPENED:
+ case NEW:
+ addOperation(bugReport, BUGZILLA_OPERATION.none, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.accept, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.resolve, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.duplicate, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reassign, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reassignbycomponent, userName);
+ break;
+ case ASSIGNED:
+ addOperation(bugReport, BUGZILLA_OPERATION.none, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.resolve, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.duplicate, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reassign, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reassignbycomponent, userName);
+ break;
+ case RESOLVED:
+ addOperation(bugReport, BUGZILLA_OPERATION.none, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reopen, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.verify, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.close, userName);
+ break;
+ case CLOSED:
+ addOperation(bugReport, BUGZILLA_OPERATION.none, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reopen, userName);
+ break;
+ case VERIFIED:
+ addOperation(bugReport, BUGZILLA_OPERATION.none, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.reopen, userName);
+ addOperation(bugReport, BUGZILLA_OPERATION.close, userName);
+ }
+ }
+
+ public static void addOperation(RepositoryTaskData bugReport, BUGZILLA_OPERATION opcode, String userName) {
+ RepositoryOperation newOperation = null;
+ switch (opcode) {
+ case none:
+ newOperation = new RepositoryOperation(opcode.toString(), "Leave as " + bugReport.getStatus() + " "
+ + bugReport.getResolution());
+ newOperation.setChecked(true);
+ break;
+ case accept:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_ACCEPT);
+ break;
+ case resolve:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_RESOLVE);
+ newOperation.setUpOptions(OPERATION_OPTION_RESOLUTION);
+ for (BUGZILLA_RESOLUTION resolution : BUGZILLA_RESOLUTION.values()) {
+ newOperation.addOption(resolution.toString(), resolution.toString());
+ }
+ break;
+ case duplicate:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_DUPLICATE);
+ newOperation.setInputName(OPERATION_INPUT_DUP_ID);
+ newOperation.setInputValue("");
+ break;
+ case reassign:
+ String localUser = userName;
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_REASSIGN);
+ newOperation.setInputName(OPERATION_INPUT_ASSIGNED_TO);
+ newOperation.setInputValue(localUser);
+ break;
+ case reassignbycomponent:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_REASSIGN_DEFAULT);
+ break;
+ case reopen:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_REOPEN);
+ break;
+ case verify:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_VERIFY);
+ break;
+ case close:
+ newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_CLOSE);
+ break;
+ default:
+ break;
+ // MylarStatusHandler.log("Unknown bugzilla operation code recieved",
+ // BugzillaRepositoryUtil.class);
+ }
+ if (newOperation != null) {
+ bugReport.addOperation(newOperation);
+ }
+ }
+
+ public static String getBugUrl(String repositoryUrl, int id, String userName, String password) {
+
+ String url = repositoryUrl + POST_ARGS_SHOW_BUG + id;
+ try {
+ url = addCredentials(url, userName, password);
+ } catch (UnsupportedEncodingException e) {
+ return "";
+ }
+ return url;
+ }
+
+ public static String getBugUrlWithoutLogin(String repositoryUrl, int id) {
+ String url = repositoryUrl + POST_ARGS_SHOW_BUG + id;
+ return url;
+ }
+
+ public static String getCharsetFromString(String string) {
+ int charsetStartIndex = string.indexOf(ATTR_CHARSET);
+ if (charsetStartIndex != -1) {
+ int charsetEndIndex = string.indexOf("\"", charsetStartIndex); // TODO:
+ // could
+ // be
+ // space
+ // after?
+ if (charsetEndIndex == -1) {
+ charsetEndIndex = string.length();
+ }
+ String charsetString = string.substring(charsetStartIndex + 8, charsetEndIndex);
+ if (Charset.availableCharsets().containsKey(charsetString)) {
+ return charsetString;
+ }
+ }
+ return null;
+ }
+
+ protected static RepositoryTaskAttribute makeNewAttribute(org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement tag) {
+ return attributeFactory.createAttribute(tag.getKeyString());
+ }
+
+
+}
+
+// public static String decodeStringFromCharset(String string, String
+// charset) throws UnsupportedEncodingException {
+// String decoded = string;
+// if (charset != null && string != null &&
+// Charset.availableCharsets().containsKey(charset)) {
+// decoded = new String(string.getBytes(), charset);
+// }
+// return decoded;
+// }
+
+// public synchronized static BugzillaRepositoryUtil getInstance() {
+// if (instance == null) {
+// // if the instance hasn't been created yet, create one
+// instance = new
+// BugzillaRepositoryUtil(BugzillaPlugin.getDefault().getServerName());
+// }
+//
+// if
+// (!BugzillaRepositoryUtil.bugzillaUrl.equals(BugzillaPlugin.getDefault().getServerName()))
+// {
+// BugzillaRepositoryUtil.bugzillaUrl =
+// BugzillaPlugin.getDefault().getServerName();
+// }
+// return INSTANCE;
+// }
+// /**
+// * Test method.
+// */
+// public static void main(String[] args) throws Exception {
+// instance = new
+// BugzillaRepositoryUtil(BugzillaPlugin.getDefault().getServerName() +
+// "/long_list.cgi?buglist=");
+// BugReport bug = instance.getBug(16161);
+// System.out.println("Bug " + bug.getId() + ": " + bug.getSummary());
+// for (Iterator<Attribute> it = bug.getAttributes().iterator(); it.hasNext();)
+// {
+// Attribute attribute = it.next();
+// System.out.println(attribute.getName() + ": " + attribute.getValue());
+// }
+// System.out.println(bug.getDescription());
+// for (Iterator<Comment> it = bug.getComments().iterator(); it.hasNext();) {
+// Comment comment = it.next();
+// System.out
+// .println(comment.getAuthorName() + "<" + comment.getAuthor() + "> (" +
+// comment.getCreated() + ")");
+// System.out.print(comment.getText());
+// System.out.println();
+// }
+// }
+// /** URL of the Bugzilla server */
+// private static String bugzillaUrl;
+// private static BugzillaRepositoryUtil INSTANCE = new
+// BugzillaRepositoryUtil();
+// public static List<String> getValidKeywords(String repositoryURL) {
+// return
+// BugzillaPlugin.getDefault().getProductConfiguration(repositoryURL).getKeywords();
+// }
+// /**
+// * Get the attribute values for a new bug
+// *
+// * @param nbm
+// * A reference to a NewBugModel to store all of the data
+// * @throws Exception
+// */
+// public static void setupNewBugAttributes(String serverUrl, NewBugModel
+// nbm, boolean getProd) throws Exception {
+// BufferedReader in = null;
+// try {
+// // create a new input stream for getting the bug
+// String prodname = URLEncoder.encode(nbm.getProduct(),
+// BugzillaPlugin.ENCODING_UTF_8);
+//
+// TaskRepository repository =
+// MylarTaskListPlugin.getRepositoryManager().getRepository(
+// BugzillaPlugin.REPOSITORY_KIND, serverUrl);
+//
+// if (repository == null) {
+// throw new LoginException("Repository configuration error.");
+// }
+// if (repository.getUserName() == null ||
+// repository.getUserName().trim().equals("")
+// || repository.getPassword() == null) {
+// throw new LoginException("Login credentials missing.");
+// }
+//
+// String url = repository.getUrl() + "/enter_bug.cgi";
+//
+// // use the proper url if we dont know the product yet
+// if (!getProd)
+// url += "?product=" + prodname + "&";
+// else
+// url += "?";
+//
+// url += POST_ARGS_LOGIN + URLEncoder.encode(repository.getUserName(),
+// BugzillaPlugin.ENCODING_UTF_8)
+// + POST_ARGS_PASSWORD + URLEncoder.encode(repository.getPassword(),
+// BugzillaPlugin.ENCODING_UTF_8);
+//
+// URL bugUrl = new URL(url);
+// URLConnection cntx =
+// BugzillaPlugin.getDefault().getUrlConnection(bugUrl);
+// if (cntx != null) {
+// InputStream input = cntx.getInputStream();
+// if (input != null) {
+// in = new BufferedReader(new InputStreamReader(input));
+//
+// new NewBugParser(in).parseBugAttributes(nbm, getProd);
+// }
+// }
+//
+// } catch (Exception e) {
+//
+// if (e instanceof KeyManagementException || e instanceof
+// NoSuchAlgorithmException
+// || e instanceof IOException) {
+// if (MessageDialog.openQuestion(null, "Bugzilla Connect Error",
+// "Unable to connect to Bugzilla server.\n"
+// + "Bug report will be created offline and saved for submission later."))
+// {
+// nbm.setConnected(false);
+// setupBugAttributes(serverUrl, nbm);
+// } else
+// throw new Exception("Bug report will not be created.");
+// } else
+// throw e;
+// } finally {
+// try {
+// if (in != null)
+// in.close();
+// } catch (IOException e) {
+// BugzillaPlugin.log(new Status(IStatus.ERROR,
+// IBugzillaConstants.PLUGIN_ID, IStatus.ERROR,
+// "Problem closing the stream", e));
+// }
+// }
+// }
+// public static boolean downloadAttachment(TaskRepository repository, int
+// id, File destinationFile, boolean overwrite)
+// throws IOException {
+// BufferedReader in = null;
+// try {
+// String url = repository.getUrl() + POST_ARGS_ATTACHMENT_DOWNLOAD + id;
+// if (repository.hasCredentials()) {
+// url += "&" + POST_ARGS_LOGIN
+// + URLEncoder.encode(repository.getUserName(),
+// BugzillaPlugin.ENCODING_UTF_8)
+// + POST_ARGS_PASSWORD
+// + URLEncoder.encode(repository.getPassword(),
+// BugzillaPlugin.ENCODING_UTF_8);
+// }
+// URL downloadUrl = new URL(url);
+// URLConnection connection =
+// BugzillaPlugin.getDefault().getUrlConnection(downloadUrl);
+// if (connection != null) {
+// InputStream input = connection.getInputStream();
+// if (input != null) {
+// in = new BufferedReader(new InputStreamReader(input));
+// if (destinationFile.exists() && !overwrite) {
+// return false;
+// }
+// destinationFile.createNewFile();
+// OutputStreamWriter outputStream = new OutputStreamWriter(new
+// FileOutputStream(destinationFile));
+// BufferedWriter out = new BufferedWriter(outputStream);
+// char[] buf = new char[1024];
+// int len;
+// while ((len = in.read(buf)) > 0) {
+// out.write(buf, 0, len);
+// }
+// in.close();
+// out.close();
+// return true;
+// }
+// }
+// } catch (MalformedURLException e) {
+// throw e;
+// } catch (IOException e) {
+// throw e;
+// } catch (Exception e) {
+// BugzillaPlugin.log(new Status(IStatus.ERROR,
+// IBugzillaConstants.PLUGIN_ID, IStatus.ERROR,
+// "Problem retrieving attachment", e));
+// return false;
+// } finally {
+// try {
+// if (in != null)
+// in.close();
+// } catch (IOException e) {
+// BugzillaPlugin.log(new Status(IStatus.ERROR,
+// IBugzillaConstants.PLUGIN_ID, IStatus.ERROR,
+// "Problem closing the stream", e));
+// }
+// }
+// return false;
+// } \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java
new file mode 100644
index 000000000..d7ecbac02
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java
@@ -0,0 +1,284 @@
+///*******************************************************************************
+// * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+// * University Of British Columbia - initial API and implementation
+// *******************************************************************************/
+//package org.eclipse.mylar.internal.bugzilla.core;
+//
+//import java.io.Serializable;
+//import java.text.ParseException;
+//import java.text.SimpleDateFormat;
+//import java.util.ArrayList;
+//import java.util.Date;
+//import java.util.Iterator;
+//import java.util.List;
+//import java.util.StringTokenizer;
+//import java.util.TimeZone;
+//
+//import org.eclipse.mylar.internal.tasklist.AbstractRepositoryTaskData;
+//import org.eclipse.mylar.internal.tasklist.RepositoryOperation;
+//import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute;
+//import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttributeFactory;
+//
+///**
+// * @author Mik Kersten
+// * @author Rob Elves
+// */
+//public class BugzillaTaskData extends AbstractRepositoryTaskData implements Serializable {
+
+// private static final long serialVersionUID = 310066248657960823L;
+//
+// public static final String VAL_STATUS_VERIFIED = "VERIFIED";
+//
+// public static final String VAL_STATUS_CLOSED = "CLOSED";
+//
+// public static final String VAL_STATUS_RESOLVED = "RESOLVED";
+//
+// public static final String VAL_STATUS_NEW = "NEW";
+//
+// /** Parser for dates in the report */
+// private static SimpleDateFormat delta_ts_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//
+// private static SimpleDateFormat creation_ts_format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+//
+// /** The bugs valid keywords */
+// protected List<String> validKeywords;
+//
+// /** The repositoryOperations that can be done on the report */
+// protected List<RepositoryOperation> repositoryOperations = new ArrayList<RepositoryOperation>();
+//
+// private static final RepositoryTaskAttributeFactory attributeFactory = new BugzillaAttributeFactory();
+//
+// /** The operation that was selected to do to the bug */
+// protected RepositoryOperation selectedOperation = null;
+//
+// /** Whether or not this bug report is saved offline. */
+// protected boolean savedOffline = false;
+//
+// protected boolean hasChanges = false;
+//
+// protected String charset = null;
+//
+// public BugzillaTaskData(int id, String repositoryURL) {
+// super(id, repositoryURL);
+// }
+//
+// /**
+// * TODO: move?
+// */
+// public static boolean isResolvedStatus(String status) {
+// if (status != null) {
+// return status.equals(VAL_STATUS_RESOLVED) || status.equals(VAL_STATUS_CLOSED)
+// || status.equals(VAL_STATUS_VERIFIED);
+// } else {
+// return false;
+// }
+// }
+//
+// public void addCC(String email) {
+// addAttributeValue(BugzillaReportElement.CC.getKeyString(), email);
+// }
+//
+// /**
+// * Add an operation to the bug
+// *
+// * @param o
+// * The operation to add
+// */
+// public void addOperation(RepositoryOperation o) {
+// repositoryOperations.add(o);
+// }
+//
+// /**
+// * Get the set of addresses in the CC list
+// *
+// * @return A <code>Set</code> of addresses in the CC list
+// */
+// public List<String> getCC() {
+// return getAttributeValues(BugzillaReportElement.CC.getKeyString());
+// }
+//
+// /**
+// * Get the date that the bug was created
+// *
+// * @return The bugs creation date
+// */
+// public Date getCreated() {
+// if (created == null) {
+// String dateString = getAttributeValue(BugzillaReportElement.CREATION_TS.getKeyString());
+// try {
+// created = creation_ts_format.parse(dateString);
+// } catch (ParseException e) {
+// // ignore
+// }
+// }
+// return created;
+// }
+//
+// /**
+// * Get the keywords for the bug
+// *
+// * @return The keywords for the bug
+// */
+// public List<String> getKeywords() {
+//
+// // get the selected keywords for the bug
+// StringTokenizer st = new StringTokenizer(getAttributeValue(BugzillaReportElement.KEYWORDS.getKeyString()), ",", false);
+// List<String> keywords = new ArrayList<String>();
+// while (st.hasMoreTokens()) {
+// String s = st.nextToken().trim();
+// keywords.add(s);
+// }
+//
+// return keywords;
+// }
+//
+// public String getLabel() {
+// return getId() + ": " + getAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString());
+// }
+//
+// public Date getLastModified(TimeZone timeZone) {
+// if (lastModified == null) {
+// String dateString = getAttributeValue(BugzillaReportElement.DELTA_TS.getKeyString());
+// try {
+// if(timeZone != null) {
+// delta_ts_format.setTimeZone(timeZone);
+// } else {
+// delta_ts_format.setTimeZone(TimeZone.getDefault());
+// }
+// lastModified = delta_ts_format.parse(dateString);
+// } catch (ParseException e) {
+// // ignore
+// }
+// }
+// return lastModified;
+// }
+//
+// /**
+// * Get an operation from the bug based on its display name
+// *
+// * @param displayText
+// * The display text for the operation
+// * @return The operation that has the display text
+// */
+// public RepositoryOperation getOperation(String displayText) {
+// Iterator<RepositoryOperation> itr = repositoryOperations.iterator();
+// while (itr.hasNext()) {
+// RepositoryOperation o = itr.next();
+// String opName = o.getOperationName();
+// opName = opName.replaceAll("</.*>", "");
+// opName = opName.replaceAll("<.*>", "");
+// if (opName.equals(displayText))
+// return o;
+// }
+// return null;
+// }
+//
+// /**
+// * Get all of the repositoryOperations that can be done to the bug
+// *
+// * @return The repositoryOperations that can be done to the bug
+// */
+// public List<RepositoryOperation> getOperations() {
+// return repositoryOperations;
+// }
+//
+// /**
+// * Get the person who reported the bug
+// *
+// * @return The person who reported the bug
+// */
+// public String getReporter() {
+// return getAttributeValue(BugzillaReportElement.REPORTER.getKeyString());
+// }
+//
+// /**
+// * Get the resolution of the bug
+// *
+// * @return The resolution of the bug
+// */
+// public String getResolution() {
+// return getAttributeValue(BugzillaReportElement.RESOLUTION.getKeyString());
+// }
+//
+// /**
+// * Get the status of the bug
+// *
+// * @return The bugs status
+// */
+// public String getStatus() {
+// return getAttributeValue(BugzillaReportElement.BUG_STATUS.getKeyString());
+// }
+//
+// /**
+// * Get the summary for the bug
+// *
+// * @return The bugs summary
+// */
+// public String getSummary() {
+// return getAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString());
+// }
+//
+// public void setSummary(String summary) {
+// setAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString(), summary);
+// }
+//
+// public String getProduct() {
+// return getAttributeValue(BugzillaReportElement.PRODUCT.getKeyString());
+// }
+//
+// public boolean isLocallyCreated() {
+// return false;
+// }
+//
+// public boolean isResolved() {
+// RepositoryTaskAttribute status = getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString());
+// return status != null && isResolvedStatus(status.getValue());
+// }
+//
+// public boolean isSavedOffline() {
+// return savedOffline;
+// }
+//
+// /**
+// * Remove an address from the bugs CC list
+// *
+// * @param email
+// * the address to be removed from the CC list
+// * @return <code>true</code> if the email is in the set and it was removed
+// */
+// public void removeCC(String email) {
+// removeAttributeValue(BugzillaReportElement.CC.getKeyString(), email);
+// }
+//
+// public void setDescription(String description) {
+// // ignore, used by NewBugReport
+// // this.description = decodeStringFromCharset(description);
+// }
+//
+// public void setKeywords(List<String> keywords) {
+// this.validKeywords = keywords;
+// }
+//
+// public void setOfflineState(boolean newOfflineState) {
+// savedOffline = newOfflineState;
+// }
+//
+// public void setSelectedOperation(RepositoryOperation o) {
+// selectedOperation = o;
+// }
+//
+// public RepositoryOperation getSelectedOperation() {
+// return selectedOperation;
+// }
+//
+// @Override
+// public RepositoryTaskAttributeFactory getAttributeFactory() {
+// return attributeFactory;
+// }
+//}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java
new file mode 100644
index 000000000..50a5b6011
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.core;
+
+/**
+ * @author Mik Kersten (hardening of prototype
+ */
+public interface IBugzillaConstants {
+
+ // Error response from bugzilla server upon bug request
+ static final String ERROR_INVALID_BUG_ID = "InvalidBugId";
+
+ static final String ERROR_INVALID_USERNAME_OR_PASSWORD = "Invalid Username Or Password";
+
+ static final String MOST_RECENT_QUERY = "org.eclipse.mylar.bugzilla.query.last";
+
+ static final String SERVER_VERSION = "org.eclipse.mylar.bugzilla.server.version";
+
+// static final String SERVER_220 = "2.20";
+// static final String SERVER_218 = "2.18";
+
+ /** Used by search engine */
+ public static final int RETURN_ALL_HITS = -1;
+
+ public static final String CONTENT_TYPE_RDF = "&ctype=rdf";
+
+ /** Supported bugzilla repository versions */
+ static public enum BugzillaServerVersion {
+ SERVER_218, SERVER_220, SERVER_222;
+
+ @Override
+ public String toString() {
+ switch (this) {
+ case SERVER_222:
+ return "2.22";
+ case SERVER_220:
+ return "2.20";
+ case SERVER_218:
+ return "2.18";
+ default:
+ return "null";
+ }
+ }
+
+ /** returns null if version string unknown* */
+ static public BugzillaServerVersion fromString(String version) {
+ if (version.equals(SERVER_222.toString()))
+ return SERVER_222;
+ if (version.equals(SERVER_220.toString()))
+ return SERVER_220;
+ if (version.equals(SERVER_218.toString()))
+ return SERVER_218;
+ return null;
+ }
+ }
+
+ // static final String IS_216 = "BUGZILLA_IS_216";
+ // static final String IS_218 = "BUGZILLA_IS_218";
+ // static final String IS_220 = "BUGZILLA_IS_220";
+
+ static final String REFRESH_QUERY = "org.eclipse.mylar.bugzilla.query.refresh";
+
+ static final String MAX_RESULTS = "org.eclipse.mylar.bugzilla.search.results.max";
+
+ // names for the resources used to hold the different attributes of a bug
+ static final String VALUES_STATUS = "org.eclipse.mylar.bugzilla.values.status";
+
+ static final String VALUSE_STATUS_PRESELECTED = "org.eclipse.mylar.bugzilla.values.status.preselected";
+
+ static final String VALUES_RESOLUTION = "org.eclipse.mylar.bugzilla.values.resolution";
+
+ static final String VALUES_SEVERITY = "org.eclipse.mylar.bugzilla.values.severity";
+
+ static final String VALUES_PRIORITY = "org.eclipse.mylar.bugzilla.values.priority";
+
+ static final String VALUES_HARDWARE = "org.eclipse.mylar.bugzilla.values.hardware";
+
+ static final String VALUES_OS = "org.eclipse.mylar.bugzilla.values.os";
+
+ static final String VALUES_PRODUCT = "org.eclipse.mylar.bugzilla.values.product";
+
+ static final String VALUES_COMPONENT = "org.eclipse.mylar.bugzilla.values.component";
+
+ static final String VALUES_VERSION = "org.eclipse.mylar.bugzilla.values.version";
+
+ static final String VALUES_TARGET = "org.eclipse.mylar.bugzilla.values.target";
+
+ static final String ECLIPSE_BUGZILLA_URL = "https://bugs.eclipse.org/bugs";
+
+ static final String TEST_BUGZILLA_216_URL = "http://mylar.eclipse.org/bugs216";
+
+ static final String TEST_BUGZILLA_218_URL = "http://mylar.eclipse.org/bugs218";
+
+ static final String TEST_BUGZILLA_220_URL = "http://mylar.eclipse.org/bugs220";
+
+ static final String TEST_BUGZILLA_2201_URL = "http://mylar.eclipse.org/bugs2201";
+
+ static final String TEST_BUGZILLA_222_URL = "http://mylar.eclipse.org/bugs222";
+
+ // Default values for keys
+
+ static final String[] DEFAULT_STATUS_VALUES = { "Unconfirmed", "New", "Assigned", "Reopened", "Resolved",
+ "Verified", "Closed" };
+
+ static final String[] DEFAULT_PRESELECTED_STATUS_VALUES = { "New", "Assigned", "Reopened" };
+
+ // static final String[] DEFAULT_RESOLUTION_VALUES = { "Fixed", "Invalid",
+ // "Wontfix", "Later", "Remind", "Duplicate",
+ // "Worksforme", "Moved" };
+
+ static final String[] DEFAULT_SEVERITY_VALUES = { "blocker", "critical", "major", "normal", "minor", "trivial",
+ "enhancement" };
+
+ static final String[] DEFAULT_PRIORITY_VALUES = { "P1", "P2", "P3", "P4", "P5" };
+
+ static final String[] DEFAULT_HARDWARE_VALUES = { "All", "Macintosh", "PC", "Power PC", "Sun", "Other" };
+
+ static final String[] DEFAULT_OS_VALUES = { "All", "AIX Motif", "Windows 95", "Windows 98", "Windows CE",
+ "Windows ME", "Windows 2000", "Windows NT", "Windows XP", "Windows All", "MacOS X", "Linux", "Linux-GTK",
+ "Linux-Motif", "HP-UX", "Neutrino", "QNX-Photon", "Solaris", "Unix All", "other" };
+
+ static final String[] DEFAULT_PRODUCT_VALUES = {};
+
+ static final String[] DEFAULT_COMPONENT_VALUES = {};
+
+ static final String[] DEFAULT_VERSION_VALUES = {};
+
+ static final String[] DEFAULT_TARGET_VALUES = {};
+
+ public static final String TITLE_MESSAGE_DIALOG = "Mylar Bugzilla Connector";
+
+ public static final String TITLE_NEW_BUG = "New Bugzilla Report";
+
+ public static final String MESSAGE_LOGIN_FAILURE = "Bugzilla login information or repository version incorrect";
+
+ public static final String INVALID_2201_ATTRIBUTE_IGNORED = "EclipsebugsBugzilla2.20.1";
+
+ public static final String VALUE_STATUS_RESOLVED = "RESOLVED";
+
+ public static final String VALUE_STATUS_NEW = "NEW";
+
+ public static final String VALUE_STATUS_CLOSED = "CLOSED";
+
+ public static final String VALUE_STATUS_ASSIGNED = "ASSIGNED";
+
+ public static final String VALUE_RESOLUTION_LATER = "LATER";
+
+ public static enum BUGZILLA_OPERATION {
+ none, accept, resolve, duplicate, reassign, reassignbycomponent, reopen, verify, close;
+ }
+
+ public static enum BUGZILLA_REPORT_STATUS {
+ UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED;
+ }
+
+ public static enum BUGZILLA_REPORT_SEVERITY {
+ UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED;
+ }
+
+ public static enum BUGZILLA_RESOLUTION {
+ FIXED, INVALID, WONTFIX, LATER, REMIND, WORKSFORME;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java
new file mode 100644
index 000000000..32469c701
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer;
+import org.eclipse.mylar.internal.tasklist.util.HtmlTag;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token;
+
+/**
+ * Parses Bugzilla keywords page to determine keywords valid in this
+ * installation
+ *
+ * @author Shawn Minto
+ */
+public class KeywordParser {
+ /** Tokenizer used on the stream */
+ private static HtmlStreamTokenizer tokenizer;
+
+ /**
+ * Constructor.
+ *
+ * @param in
+ * The input stream for the keywords page.
+ */
+ public KeywordParser(Reader in) {
+ tokenizer = new HtmlStreamTokenizer(in, null);
+ }
+
+ public String getEncoding() {
+ return "";
+ }
+
+ /**
+ * Parse the keyword page for the valid products that a bug can be logged
+ * for
+ *
+ * @return A list of the keywordds that we can enter bugs for
+ * @throws IOException
+ * @throws ParseException
+ */
+ public List<String> getKeywords() throws IOException, ParseException, LoginException {
+ ArrayList<String> keywords = new ArrayList<String>();
+
+ boolean isTitle = false;
+ boolean possibleBadLogin = false;
+ String title = "";
+
+ for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
+
+ // make sure that bugzilla doesn't want us to login
+ if (token.getType() == Token.TAG && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.TITLE
+ && !((HtmlTag) (token.getValue())).isEndTag()) {
+ isTitle = true;
+ continue;
+ }
+
+ if (isTitle) {
+ // get all of the data from inside of the title tag
+ if (token.getType() != Token.TAG) {
+ title += ((StringBuffer) token.getValue()).toString().toLowerCase() + " ";
+ continue;
+ } else if (token.getType() == Token.TAG
+ && ((HtmlTag) token.getValue()).getTagType() == HtmlTag.Type.TITLE
+ && ((HtmlTag) token.getValue()).isEndTag()) {
+ // check if we may have a problem with login by looking at
+ // the title of the page
+ if ((title.indexOf("login") != -1
+ || (title.indexOf("invalid") != -1 && title.indexOf("password") != -1)
+ || title.indexOf("check e-mail") != -1 || title.indexOf("error") != -1))
+ possibleBadLogin = true;
+ isTitle = false;
+ title = "";
+ }
+ continue;
+ }
+
+ if (token.getType() == Token.TAG) {
+ HtmlTag tag = (HtmlTag) token.getValue();
+ if (tag.getTagType() == HtmlTag.Type.TR && !tag.isEndTag()) {
+ token = tokenizer.nextToken();
+ if (token.getType() != Token.EOF && token.getType() == Token.TAG) {
+ tag = (HtmlTag) token.getValue();
+ if (tag.getTagType() != HtmlTag.Type.TH)
+ continue;
+ else {
+ if (tag.getAttribute("align") == null
+ || !"left".equalsIgnoreCase(tag.getAttribute("align")))
+ parseKeywords(keywords);
+
+ }
+ }
+ continue;
+ }
+ }
+ }
+
+ // if we don't have any keywords and suspect that there was a login
+ // problem, assume we had a login problem
+ if (keywords == null && possibleBadLogin)
+ throw new LoginException(IBugzillaConstants.MESSAGE_LOGIN_FAILURE);
+ return keywords;
+ }
+
+ /**
+ * Parse the keywords that we can enter bugs for
+ *
+ * @param keywords
+ * The list of keywords to add this new product to
+ * @return
+ */
+ private void parseKeywords(List<String> keywords) throws IOException, ParseException {
+ StringBuffer sb = new StringBuffer();
+
+ for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
+ if (token.getType() == Token.TAG) {
+ HtmlTag tag = (HtmlTag) token.getValue();
+ if (tag.getTagType() == HtmlTag.Type.TH
+ && (tag.isEndTag() || !"left".equalsIgnoreCase(tag.getAttribute("align"))))
+ break;
+ } else if (token.getType() == Token.TEXT)
+ sb.append(token.toString());
+ }
+
+ String prod = HtmlStreamTokenizer.unescape(sb).toString();
+ if (prod.endsWith(":"))
+ prod = prod.substring(0, prod.length() - 1);
+ keywords.add(prod);
+
+ for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
+ if (token.getType() == Token.TAG) {
+ HtmlTag tag = (HtmlTag) token.getValue();
+ if (tag.getTagType() == HtmlTag.Type.TR && tag.isEndTag())
+ break;
+
+ }
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java
new file mode 100644
index 000000000..a8d9b6fef
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskData;
+
+
+/**
+ * This class is used to store data about the new bug that is being created
+ * while the wizard is being used
+ *
+ * @author Eric Booth
+ * @author Rob Elves
+ */
+public class NewBugzillaReport extends RepositoryTaskData implements Serializable {
+
+ /** Automatically generated serialVersionUID */
+ private static final long serialVersionUID = 3977859587934335283L;
+
+ /** Whether the attributes have been parsed yet or not */
+ protected boolean hasParsedAttributes = false;
+
+ /** Whether the products have been parsed yet or not */
+ protected boolean hasParsedProducts = false;
+
+ /** The product that the bug is for */
+ protected String product;
+
+ /** The summary for the bug */
+ protected String summary = "";
+
+ /** The description for the bug */
+ protected String description = "";
+
+ /**
+ * Flag to indicate status of connection to Bugzilla server to identify
+ * whether ProductConfiguration should be used instead
+ */
+ protected boolean connected = true;
+
+ /** Whether or not this bug report is saved offline. */
+ protected boolean savedOffline = false;
+
+ /**
+ * Creates a new <code>NewBugModel</code>. The id chosen for this bug is
+ * based on the id of the last <code>NewBugModel</code> that was created.
+ */
+ public NewBugzillaReport(String repositoryURL, int offlineId) {
+ super(new BugzillaAttributeFactory(), BugzillaPlugin.REPOSITORY_KIND, repositoryURL, offlineId);
+ }
+
+ public String getLabel() {
+ return "New Bug #" + getId();
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String newDescription) {
+ description = newDescription;
+ }
+
+ public String getSummary() {
+ return summary;
+ }
+
+ public void setSummary(String newSummary) {
+ summary = newSummary;
+ }
+
+ /**
+ * @return The product that the bug is for.
+ */
+ public String getProduct() {
+ return product;
+ }
+
+ /**
+ * Sets the product that the bug is for.
+ *
+ * @param product
+ * The product.
+ */
+ public void setProduct(String product) {
+ this.product = product;
+ }
+
+ /**
+ * @return Flag to indicate status of connection to Bugzilla server (to
+ * identify whether ProductConfiguration should be used instead)
+ */
+ public boolean isConnected() {
+ return connected;
+ }
+
+ /**
+ * Sets the value of the flag to indicate status of connection to Bugzilla
+ * server (to identify whether ProductConfiguration should be used instead)
+ *
+ * @param newConnectionStatus
+ * <code>true</code> if the bug is connected.
+ */
+ public void setConnected(boolean newConnectionStatus) {
+ connected = newConnectionStatus;
+ }
+
+ /**
+ * @return Returns whether the attributes have been parsed yet or not.
+ */
+ public boolean hasParsedAttributes() {
+ return hasParsedAttributes;
+ }
+
+ /**
+ * Sets whether the attributes have been parsed yet or not.
+ *
+ * @param hasParsedAttributes
+ * <code>true</code> if the attributes have been parsed.
+ */
+ public void setParsedAttributesStatus(boolean hasParsedAttributes) {
+ this.hasParsedAttributes = hasParsedAttributes;
+ }
+
+ /**
+ * @return Returns whether the products have been parsed yet or not.
+ */
+ public boolean hasParsedProducts() {
+ return hasParsedProducts;
+ }
+
+ /**
+ * Sets whether the products have been parsed yet or not.
+ *
+ * @param hasParsedProducts
+ * <code>true</code> if the products have been parsed.
+ */
+ public void setParsedProductsStatus(boolean hasParsedProducts) {
+ this.hasParsedProducts = hasParsedProducts;
+ }
+
+ public boolean isSavedOffline() {
+ return savedOffline;
+ }
+
+ public boolean isLocallyCreated() {
+ return true;
+ }
+
+// public void setOfflineState(boolean newOfflineState) {
+// savedOffline = newOfflineState;
+// }
+
+ public boolean hasChanges() {
+ return true;
+ }
+
+ /** returns null */
+ public Date getCreated() {
+ return null;
+ }
+
+ public Date getLastModified() {
+ return null;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java
new file mode 100644
index 000000000..5f39b7e51
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java
@@ -0,0 +1,370 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Class describing the configuration of products and components for a given
+ * Bugzilla installation.
+ *
+ * @author Rob Elves
+ */
+public class RepositoryConfiguration {
+
+ private static final String VERSION_UNKNOWN = "unknown";
+
+ private Map<String, ProductEntry> products = new HashMap<String, ProductEntry>();
+
+ private List<String> platforms = new ArrayList<String>();
+
+ private List<String> operatingSystems = new ArrayList<String>();
+
+ private List<String> priorities = new ArrayList<String>();
+
+ private List<String> severities = new ArrayList<String>();
+
+ private List<String> bugStatus = new ArrayList<String>();
+
+ private List<String> openStatusValues = new ArrayList<String>();
+
+ private List<String> resolutionValues = new ArrayList<String>();
+
+ private List<String> keywords = new ArrayList<String>();
+
+ // master lists
+
+ private List<String> versions = new ArrayList<String>();
+
+ private List<String> components = new ArrayList<String>();
+
+ private List<String> milestones = new ArrayList<String>();
+
+ private String version = VERSION_UNKNOWN;
+
+ public RepositoryConfiguration() {
+ super();
+ }
+
+ public void addStatus(String status) {
+ bugStatus.add(status);
+ }
+
+ public List<String> getStatusValues() {
+ return bugStatus;
+ }
+
+ public void addResolution(String res) {
+ resolutionValues.add(res);
+ }
+
+ public List<String> getResolutions() {
+ return resolutionValues;
+ }
+
+ /**
+ * Adds a product to the configuration.
+ */
+ public void addProduct(String name) {
+ if (!products.containsKey(name)) {
+ ProductEntry product = new ProductEntry(name);
+ products.put(name, product);
+ }
+ }
+
+ /**
+ * Returns an array of names of current products.
+ */
+ public List<String> getProducts() {
+ ArrayList<String> productList = new ArrayList<String>(products.keySet());
+ Collections.sort(productList);
+ return productList;
+ }
+
+ /**
+ * Returns an array of names of component that exist for a given product or
+ * <code>null</code> if the product does not exist.
+ */
+ public List<String> getComponents(String product) {
+ ProductEntry entry = products.get(product);
+ if (entry != null) {
+ return entry.getComponents();
+ } else
+ return Collections.emptyList();
+ }
+
+ /**
+ * Returns an array of names of versions that exist for a given product or
+ * <code>null</code> if the product does not exist.
+ */
+ public List<String> getVersions(String product) {
+ ProductEntry entry = products.get(product);
+ if (entry != null) {
+ return entry.getVersions();
+ } else
+ return Collections.emptyList();
+ }
+
+ /**
+ * Returns an array of names of valid severity values.
+ */
+ public List<String> getSeverities() {
+ return severities;
+ }
+
+ /**
+ * Returns an array of names of valid OS values.
+ */
+ public List<String> getOSs() {
+ return operatingSystems;
+ }
+
+ public void addOS(String os) {
+ operatingSystems.add(os);
+ }
+
+ /**
+ * Returns an array of names of valid platform values.
+ */
+ public List<String> getPlatforms() {
+ return platforms;
+ }
+
+ /**
+ * Returns an array of names of valid platform values.
+ */
+ public List<String> getPriorities() {
+ return priorities;
+ }
+
+ /**
+ * Adds a component to the given product.
+ */
+ public void addComponent(String product, String component) {
+ if (!components.contains(component))
+ components.add(component);
+ ProductEntry entry = products.get(product);
+ if (entry == null) {
+ entry = new ProductEntry(product);
+ products.put(product, entry);
+ }
+ entry.addComponent(component);
+ }
+
+ // /**
+ // * Adds a list of components to the given product.
+ // */
+ // public void addComponents(String product, List<String> components) {
+ // ProductEntry entry = products.get(product);
+ // if (entry == null) {
+ // entry = new ProductEntry(product);
+ // products.put(product, entry);
+ // }
+ // for (String component : components) {
+ // entry.addComponent(component);
+ // }
+ // }
+ // /**
+ // * Adds a list of components to the given product.
+ // */
+ // public void addComponents(String product, List<String> components) {
+ // ProductEntry entry = products.get(product);
+ // if (entry == null) {
+ // entry = new ProductEntry(product);
+ // products.put(product, entry);
+ // }
+ // for (String component : components) {
+ // entry.addComponent(component);
+ // }
+ // }
+
+ public void addVersion(String product, String version) {
+ if (!versions.contains(version))
+ versions.add(version);
+ ProductEntry entry = products.get(product);
+ if (entry == null) {
+ entry = new ProductEntry(product);
+ products.put(product, entry);
+ }
+ entry.addVersion(version);
+ }
+
+ // /**
+ // * Adds a list of components to the given product.
+ // */
+ // public void addVersions(String product, List<String> versions) {
+ // ProductEntry entry = products.get(product);
+ // if (entry == null) {
+ // entry = new ProductEntry(product);
+ // products.put(product, entry);
+ // }
+ // for (String version : versions) {
+ // entry.addVersion(version);
+ // }
+ // }
+
+ public void addKeyword(String keyword) {
+ keywords.add(keyword);
+ }
+
+ public List<String> getKeywords() {
+ return keywords;
+ }
+
+ public void addPlatform(String platform) {
+ platforms.add(platform);
+ }
+
+ public void addPriority(String priority) {
+ priorities.add(priority);
+ }
+
+ public void addSeverity(String severity) {
+ severities.add(severity);
+
+ }
+
+ public void setInstallVersion(String version) {
+ this.version = version;
+ }
+
+ public String getInstallVersion() {
+ return version;
+ }
+
+ public void addTargetMilestone(String product, String target) {
+ if (!milestones.contains(target))
+ milestones.add(target);
+ ProductEntry entry = products.get(product);
+ if (entry == null) {
+ entry = new ProductEntry(product);
+ products.put(product, entry);
+ }
+
+ entry.addTargetMilestone(target);
+
+ }
+
+ public List<String> getTargetMilestones(String product) {
+ ProductEntry entry = products.get(product);
+ if (entry != null) {
+ return entry.getTargetMilestones();
+ } else
+ return Collections.emptyList();
+ }
+
+ /**
+ * Container for product information: name, components.
+ */
+ private static class ProductEntry {
+
+ String productName;
+
+ List<String> components = new ArrayList<String>();
+
+ List<String> versions = new ArrayList<String>();
+
+ List<String> milestones = new ArrayList<String>();
+
+ ProductEntry(String name) {
+ this.productName = name;
+ }
+
+ List<String> getComponents() {
+ return components;
+ }
+
+ void addComponent(String componentName) {
+ if (!components.contains(componentName)) {
+ components.add(componentName);
+ }
+ }
+
+ List<String> getVersions() {
+ return versions;
+ }
+
+ void addVersion(String name) {
+ if (!versions.contains(name)) {
+ versions.add(name);
+ }
+ }
+
+ List<String> getTargetMilestones() {
+ return milestones;
+ }
+
+ void addTargetMilestone(String target) {
+ milestones.add(target);
+ }
+ }
+
+ public List<String> getOpenStatusValues() {
+ return openStatusValues;
+ }
+
+ public void addOpenStatusValue(String value) {
+ openStatusValues.add(value);
+ }
+
+ public List<String> getComponents() {
+ return components;
+ }
+
+ public List<String> getTargetMilestones() {
+ return milestones;
+ }
+
+ public List<String> getVersions() {
+ return versions;
+ }
+
+ /*
+ * Intermediate step until configuration is made generic.
+ */
+ public List<String> getOptionValues(BugzillaReportElement element, String product) {
+ switch (element) {
+ case PRODUCT:
+ return getProducts();
+ case TARGET_MILESTONE:
+ // return getTargetMilestones();
+ return getTargetMilestones(product);
+ case BUG_STATUS:
+ return getStatusValues();
+ case VERSION:
+ // return getVersions();
+ return getVersions(product);
+ case COMPONENT:
+ // return getComponents();
+ return getComponents(product);
+ case REP_PLATFORM:
+ return getPlatforms();
+ case OP_SYS:
+ return getOSs();
+ case PRIORITY:
+ return getPriorities();
+ case BUG_SEVERITY:
+ return getSeverities();
+ case KEYWORDS:
+ return getKeywords();
+ case RESOLUTION:
+ return getResolutions();
+ default:
+ return new ArrayList<String>();
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java
new file mode 100644
index 000000000..c172fe997
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.IOException;
+import java.net.Proxy;
+import java.net.URL;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.security.auth.login.LoginException;
+
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * Reads bugzilla product configuration from config.cgi on server in RDF format.
+ *
+ * @author Rob Elves
+ */
+public class RepositoryConfigurationFactory extends AbstractReportFactory {
+
+ private static final String CONFIG_RDF_URL = "/config.cgi?ctype=rdf";
+
+ private static RepositoryConfigurationFactory instance;
+
+ private RepositoryConfigurationFactory() {
+ // no initial setup needed
+ }
+
+ public static RepositoryConfigurationFactory getInstance() {
+ if (instance == null) {
+ instance = new RepositoryConfigurationFactory();
+ }
+ instance.setClean(true);
+ return instance;
+ }
+
+ public RepositoryConfiguration getConfiguration(String repositoryUrl, Proxy proxySettings, String userName,
+ String password, String encoding) throws IOException, KeyManagementException, LoginException,
+ NoSuchAlgorithmException {
+ String configUrlStr = repositoryUrl + CONFIG_RDF_URL;
+ configUrlStr = BugzillaRepositoryUtil.addCredentials(configUrlStr, userName, password);
+ URL url = new URL(configUrlStr);
+ SaxConfigurationContentHandler contentHandler = new SaxConfigurationContentHandler();
+ collectResults(url, proxySettings, encoding, contentHandler);
+ return contentHandler.getConfiguration();
+
+ }
+
+ // public RepositoryConfiguration getConfiguration(String server) throws
+ // IOException {
+ // URL serverURL = new URL(server + CONFIG_RDF_URL);
+ // BugzillaRepositoryUtil.addCredentials(repository, serverURL)
+ // URLConnection c = serverURL.openConnection();
+ // BufferedReader in = new BufferedReader(new
+ // InputStreamReader(c.getInputStream()));
+ //
+ // SaxConfigurationContentHandler contentHandler = new
+ // SaxConfigurationContentHandler();
+ //
+ // try {
+ // StringBuffer result = XmlCleaner.clean(in);
+ // StringReader strReader = new StringReader(result.toString());
+ // XMLReader reader = XMLReaderFactory.createXMLReader();
+ // reader.setErrorHandler(new SaxErrorHandler());
+ // reader.setContentHandler(contentHandler);
+ // reader.parse(new InputSource(strReader));
+ // } catch (SAXException e) {
+ // throw new IOException("Unable to read server configuration.");
+ // }
+ // return contentHandler.getConfiguration();
+ //
+ // }
+
+ class SaxErrorHandler implements ErrorHandler {
+
+ public void error(SAXParseException exception) throws SAXException {
+ throw exception;
+ // MylarStatusHandler.fail(exception, "ServerConfigurationFactory: "
+ // + exception.getLocalizedMessage(), false);
+ }
+
+ public void fatalError(SAXParseException exception) throws SAXException {
+ throw exception;
+ // MylarStatusHandler.fail(exception, "ServerConfigurationFactory: "
+ // + exception.getLocalizedMessage(), false);
+ }
+
+ public void warning(SAXParseException exception) throws SAXException {
+ // ignore
+ }
+
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java
new file mode 100644
index 000000000..d318c8ad0
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.IOException;
+import java.net.Proxy;
+import java.net.URL;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskData;
+
+/**
+ * Reads bug reports from repository.
+ *
+ * @author Rob Elves
+ */
+public class RepositoryReportFactory extends AbstractReportFactory {
+
+ private static RepositoryReportFactory instance;
+
+ private static BugzillaAttributeFactory bugzillaAttributeFactory = new BugzillaAttributeFactory();
+
+ private static final String SHOW_BUG_CGI_XML = "/show_bug.cgi?ctype=xml&id=";
+
+ private RepositoryReportFactory() {
+ // no initial setup needed
+ }
+
+ public static RepositoryReportFactory getInstance() {
+ if (instance == null) {
+ instance = new RepositoryReportFactory();
+ }
+ return instance;
+ }
+
+ public void populateReport(RepositoryTaskData bugReport, String repositoryUrl, Proxy proxySettings, String userName,
+ String password, String characterEncoding) throws LoginException, KeyManagementException,
+ NoSuchAlgorithmException, IOException {
+
+ SaxBugReportContentHandler contentHandler = new SaxBugReportContentHandler(bugzillaAttributeFactory, bugReport);
+
+ String xmlBugReportUrl = repositoryUrl + SHOW_BUG_CGI_XML + bugReport.getId();
+ xmlBugReportUrl = BugzillaRepositoryUtil.addCredentials(xmlBugReportUrl, userName, password);
+ URL serverURL = new URL(xmlBugReportUrl);
+
+ collectResults(serverURL, proxySettings, characterEncoding, contentHandler);
+
+ if (contentHandler.errorOccurred()) {
+ throw new IOException(contentHandler.getErrorMessage());
+ }
+
+ }
+
+// public class BugzillaReportParseException extends IOException {
+// private static final long serialVersionUID = 1609566799047500866L;
+//
+// public BugzillaReportParseException(String message) {
+// super(message);
+// }
+// }
+}
+
+// URLConnection connection =
+// BugzillaPlugin.getDefault().getUrlConnection(serverURL, proxySettings);
+// if (connection == null || !(connection instanceof HttpURLConnection)) {
+// return;
+// }
+//
+// // String contentEncoding = connection.getContentEncoding();
+// // if (contentEncoding != null) {
+// // String charsetFromContentType =
+// // BugzillaRepositoryUtil.getCharsetFromString(contentEncoding);
+// // if (charsetFromContentType != null) {
+// // bugReport.setCharset(charsetFromContentType);
+// // }
+// // } else {
+// // bugReport.setCharset(BugzillaPlugin.ENCODING_UTF_8);
+// // }
+//
+// try {
+//
+// if (characterEncoding != null) {
+// in = new BufferedReader(new InputStreamReader(connection.getInputStream(),
+// characterEncoding));
+// } else {
+// in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+// }
+//
+// XMLReader reader = XMLReaderFactory.createXMLReader();
+// reader.setContentHandler(contentHandler);
+// reader.setErrorHandler(new SaxErrorHandler());
+// reader.parse(new InputSource(in));
+//
+// if (contentHandler.errorOccurred()) {
+// throw new BugzillaReportParseException(contentHandler.getErrorMessage());
+// }
+//
+// } catch (SAXException e) {
+// if
+// (e.getMessage().equals(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD))
+// {
+// throw new LoginException(e.getMessage());
+// } else {
+// throw new IOException(e.getMessage());
+// }
+// } finally {
+// try {
+// if (in != null)
+// in.close();
+// } catch (IOException e) {
+// BugzillaPlugin.log(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID,
+// IStatus.ERROR,
+// "Problem closing the stream", e));
+// }
+// }
+
+// class SaxErrorHandler implements ErrorHandler {
+//
+// public void error(SAXParseException exception) throws SAXException {
+// throw exception;
+// // MylarStatusHandler.fail(exception, "Mylar:
+// // RepositoryReportFactory Sax parser error", false);
+// // System.err.println("Error: " + exception.getLineNumber() + "\n" +
+// // exception.getLocalizedMessage());
+//
+// }
+//
+// public void fatalError(SAXParseException exception) throws SAXException {
+// // System.err.println("Fatal Error: " + exception.getLineNumber() +
+// // "\n" + exception.getLocalizedMessage());
+// // TODO: Need to determine actual error from html
+// throw new
+// SAXException(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD);
+// }
+//
+// public void warning(SAXParseException exception) throws SAXException {
+// // System.err.println("Warning: " + exception.getLineNumber() + "\n"
+// // + exception.getLocalizedMessage());
+// }
+//
+// }
+// \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java
new file mode 100644
index 000000000..354681314
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java
@@ -0,0 +1,261 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.mylar.internal.tasklist.AbstractAttributeFactory;
+import org.eclipse.mylar.internal.tasklist.Comment;
+import org.eclipse.mylar.internal.tasklist.RepositoryAttachment;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute;
+import org.eclipse.mylar.internal.tasklist.RepositoryTaskData;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Parser for xml bugzilla reports.
+ *
+ * @author Rob Elves
+ */
+public class SaxBugReportContentHandler extends DefaultHandler {
+
+ private static final String COMMENT_ATTACHMENT_STRING = "Created an attachment (id=";
+
+ private StringBuffer characters;
+
+ private Comment comment;
+
+ private final Map<Integer, Comment> attachIdToComment = new HashMap<Integer, Comment>();
+
+ private int commentNum = 0;
+
+ private RepositoryAttachment attachment;
+
+ private RepositoryTaskData report;
+
+ private String errorMessage = null;
+
+ private AbstractAttributeFactory attributeFactory;
+
+ public SaxBugReportContentHandler(AbstractAttributeFactory factory, RepositoryTaskData rpt) {
+ this.attributeFactory = factory;
+ this.report = rpt;
+ }
+
+ public boolean errorOccurred() {
+ return errorMessage != null;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public RepositoryTaskData getReport() {
+ return report;
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ characters.append(ch, start, length);
+// if (monitor.isCanceled()) {
+// throw new OperationCanceledException("Search cancelled");
+// }
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ characters = new StringBuffer();
+ BugzillaReportElement tag = BugzillaReportElement.UNKNOWN;
+ try {
+ tag = BugzillaReportElement.valueOf(localName.trim().toUpperCase());
+ } catch (RuntimeException e) {
+ if (e instanceof IllegalArgumentException) {
+ // ignore unrecognized tags
+ return;
+ }
+ throw e;
+ }
+ switch (tag) {
+ case BUGZILLA:
+ // Note: here we can get the bugzilla version if necessary
+ break;
+ case BUG:
+ if (attributes != null && (attributes.getValue("error") != null)) {
+ errorMessage = attributes.getValue("error");
+ }
+ break;
+ case LONG_DESC:
+ comment = new Comment(attributeFactory, report, commentNum++);
+ break;
+ case ATTACHMENT:
+ attachment = new RepositoryAttachment(attributeFactory);
+ if (attributes != null && (attributes.getValue(BugzillaReportElement.IS_OBSOLETE.getKeyString()) != null)) {
+ attachment.addAttribute(BugzillaReportElement.IS_OBSOLETE.getKeyString(), attributeFactory.createAttribute(BugzillaReportElement.IS_OBSOLETE.getKeyString()));
+ }
+ break;
+ }
+
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+
+ String parsedText = HtmlStreamTokenizer.unescape(characters.toString());
+
+ BugzillaReportElement tag = BugzillaReportElement.UNKNOWN;
+ try {
+ tag = BugzillaReportElement.valueOf(localName.trim().toUpperCase());
+ } catch (RuntimeException e) {
+ if (e instanceof IllegalArgumentException) {
+ // ignore unrecognized tags
+ return;
+ }
+ throw e;
+ }
+ switch (tag) {
+ case BUG_ID: {
+ try {
+ if (report.getId() != Integer.parseInt(parsedText)) {
+ errorMessage = "Requested report number does not match returned report number.";
+ }
+ } catch (NumberFormatException e) {
+ errorMessage = "Bug id from server did not match requested id.";
+ }
+
+ RepositoryTaskAttribute attr = report.getAttribute(tag.getKeyString());
+ if (attr == null) {
+ attr = attributeFactory.createAttribute(tag.getKeyString());
+ report.addAttribute(tag.getKeyString(), attr);
+ }
+ attr.setValue(parsedText);
+ break;
+ }
+
+ // Comment attributes
+ case WHO:
+ case BUG_WHEN:
+ if (comment != null) {
+ RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString());
+ attr.setValue(parsedText);
+ comment.addAttribute(tag.getKeyString(), attr);
+ }
+ break;
+ case THETEXT:
+ if (comment != null) {
+ RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString());
+ attr.setValue(parsedText);
+ comment.addAttribute(tag.getKeyString(), attr);
+
+ // Check for attachment
+ parseAttachment(comment, parsedText);
+ }
+ break;
+ case LONG_DESC:
+ if (comment != null) {
+ report.addComment(comment);
+ }
+ break;
+
+ // Attachment attributes
+ case ATTACHID:
+ case DATE:
+ case DESC:
+ case FILENAME:
+ case CTYPE:
+ case TYPE:
+ if (attachment != null) {
+ RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString());
+ attr.setValue(parsedText);
+ attachment.addAttribute(tag.getKeyString(), attr);
+ }
+ break;
+ case DATA:
+ // TODO: Need to figure out under what circumstanceswhen attachments
+ // are inline and
+ // what to do with them.
+ break;
+ case ATTACHMENT:
+ if (attachment != null) {
+ report.addAttachment(attachment);
+ }
+ break;
+
+ // IGNORED ELEMENTS
+ case REPORTER_ACCESSIBLE:
+ case CLASSIFICATION_ID:
+ case CLASSIFICATION:
+ case CCLIST_ACCESSIBLE:
+ case EVERCONFIRMED:
+ case BUGZILLA:
+ break;
+ case BUG:
+ // Reached end of bug. Need to set LONGDESCLENGTH to number of
+ // comments
+ RepositoryTaskAttribute numCommentsAttribute = report
+ .getAttribute(BugzillaReportElement.LONGDESCLENGTH.getKeyString());
+ if (numCommentsAttribute == null) {
+ numCommentsAttribute = attributeFactory.createAttribute(BugzillaReportElement.LONGDESCLENGTH.getKeyString());
+ numCommentsAttribute.setValue("" + report.getComments().size());
+ report.addAttribute(BugzillaReportElement.LONGDESCLENGTH.getKeyString(), numCommentsAttribute);
+ } else {
+ numCommentsAttribute.setValue("" + report.getComments().size());
+ }
+
+ // Set the creator name on all attachments
+ for (RepositoryAttachment attachment: report.getAttachments()) {
+ Comment comment = (Comment)attachIdToComment.get(attachment.getId());
+ if(comment != null) {
+ attachment.setCreator(comment.getAuthor());
+ }
+ }
+ break;
+
+ // All others added as report attribute
+ default:
+ RepositoryTaskAttribute attribute = report.getAttribute(tag.getKeyString());
+ if (attribute == null) {
+ attribute = attributeFactory.createAttribute(tag.getKeyString());
+ attribute.setValue(parsedText);
+ report.addAttribute(tag.getKeyString(), attribute);
+ } else {
+ attribute.addValue(parsedText);
+ }
+ break;
+ }
+
+ }
+
+ /** determines attachment id from comment */
+ private void parseAttachment(Comment comment, String commentText) {
+
+ int attachmentID = -1;
+
+ if (commentText.startsWith(COMMENT_ATTACHMENT_STRING)) {
+ try {
+ int endIndex = commentText.indexOf(")");
+ if (endIndex > 0 && endIndex < commentText.length()) {
+ attachmentID = Integer
+ .parseInt(commentText.substring(COMMENT_ATTACHMENT_STRING.length(), endIndex));
+ comment.setHasAttachment(true);
+ comment.setAttachmentId(attachmentID);
+ attachIdToComment.put(attachmentID, comment);
+ }
+ } catch (NumberFormatException e) {
+ return;
+ }
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java
new file mode 100644
index 000000000..7729a5af5
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java
@@ -0,0 +1,399 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * Quick config rdf parser.
+ *
+ * <pre>
+ * config.cgi?ctype=rdf
+ * </pre>
+ *
+ * Populates a <link>ProductConfiguration</link> data structure.
+ *
+ * @author Rob Elves
+ */
+public class SaxConfigurationContentHandler extends DefaultHandler {
+
+ private static final String ELEMENT_RESOLUTION = "resolution";
+
+ private static final String ELEMENT_STATUS_OPEN = "status_open";
+
+ private static final String ELEMENT_TARGET_MILESTONE = "target_milestone";
+
+ private static final String ELEMENT_TARGET_MILESTONES = "target_milestones";
+
+ private static final String ELEMENT_INSTALL_VERSION = "install_version";
+
+ private static final String ATTRIBUTE_RDF_ABOUT = "rdf:about";
+
+ private static final String ATTRIBUTE_RESOURCE = "resource";
+
+ private static final String ELEMENT_VERSION = "version";
+
+ private static final String ELEMENT_VERSIONS = "versions";
+
+ private static final String ELEMENT_COMPONENT = "component";
+
+ private static final String ELEMENT_COMPONENTS = "components";
+
+ private static final String ELEMENT_NAME = "name";
+
+ private static final String ELEMENT_PRODUCTS = "products";
+
+ private static final String ELEMENT_SEVERITY = "severity";
+
+ private static final String ELEMENT_PRIORITY = "priority";
+
+ private static final String ELEMENT_KEYWORD = "keyword";
+
+ private static final String ELEMENT_OP_SYS = "op_sys";
+
+ private static final String ELEMENT_PLATFORM = "platform";
+
+ private static final String ELEMENT_LI = "li";
+
+ private static final String ELEMENT_STATUS = "status";
+
+ private static final int EXPECTING_ROOT = 0;
+
+ private static final int IN_INSTALL_VERSION = 1 << 1;
+
+ private static final int IN_STATUS = 1 << 2;
+
+ private static final int IN_PLATFORM = 1 << 3;
+
+ private static final int IN_OP_SYS = 1 << 4;
+
+ private static final int IN_PRIORITY = 1 << 5;
+
+ private static final int IN_SEVERITY = 1 << 6;
+
+ private static final int IN_PRODUCTS = 1 << 7;
+
+ private static final int IN_COMPONENTS = 1 << 8;
+
+ private static final int IN_VERSIONS = 1 << 9;
+
+ private static final int IN_LI = 1 << 10;
+
+ private static final int IN_LI_LI = 1 << 11;
+
+ private static final int IN_NAME = 1 << 12;
+
+ private static final int IN_COMPONENT = 1 << 13;
+
+ private static final int IN_VERSION = 1 << 14;
+
+ private static final int IN_TARGET_MILESTONES = 1 << 15;
+
+ private static final int IN_TARGET_MILESTONE = 1 << 16;
+
+ private static final int IN_STATUS_OPEN = 1 << 17;
+
+ private static final int IN_RESOLUTION = 1 << 18;
+
+ private static final int IN_KEYWORD = 1 << 19;
+
+ private int state = EXPECTING_ROOT;
+
+ private String currentProduct;
+
+ private String about;
+
+ private RepositoryConfiguration configuration = new RepositoryConfiguration();
+
+ private Map<String, List<String>> components = new HashMap<String, List<String>>();
+
+ private Map<String, List<String>> versions = new HashMap<String, List<String>>();
+
+ private Map<String, List<String>> milestones = new HashMap<String, List<String>>();
+
+ private Map<String, String> componentNames = new HashMap<String, String>();
+
+ private Map<String, String> versionNames = new HashMap<String, String>();
+
+ private Map<String, String> milestoneNames = new HashMap<String, String>();
+
+ public RepositoryConfiguration getConfiguration() {
+ return configuration;
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ switch (state) {
+
+ case IN_PRODUCTS | IN_LI | IN_NAME:
+ configuration.addProduct(String.copyValueOf(ch, start, length));
+ currentProduct = String.copyValueOf(ch, start, length);
+ break;
+ case IN_COMPONENTS | IN_LI | IN_COMPONENT | IN_NAME:
+ if (about != null) {
+ String name = String.copyValueOf(ch, start, length);
+ componentNames.put(about, name);
+ // System.err.println("Component: "+about+" ---> "+name);
+ }
+ break;
+ case IN_VERSIONS | IN_LI | IN_VERSION | IN_NAME:
+ if (about != null) {
+ String name = String.copyValueOf(ch, start, length);
+ versionNames.put(about, name);
+ // System.err.println("Version: "+about+" ---> "+name);
+ }
+ break;
+ case IN_TARGET_MILESTONES | IN_LI | IN_TARGET_MILESTONE | IN_NAME:
+ if (about != null) {
+ String name = String.copyValueOf(ch, start, length);
+ milestoneNames.put(about, name);
+ // System.err.println("Version: "+about+" ---> "+name);
+ }
+ break;
+ case IN_PLATFORM | IN_LI:
+ configuration.addPlatform(String.copyValueOf(ch, start, length));
+ break;
+ case IN_OP_SYS | IN_LI:
+ configuration.addOS(String.copyValueOf(ch, start, length));
+ break;
+ case IN_PRIORITY | IN_LI:
+ configuration.addPriority(String.copyValueOf(ch, start, length));
+ break;
+ case IN_SEVERITY | IN_LI:
+ configuration.addSeverity(String.copyValueOf(ch, start, length));
+ break;
+ case IN_INSTALL_VERSION:
+ configuration.setInstallVersion(String.copyValueOf(ch, start, length));
+ break;
+ case IN_STATUS | IN_LI:
+ configuration.addStatus(String.copyValueOf(ch, start, length));
+ break;
+ case IN_RESOLUTION | IN_LI:
+ configuration.addResolution(String.copyValueOf(ch, start, length));
+ break;
+ case IN_KEYWORD | IN_LI:
+ configuration.addKeyword(String.copyValueOf(ch, start, length));
+ break;
+ case IN_STATUS_OPEN | IN_LI:
+ configuration.addOpenStatusValue(String.copyValueOf(ch, start, length));
+ break;
+ }
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+
+ if (localName.equals(ELEMENT_STATUS)) {
+ state = state | IN_STATUS;
+ } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI) == IN_LI)) {
+ state = state | IN_LI_LI;
+ parseResource(attributes);
+ } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI) != IN_LI)) {
+ state = state | IN_LI;
+ } else if (localName.equals(ELEMENT_PLATFORM)) {
+ state = state | IN_PLATFORM;
+ } else if (localName.equals(ELEMENT_OP_SYS)) {
+ state = state | IN_OP_SYS;
+ } else if (localName.equals(ELEMENT_PRIORITY)) {
+ state = state | IN_PRIORITY;
+ } else if (localName.equals(ELEMENT_SEVERITY)) {
+ state = state | IN_SEVERITY;
+ } else if (localName.equals(ELEMENT_PRODUCTS)) {
+ state = state | IN_PRODUCTS;
+ } else if (localName.equals(ELEMENT_OP_SYS)) {
+ state = state | IN_OP_SYS;
+ } else if (localName.equals(ELEMENT_NAME)) {
+ state = state | IN_NAME;
+ } else if (localName.equals(ELEMENT_COMPONENTS)) {
+ state = state | IN_COMPONENTS;
+ } else if (localName.equals(ELEMENT_COMPONENT)) {
+ state = state | IN_COMPONENT;
+ parseResource(attributes);
+ } else if (localName.equals(ELEMENT_VERSIONS)) {
+ state = state | IN_VERSIONS;
+ } else if (localName.equals(ELEMENT_VERSION)) {
+ state = state | IN_VERSION;
+ parseResource(attributes);
+ } else if (localName.equals(ELEMENT_INSTALL_VERSION)) {
+ state = state | IN_INSTALL_VERSION;
+ } else if (localName.equals(ELEMENT_TARGET_MILESTONES)) {
+ state = state | IN_TARGET_MILESTONES;
+ } else if (localName.equals(ELEMENT_TARGET_MILESTONE)) {
+ state = state | IN_TARGET_MILESTONE;
+ parseResource(attributes);
+ } else if (localName.equals(ELEMENT_STATUS_OPEN)) {
+ state = state | IN_STATUS_OPEN;
+ } else if (localName.equals(ELEMENT_RESOLUTION)) {
+ state = state | IN_RESOLUTION;
+ } else if (localName.equals(ELEMENT_KEYWORD)) {
+ state = state | IN_KEYWORD;
+ }
+
+ }
+
+ private void parseResource(Attributes attributes) {
+
+ switch (state) {
+ case IN_PRODUCTS | IN_LI | IN_COMPONENTS | IN_LI_LI:
+ if (attributes != null) {
+ String compURI = attributes.getValue(ATTRIBUTE_RESOURCE);
+ if (compURI != null) {
+
+ List<String> compURIs = components.get(currentProduct);
+ if (compURIs == null) {
+ compURIs = new ArrayList<String>();
+ components.put(currentProduct, compURIs);
+ }
+ compURIs.add(compURI);
+
+ }
+ }
+ break;
+ case IN_PRODUCTS | IN_LI | IN_VERSIONS | IN_LI_LI:
+ if (attributes != null) {
+ String resourceURI = attributes.getValue(ATTRIBUTE_RESOURCE);
+ if (resourceURI != null) {
+ List<String> versionUris = versions.get(currentProduct);
+ if (versionUris == null) {
+ versionUris = new ArrayList<String>();
+ versions.put(currentProduct, versionUris);
+ }
+ versionUris.add(resourceURI);
+ }
+ }
+ break;
+ case IN_PRODUCTS | IN_LI | IN_TARGET_MILESTONES | IN_LI_LI:
+ if (attributes != null) {
+ String resourceURI = attributes.getValue(ATTRIBUTE_RESOURCE);
+ if (resourceURI != null) {
+ List<String> milestoneUris = milestones.get(currentProduct);
+ if (milestoneUris == null) {
+ milestoneUris = new ArrayList<String>();
+ milestones.put(currentProduct, milestoneUris);
+ }
+ milestoneUris.add(resourceURI);
+ }
+ }
+ break;
+ case IN_COMPONENTS | IN_LI | IN_COMPONENT:
+ if (attributes != null) {
+ about = attributes.getValue(ATTRIBUTE_RDF_ABOUT);
+ }
+ break;
+ case IN_VERSIONS | IN_LI | IN_VERSION:
+ if (attributes != null) {
+ about = attributes.getValue(ATTRIBUTE_RDF_ABOUT);
+ }
+ break;
+
+ case IN_TARGET_MILESTONES | IN_LI | IN_TARGET_MILESTONE:
+ if (attributes != null) {
+ about = attributes.getValue(ATTRIBUTE_RDF_ABOUT);
+ }
+ break;
+
+ }
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+
+ // KEEP: && ((state & IN_LI) == IN_LI)
+
+ if (localName.equals(ELEMENT_STATUS)) {
+ state = state & ~IN_STATUS;
+ } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI_LI) == IN_LI_LI)) {
+ state = state & ~IN_LI_LI;
+ } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI_LI) != IN_LI_LI)) {
+ state = state & ~IN_LI;
+ } else if (localName.equals(ELEMENT_PLATFORM)) {
+ state = state & ~IN_PLATFORM;
+ } else if (localName.equals(ELEMENT_OP_SYS)) {
+ state = state & ~IN_OP_SYS;
+ } else if (localName.equals(ELEMENT_PRIORITY)) {
+ state = state & ~IN_PRIORITY;
+ } else if (localName.equals(ELEMENT_SEVERITY)) {
+ state = state & ~IN_SEVERITY;
+ } else if (localName.equals(ELEMENT_PRODUCTS)) {
+ state = state & ~IN_PRODUCTS;
+ } else if (localName.equals(ELEMENT_OP_SYS)) {
+ state = state & ~IN_OP_SYS;
+ } else if (localName.equals(ELEMENT_NAME)) {
+ state = state & ~IN_NAME;
+ } else if (localName.equals(ELEMENT_COMPONENTS)) {
+ state = state & ~IN_COMPONENTS;
+ } else if (localName.equals(ELEMENT_COMPONENT)) {
+ state = state & ~IN_COMPONENT;
+ } else if (localName.equals(ELEMENT_VERSION)) {
+ state = state & ~IN_VERSION;
+ } else if (localName.equals(ELEMENT_VERSIONS)) {
+ state = state & ~IN_VERSIONS;
+ } else if (localName.equals(ELEMENT_INSTALL_VERSION)) {
+ state = state & ~IN_INSTALL_VERSION;
+ } else if (localName.equals(ELEMENT_TARGET_MILESTONE)) {
+ state = state & ~IN_TARGET_MILESTONE;
+ } else if (localName.equals(ELEMENT_TARGET_MILESTONES)) {
+ state = state & ~IN_TARGET_MILESTONES;
+ } else if (localName.equals(ELEMENT_STATUS_OPEN)) {
+ state = state & ~IN_STATUS_OPEN;
+ } else if (localName.equals(ELEMENT_RESOLUTION)) {
+ state = state & ~IN_RESOLUTION;
+ } else if (localName.equals(ELEMENT_KEYWORD)) {
+ state = state & ~IN_KEYWORD;
+ }
+
+ }
+
+ @Override
+ public void endDocument() throws SAXException {
+
+ for (String product : components.keySet()) {
+ List<String> componentURIs = components.get(product);
+ for (String uri : componentURIs) {
+ String realName = componentNames.get(uri);
+ if (realName != null) {
+ configuration.addComponent(product, realName);
+ }
+ }
+ }
+
+ for (String product : versions.keySet()) {
+ List<String> versionURIs = versions.get(product);
+ for (String uri : versionURIs) {
+ String realName = versionNames.get(uri);
+ if (realName != null) {
+ configuration.addVersion(product, realName);
+ }
+ }
+
+ }
+
+ for (String product : milestones.keySet()) {
+ List<String> milestoneURIs = milestones.get(product);
+ for (String uri : milestoneURIs) {
+ String realName = milestoneNames.get(uri);
+ if (realName != null) {
+ configuration.addTargetMilestone(product, realName);
+ }
+ }
+
+ }
+ super.endDocument();
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java
new file mode 100644
index 000000000..764b37e54
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.core;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.text.ParseException;
+
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer;
+import org.eclipse.mylar.internal.tasklist.util.HtmlTag;
+import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token;
+
+/**
+ * This is in place to escape & characters within the resource and rdf:about
+ * attributes. Currently the values are not escaped which causes sax parser
+ * errors. This bug has been filed and can be found here:
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=264785
+ *
+ * @author Rob Elves
+ */
+public class XmlCleaner {
+
+ public static StringBuffer clean(Reader in) {
+
+ HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(in, null);
+ StringBuffer content = new StringBuffer();
+
+ // Hack since HtmlStreamTokenizer not familiar with xml tag.
+ content.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ try {
+ for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
+
+ if (token.getType() == Token.TAG) {
+ HtmlTag tag = (HtmlTag) token.getValue();
+ if (tag.getAttribute("resource") != null) {
+ String resourceID = tag.getAttribute("resource");
+ tag.setAttribute("resource", resourceID.replace("&", "&amp;"));
+ }
+ if (tag.getAttribute("rdf:about") != null) {
+ String resourceID = tag.getAttribute("rdf:about");
+ tag.setAttribute("rdf:about", resourceID.replace("&", "&amp;"));
+ }
+ }
+ if (!token.toString().startsWith("<?xml")) {
+ content.append(token.toString());
+ }
+ }
+ } catch (IOException e) {
+
+ } catch (ParseException e) {
+
+ }
+ return content;
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/.classpath b/org.eclipse.mylyn.bugzilla.tests/.classpath
new file mode 100644
index 000000000..472ee29b1
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..3ba5d1f32
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Bugzilla Tests Plug-in
+Bundle-SymbolicName: org.eclipse.mylar.bugzilla.tests
+Bundle-Version: 0.0.0
+Bundle-Activator: org.eclipse.mylar.bugzilla.tests.BugzillaTestPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.junit,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.views,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.mylar.bugzilla.core,
+ org.eclipse.mylar.bugzilla.ui,
+ org.eclipse.mylar.tasklist,
+ org.eclipse.mylar.core.tests,
+ org.eclipse.jface.text
+Eclipse-AutoStart: true
+Bundle-Vendor: Eclipse.org
+Bundle-ClassPath: bugzilla-test.jar
+Export-Package: org.eclipse.mylar.bugzilla.tests
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java
new file mode 100644
index 000000000..ca53c0f7c
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.bugzilla.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Mik Kersten
+ */
+public class AllBugzillaTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("Test for org.eclipse.mylar.bugzilla.tests");
+ // $JUnit-BEGIN$
+ suite.addTestSuite(BugzillaConfigurationTest.class);
+ suite.addTestSuite(BugzillaTaskHyperlinkDetectorTest.class);
+ suite.addTestSuite(ReportAttachmentTest.class);
+ suite.addTestSuite(BugzillaSearchEngineTest.class);
+ suite.addTestSuite(Bugzilla220ParserTest.class);
+ suite.addTestSuite(BugzillaRepositoryConnectorTest.class);
+ suite.addTestSuite(EncodingTest.class);
+ suite.addTestSuite(NewBugWizardTest.class);
+ suite.addTestSuite(RegularExpressionMatchTest.class);
+ // suite.addTestSuite(BugzillaNewBugParserTestCDT.class);
+ // suite.addTestSuite(BugzillaNewBugParserTestEquinox.class);
+ // suite.addTestSuite(BugzillaNewBugParserTestGMT.class);
+ // suite.addTestSuite(BugzillaNewBugParserTestPlatform.class);
+ // suite.addTestSuite(BugzillaNewBugParserTestVE.class);
+ suite.addTestSuite(BugzillaParserTestNoBug.class);
+ suite.addTestSuite(BugzillaProductParserTest.class);
+ // TODO: enable
+ // suite.addTest(new TestSuite(BugzillaParserTest.class));
+ // $JUnit-END$
+ return suite;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java
new file mode 100644
index 000000000..41ed3bd79
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.bugzilla.tests;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.Reader;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.core.tests.support.FileTool;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.NewBugModel;
+import org.eclipse.mylar.internal.bugzilla.core.internal.BugParser;
+import org.eclipse.mylar.internal.bugzilla.core.internal.NewBugParser;
+
+/**
+ * @author Mik Kersten
+ * @author Rob Elves
+ */
+public class Bugzilla220ParserTest extends TestCase {
+
+ public static final String TEST_SERVER = IBugzillaConstants.ECLIPSE_BUGZILLA_URL;
+
+ private static final String PRODUCT_MYLAR = "Mylar";
+
+ private static final String PRODUCT_TEST = "TestProduct";
+
+ public void testId220() throws Exception {
+
+ File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path(
+ "testdata/pages/test-report-220.html"));
+ Reader in = new FileReader(f);
+
+ BugReport bug = BugParser.parseBug(in, 7, TEST_SERVER, false, null, null, null);
+
+ assertEquals(7, bug.getId());
+ assertEquals("summary", bug.getSummary());
+ assertEquals("7", bug.getAttribute("Bug#").getValue());
+ assertEquals("7", bug.getAttribute("id").getValue());
+ }
+
+ public void testId2201() throws Exception {
+
+ File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path(
+ "testdata/pages/test-report-2201.html"));
+ Reader in = new FileReader(f);
+
+ BugReport bug = BugParser.parseBug(in, 125527, TEST_SERVER, false, null, null, null);
+
+ assertEquals(125527, bug.getId());
+ assertEquals("bugzilla refresh incorrect for new reports and newly opened hits", bug.getSummary());
+ assertEquals("125527", bug.getAttribute("Bug#").getValue());
+ assertEquals("125527", bug.getAttribute("id").getValue());
+ }
+
+ public void testNewBugProduct220() throws Exception {
+
+ NewBugModel nbm = new NewBugModel();
+
+ File f = FileTool
+ .getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path("testdata/pages/enter-bug220.html"));
+ Reader in = new FileReader(f);
+
+ new NewBugParser(in).parseBugAttributes(nbm, true);
+ assertEquals(PRODUCT_TEST, nbm.getAttribute("product").getValue());
+ }
+
+ public void testNewBugProduct2201() throws Exception {
+
+ NewBugModel nbm = new NewBugModel();
+
+ File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(),
+ new Path("testdata/pages/enter-bug2201.html"));
+ Reader in = new FileReader(f);
+
+ new NewBugParser(in).parseBugAttributes(nbm, true);
+ assertEquals(PRODUCT_MYLAR, nbm.getAttribute("product").getValue());
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java
new file mode 100644
index 000000000..79e7a99b5
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.bugzilla.tests;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.internal.RepositoryConfiguration;
+import org.eclipse.mylar.internal.bugzilla.core.internal.ServerConfigurationFactory;
+
+public class BugzillaConfigurationTest extends TestCase {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+
+ public void test222RDFProductConfig() throws IOException {
+ ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance();
+ RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_222_URL);
+ assertNotNull(config);
+ assertEquals("2.22rc1", config.getInstallVersion());
+ assertEquals(7, config.getStatusValues().size());
+ assertEquals(8, config.getResolutions().size());
+ assertEquals(4, config.getPlatforms().size());
+ assertEquals(5, config.getOSs().size());
+ assertEquals(5, config.getPriorities().size());
+ assertEquals(7, config.getSeverities().size());
+ assertEquals(1, config.getProducts().size());
+ assertEquals(4, config.getOpenStatusValues().size());
+ assertEquals(1, config.getComponents("TestProduct").size());
+ assertEquals(1, config.getVersions("TestProduct").size());
+ assertEquals(1, config.getTargetMilestones("TestProduct").size());
+ }
+
+ public void test2201RDFProductConfig() throws IOException {
+ ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance();
+ RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_2201_URL);
+ assertNotNull(config);
+ assertEquals("2.20.1", config.getInstallVersion());
+ assertEquals(7, config.getStatusValues().size());
+ assertEquals(8, config.getResolutions().size());
+ assertEquals(4, config.getPlatforms().size());
+ assertEquals(5, config.getOSs().size());
+ assertEquals(5, config.getPriorities().size());
+ assertEquals(7, config.getSeverities().size());
+ assertEquals(1, config.getProducts().size());
+ assertEquals(4, config.getOpenStatusValues().size());
+ assertEquals(2, config.getComponents("TestProduct").size());
+ assertEquals(1, config.getVersions("TestProduct").size());
+ //assertEquals(1, config.getTargetMilestones("TestProduct").size());
+ }
+
+ public void test220RDFProductConfig() throws IOException {
+ ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance();
+ RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_220_URL);
+ assertNotNull(config);
+ assertEquals("2.20", config.getInstallVersion());
+ assertEquals(7, config.getStatusValues().size());
+ assertEquals(8, config.getResolutions().size());
+ assertEquals(4, config.getPlatforms().size());
+ assertEquals(5, config.getOSs().size());
+ assertEquals(5, config.getPriorities().size());
+ assertEquals(7, config.getSeverities().size());
+ assertEquals(2, config.getProducts().size());
+ assertEquals(4, config.getOpenStatusValues().size());
+ assertEquals(2, config.getComponents("TestProduct").size());
+ assertEquals(1, config.getVersions("TestProduct").size());
+ //assertEquals(1, config.getTargetMilestones("TestProduct").size());
+ }
+
+ public void test218RDFProductConfig() throws IOException {
+ ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance();
+ RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_218_URL);
+ assertNotNull(config);
+ assertEquals("2.18.5", config.getInstallVersion());
+ assertEquals(7, config.getStatusValues().size());
+ assertEquals(8, config.getResolutions().size());
+ assertEquals(8, config.getPlatforms().size());
+ assertEquals(37, config.getOSs().size());
+ assertEquals(5, config.getPriorities().size());
+ assertEquals(7, config.getSeverities().size());
+ assertEquals(1, config.getProducts().size());
+ assertEquals(4, config.getOpenStatusValues().size());
+ assertEquals(1, config.getComponents("TestProduct").size());
+ assertEquals(1, config.getVersions("TestProduct").size());
+ //assertEquals(1, config.getTargetMilestones("TestProduct").size());
+ }
+
+ public void testEclipseRDFProductConfig() throws IOException {
+ ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance();
+ RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.ECLIPSE_BUGZILLA_URL);
+ assertNotNull(config);
+ assertEquals("2.20.1", config.getInstallVersion());
+ assertEquals(7, config.getStatusValues().size());
+ assertEquals(8, config.getResolutions().size());
+ assertEquals(6, config.getPlatforms().size());
+ assertEquals(27, config.getOSs().size());
+ assertEquals(5, config.getPriorities().size());
+ assertEquals(7, config.getSeverities().size());
+ assertEquals(53, config.getProducts().size());
+ assertEquals(4, config.getOpenStatusValues().size());
+ assertEquals(10, config.getComponents("Mylar").size());
+ //assertEquals(10, config.getComponents("Hyades").size());
+ //assertEquals(1, config.getTargetMilestones("TestProduct").size());
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java
new file mode 100644
index 000000000..a017900ba
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.bugzilla.tests;
+
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+
+/**
+ * Tests for parsing Product Page for new Bugzilla reports
+ *
+ * @author Mik Kersten
+ * @author Rob Elves
+ */
+public class BugzillaProductParserTest extends TestCase {
+
+ private TaskRepository repository;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ // repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
+ // new URL(IBugzillaConstants.ECLIPSE_BUGZILLA_URL));
+ // MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ // MylarTaskListPlugin.getRepositoryManager().removeRepository(repository);
+ }
+
+ public BugzillaProductParserTest(String arg0) {
+ super(arg0);
+ }
+
+ public void test222Products() throws Exception {
+
+ repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL,
+ IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
+
+ List<String> productList = BugzillaRepositoryUtil.getProductList(repository);
+ Iterator<String> itr = productList.iterator();
+ assertTrue(itr.hasNext());
+ assertEquals("TestProduct", "TestProduct", itr.next());
+
+ }
+
+ public void test2201Products() throws Exception {
+
+ repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_2201_URL,
+ IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
+
+ List<String> productList = BugzillaRepositoryUtil.getProductList(repository);
+ Iterator<String> itr = productList.iterator();
+ assertTrue(itr.hasNext());
+ assertEquals("TestProduct", "TestProduct", itr.next());
+
+ }
+
+ public void test220Products() throws Exception {
+
+ repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_220_URL,
+ IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
+
+ List<String> productList = BugzillaRepositoryUtil.getProductList(repository);
+ assertEquals(2, productList.size());
+ assertTrue(productList.contains("TestProduct"));
+ assertTrue(productList.contains("Widget"));
+
+ }
+
+ public void test218Products() throws Exception {
+
+ repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_218_URL,
+ IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString());
+
+ List<String> productList = BugzillaRepositoryUtil.getProductList(repository);
+ assertEquals(1, productList.size());
+ assertTrue(productList.contains("TestProduct"));
+
+ }
+
+// No longer supporting 216
+// public void test216Products() throws Exception {
+//
+// repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_216_URL,
+// IBugzillaConstants.BugzillaServerVersion.SERVER_216.toString());
+//
+// List<String> productList = BugzillaRepositoryUtil.getProductList(repository);
+// Iterator<String> itr = productList.iterator();
+// assertTrue(itr.hasNext());
+// assertEquals("TestProduct", "TestProduct", itr.next());
+// }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java
new file mode 100644
index 000000000..103d60af4
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.bugzilla.tests;
+
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryQuery;
+import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+
+/**
+ * @author Rob Elves
+ */
+public class BugzillaSearchEngineTest extends TestCase {
+
+ private static final String MAX_HITS = "100";
+ private static final String QUERY_NAME = "Query Page Name";
+ private static final String BUG_DESC_SUBSTRING_SEARCH = "/buglist.cgi?short_desc_type=allwordssubstr&short_desc=";//search-match-test&amp";
+ private static final String SEARCH_DESCRIPTION = "search-match-test";
+ private static final int NUM_EXPECTED_HITS = 2;
+ private static final int NUM_REPOSITORIES = 0;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ MylarTaskListPlugin.getRepositoryManager().clearRepositories();
+ assertEquals(NUM_REPOSITORIES, MylarTaskListPlugin.getRepositoryManager().getRepositories(BugzillaPlugin.REPOSITORY_KIND).size());
+ }
+
+ protected void tearDown() throws Exception {
+ MylarTaskListPlugin.getRepositoryManager().clearRepositories();
+ super.tearDown();
+ }
+
+// public void testSearching216() throws MalformedURLException {
+// TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
+// IBugzillaConstants.TEST_BUGZILLA_216_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_216.toString());
+// MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
+// List<AbstractQueryHit> hits = runQuery(IBugzillaConstants.TEST_BUGZILLA_216_URL, SEARCH_DESCRIPTION);
+// assertEquals(NUM_EXPECTED_HITS, hits.size());
+// }
+
+ public void testSearching218() throws MalformedURLException {
+ TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
+ IBugzillaConstants.TEST_BUGZILLA_218_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString());
+ MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
+ assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_218_URL, SEARCH_DESCRIPTION).size());
+ }
+
+ public void testSearching220() throws MalformedURLException {
+ TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
+ IBugzillaConstants.TEST_BUGZILLA_220_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
+ MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
+ assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_220_URL, SEARCH_DESCRIPTION).size());
+ }
+
+ public void testSearching2201() throws MalformedURLException {
+ TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
+ IBugzillaConstants.TEST_BUGZILLA_2201_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
+ MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
+ assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_2201_URL, SEARCH_DESCRIPTION).size());
+ }
+
+ public void testSearching222() throws MalformedURLException {
+ TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
+ IBugzillaConstants.TEST_BUGZILLA_222_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_222.toString());
+ MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
+ List<AbstractQueryHit> hits = runQuery(IBugzillaConstants.TEST_BUGZILLA_222_URL, SEARCH_DESCRIPTION);
+ assertEquals(NUM_EXPECTED_HITS, hits.size());
+ }
+
+ private List<AbstractQueryHit> runQuery(String repositoryURL, String SearchString) {
+ ArrayList<AbstractQueryHit> results = new ArrayList<AbstractQueryHit>();
+ TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository(BugzillaPlugin.REPOSITORY_KIND, repositoryURL);
+ assertNotNull(repository);
+
+ final BugzillaRepositoryQuery repositoryQuery = new BugzillaRepositoryQuery(
+ repository.getUrl(),
+ repository.getUrl() + BUG_DESC_SUBSTRING_SEARCH+SearchString,
+ QUERY_NAME,
+ MAX_HITS, MylarTaskListPlugin.getTaskListManager().getTaskList());
+
+ BugzillaRepositoryConnector connector = (BugzillaRepositoryConnector) MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+ results.addAll(connector.performQuery(repositoryQuery, new NullProgressMonitor(), new MultiStatus(MylarTaskListPlugin.PLUGIN_ID, IStatus.OK, "Query result", null)));
+ return results;
+ }
+
+
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java
new file mode 100644
index 000000000..5a529b371
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.bugzilla.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.RepositoryTextViewer;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author Rob Elves
+ */
+public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
+
+ private String BUG_FORMAT_1 = "bug# 1";
+ private String BUG_FORMAT_1_2 = "bug# 2";
+ private String BUG_FORMAT_2_1 = "bug # 1";
+ private BugzillaTaskHyperlinkDetector detector = new BugzillaTaskHyperlinkDetector();
+ private TaskRepository dummyRepository = new TaskRepository("repository_kind", "repository_url");
+ private RepositoryTextViewer viewer = new RepositoryTextViewer(dummyRepository, new Shell(), SWT.NONE);
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testBeginning() {
+ String testString = BUG_FORMAT_1+" is at the beginning";
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(0, testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testEnd() {
+ String testString = "is ends with bug# 1";
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(testString.indexOf(BUG_FORMAT_1), testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testMiddle() {
+ String testString = "is a "+BUG_FORMAT_1+" in the middle";
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(testString.indexOf(BUG_FORMAT_1), testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testTwoOnSingleLine() {
+ String testString = "is a "+BUG_FORMAT_1+" in the middle and at the end "+BUG_FORMAT_1_2;
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(testString.indexOf(BUG_FORMAT_1_2), testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(BUG_FORMAT_1_2), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testMultiLine() {
+ String testString = "is a the first line\n this is the second which ends with a bug, "+BUG_FORMAT_1_2;
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(testString.indexOf(BUG_FORMAT_1_2), testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(BUG_FORMAT_1_2), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testFormat2() {
+ String testString = "is a "+BUG_FORMAT_2_1+" in the middle";
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(testString.indexOf(BUG_FORMAT_2_1), testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(BUG_FORMAT_2_1), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ // TODO: test other bug formats
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java
new file mode 100644
index 000000000..a1a3e9e1a
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.bugzilla.tests;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.Reader;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.core.tests.support.FileTool;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.internal.BugParser;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+
+/**
+ * @author Rob Elves
+ */
+public class ReportAttachmentTest extends TestCase {
+
+ public void testExistingBugWithAttachment() throws Exception {
+ File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path(
+ "testdata/pages/test-report-222attachment.html"));
+ Reader in = new FileReader(f);
+
+ BugReport bug = BugParser.parseBug(in, 4, IBugzillaConstants.ECLIPSE_BUGZILLA_URL, false, null, null, null);
+
+ assertEquals(4, bug.getId());
+ assertEquals("4", bug.getAttribute("Bug#").getValue());
+ assertEquals("4", bug.getAttribute("id").getValue());
+
+ assertNotNull(bug.getComments());
+ assertEquals(1, bug.getComments().size());
+ assertTrue(bug.getComments().get(0).hasAttachment());
+ assertEquals("Testing upload", bug.getComments().get(0).getAttachmentDescription());
+// System.err.println(bug.getComments().get(0).getText());
+// assertEquals(1, bug.getAttachements().size());
+// assertEquals("Testing upload", bug.getAttachements().get(1));
+ }
+
+ public void testAttachementDownload() throws Exception {
+ URL localURL = null;
+ URL installURL = BugzillaTestPlugin.getDefault().getBundle().getEntry("testdata/contexts/");
+// File destinationFile = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path("testdata/contexts/"));
+ localURL = FileLocator.toFileURL(installURL);
+ File destinationFile = new File(localURL.getPath()+"downloadedContext.xml");
+
+ TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL);
+ boolean result = BugzillaRepositoryUtil.downloadAttachment(repository, 2, destinationFile, true);
+ assertTrue(result);
+ }
+
+// public void testAttachementUpload() throws Exception {
+// File sourceFile = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path(
+// "testdata/contexts/downloadedContext.xml"));
+// TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL);
+// repository.setAuthenticationCredentials("relves@cs.ubc.ca", "***");
+// boolean result = BugzillaRepositoryUtil.uploadAttachment(repository, 4, "Upload Comment 2", "Upload Description 2", sourceFile, "application/xml", false);
+// assertTrue(result);
+// }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore
new file mode 100644
index 000000000..47269cfbd
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore
@@ -0,0 +1 @@
+downloadedContext.xml
diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt
diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html b/org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html
new file mode 100644
index 000000000..6248ce40d
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html
@@ -0,0 +1,859 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>Bug 4 - Another Test</title>
+
+
+<link rel="Top" href="http://mylar.eclipse.org/bugs222/">
+
+
+ <link rel="Up" href="buglist.cgi?regetlastlist=1">
+
+ <link rel="First" href="show_bug.cgi?id=1">
+ <link rel="Last" href="show_bug.cgi?id=4">
+
+
+
+ <link rel="Prev" href="show_bug.cgi?id=3">
+
+
+
+
+
+ <link rel="Show" title="Dependency Tree"
+ href="showdependencytree.cgi?id=4">
+ <link rel="Show" title="Dependency Graph"
+ href="showdependencygraph.cgi?id=4">
+
+
+ <link rel="Show" title="Bug Activity"
+ href="show_activity.cgi?id=4">
+
+ <link rel="Show" title="Printer-Friendly Version"
+ href="show_bug.cgi?format=multiple&amp;id=4">
+
+
+
+ <link rel="Saved&nbsp;Searches" title="My Bugs"
+ href="buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailreporter1=1&amp;emailtype1=exact&amp;email1=relves%40cs.ubc.ca&amp;field0-0-0=bug_status&amp;type0-0-0=notequals&amp;value0-0-0=UNCONFIRMED&amp;field0-0-1=reporter&amp;type0-0-1=equals&amp;value0-0-1=relves%40cs.ubc.ca">
+
+
+ <link rel="Administration" title="Parameters"
+ href="editparams.cgi"><link rel="Administration" title="Users"
+ href="editusers.cgi"><link rel="Administration" title="Products"
+ href="editproducts.cgi"><link rel="Administration" title="Flag Types"
+ href="editflagtypes.cgi"><link rel="Administration" title="Groups"
+ href="editgroups.cgi"><link rel="Administration" title="Keywords"
+ href="editkeywords.cgi"><link rel="Administration" title="Whining"
+ href="editwhines.cgi"><link rel="Administration" title="Sanity Check"
+ href="sanitycheck.cgi">
+
+
+
+ <script type="text/javascript">
+ <!--
+
+ function initHelp() {}
+ // -->
+ </script>
+
+ <link href="skins/standard/global.css" rel="stylesheet" type="text/css">
+
+ <link href="skins/custom/global.css" rel="stylesheet" type="text/css">
+
+
+
+
+
+ </head>
+
+
+
+ <body onload=""
+ class="mylar-eclipse-org-bugs222 bz_bug bz_status_NEW bz_component_TestComponent bz_bug_4">
+
+
+<div id="banner">
+ <div class="intro"></div>
+
+ <p id="banner-name">
+ <span>This is Bugzilla</span>
+ </p>
+ <p id="banner-version">
+ <a href="http://www.bugzilla.org/"><span>Bugzilla</span></a>
+ <span>Version 2.22rc1</span>
+ </p>
+
+ <div class="outro"></div>
+ </div>
+
+<div id="header">
+ <h1>Bugzilla Bug 4</h1>
+
+ <h2>Another Test</h2>
+
+ <h3>Last modified: 2006-03-10 14:11:48</h3>
+
+</div>
+
+<b>Bug List:</b>
+ (4 of 4)
+
+ <a href="show_bug.cgi?id=1">First</a>
+ <a href="show_bug.cgi?id=4">Last</a>
+
+ <a href="show_bug.cgi?id=3">Prev</a>
+
+ <i><font color="#777777">Next</font></i>
+
+ &nbsp;&nbsp;<a href="buglist.cgi?regetlastlist=1">Show last search results</a>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="query.cgi">Search page</a>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="enter_bug.cgi">Enter new bug</a>
+
+<hr>
+<script type="text/javascript">
+ <!--
+
+ /* Outputs a link to call replyToComment(); used to reduce HTML output */
+ function addReplyLink(id) {
+ /* XXX this should really be updated to use the DOM Core's
+ * createElement, but finding a container isn't trivial.
+ */
+ document.write('[<a href="#add_comment" onclick="replyToComment(' +
+ id + ');">reply<' + '/a>]');
+ }
+
+ /* Adds the reply text to the `comment' textarea */
+ function replyToComment(id) {
+ /* pre id="comment_name_N" */
+ var text_elem = document.getElementById('comment_text_'+id);
+ var text = getText(text_elem);
+
+ /* make sure we split on all newlines -- IE or Moz use \r and \n
+ * respectively.
+ */
+ text = text.split(/\r|\n/);
+
+ var replytext = "";
+ for (var i=0; i < text.length; i++) {
+ replytext += "> " + text[i] + "\n";
+ }
+
+ replytext = "(In reply to comment #" + id + ")\n" + replytext + "\n";
+
+
+ /* <textarea id="comment"> */
+ var textarea = document.getElementById('comment');
+ textarea.value += replytext;
+
+ textarea.focus();
+ }
+
+ if (typeof Node == 'undefined') {
+ /* MSIE doesn't define Node, so provide a compatibility object */
+ window.Node = {
+ TEXT_NODE: 3,
+ ENTITY_REFERENCE_NODE: 5
+ };
+ }
+
+ /* Concatenates all text from element's childNodes. This is used
+ * instead of innerHTML because we want the actual text (and
+ * innerText is non-standard).
+ */
+ function getText(element) {
+ var child, text = "";
+ for (var i=0; i < element.childNodes.length; i++) {
+ child = element.childNodes[i];
+ var type = child.nodeType;
+ if (type == Node.TEXT_NODE || type == Node.ENTITY_REFERENCE_NODE) {
+ text += child.nodeValue;
+ } else {
+ /* recurse into nodes of other types */
+ text += getText(child);
+ }
+ }
+ return text;
+ }
+
+
+ function updateCommentTagControl(checkbox, form) {
+ if (checkbox.checked) {
+ form.comment.className='bz_private';
+ } else {
+ form.comment.className='';
+ }
+ }
+
+ //-->
+ </script>
+
+<form name="changeform" method="post" action="process_bug.cgi">
+
+ <input type="hidden" name="delta_ts" value="2006-03-10 14:11:48">
+
+ <input type="hidden" name="longdesclength" value="2">
+ <input type="hidden" name="id" value="4">
+
+
+
+ <table>
+
+ <tr>
+ <td valign="top">
+ <table cellspacing="1" cellpadding="1">
+ <tr>
+
+ <td align="right">
+ <b>Bug#:</b>
+ </td>
+ <td>
+ <a href="http://mylar.eclipse.org/bugs222/show_bug.cgi?id=4">4</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b><u>P</u>roduct:</b>
+ </td><td>
+ <label for="product" accesskey="p">
+ <select name="product" id="product">
+ <option value="TestProduct" selected>TestProduct
+ </option>
+
+ </select>
+ </label>
+ </td>
+ </tr>
+
+
+
+ <tr>
+ <td align="right">
+ <b>
+ <a href="describecomponents.cgi?product=TestProduct">
+
+ Co<u>m</u>ponent</a>:
+ </b>
+ </td><td>
+ <label for="component" accesskey="m">
+ <select name="component" id="component">
+ <option value="TestComponent" selected>TestComponent
+ </option>
+ </select>
+
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b>
+ <a href="page.cgi?id=fields.html#status">Status</a>:
+ </b>
+
+ </td>
+ <td>NEW</td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b>
+ <a href="page.cgi?id=fields.html#resolution">Resolution</a>:
+ </b>
+
+ </td>
+ <td>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b>
+ <a href="page.cgi?id=fields.html#assigned_to">Assigned&nbsp;To</a>:
+ </b>
+
+ </td>
+ <td>Robert Elves &lt;relves&#64;cs.ubc.ca&gt;</td>
+ </tr>
+
+ </table>
+
+ </td>
+ <td valign="top">
+
+ <table cellspacing="1" cellpadding="1">
+
+ <tr>
+ <td align="right">
+ <b><u>H</u>ardware:</b>
+ </td><td>
+ <label for="rep_platform" accesskey="h">
+ <select name="rep_platform" id="rep_platform">
+
+ <option value="All">All
+ </option>
+ <option value="PC" selected>PC
+ </option>
+ <option value="Macintosh">Macintosh
+ </option>
+ <option value="Other">Other
+ </option>
+ </select>
+ </label>
+ </td>
+
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b><u>O</u>S:</b>
+ </td><td>
+ <label for="op_sys" accesskey="o">
+ <select name="op_sys" id="op_sys">
+
+ <option value="All">All
+ </option>
+ <option value="Windows">Windows
+ </option>
+ <option value="Mac OS">Mac OS
+ </option>
+ <option value="Linux">Linux
+ </option>
+ <option value="Other" selected>Other
+ </option>
+ </select>
+
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b>Version:</b>
+ </td><td>
+ <label for="version" accesskey="o">
+
+ <select name="version" id="version">
+ <option value="other" selected>other
+ </option>
+ </select>
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+
+ <b><a href="page.cgi?id=fields.html#priority">Pr<u>i</u>ority</a>:</b>
+ </td><td>
+ <label for="priority" accesskey="i">
+ <select name="priority" id="priority">
+ <option value="P1">P1
+ </option>
+ <option value="P2">P2
+ </option>
+
+ <option value="P3" selected>P3
+ </option>
+ <option value="P4">P4
+ </option>
+ <option value="P5">P5
+ </option>
+ </select>
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b><a href="page.cgi?id=fields.html#bug_severity">Severity</a>:</b>
+ </td><td>
+ <label for="bug_severity" accesskey="i">
+ <select name="bug_severity" id="bug_severity">
+ <option value="blocker">blocker
+ </option>
+
+ <option value="critical">critical
+ </option>
+ <option value="major">major
+ </option>
+ <option value="normal" selected>normal
+ </option>
+ <option value="minor">minor
+ </option>
+ <option value="trivial">trivial
+ </option>
+ <option value="enhancement">enhancement
+ </option>
+
+ </select>
+ </label>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ <b>
+ Target Milestone:
+ </b>
+
+ </td><td>
+ <label for="target_milestone" accesskey="i">
+ <select name="target_milestone" id="target_milestone">
+ <option value="---" selected>---
+ </option>
+ </select>
+ </label>
+ </td>
+ </tr>
+
+ </table>
+ </td>
+
+ <td valign="top">
+
+ <table cellpadding="1" cellspacing="1">
+
+ <tr>
+ <td align="right">
+ <b>Reporter:</b>
+
+ </td>
+ <td>
+ <a href="mailto:relves&#64;cs.ubc.ca">Robert Elves &lt;relves&#64;cs.ubc.ca&gt;</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right" valign="top">
+
+ <b><u>A</u>dd&nbsp;CC:</b>
+ </td>
+ <td><input
+ name="newcc"
+ value="" accesskey="a" size="30"
+>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right" valign="top">
+
+ <b>CC:</b>
+ </td>
+ <td valign="top">
+ <input type="hidden" name="cc" value="">
+ </td>
+ </tr>
+
+ </table>
+
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table cellspacing="1" cellpadding="1">
+
+
+
+
+ <tr>
+ <td align="right">
+ <b>
+
+ <u>U</u>RL:
+ </b>
+ </td>
+ <td colspan="5">
+ <input name="bug_file_loc" accesskey="u"
+ value="" size="60">
+ </td>
+ </tr>
+
+ <tr>
+
+ <td align="right">
+ <b><u>S</u>ummary:</b>
+ </td>
+ <td colspan="5">
+ <input name="short_desc" accesskey="s"
+ value="Another Test" size="60">
+ </td>
+ </tr>
+
+
+ </table>
+ </td>
+
+ <td valign="top">
+ <table cellspacing="1" cellpadding="1">
+ <tr>
+ <td colspan="2" valign="top">
+ </td>
+
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+
+
+<br>
+<table cellspacing="0" cellpadding="4" border="1">
+ <tr>
+
+ <th bgcolor="#cccccc" align="left">Attachment</th>
+ <th bgcolor="#cccccc" align="left">Type</th>
+ <th bgcolor="#cccccc" align="left">Creator</th>
+ <th bgcolor="#cccccc" align="left">Created</th>
+ <th bgcolor="#cccccc" align="left">Size</th>
+ <th bgcolor="#cccccc" align="left">Actions</th>
+
+ </tr>
+ <tr >
+ <td valign="top">
+ <a href="attachment.cgi?id=1">Testing upload</a>
+ </td>
+
+ <td valign="top">text/plain
+ </td>
+
+ <td valign="top">
+
+ <a href="mailto:relves&#64;cs.ubc.ca">Robert Elves
+ </a>
+ </td>
+ <td valign="top">2006-03-10 14:11</td>
+ <td valign="top">6.87 KB</td>
+
+
+ <td valign="top">
+ <a href="attachment.cgi?id=1&amp;action=edit">Edit</a>
+
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="5">
+ <a href="attachment.cgi?bugid=4&amp;action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
+ </td>
+ <td>
+ <a href="attachment.cgi?bugid=4&amp;action=viewall">View All</a>
+
+ </td>
+ </tr>
+</table>
+<br>
+
+
+
+ <table>
+ <tr><th align="right">Bug 4 depends on:</th>
+ <td>
+ </td>
+
+ <td>
+ <input name="dependson" accesskey="i"
+ value="">
+ </td>
+ <td rowspan="2">
+ <a href="showdependencytree.cgi?id=4">Show
+ dependency tree</a>
+
+ <br>
+ <a href="showdependencygraph.cgi?id=4">Show
+ dependency graph</a>
+
+ </td>
+ </tr>
+
+ <tr><th align="right">Bug 4 <u>b</u>locks:</th>
+ <td>
+ </td>
+ <td>
+ <input name="blocked" accesskey="b"
+ value="">
+
+ </td>
+ </tr>
+ </table>
+
+
+
+
+ <br>
+ <b>Additional <u>C</u>omments:</b>
+
+ <br>
+ <a name="add_comment"></a>
+ <textarea name="comment" id="comment" rows="10" cols="80"
+ accesskey="c"></textarea>
+
+ <br>
+ <label for="addselfcc">
+ <input type="checkbox" id="addselfcc" name="addselfcc">
+ Add relves&#64;cs.ubc.ca to CC list
+ </label>
+
+ <br>
+
+<br>
+ <input type="radio" id="knob-leave" name="knob" value="none" checked="checked">
+ <label for="knob-leave">
+ Leave as <b>NEW&nbsp;</b>
+ </label>
+ <br>
+
+
+ <input type="radio" id="knob-accept" name="knob" value="accept">
+ <label for="knob-accept">
+ Accept bug (change
+ status to <b>ASSIGNED</b>)
+ </label>
+ <br>
+
+
+ <input type="radio" id="knob-resolve" name="knob" value="resolve">
+
+ <label for="knob-resolve">
+ Resolve bug, changing
+ <a href="page.cgi?id=fields.html#resolution">resolution</a> to
+ </label>
+ <select name="resolution"
+ onchange="document.changeform.knob[2].checked=true">
+ <option value="FIXED">FIXED</option>
+ <option value="INVALID">INVALID</option>
+ <option value="WONTFIX">WONTFIX</option>
+
+ <option value="LATER">LATER</option>
+ <option value="REMIND">REMIND</option>
+ <option value="WORKSFORME">WORKSFORME</option>
+ </select>
+ <br>
+
+ <input type="radio" id="knob-duplicate" name="knob" value="duplicate">
+ <label for="knob-duplicate">
+
+ Resolve bug, mark it as duplicate of bug #
+ </label>
+ <input name="dup_id" size="6"
+ onchange="if (this.value != '')
+ {document.changeform.knob[3].checked=true}">
+ <br>
+
+ <input type="radio" id="knob-reassign" name="knob" value="reassign">
+ <label for="knob-reassign">
+ <a href="page.cgi?id=fields.html#assigned_to">Reassign</a> bug to
+ </label><input
+ name="assigned_to"
+ value="relves&#64;cs.ubc.ca" onchange="if ((this.value != 'relves\x40cs.ubc.ca') &amp;&amp; (this.value != '')) {
+ document.changeform.knob[4].checked=true;
+ }" accesskey="b" size="32"
+>
+
+ <br>
+
+ <input type="radio" id="knob-reassign-cmp" name="knob" value="reassignbycomponent">
+ <label for="knob-reassign-cmp">
+ Reassign bug to default assignee
+ of selected component
+ </label>
+ <br>
+
+ <input type="submit" value="Commit">
+ <input type="hidden" name="form_name" value="process_bug">
+
+ <p>
+ <font size="+1">
+ <b>
+ <a href="show_activity.cgi?id=4">View Bug Activity</a>
+ &nbsp; | &nbsp;
+ <a href="show_bug.cgi?format=multiple&amp;id=4">Format For Printing</a>
+ &nbsp; | &nbsp;
+
+ <a href="show_bug.cgi?ctype=xml&amp;id=4">XML</a>
+ &nbsp; | &nbsp;
+ <a href="enter_bug.cgi?cloned_bug_id=4">Clone This Bug</a>
+
+
+ </b>
+ </font>
+
+ </p>
+
+
+
+<hr>
+<script type="text/javascript">
+ <!--
+ function updateCommentPrivacy(checkbox, id) {
+ var text_elem = document.getElementById('comment_text_'+id);
+ if (checkbox.checked) {
+ text_elem.parentNode.className='bz_private';
+ } else {
+ text_elem.parentNode.className='';
+ }
+ }
+ //-->
+ </script>
+
+
+
+
+
+
+
+
+<div >
+ <table>
+
+ <tr>
+ <td align="left">
+ <b><a name="c0" href="show_bug.cgi?id=4#c0">
+ Description</a>:</b>&nbsp;&nbsp;<script type="text/javascript"><!--
+ addReplyLink(0);
+ //--></script>
+ </td>
+ <td align="left" width="30%">
+ <b>Opened:</b> 2006-03-09 13:09
+ </td>
+
+ </tr>
+ </table>
+
+
+
+<pre id="comment_text_0">Testing new 2.22 version capability
+</pre>
+ </div>
+ <div >
+ <br>
+ <span class="bz_comment">
+ ------- <i>Comment
+ <a name="c1" href="show_bug.cgi?id=4#c1">
+
+ #1</a> From
+ <a href="mailto:relves&#64;cs.ubc.ca">Robert Elves</a>
+ 2006-03-10 14:11:48
+ </i>
+ <script type="text/javascript"><!--
+ addReplyLink(1); //--></script>
+ -------
+ </span>
+
+
+
+<pre id="comment_text_1"><span class=""><a href="attachment.cgi?id=1&amp;action=view" title="Testing upload">Created an attachment (id=1)</a> <a href="attachment.cgi?id=1&amp;action=edit" title="Testing upload">[edit]</a></span>
+
+Testing upload
+
+The comment
+</pre>
+ </div>
+
+</form>
+
+<hr>
+<b>Bug List:</b>
+ (4 of 4)
+
+ <a href="show_bug.cgi?id=1">First</a>
+ <a href="show_bug.cgi?id=4">Last</a>
+
+ <a href="show_bug.cgi?id=3">Prev</a>
+
+ <i><font color="#777777">Next</font></i>
+
+ &nbsp;&nbsp;<a href="buglist.cgi?regetlastlist=1">Show last search results</a>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="query.cgi">Search page</a>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="enter_bug.cgi">Enter new bug</a>
+
+<br>
+<div id="footer">
+ <div class="intro"></div>
+
+
+
+
+<div id="useful-links">
+ <div id="links-actions">
+ <div class="label">Actions:</div>
+ <div class="links">
+
+ <a href="./">Home</a> |
+ <a href="enter_bug.cgi">New</a> |
+ <a href="query.cgi">Search</a> |
+
+ <form action="buglist.cgi" method="get"
+ onsubmit="if (this.quicksearch.value == '')
+ { alert('Please enter one or more search terms first.');
+ return false; } return true;">
+ <input class="txt" type="text" name="quicksearch">
+ <input class="btn" type="submit" value="Find">
+ </form> |
+
+ <a href="report.cgi">Reports</a>
+
+ | <a href="request.cgi?requester=relves%40cs.ubc.ca&amp;requestee=relves%40cs.ubc.ca&amp;do_union=1&amp;group=type">My Requests</a>
+
+
+ | <a href="votes.cgi?action=show_user">My&nbsp;Votes</a>
+ | <a href="sanitycheck.cgi">Sanity&nbsp;check</a>
+ | <a href="relogin.cgi">Log&nbsp;out</a>&nbsp;relves&#64;cs.ubc.ca
+ </div>
+ </div>
+
+
+ <div id="links-edit">
+ <div class="label">Edit:</div>
+ <div class="links">
+
+ <a href="userprefs.cgi">Prefs</a> | <a href="editparams.cgi">Parameters</a> | <a href="editsettings.cgi">User Preferences</a> | <a href="editusers.cgi">Users</a> | <a href="editproducts.cgi">Products</a> | <a href="editflagtypes.cgi">Flags</a> | <a href="editvalues.cgi">Field Values</a> | <a href="editgroups.cgi">Groups</a> | <a href="editkeywords.cgi">Keywords</a> | <a href="editwhines.cgi">Whining</a>
+
+ </div>
+ </div>
+
+
+
+
+ <div id="links-saved">
+ <div class="label">
+ Saved&nbsp;Searches:
+ </div>
+ <div class="links">
+ <a href="buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailreporter1=1&amp;emailtype1=exact&amp;email1=relves%40cs.ubc.ca&amp;field0-0-0=bug_status&amp;type0-0-0=notequals&amp;value0-0-0=UNCONFIRMED&amp;field0-0-1=reporter&amp;type0-0-1=equals&amp;value0-0-1=relves%40cs.ubc.ca">My&nbsp;Bugs</a>
+
+ </div>
+ </div>
+
+
+<div id="links-special">
+ <div class="label">&nbsp;</div>
+ <div class="links">
+ <form action="buglist.cgi" method="get">
+ <input type="hidden" name="cmdtype" value="doit">
+ <input type="hidden" name="remtype" value="asnamed">
+
+ <input type="hidden" name="add_bugids" value="1">
+ <input type="submit" value="Add"> bugs
+ <input type="text" name="bug_ids" size="8" maxlength="80"> to
+ the new saved search:
+ <input type="text" name="newqueryname" size="20" maxlength="64">
+ </form>
+ </div>
+ </div>
+
+
+</div>
+
+ <div class="outro"></div>
+</div>
+
+</body>
+</html>
diff --git a/org.eclipse.mylyn.bugzilla.ui/.classpath b/org.eclipse.mylyn.bugzilla.ui/.classpath
new file mode 100644
index 000000000..6f1aa2c56
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+ <accessrules>
+ <accessrule kind="accessible" pattern="**/internal/**"/>
+ </accessrules>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..c9a5ccb67
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylar Bugzilla Client Ui Plug-in
+Bundle-SymbolicName: org.eclipse.mylar.bugzilla.ui; singleton:=true
+Bundle-Version: 0.5.1
+Bundle-Activator: org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.compare,
+ org.eclipse.search,
+ org.eclipse.ui.views,
+ org.eclipse.ui.ide,
+ org.eclipse.mylar.bugzilla.core,
+ org.eclipse.mylar.core,
+ org.eclipse.ui.forms,
+ org.eclipse.jface.text,
+ org.eclipse.mylar.tasklist,
+ org.eclipse.team.ui,
+ org.eclipse.team.cvs.ui,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.workbench.texteditor
+Eclipse-AutoStart: true
+Export-Package: org.eclipse.mylar.internal.bugzilla.ui,
+ org.eclipse.mylar.internal.bugzilla.ui.actions,
+ org.eclipse.mylar.internal.bugzilla.ui.editor,
+ org.eclipse.mylar.internal.bugzilla.ui.search,
+ org.eclipse.mylar.internal.bugzilla.ui.tasklist,
+ org.eclipse.mylar.internal.bugzilla.ui.wizard
+Bundle-ClassPath: bugzilla-ui.jar
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.bugzilla.ui/plugin.xml b/org.eclipse.mylyn.bugzilla.ui/plugin.xml
new file mode 100644
index 000000000..012d2549c
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/plugin.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+ <!-- TODO: remove? -->
+ <extension
+ id="searchHit"
+ name="Bugzilla Search Match"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.search.searchmarker"/>
+ <attribute name="id"/>
+ <attribute name="href"/>
+ <attribute name="description"/>
+ <attribute name="label"/>
+ <attribute name="severity"/>
+ <attribute name="priority"/>
+ <attribute name="platform"/>
+ <attribute name="status"/>
+ <attribute name="result"/>
+ <attribute name="owner"/>
+ <attribute name="query"/>
+ </extension>
+
+ <extension
+ id="org.eclipse.mylar.bugzilla.repository"
+ name="Bugzilla Repository"
+ point="org.eclipse.mylar.tasklist.repositories">
+
+ <repositoryType
+ brandingIcon="icons/eview16/bugzilla-logo.gif"
+ class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector"
+ id="org.eclipse.mylar.bugzilla.tasklist.repositories"
+ name="Bugzilla Repository Client"
+ type="bugzilla"/>
+
+ <externalizer
+ class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskExternalizer"
+ id="org.eclipse.mylar.bugzilla.tasklist.externalizer"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.mylar.tasklist.editors">
+ <editorFactory class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaReportEditorFactory"/>
+ <hyperlinkDetector
+ class="org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector"
+ id="org.eclipse.mylar.tasklist.hyperlinkdetector.bugzillatask"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">
+ <newWizardShortcut id="org.eclipse.mylar.bugzilla.bugWizard"/>
+ </perspectiveExtension>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.decorators">
+ <decorator
+ class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskDecorator"
+ id="org.eclipse.mylar.bugzilla.ui.decorator.task"
+ label="Mylar Bugzilla Task Decorator"
+ lightweight="true"
+ objectClass="org.eclipse.mylar.provisional.tasklist.ITaskListElement"
+ state="true">
+ <description>
+ Mylar Bugzilla Task Decorator
+ </description>
+ </decorator>
+ </extension>
+
+ <extension
+ id="org.eclipse.mylar.bugzilla.help.browser"
+ name="Bugzilla Help"
+ point="org.eclipse.help.toc">
+ <toc
+ file="doc/toc.xml"
+ primary="false">
+ </toc>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ name="Bugzilla viewer"
+ icon="icons/etool16/task-remote.gif"
+ class="org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor"
+ id="org.eclipse.mylar.bugzilla.ui.existingBugEditor">
+ </editor>
+ <editor
+ name="Bugzilla viewer"
+ icon="icons/etool16/task-remote.gif"
+ class="org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditor"
+ id="org.eclipse.mylar.bugzilla.ui.newBugEditor">
+ </editor>
+ <editor
+ icon="icons/etool16/task-repository.gif"
+ name="Bugzilla task viewer"
+ class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskEditor"
+ id="org.eclipse.mylar.bugzilla.ui.tasklist.bugzillaTaskEditor"/>
+ </extension>
+ <extension
+ id="org.eclipse.mylar.bugzilla.help.context"
+ name="Bugzilla Context-sensitive Help"
+ point="org.eclipse.help.contexts">
+ <contexts
+ file="bugzilla-help.xml">
+ </contexts>
+ </extension>
+ <extension
+ point="org.eclipse.search.searchPages"
+ id="org.eclipse.mylar.bugzilla.core.search.searchPage"
+ name="Bugzilla Search Page">
+ <page
+ class="org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage"
+ enabled="true"
+ icon="icons/elcl16/bug-search.gif"
+ id="org.eclipse.mylar.bugzilla.core.search.bugzillaSearchPage"
+ label="Bugzilla Search"
+ tabPosition="999"/>
+ </extension>
+ <extension
+ id="BugzillaSearchPage"
+ point="org.eclipse.search.searchResultViewPages">
+ <viewPage
+ class="org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchResultView"
+ searchResultClass="org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchResult"
+ id="org.eclipse.mylar.bugzilla.BugzillaSearchResultPage"/>
+ </extension>
+<!-- <extension
+ point="org.eclipse.mylar.tasklist.editors">
+ <hyperlinkListener
+ class="org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector"
+ type="org.eclipse.mylar.bugzilla.ui.hyperlinkListener1"/>
+ </extension>-->
+</plugin>
+
+<!--
+<extension
+ id="org.eclipse.mylar.bugzilla.wizards"
+ name="Bug Wizard"
+ point="org.eclipse.ui.newWizards">
+ <category
+ name="Bugzilla Client"
+ id="org.eclipse.mylar.bugzilla.wizard.category">
+ </category>
+ <wizard
+ category="org.eclipse.mylar.bugzilla.wizard.category"
+ class="org.eclipse.mylar.bugzilla.ui.wizard.NewBugzillaReportWizard"
+ icon="icons/elcl16/bug-new.gif"
+ id="org.eclipse.mylar.bugzilla.bugWizard"
+ name="New Bug Report">
+ <description>
+ Create a new bug report
+ </description>
+ </wizard>
+</extension>
+-->
+
+ <!--
+ <extension
+ id="org.eclipse.mylar.bugzilla.ui"
+ name="Bugzilla Client Views"
+ point="org.eclipse.ui.views">
+ <category
+ name="Bugzilla"
+ id="org.eclipse.mylar.bugzilla.category"/>
+ <view
+ name="Bugzilla Offline Reports"
+ icon="icons/elcl16/bug-dirty.gif"
+ category="org.eclipse.mylar.bugzilla.category"
+ class="org.eclipse.mylar.bugzilla.ui.OfflineView"
+ id="org.eclipse.mylar.bugzilla.ui.offlineReportsView"/>
+ <view
+ name="Bugzilla Favorites"
+ icon="icons/elcl16/bug-favorite.gif"
+ category="org.eclipse.mylar.bugzilla.category"
+ class="org.eclipse.mylar.bugzilla.ui.FavoritesView"
+ id="org.eclipse.mylar.bugzilla.ui.favoritesView"/>
+ </extension>
+ -->
+
+<!-- <extension point="org.eclipse.ui.preferencePages">
+ <page
+ name="Bugzilla Client"
+ class="org.eclipse.mylar.internal.bugzilla.core.BugzillaPreferencePage"
+ id="org.eclipse.mylar.bugzilla.bugzillaPreferences"
+ category="org.eclipse.mylar.ui.preferences"/>
+ </extension>
+ -->
+
+ <!--
+ <action
+ class="org.eclipse.mylar.bugzilla.ui.actions.CreateBugzillaTaskAction"
+ enablesFor="*"
+ icon="icons/etool16/task-bug.gif"
+ id="org.eclipse.mylar.bugzilla.ui.popup.addExisting"
+ label="Add Existing Bugzilla Report"
+ menubarPath="reports"
+ tooltip="Add Existing Bugzilla Report">
+ <enablement>
+ <objectClass name="org.eclipse.mylar.tasklist.internal.TaskCategory"/>
+ </enablement>
+ </action>
+ -->
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java
new file mode 100644
index 000000000..edfe2c3f5
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil;
+
+/**
+ * @author Mik Kersten
+ */
+public class BugzillaHyperLink implements IHyperlink {
+
+ private static final String SHOW_BUG_CGI = "/show_bug.cgi?id=";
+
+ private IRegion region;
+
+ private String id;
+
+ private String repositoryUrl;
+
+ public BugzillaHyperLink(IRegion nlsKeyRegion, String id, String repositoryUrl) {
+ this.region = nlsKeyRegion;
+ this.id = id;
+ this.repositoryUrl = repositoryUrl;
+ }
+
+ public IRegion getHyperlinkRegion() {
+ return region;
+ }
+
+ public String getTypeLabel() {
+ return null;
+ }
+
+ public String getHyperlinkText() {
+ return SHOW_BUG_CGI + id;
+ }
+
+ public void open() {
+ // TaskRepository repository =
+ // MylarTaskListPlugin.getRepositoryManager().getRepositoryForActiveTask(BugzillaPlugin.REPOSITORY_KIND);
+ // TaskRepository repository =
+ // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(
+ // BugzillaPlugin.REPOSITORY_KIND);
+ if (repositoryUrl != null) {
+ TaskUiUtil.openRepositoryTask(repositoryUrl, id, repositoryUrl + BugzillaRepositoryUtil.POST_ARGS_SHOW_BUG
+ + id);
+ // OpenBugzillaReportJob job = new
+ // OpenBugzillaReportJob(repository.getUrl(), id);
+ // IProgressService service =
+ // PlatformUI.getWorkbench().getProgressService();
+ // try {
+ // service.run(true, false, job);
+ // } catch (Exception e) {
+ // MylarStatusHandler.fail(e, "Could not open report", true);
+ // }
+ } else {
+ MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Could not determine repository for report");
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java
new file mode 100644
index 000000000..616426fae
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.RepositoryTextViewer;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+
+/**
+ * @author Rob Elves
+ */
+public class BugzillaTaskHyperlinkDetector implements IHyperlinkDetector {
+
+ private TaskRepository repository;
+
+ public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
+ if (region == null || textViewer == null)
+ return null;
+
+ if (!(textViewer instanceof RepositoryTextViewer))
+ return null;
+
+ RepositoryTextViewer viewer = (RepositoryTextViewer) textViewer;
+
+ repository = viewer.getRepository();
+
+ if (repository == null)
+ return null;
+
+ IDocument document = textViewer.getDocument();
+
+ int offset = region.getOffset();
+
+ if (document == null)
+ return null;
+
+ IRegion lineInfo;
+ String line;
+ try {
+ lineInfo = document.getLineInformationOfOffset(offset);
+ line = document.get(lineInfo.getOffset(), lineInfo.getLength());
+ } catch (BadLocationException ex) {
+ return null;
+ }
+
+ int offsetInLine = offset - lineInfo.getOffset();
+
+ IHyperlink[] links = BugzillaUITools.findBugHyperlinks(repository.getUrl(), offsetInLine, lineInfo.getLength(),
+ line, lineInfo.getOffset());
+
+ return links;
+
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java
new file mode 100644
index 000000000..21f9ba025
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.bugzilla.core.IBugzillaBug;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.NewBugModel;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditorInput;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditorInput;
+import org.eclipse.search.internal.ui.SearchMessages;
+import org.eclipse.search.internal.ui.SearchPlugin;
+import org.eclipse.search.internal.ui.util.ExceptionHandler;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * @author Rob Elves (multiple bug hyperlink support)
+ */
+public class BugzillaUITools {
+
+ private static final String BUG_HASH = "#";
+
+ private static final String BUG_PATTERN_6 = "bug\\d+";// "^.*bug\\s#\\d+.*";
+
+ private static final String BUG_PATTERN_5 = "bug\\s#\\s\\d+";// "^.*bug\\s#\\d+.*";
+
+ private static final String BUG_PATTERN_4 = "bug#\\d+";// "^.*bug#\\d+.*";
+
+ private static final String BUG_PATTERN_3 = "bug\\s#\\d+";// "^.*bug\\s#\\d+.*";
+
+ private static final String BUG_PATTERN_2 = "bug#\\s+\\d+";// "^.*bug#\\s+\\d+.*";
+
+ private static final String BUG_PATTERN_1 = "bug\\s+\\d+";// "^.*bug\\s+\\d+.*";
+
+ private static final String[] BUG_PATTERNS = { BUG_PATTERN_1, BUG_PATTERN_2, BUG_PATTERN_3, BUG_PATTERN_4,
+ BUG_PATTERN_5, BUG_PATTERN_6 };
+
+ /** The editor to use when a bug is opened */
+ private static IEditorPart fEditor;
+
+ /**
+ * Convenience method for opening a bug in an editor.
+ *
+ * @param id
+ * The bug id of the bug to open in the editor
+ */
+ public static boolean show(String repositoryUrl, int id) {
+ // determine if the editor is to be reused or not and call the
+ // appropriate
+ // function to show the bug
+ if (NewSearchUI.reuseEditor())
+ return showWithReuse(repositoryUrl, id);
+ else
+ return showWithoutReuse(repositoryUrl, id);
+ }
+
+ /**
+ * Show the bug in the same editor window
+ *
+ * @param id
+ * The id of the bug to show
+ */
+ private static boolean showWithReuse(String repositoryUrl, int id) {
+ // get the active page so that we can reuse it
+ IWorkbenchPage page = SearchPlugin.getActivePage();
+ try {
+ // if we couldn't get a page, get out
+ if (page == null)
+ return true;
+
+ IEditorInput input = null;
+
+ // try to get an editor input on the bug
+ input = new ExistingBugEditorInput(repositoryUrl, id);
+
+ // check if we found a valid bug
+ if (((ExistingBugEditorInput) input).getBug() == null) {
+ MessageDialog.openError(null, "No such bug", "No bug exists with this id");
+ return false;
+ }
+
+ // get the editor for the page
+ IEditorPart editor = page.findEditor(input);
+
+ if (editor == null) {
+ // close the current editor if it is clean and open
+ if (fEditor != null && !fEditor.isDirty())
+ page.closeEditor(fEditor, false);
+
+ try {
+ // try to open a new editor with the input bug, but don't
+ // activate it
+ editor = page.openEditor(input, IBugzillaConstants.EXISTING_BUG_EDITOR_ID, false);
+ } catch (PartInitException ex) {
+ // if there was a problem, handle it and log it, then get
+ // out of here
+ ExceptionHandler.handle(ex, SearchMessages.Search_Error_search_title,
+ SearchMessages.Search_Error_search_message); //$NON-NLS-2$ //$NON-NLS-1$
+ BugzillaPlugin.log(ex.getStatus());
+ return false;
+ }
+
+ } else {
+ // if a editor is openon that bug, just bring it to the top
+ // of the editors
+ page.bringToTop(editor);
+ }
+
+ if (editor != null) {
+ // if we have an editor, save it for later use
+ fEditor = editor;
+ }
+ } catch (LoginException e) {
+ MessageDialog
+ .openError(
+ null,
+ "Login Error",
+ "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. ");
+ BugzillaPlugin.log(e);
+ } catch (IOException e) {
+ IStatus status = new MultiStatus(IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString()
+ + " occurred while opening the bug report. \n\nClick Details or see log for more information.", e);
+ IStatus s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString()
+ + ": ", e);
+ ((MultiStatus) status).add(s);
+ s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
+ ((MultiStatus) status).add(s);
+
+ // write error to log
+ BugzillaPlugin.log(status);
+
+ ErrorDialog.openError(null, "Bugzilla Error", null, status);
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Show the bug in a new editor window
+ *
+ * @param id
+ * The id of the bug to show
+ */
+ private static boolean showWithoutReuse(String repositoryUrl, int id) {
+ // get the active workbench page
+ IWorkbenchPage page = SearchPlugin.getActivePage();
+ try {
+ // if we couldn't get the page, get out of here
+ if (page == null)
+ return true;
+
+ IEditorInput input = null;
+ String editorId = IBugzillaConstants.EXISTING_BUG_EDITOR_ID;
+
+ // get a new editor input on the bug that we want to open
+ input = new ExistingBugEditorInput(repositoryUrl, id);
+
+ // check if we found a valid bug
+ if (((ExistingBugEditorInput) input).getBug() == null) {
+ MessageDialog.openError(null, "No such bug", "No bug exists with this id");
+ return false;
+ }
+
+ try {
+ // try to open an editor on the input bug
+ page.openEditor(input, editorId);
+ } catch (PartInitException ex) {
+ // if we have a problem, handle it, log it, and get out of here
+ ExceptionHandler.handle(ex, SearchMessages.Search_Error_search_title,
+ SearchMessages.Search_Error_search_message); //$NON-NLS-2$ //$NON-NLS-1$
+ BugzillaPlugin.log(ex.getStatus());
+ return false;
+ }
+ } catch (LoginException e) {
+ MessageDialog
+ .openError(
+ null,
+ "Login Error",
+ "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. ");
+ BugzillaPlugin.log(e);
+ } catch (IOException e) {
+ IStatus status = new MultiStatus(IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString()
+ + " occurred while opening the bug report. \n\nClick Details or see log for more information.", e);
+ IStatus s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString()
+ + ": ", e);
+ ((MultiStatus) status).add(s);
+ s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
+ ((MultiStatus) status).add(s);
+
+ // write error to log
+ BugzillaPlugin.log(status);
+
+ ErrorDialog.openError(null, "Bugzilla Error", null, status);
+ return false;
+ }
+ return true;
+ }
+
+ public static void closeEditor(IWorkbenchPage page, IBugzillaBug bug) {
+ if (bug instanceof NewBugModel) {
+ IEditorInput input = new NewBugEditorInput((NewBugModel) bug);
+ IEditorPart bugEditor = page.findEditor(input);
+ if (bugEditor != null) {
+ page.closeEditor(bugEditor, false);
+ }
+ } else if (bug instanceof BugReport) {
+ IEditorInput input = new ExistingBugEditorInput((BugReport) bug);
+ IEditorPart bugEditor = page.findEditor(input);
+ if (bugEditor != null) {
+ page.closeEditor(bugEditor, false);
+ IEditorPart compareEditor = page.findEditor(((ExistingBugEditor) bugEditor).getCompareInput());
+ if (compareEditor != null) {
+ page.closeEditor(compareEditor, false);
+ }
+ }
+ }
+ }
+
+ // TODO: legacy?: endOffset
+ public static IHyperlink[] findBugHyperlinks(String repositoryUrl, int offset, int endOffset, String comment,
+ int lineOffset) {
+ ArrayList<IHyperlink> hyperlinksFound = new ArrayList<IHyperlink>();
+ for (String regExp : BUG_PATTERNS) {
+ // TODO: Store these compiled patterns rather than always
+ // re-compiling
+ Pattern p = Pattern.compile(regExp, Pattern.CASE_INSENSITIVE);
+ Matcher m = p.matcher(comment);//comment.toLowerCase().trim()
+ while (m.find()) {
+ if (offset >= m.start() && offset <= m.end()) {
+ IHyperlink link = extractHyperlink(repositoryUrl, lineOffset, m);
+ if (link != null)
+ hyperlinksFound.add(link);
+ }
+ }
+ }
+
+ if (hyperlinksFound.size() > 0) {
+ return hyperlinksFound.toArray(new IHyperlink[1]);
+ }
+ return null;
+ }
+
+ private static IHyperlink extractHyperlink(String repositoryUrl, int lineOffset, Matcher m) {
+
+ int start = m.start();
+ int end = m.end();
+ String bugText = m.group();
+ int ahead = 3;
+ if (bugText.contains(BUG_HASH)) {
+ int pound = bugText.indexOf(BUG_HASH);
+ ahead = pound + 1;
+ }
+ String endComment = bugText.substring(ahead, bugText.length());
+ endComment = endComment.trim();
+
+ if (end == -1)
+ end = bugText.length();
+
+ try {
+
+ String bugId = endComment.trim();
+ start += lineOffset;
+ end += lineOffset;
+
+ IRegion sregion = new Region(start, end - start);
+ return new BugzillaHyperLink(sregion, bugId, repositoryUrl);
+
+ } catch (NumberFormatException e) {
+ return null;
+ }
+
+ }
+
+ // public static IHyperlink[] findBugHyperlinks(String repositoryUrl, int
+ // startOffset, int endOffset, String comment, int commentStart) {
+ //
+ //
+ // Pattern p = Pattern.compile("^.*bug\\s+\\d+.*");
+ // Matcher m = p.matcher(comment.toLowerCase().trim());
+ // boolean b = m.matches();
+ //
+ // p = Pattern.compile("^.*bug#\\s+\\d+.*");
+ // m = p.matcher(comment.toLowerCase().trim());
+ // boolean b2 = m.matches();
+ //
+ // p = Pattern.compile("^.*bug\\s#\\d+.*");
+ // m = p.matcher(comment.toLowerCase().trim());
+ // boolean b3 = m.matches();
+ //
+ // p = Pattern.compile("^.*bug#\\d+.*");
+ // m = p.matcher(comment.toLowerCase().trim());
+ // boolean b4 = m.matches();
+ //
+ // // XXX walk forward from where we are
+ // if (b || b2 || b3 || b4) {
+ //
+ // int start = comment.toLowerCase().indexOf("bug");
+ // int ahead = 4;
+ // if (b2 || b3 || b4) {
+ // int pound = comment.toLowerCase().indexOf("#", start);
+ // ahead = pound - start + 1;
+ // }
+ // String endComment = comment.substring(start + ahead, comment.length());
+ // endComment = endComment.trim();
+ // int endCommentStart = comment.indexOf(endComment);
+ //
+ // int end = comment.indexOf(" ", endCommentStart);
+ // int end2 = comment.indexOf(":", endCommentStart);
+ //
+ // if ((end2 < end && end2 != -1) || (end == -1 && end2 != -1)) {
+ // end = end2;
+ // }
+ //
+ // if (end == -1)
+ // end = comment.length();
+ //
+ // try {
+ // //int bugId = Integer.parseInt(comment.substring(endCommentStart,
+ // end).trim());
+ // String bugId = comment.substring(endCommentStart, end).trim();
+ // start += commentStart;
+ // end += commentStart;
+ // if (startOffset >= start && startOffset <= end) {
+ // // if (startOffset >= start && endOffset <= end) {
+ // IRegion sregion = new Region(start, end - start);
+ // return new IHyperlink[] { new BugzillaHyperLink(sregion, bugId,
+ // repositoryUrl) };
+ // }
+ // } catch (NumberFormatException e) {
+ // return null;
+ // }
+ // }
+ // return null;
+ // }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java
new file mode 100644
index 000000000..0a9776139
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java
@@ -0,0 +1,574 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ColumnLayoutData;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.internal.Favorite;
+import org.eclipse.mylar.internal.bugzilla.core.internal.FavoritesFile;
+import org.eclipse.mylar.internal.bugzilla.ui.actions.AbstractFavoritesAction;
+import org.eclipse.mylar.internal.bugzilla.ui.actions.DeleteFavoriteAction;
+import org.eclipse.mylar.internal.bugzilla.ui.actions.ViewFavoriteAction;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * A view that shows any bug marked as favorites.
+ */
+public class FavoritesView extends ViewPart {
+
+ private static Composite savedParent;
+
+ private IMemento savedMemento;
+
+ private static DeleteFavoriteAction remove;
+
+ public static DeleteFavoriteAction removeAll;
+
+ public static SelectAllAction selectAll;
+
+ private static ViewFavoriteAction open;
+
+ private Table table;
+
+ private MenuManager contextMenu;
+
+ private static TableViewer viewer;
+
+ private String[] columnHeaders = { "Bug", "Query", "Date" };
+
+ private ColumnLayoutData columnLayouts[] = { new ColumnWeightData(10), new ColumnWeightData(3),
+ new ColumnWeightData(5) };
+
+ /**
+ * Constructor initializes favorites' source file initializes actions
+ */
+ public FavoritesView() {
+ super();
+ open = new ViewFavoriteAction(this);
+ selectAll = new SelectAllAction();
+ remove = new DeleteFavoriteAction(this, false);
+ removeAll = new DeleteFavoriteAction(this, true);
+ }
+
+ @Override
+ public void init(IViewSite site) throws PartInitException {
+ super.init(site);
+ }
+
+ /**
+ * Initializes this view with the given view site. A memento is passed to
+ * the view which contains a snapshot of the views state from a previous
+ * session.
+ */
+ @Override
+ public void init(IViewSite site, IMemento memento) throws PartInitException {
+ init(site);
+ this.savedMemento = memento;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ FavoritesView.savedParent = parent;
+ setPartName("Bugzilla Favorites");
+ createTable();
+
+ viewer = new TableViewer(table);
+ viewer.setUseHashlookup(true);
+ createColumns();
+
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.verticalSpan = 20;
+ viewer.getTable().setLayoutData(gd);
+
+ viewer.setContentProvider(new FavoritesViewContentProvider(this));
+ viewer.setLabelProvider(new FavoritesViewLabelProvider());
+ viewer.setInput(BugzillaPlugin.getDefault().getFavorites().elements());
+
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ FavoritesView.this.widgetSelected(event);
+ }
+ });
+
+ fillToolbar();
+ createContextMenu();
+
+ Menu menu = contextMenu.createContextMenu(table);
+ table.setMenu(menu);
+
+ hookGlobalActions();
+ parent.layout();
+
+ // Restore state from the previous session.
+ restoreState();
+ }
+
+ @Override
+ public void setFocus() {
+ // don't need to do anything when the focus is set
+ }
+
+ private void createColumns() {
+ TableLayout layout = new TableLayout();
+ table.setLayout(layout);
+ table.setHeaderVisible(true);
+
+ for (int i = 0; i < columnHeaders.length; i++) {
+ TableColumn tc = new TableColumn(table, SWT.NONE, i);
+
+ tc.setText(columnHeaders[i]);
+ tc.pack();
+ tc.setResizable(columnLayouts[i].resizable);
+ layout.addColumnData(columnLayouts[i]);
+ }
+ }
+
+ private void createTable() {
+
+ table = new Table(savedParent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
+ table.setLinesVisible(true);
+
+ // Add action support for a double-click
+ table.addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ open.run();
+ }
+ });
+ }
+
+ private void fillToolbar() {
+ IActionBars actionBars = getViewSite().getActionBars();
+ IToolBarManager toolbar = actionBars.getToolBarManager();
+
+ remove.setEnabled(false);
+ toolbar.add(remove);
+ toolbar.add(removeAll);
+ toolbar.add(new Separator());
+ toolbar.add(selectAll);
+
+ // create actions to handle the sorting of the favorites
+ sortByIDAction = new SortByAction(FavoritesFile.ID_SORT);
+ sortByIDAction.setText("by &Bug ID");
+ sortByIDAction.setToolTipText("Sorts by bug number");
+
+ sortByPriorityAction = new SortByAction(FavoritesFile.PRIORITY_SORT);
+ sortByPriorityAction.setText("by &Priority");
+ sortByPriorityAction.setToolTipText("Sorts by riority of the bug");
+
+ sortBySeverityAction = new SortByAction(FavoritesFile.SEVERITY_SORT);
+ sortBySeverityAction.setText("by &Severity");
+ sortBySeverityAction.setToolTipText("Sorts by severity of the bug");
+
+ sortByStatusAction = new SortByAction(FavoritesFile.STATE_SORT);
+ sortByStatusAction.setText("by S&tatus");
+ sortByStatusAction.setToolTipText("Sorts by status of the bug");
+
+ // get the menu manager and create a submenu to contain sorting
+ IMenuManager menu = actionBars.getMenuManager();
+ IMenuManager submenu = new MenuManager("&Sort");
+
+ // add the sorting actions to the menu bar
+ menu.add(submenu);
+ submenu.add(sortByIDAction);
+ submenu.add(sortBySeverityAction);
+ submenu.add(sortByPriorityAction);
+ submenu.add(sortByStatusAction);
+
+ updateSortingState();
+ }
+
+ /**
+ * Function to make sure that the appropriate sort is checked
+ */
+ void updateSortingState() {
+ int curCriterion = FavoritesFile.lastSel;
+
+ sortByIDAction.setChecked(curCriterion == FavoritesFile.ID_SORT);
+ sortBySeverityAction.setChecked(curCriterion == FavoritesFile.SEVERITY_SORT);
+ sortByPriorityAction.setChecked(curCriterion == FavoritesFile.PRIORITY_SORT);
+ sortByStatusAction.setChecked(curCriterion == FavoritesFile.STATE_SORT);
+ viewer.setInput(viewer.getInput());
+ }
+
+ // Sorting actions for the favorites view
+ SortByAction sortByIDAction, sortBySeverityAction, sortByPriorityAction, sortByStatusAction;
+
+ /**
+ * Inner class to handle sorting
+ *
+ * @author Shawn Minto
+ */
+ class SortByAction extends Action {
+ /** The criteria to sort the favorites menu based on */
+ private int criterion;
+
+ /**
+ * Constructor
+ *
+ * @param criteria
+ * The criteria to sort the favorites menu based on
+ */
+ public SortByAction(int criteria) {
+ this.criterion = criteria;
+ }
+
+ /**
+ * Perform the sort
+ */
+ @Override
+ public void run() {
+ BugzillaPlugin.getDefault().getFavorites().sort(criterion);
+ updateSortingState();
+ }
+ }
+
+ /**
+ * Create context menu.
+ */
+ private void createContextMenu() {
+ contextMenu = new MenuManager("#FavoritesView");
+ contextMenu.setRemoveAllWhenShown(true);
+ contextMenu.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ fillContextMenu(manager);
+ updateActionEnablement();
+ }
+ });
+
+ // Register menu for extension.
+ getSite().registerContextMenu("#FavoritesView", contextMenu, viewer);
+ }
+
+ /**
+ * Hook global actions
+ */
+ private void hookGlobalActions() {
+ IActionBars bars = getViewSite().getActionBars();
+ bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAll);
+ bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), remove);
+ table.addKeyListener(new KeyAdapter() {
+
+ @Override
+ public void keyPressed(KeyEvent event) {
+ if (event.character == SWT.DEL && event.stateMask == 0 && remove.isEnabled()) {
+ remove.run();
+ }
+ }
+ });
+ }
+
+ /**
+ * Populate context menu
+ */
+ private void fillContextMenu(IMenuManager mgr) {
+ mgr.add(open);
+ mgr.add(new Separator());
+ mgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+ mgr.add(new Separator());
+ mgr.add(remove);
+ mgr.add(new DeleteFavoriteAction(this, true));
+ mgr.add(new SelectAllAction());
+ }
+
+ /**
+ * Update action enablement depending on whether or not any items are
+ * selected. Displays name of current item in status bar.
+ */
+ public static void updateActionEnablement() {
+
+ boolean hasSelected = viewer.getTable().getSelectionCount() > 0;
+ remove.setEnabled(hasSelected);
+ open.setEnabled(hasSelected);
+
+ boolean hasItems = viewer.getTable().getItemCount() > 0;
+ removeAll.setEnabled(hasItems);
+ selectAll.setEnabled(hasItems);
+ }
+
+ @Override
+ public void saveState(IMemento memento) {
+ TableItem[] sel = table.getSelection();
+ if (sel.length == 0)
+ return;
+ memento = memento.createChild("selection");
+ for (int i = 0; i < sel.length; i++) {
+ memento.createChild("descriptor", new Integer(table.indexOf(sel[i])).toString());
+ }
+ }
+
+ private void restoreState() {
+ if (savedMemento == null)
+ return;
+ savedMemento = savedMemento.getChild("selection");
+ if (savedMemento != null) {
+ IMemento descriptors[] = savedMemento.getChildren("descriptor");
+ if (descriptors.length > 0) {
+ int[] objList = new int[descriptors.length];
+ for (int nX = 0; nX < descriptors.length; nX++) {
+ String id = descriptors[nX].getID();
+ objList[nX] = BugzillaPlugin.getDefault().getFavorites().find(Integer.valueOf(id).intValue());
+ }
+ table.setSelection(objList);
+ }
+ }
+ viewer.setSelection(viewer.getSelection(), true);
+ savedMemento = null;
+ updateActionEnablement();
+ }
+
+ /**
+ * Returns list of names of selected items.
+ */
+ public List<BugzillaOpenStructure> getBugIdsOfSelected() {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();// TableItem[]
+ // sel
+ // =
+ // table.getSelection();
+ List<?> sel = selection.toList();
+ List<BugzillaOpenStructure> Ids = new ArrayList<BugzillaOpenStructure>();
+
+ Iterator<?> itr = sel.iterator();
+ while (itr.hasNext()) {
+ Object o = itr.next();
+ if (o instanceof Favorite) {
+ Favorite entry = (Favorite) o;
+ Integer id = (Integer) entry.getAttributes().get(IBugzillaConstants.HIT_MARKER_ATTR_ID);
+ Ids.add(new BugzillaOpenStructure(entry.getServer(), id, -1));
+ }
+ }
+
+ return Ids;
+ }
+
+ /**
+ * Calls remove function in FavoritesFile
+ */
+ @SuppressWarnings("unchecked")
+ public void deleteSelectedFavorites() {
+ List<Favorite> selection = ((IStructuredSelection) viewer.getSelection()).toList();
+ BugzillaPlugin.getDefault().getFavorites().remove(selection);
+ viewer.setInput(viewer.getInput());
+ }
+
+ /**
+ * Removes all of the favorites in the FavoritesFile.
+ */
+ public void deleteAllFavorites() {
+ BugzillaPlugin.getDefault().getFavorites().removeAll();
+ viewer.setInput(viewer.getInput());
+ }
+
+ /**
+ * Refreshes the view.
+ */
+ public static void add() {
+ if (viewer != null)
+ viewer.setInput(viewer.getInput());
+ }
+
+ /**
+ * @see SelectionListener#widgetSelected(SelectionEvent)
+ */
+ @SuppressWarnings("unchecked")
+ public void widgetSelected(SelectionChangedEvent e) {
+
+ IStructuredSelection selection = (IStructuredSelection) e.getSelection();
+
+ boolean enable = selection.size() > 0;
+ selectAll.setEnabled(enable);
+ remove.setEnabled(enable);
+ open.setEnabled(enable);
+
+ IStructuredSelection viewerSelection = (IStructuredSelection) viewer.getSelection();// TableItem[]
+ // sel
+ // =
+ // table.getSelection();
+ List<Favorite> sel = viewerSelection.toList();
+ if (sel.size() > 0) {
+ IStatusLineManager manager = this.getViewSite().getActionBars().getStatusLineManager();
+ manager.setMessage(sel.get(0).toString());// table.getItem(selected).getText(0));
+ }
+
+ updateActionEnablement();
+ }
+
+ /**
+ * Attempts to display this view on the workbench.
+ */
+ public static void checkWindow() {
+ if (savedParent == null || savedParent.isDisposed()) {
+ IWorkbenchWindow w = BugzillaPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+ if (w != null) {
+ IWorkbenchPage page = w.getActivePage();
+ if (page != null) {
+ try {
+ page.showView(IBugzillaConstants.PLUGIN_ID + ".ui.favoritesView");
+ } catch (PartInitException pie) {
+ BugzillaPlugin.log(pie.getStatus());
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Action class - "Select All"
+ */
+ public class SelectAllAction extends AbstractFavoritesAction {
+
+ public SelectAllAction() {
+ setToolTipText("Select all favorites");
+ setText("Select all");
+ setImageDescriptor(BugzillaImages.SELECT_ALL);
+ }
+
+ @Override
+ public void run() {
+ checkWindow();
+ table.selectAll();
+ viewer.setSelection(viewer.getSelection(), true);
+ updateActionEnablement();
+ }
+ }
+
+ private class FavoritesViewLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ /**
+ * Returns the label text for the given column of a recommendation in
+ * the table.
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof Favorite) {
+ Favorite f = (Favorite) element;
+ switch (columnIndex) {
+ case 0:
+ return f.toString();
+ case 1:
+ return f.getQuery();
+ case 2:
+ return f.getDate().toString();
+ default:
+ return "Undefined column text";
+ }
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ /*
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
+ * int)
+ */
+ public Image getColumnImage(Object arg0, int arg1) {
+ return null;
+ }
+ }
+
+ public void refresh() {
+ // don't need to do anything to refresh
+ }
+
+ private class FavoritesViewContentProvider implements IStructuredContentProvider {
+
+ private List results;
+
+ /**
+ * The constructor.
+ */
+ public FavoritesViewContentProvider(FavoritesView taskList) {
+ // no setup to do
+ }
+
+ /**
+ * Returns the elements to display in the viewer when its input is set
+ * to the given element. These elements can be presented as rows in a
+ * table, items in a list, etc. The result is not modified by the
+ * viewer.
+ *
+ * @param inputElement
+ * the input element
+ * @return the array of elements to display in the viewer
+ */
+ public Object[] getElements(Object inputElement) {
+ if (results != null) {
+ return results.toArray();
+ } else
+ return null;
+ }
+
+ /**
+ * Notifies this content provider that a given viewer's input has been
+ * changed.
+ */
+ public void inputChanged(Viewer viewerChanged, Object oldInput, Object newInput) {
+ this.results = (List) newInput;
+
+ if (viewerChanged.getInput() != null) {
+ viewerChanged.getControl().getDisplay().syncExec(new Runnable() {
+ public void run() {
+ FavoritesView.this.refresh();
+ }
+ });
+ }
+ }
+
+ public void dispose() {
+ if (results != null)
+ results = null;
+ }
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java
new file mode 100644
index 000000000..759847610
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Dialog to show the contents of an html page to the user
+ *
+ * @author Shawn Minto
+ */
+public class WebBrowserDialog extends MessageDialog {
+
+ private String data = null;
+
+ public WebBrowserDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage,
+ int dialogImageType, String[] dialogButtonLabels, int defaultIndex, String data) {
+ super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels,
+ defaultIndex);
+ this.data = data;
+ this.setShellStyle(SWT.SHELL_TRIM | SWT.RESIZE);
+ }
+
+ public static int openAcceptAgreement(Shell parent, String title, String message, String data) {
+ WebBrowserDialog dialog = new WebBrowserDialog(parent, title, null, // accept
+ message, NONE, new String[] { IDialogConstants.OK_LABEL }, 0, data);
+ // ok is the default
+ return dialog.open();
+ }
+
+ @Override
+ public Control createCustomArea(Composite parent) {
+ GridLayout layout = new GridLayout();
+ parent.setLayout(layout);
+ layout.numColumns = 1;
+
+ Browser b = new Browser(parent, SWT.NONE);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 1;
+ gd.verticalSpan = 50;
+ b.setLayoutData(gd);
+ b.setText(data);
+
+ return parent;
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java
new file mode 100644
index 000000000..b2ea906cd
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java
@@ -0,0 +1,1649 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.editor;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.TextViewer;
+import org.eclipse.jface.util.SafeRunnable;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.mylar.bugzilla.core.Attribute;
+import org.eclipse.mylar.bugzilla.core.Comment;
+import org.eclipse.mylar.bugzilla.core.IBugzillaBug;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaTools;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaAttributeListener;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaReportSelection;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.internal.tasklist.ui.editors.MylarTaskEditor;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+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.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.RetargetAction;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.internal.WorkbenchImages;
+import org.eclipse.ui.internal.WorkbenchMessages;
+import org.eclipse.ui.internal.help.WorkbenchHelpSystem;
+import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.themes.IThemeManager;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+
+/**
+ * Abstract base implementation for an editor to view a bugzilla report.
+ *
+ * @author Mik Kersten (some hardening of prototype)
+ * @author Rob Elves (Conversion to Eclipse Forms)
+ */
+public abstract class AbstractBugEditor extends EditorPart {
+
+ public static final String REPOSITORY_TEXT_ID = "org.eclipse.mylar.tasklist.ui.fonts.task.editor.comment";
+
+ public static final String HYPERLINK_TYPE_TASK = "task";
+
+ public static final String HYPERLINK_TYPE_JAVA = "java";
+
+ private static final String LABEL_BUTTON_SUBMIT = "Submit to Repository";
+
+ private static final String LABEL_SECTION_ACTIONS = "Actions";
+
+ private static final String LABEL_SECTION_ATTRIBUTES = "Attributes";
+
+ protected static final String LABEL_SECTION_DESCRIPTION = "Description";
+
+ protected static final String LABEL_SECTION_COMMENTS = "Comments";
+
+ protected static final String LABEL_SECTION_NEW_COMMENT = "New Comment";
+
+ private FormToolkit toolkit;
+
+ private ScrolledForm form;
+
+ protected TaskRepository repository;
+
+ public static final int WRAP_LENGTH = 90;
+
+ protected Display display;
+
+ public static final Font TITLE_FONT = JFaceResources.getBannerFont();
+
+ public static final Font TEXT_FONT = JFaceResources.getDefaultFont();
+
+ public static final Font COMMENT_FONT = JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT);
+
+ public static final Font HEADER_FONT = JFaceResources.getDefaultFont();
+
+ public static final int DESCRIPTION_WIDTH = 79 * 7;
+
+ public static final int DESCRIPTION_HEIGHT = 10 * 14;
+
+ // protected Color background;
+ //
+ // protected Color foreground;
+
+ protected AbstractBugEditorInput bugzillaInput;
+
+ private MylarTaskEditor parentEditor = null;
+
+ protected BugzillaOutlineNode bugzillaOutlineModel = null;
+
+ // private static int MARGIN = 0;// 5
+
+ protected SimpleDateFormat simpleDateFormat = new SimpleDateFormat("E MMM dd, yyyy hh:mm aa");// "yyyy-MM-dd
+
+ // HH:mm"
+
+ /**
+ * Style option for function <code>newLayout</code>. This will create a
+ * plain-styled, selectable text label.
+ */
+ protected final String VALUE = "VALUE";
+
+ /**
+ * Style option for function <code>newLayout</code>. This will create a
+ * bolded, selectable header. It will also have an arrow image before the
+ * text (simply for decoration).
+ */
+ protected final String HEADER = "HEADER";
+
+ /**
+ * Style option for function <code>newLayout</code>. This will create a
+ * bolded, unselectable label.
+ */
+ protected final String PROPERTY = "PROPERTY";
+
+ protected final int HORZ_INDENT = 0;
+
+ protected CCombo oSCombo;
+
+ protected CCombo versionCombo;
+
+ protected CCombo platformCombo;
+
+ protected CCombo priorityCombo;
+
+ protected CCombo severityCombo;
+
+ protected CCombo milestoneCombo;
+
+ protected CCombo componentCombo;
+
+ protected Text urlText;
+
+ protected Text summaryText;
+
+ protected Text assignedTo;
+
+ protected Button submitButton;
+
+ // protected Button saveButton;
+
+ protected int scrollIncrement;
+
+ protected int scrollVertPageIncrement;
+
+ protected int scrollHorzPageIncrement;
+
+ public boolean isDirty = false;
+
+ /** Manager controlling the context menu */
+ protected MenuManager contextMenuManager;
+
+ protected StyledText currentSelectedText;
+
+ protected static final String cutActionDefId = "org.eclipse.ui.edit.cut"; //$NON-NLS-1$
+
+ protected static final String copyActionDefId = "org.eclipse.ui.edit.copy"; //$NON-NLS-1$
+
+ protected static final String pasteActionDefId = "org.eclipse.ui.edit.paste"; //$NON-NLS-1$
+
+ protected RetargetAction cutAction;
+
+ protected BugzillaEditorCopyAction copyAction;
+
+ // private Action revealAllAction;
+
+ protected RetargetAction pasteAction;
+
+ protected Composite editorComposite;
+
+ // protected CLabel titleLabel;
+
+ // protected ScrolledComposite scrolledComposite;
+
+ // protected Composite scrolledComposite;
+
+ // protected Composite infoArea;
+
+ // protected Hyperlink linkToBug;
+
+ // protected StyledText generalTitleText;
+
+ private List<IBugzillaAttributeListener> attributesListeners = new ArrayList<IBugzillaAttributeListener>();
+
+ protected final ISelectionProvider selectionProvider = new ISelectionProvider() {
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.add(listener);
+ }
+
+ public ISelection getSelection() {
+ return null;
+ }
+
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.remove(listener);
+ }
+
+ public void setSelection(ISelection selection) {
+ // No implementation.
+ }
+ };
+
+ protected List<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+ protected HashMap<CCombo, String> comboListenerMap = new HashMap<CCombo, String>();
+
+ private IBugzillaReportSelection lastSelected = null;
+
+ protected final ISelectionListener selectionListener = new ISelectionListener() {
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if ((part instanceof ContentOutline) && (selection instanceof StructuredSelection)) {
+ Object select = ((StructuredSelection) selection).getFirstElement();
+ if (select instanceof BugzillaOutlineNode) {
+ BugzillaOutlineNode n = (BugzillaOutlineNode) select;
+
+ if (n != null && lastSelected != null
+ && BugzillaTools.getHandle(n).equals(BugzillaTools.getHandle(lastSelected))) {
+ // we don't need to set the selection if it is already
+ // set
+ return;
+ }
+ lastSelected = n;
+
+ Object data = n.getData();
+ boolean highlight = true;
+ if (n.getKey().toLowerCase().equals("comments")) {
+ highlight = false;
+ }
+ if (n.getKey().toLowerCase().equals("new comment")) {
+ selectNewComment();
+ } else if (n.getKey().toLowerCase().equals("new description")) {
+ selectNewDescription();
+ } else if (data != null) {
+ select(data, highlight);
+ }
+ }
+ }
+ }
+ };
+
+ private class ComboSelectionListener extends SelectionAdapter {
+
+ private CCombo combo;
+
+ public ComboSelectionListener(CCombo combo) {
+ this.combo = combo;
+ }
+
+ public void widgetDefaultSelected(SelectionEvent event) {
+ // ignore
+ }
+
+ public void widgetSelected(SelectionEvent event) {
+ if (comboListenerMap.containsKey(combo)) {
+ if (combo.getSelectionIndex() > -1) {
+ String sel = combo.getItem(combo.getSelectionIndex());
+ Attribute attribute = getBug().getAttribute(comboListenerMap.get(combo));
+ if (sel != null && !(sel.equals(attribute.getNewValue()))) {
+ attribute.setNewValue(sel);
+ for (IBugzillaAttributeListener client : attributesListeners) {
+ client.attributeChanged(attribute.getName(), sel);
+ }
+ changeDirtyStatus(true);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Creates a new <code>AbstractBugEditor</code>. Sets up the default
+ * fonts and cut/copy/paste actions.
+ */
+ public AbstractBugEditor() {
+ // set the scroll increments so the editor scrolls normally with the
+ // scroll wheel
+ FontData[] fd = TEXT_FONT.getFontData();
+ int cushion = 4;
+ scrollIncrement = fd[0].getHeight() + cushion;
+ scrollVertPageIncrement = 0;
+ scrollHorzPageIncrement = 0;
+
+ // set up actions for the context menu
+ cutAction = new RetargetAction(ActionFactory.CUT.getId(), WorkbenchMessages.Workbench_cut);
+ cutAction.setToolTipText(WorkbenchMessages.Workbench_cutToolTip);// WorkbenchMessages.getString("Workbench.cutToolTip"));
+ // //$NON-NLS-1$
+ cutAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT));
+ cutAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT));
+ cutAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT_DISABLED));
+ cutAction.setAccelerator(SWT.CTRL | 'x');
+ cutAction.setActionDefinitionId(cutActionDefId);
+
+ pasteAction = new RetargetAction(ActionFactory.PASTE.getId(), WorkbenchMessages.Workbench_paste);
+ pasteAction.setToolTipText(WorkbenchMessages.Workbench_pasteToolTip);// WorkbenchMessages.getString("Workbench.pasteToolTip"));
+ // //$NON-NLS-1$
+ pasteAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
+ pasteAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE));
+ pasteAction.setDisabledImageDescriptor(WorkbenchImages
+ .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED));
+ pasteAction.setAccelerator(SWT.CTRL | 'v');
+ pasteAction.setActionDefinitionId(pasteActionDefId);
+
+ copyAction = new BugzillaEditorCopyAction(this);
+ copyAction.setText(WorkbenchMessages.Workbench_copy);// WorkbenchMessages.getString("Workbench.copy"));
+ copyAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
+ copyAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
+ copyAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED));
+ copyAction.setAccelerator(SWT.CTRL | 'c');
+
+ copyAction.setEnabled(false);
+
+ //
+ // revealAllAction = new ExpandCommentsAction(this);
+ // revealAllAction.setText("Reveal Comments");//
+ // WorkbenchMessages.getString("Workbench.copy"));
+ // revealAllAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
+ // revealAllAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
+ // revealAllAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED));
+ // revealAllAction.setAccelerator(SWT.CTRL | 'r');
+ //
+ // revealAllAction.setEnabled(true);
+
+ }
+
+ /**
+ * @return The bug this editor is displaying.
+ */
+ public abstract IBugzillaBug getBug();
+
+ /**
+ * @return Any currently selected text.
+ */
+ protected StyledText getCurrentText() {
+ return currentSelectedText;
+ }
+
+ /**
+ * @return The action used to copy selected text from a bug editor to the
+ * clipboard.
+ */
+ protected BugzillaEditorCopyAction getCopyAction() {
+ return copyAction;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+
+ if (getBug() == null) {
+ // close();
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Bugzilla Client Errror",
+ "Could not resolve the requested bug, check Bugzilla server and version.");
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout());
+ Label noBugLabel = new Label(composite, SWT.NULL);
+ noBugLabel.setText("Could not resolve bug");
+ return;
+ }
+
+ toolkit = new FormToolkit(parent.getDisplay());
+ form = toolkit.createScrolledForm(parent);
+ String truncatedSummary = getBug().getSummary();
+ int maxLength = 50;
+ if (truncatedSummary.length() > maxLength) {
+ truncatedSummary = truncatedSummary.substring(0, maxLength) + "...";
+ }
+ form.setText("Bugzilla Bug: " + truncatedSummary);
+
+ editorComposite = form.getBody();
+ editorComposite.setLayout(new GridLayout());
+ editorComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ // Header information
+ Composite headerInfoComposite = toolkit.createComposite(editorComposite);
+ headerInfoComposite.setLayout(new GridLayout(6, false));
+ toolkit.createLabel(headerInfoComposite, "Bug# ").setFont(TITLE_FONT);
+ toolkit.createText(headerInfoComposite, "" + getBug().getId());
+
+ toolkit.createLabel(headerInfoComposite, " Opened: ").setFont(TITLE_FONT);
+ String openedDateString = "";
+ if (getBug().getCreated() != null) {
+ openedDateString = simpleDateFormat.format(getBug().getCreated());
+ }
+ toolkit.createText(headerInfoComposite, openedDateString);
+
+ toolkit.createLabel(headerInfoComposite, " Modified: ").setFont(TITLE_FONT);
+ String lastModifiedDateString = "";
+ if (getBug().getLastModified() != null) {
+ lastModifiedDateString = simpleDateFormat.format(getBug().getLastModified());
+ }
+ toolkit.createText(headerInfoComposite, lastModifiedDateString);
+
+ // openedText.setFont(TITLE_FONT);
+ // display = parent.getDisplay();
+ // background = JFaceColors.getBannerBackground(display);
+ // foreground = JFaceColors.getBannerForeground(display);
+
+ // createInfoArea(editorComposite);
+ createContextMenu();
+ createAttributeLayout();
+ createDescriptionLayout(toolkit, form);
+ createCommentLayout(toolkit, form);
+ createButtonLayouts(toolkit, form.getBody());
+
+ WorkbenchHelpSystem.getInstance().setHelp(parent, IBugzillaConstants.EDITOR_PAGE_CONTEXT);
+
+ editorComposite.setMenu(contextMenuManager.createContextMenu(editorComposite));
+ form.reflow(true);
+ getSite().getPage().addSelectionListener(selectionListener);
+ getSite().setSelectionProvider(selectionProvider);
+ }
+
+ /**
+ * Create a context menu for this editor.
+ */
+ protected void createContextMenu() {
+ contextMenuManager = new MenuManager("#BugEditor");
+ contextMenuManager.setRemoveAllWhenShown(true);
+ contextMenuManager.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ manager.add(cutAction);
+ manager.add(copyAction);
+ manager.add(pasteAction);
+ // manager.add(revealAllAction);
+ manager.add(new Separator());
+ manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+ if (currentSelectedText == null || currentSelectedText.getSelectionText().length() == 0) {
+
+ copyAction.setEnabled(false);
+ } else {
+ copyAction.setEnabled(true);
+ }
+ }
+ });
+ getSite().registerContextMenu("#BugEditor", contextMenuManager, getSite().getSelectionProvider());
+ }
+
+ /**
+ * Creates the attribute layout, which contains most of the basic attributes
+ * of the bug (some of which are editable).
+ */
+ protected void createAttributeLayout() {
+
+ String title = getTitleString();
+ String keywords = "";
+ String url = "";
+
+ Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE);
+ section.setText(LABEL_SECTION_ATTRIBUTES);
+ section.setExpanded(true);
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ section.addExpansionListener(new IExpansionListener() {
+ public void expansionStateChanging(ExpansionEvent e) {
+ form.reflow(true);
+ }
+
+ public void expansionStateChanged(ExpansionEvent e) {
+ form.reflow(true);
+ }
+ });
+
+ // Attributes Composite- this holds all the combo fiels and text fields
+ Composite attributesComposite = toolkit.createComposite(section);
+ GridLayout attributesLayout = new GridLayout();
+ attributesLayout.numColumns = 4;
+ attributesLayout.horizontalSpacing = 14;
+ attributesLayout.verticalSpacing = 6;
+ attributesComposite.setLayout(attributesLayout);
+ GridData attributesData = new GridData(GridData.FILL_BOTH);
+ attributesData.horizontalSpan = 1;
+ attributesData.grabExcessVerticalSpace = false;
+ attributesComposite.setLayoutData(attributesData);
+ // attributesComposite.setBackground(background);
+ // End Attributes Composite
+
+ section.setClient(attributesComposite);
+
+ // Attributes Title Area
+ // Composite attributesTitleComposite = new
+ // Composite(attributesComposite, SWT.NONE);
+ // GridLayout attributesTitleLayout = new GridLayout();
+ // attributesTitleLayout.horizontalSpacing = 0;
+ // attributesTitleLayout.marginWidth = 0;
+ // attributesTitleComposite.setLayout(attributesTitleLayout);
+ // attributesTitleComposite.setBackground(background);
+ // GridData attributesTitleData = new
+ // GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ // attributesTitleData.horizontalSpan = 4;
+ // attributesTitleData.grabExcessVerticalSpace = false;
+ // attributesTitleComposite.setLayoutData(attributesTitleData);
+ // End Attributes Title
+
+ // Set the Attributes Title
+ // newAttributesLayout(attributesTitleComposite);
+ // titleLabel.setText(title);
+ bugzillaInput.setToolTipText(title);
+ int currentCol = 1;
+
+ String ccValue = null;
+
+ // Populate Attributes
+ for (Iterator<Attribute> it = getBug().getAttributes().iterator(); it.hasNext();) {
+ Attribute attribute = it.next();
+ String key = attribute.getParameterName();
+ String name = attribute.getName();
+ String value = checkText(attribute.getValue());
+ Map<String, String> values = attribute.getOptionValues();
+
+ // make sure we don't try to display a hidden field
+ if (attribute.isHidden() || (key != null && key.equals("status_whiteboard")))
+ continue;
+
+ if (values == null)
+ values = new HashMap<String, String>();
+
+ if (key == null)
+ key = "";
+
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ data.horizontalSpan = 1;
+ data.horizontalIndent = HORZ_INDENT;
+
+ if (key.equals("short_desc") || key.equals("keywords")) {
+ keywords = value;
+ } else if (key.equals("newcc")) {
+ ccValue = value;
+ if (value == null)
+ ccValue = "";
+ } else if (key.equals("bug_file_loc")) {
+ url = value;
+ } else if (key.equals("op_sys")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ // oSCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND |
+ // SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY);//SWT.NONE
+ oSCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.READ_ONLY);
+ // oSCombo = new Combo(attributesComposite, SWT.FLAT |
+ // SWT.READ_ONLY);
+ toolkit.adapt(oSCombo, true, true);
+ oSCombo.setFont(TEXT_FONT);
+ oSCombo.setLayoutData(data);
+ // oSCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ oSCombo.add(a[i]);
+ }
+ if (oSCombo.indexOf(value) != -1) {
+ oSCombo.select(oSCombo.indexOf(value));
+ } else {
+ oSCombo.select(oSCombo.indexOf("All"));
+ }
+ // oSCombo.addListener(SWT.Modify, this);
+ oSCombo.addSelectionListener(new ComboSelectionListener(oSCombo));
+ comboListenerMap.put(oSCombo, name);
+ oSCombo.addListener(SWT.FocusIn, new GenericListener());
+ currentCol += 2;
+ } else if (key.equals("version")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ versionCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+ toolkit.adapt(versionCombo, true, true);
+ versionCombo.setFont(TEXT_FONT);
+ versionCombo.setLayoutData(data);
+ // versionCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ versionCombo.add(a[i]);
+ }
+ versionCombo.select(versionCombo.indexOf(value));
+ // versionCombo.addListener(SWT.Modify, this);
+ versionCombo.addSelectionListener(new ComboSelectionListener(versionCombo));
+ versionCombo.addListener(SWT.FocusIn, new GenericListener());
+ comboListenerMap.put(versionCombo, name);
+ currentCol += 2;
+ } else if (key.equals("priority")) {
+ // newLayout(attributesComposite, 1, "Priority", PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ priorityCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.V_SCROLL | SWT.READ_ONLY);
+ toolkit.adapt(priorityCombo, true, true);
+ priorityCombo.setFont(TEXT_FONT);
+ priorityCombo.setLayoutData(data);
+ // priorityCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ priorityCombo.add(a[i]);
+ }
+ priorityCombo.select(priorityCombo.indexOf(value));
+ // priorityCombo.addListener(SWT.Modify, this);
+ priorityCombo.addSelectionListener(new ComboSelectionListener(priorityCombo));
+ priorityCombo.addListener(SWT.FocusIn, new GenericListener());
+ comboListenerMap.put(priorityCombo, name);
+ currentCol += 2;
+ } else if (key.equals("bug_severity")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ severityCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.READ_ONLY);
+ toolkit.adapt(severityCombo, true, true);
+ severityCombo.setFont(TEXT_FONT);
+ severityCombo.setLayoutData(data);
+ // severityCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ severityCombo.add(a[i]);
+ }
+ severityCombo.select(severityCombo.indexOf(value));
+ severityCombo.addSelectionListener(new ComboSelectionListener(severityCombo));
+ // severityCombo.addListener(SWT.Modify, this);
+ severityCombo.addListener(SWT.FocusIn, new GenericListener());
+ comboListenerMap.put(severityCombo, name);
+ currentCol += 2;
+ } else if (key.equals("target_milestone")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ milestoneCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI
+ | SWT.V_SCROLL | SWT.READ_ONLY);
+ toolkit.adapt(milestoneCombo, true, true);
+ milestoneCombo.setFont(TEXT_FONT);
+ milestoneCombo.setLayoutData(data);
+ // milestoneCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ milestoneCombo.add(a[i]);
+ }
+ milestoneCombo.select(milestoneCombo.indexOf(value));
+ // milestoneCombo.addListener(SWT.Modify, this);
+ milestoneCombo.addSelectionListener(new ComboSelectionListener(milestoneCombo));
+ milestoneCombo.addListener(SWT.FocusIn, new GenericListener());
+ comboListenerMap.put(milestoneCombo, name);
+ currentCol += 2;
+ } else if (key.equals("rep_platform")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ platformCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+ toolkit.adapt(platformCombo, true, true);
+ platformCombo.setFont(TEXT_FONT);
+ platformCombo.setLayoutData(data);
+ // platformCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ platformCombo.add(a[i]);
+ }
+ platformCombo.select(platformCombo.indexOf(value));
+ // platformCombo.addListener(SWT.Modify, this);
+ platformCombo.addSelectionListener(new ComboSelectionListener(platformCombo));
+ platformCombo.addListener(SWT.FocusIn, new GenericListener());
+ comboListenerMap.put(platformCombo, name);
+ currentCol += 2;
+ } else if (key.equals("product")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ // toolkit.createLabel(attributesComposite, value);
+ Composite uneditableComp = toolkit.createComposite(attributesComposite);
+ GridLayout textLayout = new GridLayout();
+ textLayout.marginWidth = 1;
+ uneditableComp.setLayout(textLayout);
+ toolkit.createText(uneditableComp, value, SWT.READ_ONLY);// Label(attributesComposite,
+ // value);
+ // newLayout(attributesComposite, 1, value,
+ // VALUE).addListener(SWT.FocusIn, new GenericListener());
+ currentCol += 2;
+ } else if (key.equals("assigned_to")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ assignedTo = new Text(attributesComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP);
+ assignedTo.setFont(TEXT_FONT);
+ assignedTo.setText(value);
+ data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ data.horizontalSpan = 1;
+ assignedTo.setLayoutData(data);
+
+ assignedTo.addListener(SWT.KeyUp, new Listener() {
+ public void handleEvent(Event event) {
+ String sel = assignedTo.getText();
+ Attribute a = getBug().getAttribute("Assign To");
+ if (!(a.getNewValue().equals(sel))) {
+ a.setNewValue(sel);
+ changeDirtyStatus(true);
+ }
+ }
+ });
+ assignedTo.addListener(SWT.FocusIn, new GenericListener());
+
+ currentCol += 2;
+ } else if (key.equals("component")) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ componentCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI
+ | SWT.V_SCROLL | SWT.READ_ONLY);
+ toolkit.adapt(componentCombo, true, true);
+ componentCombo.setFont(TEXT_FONT);
+ componentCombo.setLayoutData(data);
+ // componentCombo.setBackground(background);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ Arrays.sort(a);
+ for (int i = 0; i < a.length; i++) {
+ componentCombo.add(a[i]);
+ }
+ componentCombo.select(componentCombo.indexOf(value));
+ // componentCombo.addListener(SWT.Modify, this);
+ componentCombo.addSelectionListener(new ComboSelectionListener(componentCombo));
+ componentCombo.addListener(SWT.FocusIn, new GenericListener());
+ comboListenerMap.put(componentCombo, name);
+ currentCol += 2;
+ } else if (name.equals("Summary")) {
+ // Don't show the summary here.
+ continue;
+ } else if (name.equals("Last Modified")) {
+ // Don't show last modified here.
+ continue;
+ } else if (name.equals("Bug#")) {
+ // Don't show bug number here
+ continue;
+ } else if (values.isEmpty()) {
+ // newLayout(attributesComposite, 1, name, PROPERTY);
+ toolkit.createLabel(attributesComposite, name);
+ Composite uneditableComp = toolkit.createComposite(attributesComposite);
+ GridLayout textLayout = new GridLayout();
+ textLayout.marginWidth = 1;
+ uneditableComp.setLayout(textLayout);
+ toolkit.createText(uneditableComp, value, SWT.READ_ONLY);// Label(attributesComposite,
+ // value);
+ // newLayout(attributesComposite, 1, value,
+ // VALUE).addListener(SWT.FocusIn, new GenericListener());
+ currentCol += 2;
+ }
+ if (currentCol > attributesLayout.numColumns) {
+ currentCol -= attributesLayout.numColumns;
+ }
+ }
+ // End Populate Attributes
+
+ // make sure that we are in the first column
+ if (currentCol > 1) {
+ while (currentCol <= attributesLayout.numColumns) {
+ newLayout(attributesComposite, 1, "", PROPERTY);
+ currentCol++;
+ }
+ }
+
+ // URL, Keywords, Summary Text Fields
+ addUrlText(url, attributesComposite);
+
+ // keywords text field (not editable)
+ addKeywordsList(toolkit, keywords, attributesComposite);
+ if (ccValue != null) {
+ addCCList(toolkit, ccValue, attributesComposite);
+ }
+ addSummaryText(attributesComposite);
+ // End URL, Keywords, Summary Text Fields
+ toolkit.paintBordersFor(attributesComposite);
+ }
+
+ /**
+ * Adds a text field to display and edit the bug's URL attribute.
+ *
+ * @param url
+ * The URL attribute of the bug.
+ * @param attributesComposite
+ * The composite to add the text field to.
+ */
+ protected void addUrlText(String url, Composite attributesComposite) {
+ // newLayout(attributesComposite, 1, "URL:", PROPERTY);
+ toolkit.createLabel(attributesComposite, "URL:");
+ urlText = toolkit.createText(attributesComposite, url);
+ urlText.setFont(TEXT_FONT);
+ GridData urlTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ urlTextData.horizontalSpan = 3;
+ urlTextData.widthHint = 200;
+ urlText.setLayoutData(urlTextData);
+ // urlText.setText(url);
+ urlText.addListener(SWT.KeyUp, new Listener() {
+ public void handleEvent(Event event) {
+ String sel = urlText.getText();
+ Attribute a = getBug().getAttribute("URL");
+ if (!(a.getNewValue().equals(sel))) {
+ a.setNewValue(sel);
+ changeDirtyStatus(true);
+ }
+ }
+ });
+ urlText.addListener(SWT.FocusIn, new GenericListener());
+ }
+
+ protected abstract void addKeywordsList(FormToolkit toolkit, String keywords, Composite attributesComposite);
+
+ protected abstract void addCCList(FormToolkit toolkit, String value, Composite attributesComposite);
+
+ /**
+ * Adds a text field to display and edit the bug's summary.
+ *
+ * @param attributesComposite
+ * The composite to add the text field to.
+ */
+ protected void addSummaryText(Composite attributesComposite) {
+ // newLayout(attributesComposite, 1, "Summary:", PROPERTY);
+ toolkit.createLabel(attributesComposite, "Summary:");
+ summaryText = toolkit.createText(attributesComposite, getBug().getSummary());// SWT.BORDER
+ // |
+ // SWT.SINGLE
+ // |
+ // SWT.WRAP
+ summaryText.setFont(TEXT_FONT);
+ GridData summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ summaryTextData.horizontalSpan = 3;
+ summaryTextData.widthHint = 200;
+ summaryText.setLayoutData(summaryTextData);
+ // summaryText.setText(getBug().getSummary());
+ summaryText.addListener(SWT.KeyUp, new SummaryListener());
+ summaryText.addListener(SWT.FocusIn, new GenericListener());
+ }
+
+ /**
+ * Creates the description layout, which displays and possibly edits the
+ * bug's description.
+ */
+ protected abstract void createDescriptionLayout(FormToolkit toolkit, final ScrolledForm form);
+
+ /**
+ * Creates the comment layout, which displays the bug's comments and
+ * possibly lets the user enter a new one.
+ */
+ protected abstract void createCommentLayout(FormToolkit toolkit, final ScrolledForm form);
+
+ /**
+ * Creates the button layout. This displays options and buttons at the
+ * bottom of the editor to allow actions to be performed on the bug.
+ */
+ protected void createButtonLayouts(FormToolkit toolkit, Composite formComposite) {
+
+ Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE);
+ section.setText(LABEL_SECTION_ACTIONS);
+ section.setExpanded(true);
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ section.addExpansionListener(new IExpansionListener() {
+ public void expansionStateChanging(ExpansionEvent e) {
+ form.reflow(true);
+ }
+
+ public void expansionStateChanged(ExpansionEvent e) {
+ form.reflow(true);
+ }
+ });
+
+ Composite buttonComposite = toolkit.createComposite(section);
+ GridLayout buttonLayout = new GridLayout();
+ buttonLayout.numColumns = 4;
+ buttonComposite.setLayout(buttonLayout);
+ // buttonComposite.setBackground(background);
+ GridData buttonData = new GridData(GridData.FILL_BOTH);
+ buttonData.horizontalSpan = 1;
+ buttonData.grabExcessVerticalSpace = false;
+ buttonComposite.setLayoutData(buttonData);
+ section.setClient(buttonComposite);
+ addRadioButtons(buttonComposite);
+ addActionButtons(buttonComposite);
+ }
+
+ /**
+ * Adds radio buttons to this composite.
+ *
+ * @param buttonComposite
+ * Composite to add the radio buttons to.
+ */
+ abstract protected void addRadioButtons(Composite buttonComposite);
+
+ /**
+ * Adds buttons to this composite. Subclasses can override this method to
+ * provide different/additional buttons.
+ *
+ * @param buttonComposite
+ * Composite to add the buttons to.
+ */
+ protected void addActionButtons(Composite buttonComposite) {
+ submitButton = toolkit.createButton(buttonComposite, LABEL_BUTTON_SUBMIT, SWT.NONE);
+ // submitButton.setFont(TEXT_FONT);
+ GridData submitButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ // submitButtonData.widthHint = AbstractBugEditor.WRAP_LENGTH;
+ // submitButtonData.heightHint = 20;
+
+ submitButton.setLayoutData(submitButtonData);
+ submitButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ submitBug();
+ }
+ });
+ submitButton.addListener(SWT.FocusIn, new GenericListener());
+
+ // This is not needed anymore since we have the save working properly
+ // with ctrl-s and file->save
+ // saveButton = new Button(buttonComposite, SWT.NONE);
+ // saveButton.setFont(TEXT_FONT);
+ // GridData saveButtonData = new
+ // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ // saveButtonData.widthHint = 100;
+ // saveButtonData.heightHint = 20;
+ // saveButton.setText("Save Offline");
+ // saveButton.setLayoutData(saveButtonData);
+ // saveButton.addListener(SWT.Selection, new Listener() {
+ // public void handleEvent(Event e) {
+ // saveBug();
+ // updateEditor();
+ // }
+ // });
+ // saveButton.addListener(SWT.FocusIn, new GenericListener());
+ }
+
+ /**
+ * Make sure that a String that is <code>null</code> is changed to a null
+ * string
+ *
+ * @param text
+ * The text to check if it is null or not
+ * @return If the text is <code>null</code>, then return the null string (<code>""</code>).
+ * Otherwise, return the text.
+ */
+ public static String checkText(String text) {
+ if (text == null)
+ return "";
+ else
+ return text;
+ }
+
+ /**
+ * @return A string to use as a title for this editor.
+ */
+ protected abstract String getTitleString();
+
+ /**
+ * Creates an uneditable text field for displaying data.
+ */
+ protected StyledText newLayout(Composite composite, int colSpan, String text, String style) {
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ data.horizontalSpan = colSpan;
+
+ StyledText resultText;
+ if (style.equalsIgnoreCase(VALUE)) {
+ resultText = new StyledText(composite, SWT.READ_ONLY);
+ resultText.setText(checkText(text));
+ resultText.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ StyledText c = (StyledText) e.widget;
+ if (c != null && !c.getSelectionText().equals("")) {
+ if (currentSelectedText != null && !currentSelectedText.equals(c)) {
+ currentSelectedText.setSelectionRange(0, 0);
+ }
+ currentSelectedText = c;
+ }
+
+ }
+ });
+ resultText.setLayoutData(data);
+ } else if (style.equalsIgnoreCase(PROPERTY)) {
+ resultText = new StyledText(composite, SWT.READ_ONLY);
+ resultText.setText(checkText(text));
+ resultText.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ StyledText c = (StyledText) e.widget;
+ if (c != null && !c.getSelectionText().equals("")) {
+ if (currentSelectedText != null && !currentSelectedText.equals(c)) {
+ currentSelectedText.setSelectionRange(0, 0);
+ }
+ currentSelectedText = c;
+ }
+
+ }
+ });
+ resultText.setLayoutData(data);
+ } else {
+ resultText = new StyledText(composite, SWT.READ_ONLY);
+ resultText.setText(checkText(text));
+ resultText.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ StyledText c = (StyledText) e.widget;
+ if (c != null && !c.getSelectionText().equals("")) {
+ if (currentSelectedText != null && !currentSelectedText.equals(c)) {
+ currentSelectedText.setSelectionRange(0, 0);
+ }
+ currentSelectedText = c;
+ }
+
+ }
+ });
+ resultText.setLayoutData(data);
+ }
+
+ // composite.setMenu(contextMenuManager.createContextMenu(composite));
+ return resultText;
+ }
+
+ protected TextViewer addRepositoryText(TaskRepository repository, Composite composite, String text) {
+ RepositoryTextViewer commentViewer = new RepositoryTextViewer(repository, composite, SWT.NONE);
+
+ IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
+
+ commentViewer.getTextWidget().setFont(themeManager.getCurrentTheme().getFontRegistry().get(REPOSITORY_TEXT_ID));
+
+ commentViewer.setEditable(false);
+
+ commentViewer.getTextWidget().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ StyledText c = (StyledText) e.widget;
+ if (c != null && !c.getSelectionText().equals("")) {
+ if (currentSelectedText != null && !currentSelectedText.equals(c)) {
+ currentSelectedText.setSelectionRange(0, 0);
+ }
+ currentSelectedText = c;
+ }
+
+ }
+ });
+
+ commentViewer.getTextWidget().setMenu(contextMenuManager.createContextMenu(commentViewer.getTextWidget()));
+
+ // textViewer.getControl().setFont(COMMENT_FONT);
+ commentViewer.setDocument(new Document(text));
+ // commentViewer.activatePlugins();
+ // textViewer.refresh();
+ return commentViewer;
+ }
+
+ /**
+ * This refreshes the text in the title label of the info area (it contains
+ * elements which can change).
+ */
+ protected void setGeneralTitleText() {
+ // String text = "[Open in Internal Browser]";
+ // linkToBug.setText(text);
+ // linkToBug.setFont(TEXT_FONT);
+ // if (this instanceof ExistingBugEditor) {
+ // linkToBug.setUnderlined(true);
+ // linkToBug.setForeground(JFaceColors.getHyperlinkText(Display.getCurrent()));
+ // linkToBug.addMouseListener(new MouseListener() {
+ //
+ // public void mouseDoubleClick(MouseEvent e) {
+ // }
+ //
+ // public void mouseUp(MouseEvent e) {
+ // }
+ //
+ // public void mouseDown(MouseEvent e) {
+ // TaskListUiUtil.openUrl(getTitle(), getTitleToolTip(),
+ // BugzillaRepositoryUtil.getBugUrlWithoutLogin(
+ // bugzillaInput.getBug().getRepositoryUrl(),
+ // bugzillaInput.getBug().getId()));
+ // if (e.stateMask == SWT.MOD3) {
+ // // XXX come back to look at this ui
+ // close();
+ // }
+ //
+ // }
+ // });
+ // } else {
+ // linkToBug.setEnabled(false);
+ // }
+ // linkToBug.addListener(SWT.FocusIn, new GenericListener());
+ //
+ // // Resize the composite, in case the new summary is longer than the
+ // // previous one.
+ // // Then redraw it to show the changes.
+ // linkToBug.getParent().pack(true);
+ // linkToBug.redraw();
+
+ // String text = getTitleString();
+ // generalTitleText.setText(text);
+ // StyleRange sr = new StyleRange(generalTitleText.getOffsetAtLine(0),
+ // text.length(), foreground, background,
+ // SWT.BOLD);
+ // generalTitleText.setStyleRange(sr);
+ // generalTitleText.addListener(SWT.FocusIn, new GenericListener());
+ //
+ // // Resize the composite, in case the new summary is longer than the
+ // // previous one.
+ // // Then redraw it to show the changes.
+ // generalTitleText.getParent().pack(true);
+ // generalTitleText.redraw();
+ }
+
+ /**
+ * Creates some blank space underneath the supplied composite.
+ *
+ * @param parent
+ * The composite to add the blank space to.
+ */
+ protected void createSeparatorSpace(Composite parent) {
+ GridData separatorData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ separatorData.verticalSpan = 1;
+ separatorData.grabExcessVerticalSpace = false;
+
+ Composite separatorComposite = new Composite(parent, SWT.NONE);
+ GridLayout separatorLayout = new GridLayout();
+ separatorLayout.marginHeight = 0;
+ separatorLayout.verticalSpacing = 0;
+ separatorComposite.setLayout(separatorLayout);
+ // separatorComposite.setBackground(background);
+ separatorComposite.setLayoutData(separatorData);
+ newLayout(separatorComposite, 1, "", VALUE);
+ }
+
+ /**
+ * Submit the changes to the bug to the bugzilla server. (Public for testing
+ * purposes)
+ */
+ protected abstract void submitBug();
+
+ /**
+ * If there is no locally saved copy of the current bug, then it saved
+ * offline. Otherwise, any changes are updated in the file.
+ */
+ public void saveBug() {
+ try {
+ updateBug();
+ IBugzillaBug bug = getBug();
+
+ final BugzillaRepositoryConnector bugzillaRepositoryClient = (BugzillaRepositoryConnector) MylarTaskListPlugin
+ .getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+ changeDirtyStatus(false);
+ bugzillaRepositoryClient.saveBugReport(bug);
+ } catch (Exception e) {
+ MylarStatusHandler.fail(e, "bug save offline failed", true);
+ }
+
+ }
+
+ /**
+ * Updates the <code>IBugzillaBug</code> object to contain the latest data
+ * entered in the data fields.
+ */
+ protected abstract void updateBug();
+
+ /**
+ * Resets the data fields to contain the data currently in the
+ * <code>IBugzillaBug</code> object.
+ */
+ protected abstract void restoreBug();
+
+ /**
+ * Refreshes any text labels in the editor that contain information that
+ * might change.
+ */
+ protected void updateEditor() {
+ // Reset all summary occurrences, since it might have
+ // been edited.
+ // String title = getTitleString();
+ // titleLabel.setText(title);
+ setGeneralTitleText();
+ }
+
+ @Override
+ public void setFocus() {
+ form.setFocus();
+ }
+
+ @Override
+ public boolean isDirty() {
+ return isDirty;
+ }
+
+ /**
+ * Updates the dirty status of this editor page. The dirty status is true if
+ * the bug report has been modified but not saved. The title of the editor
+ * is also updated to reflect the status.
+ *
+ * @param newDirtyStatus
+ * is true when the bug report has been modified but not saved
+ */
+ public void changeDirtyStatus(boolean newDirtyStatus) {
+ isDirty = newDirtyStatus;
+ if (parentEditor == null) {
+ firePropertyChange(PROP_DIRTY);
+ } else {
+ parentEditor.markDirty();
+ }
+
+ }
+
+ /**
+ * Updates the title of the editor to reflect dirty status. If the bug
+ * report has been modified but not saved, then an indicator will appear in
+ * the title.
+ */
+ protected void updateEditorTitle() {
+ setPartName(bugzillaInput.getName());
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ saveBug();
+ updateEditor();
+
+ // XXX notify that saved ofline?
+ }
+
+ @Override
+ public void doSaveAs() {
+ // we don't save, so no need to implement
+ }
+
+ /**
+ * @return The composite for the whole editor.
+ */
+ public Composite getEditorComposite() {
+ return editorComposite;
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ isDisposed = true;
+ getSite().getPage().removeSelectionListener(selectionListener);
+ }
+
+ // public void handleEvent(Event event) {
+ // if (event.widget instanceof CCombo) {
+ // CCombo combo = (CCombo) event.widget;
+ // if (comboListenerMap.containsKey(combo)) {
+ // if (combo.getSelectionIndex() > -1) {
+ // String sel = combo.getItem(combo.getSelectionIndex());
+ // Attribute attribute = getBug().getAttribute(comboListenerMap.get(combo));
+ // if (sel != null && !(sel.equals(attribute.getNewValue()))) {
+ // attribute.setNewValue(sel);
+ // for (IBugzillaAttributeListener client : attributesListeners) {
+ // client.attributeChanged(attribute.getName(), sel);
+ // }
+ // changeDirtyStatus(true);
+ // }
+ // }
+ // }
+ // }
+ // }
+
+ /**
+ * Fires a <code>SelectionChangedEvent</code> to all listeners registered
+ * under <code>selectionChangedListeners</code>.
+ *
+ * @param event
+ * The selection event.
+ */
+ protected void fireSelectionChanged(final SelectionChangedEvent event) {
+ Object[] listeners = selectionChangedListeners.toArray();
+ for (int i = 0; i < listeners.length; i++) {
+ final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
+ SafeRunnable.run(new SafeRunnable() {
+ public void run() {
+ l.selectionChanged(event);
+ }
+ });
+ }
+ }
+
+ /**
+ * A generic listener for selection of unimportant items. The default
+ * selection item sent out is the entire bug object.
+ */
+ protected class GenericListener implements Listener {
+ public void handleEvent(Event event) {
+ IBugzillaBug bug = getBug();
+ fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
+ new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), bug.getLabel(), false, bug
+ .getSummary()))));
+ }
+ }
+
+ /**
+ * A listener to check if the summary field was modified.
+ */
+ protected class SummaryListener implements Listener {
+ public void handleEvent(Event event) {
+ handleSummaryEvent();
+ }
+ }
+
+ /**
+ * Check if the summary field was modified, and update it if necessary.
+ */
+ public abstract void handleSummaryEvent();
+
+ /*----------------------------------------------------------*
+ * CODE TO SCROLL TO A COMMENT OR OTHER PIECE OF TEXT
+ *----------------------------------------------------------*/
+
+ /** List of the StyledText's so that we can get the previous and the next */
+ protected ArrayList<StyledText> texts = new ArrayList<StyledText>();
+
+ protected HashMap<Object, StyledText> textHash = new HashMap<Object, StyledText>();
+
+ /** Index into the styled texts */
+ protected int textsindex = 0;
+
+ protected Text addCommentsTextBox = null;
+
+ protected Text descriptionTextBox = null;
+
+ // private FormText previousText = null;
+
+ /**
+ * Selects the given object in the editor.
+ *
+ * @param commentNumber
+ * The comment number to be selected
+ */
+ public void select(int commentNumber) {
+ if (commentNumber == -1)
+ return;
+
+ for (Object o : textHash.keySet()) {
+ if (o instanceof Comment) {
+ if (((Comment) o).getNumber() == commentNumber) {
+ select(o, true);
+ }
+ }
+ }
+ }
+
+ public void revealAllComments() {
+ for (StyledText text : textHash.values()) {
+ Composite comp = text.getParent();
+ while (comp != null) {
+ if (comp instanceof ExpandableComposite) {
+ ExpandableComposite ex = (ExpandableComposite) comp;
+ ex.setExpanded(true);
+ }
+ comp = comp.getParent();
+ }
+ }
+ }
+
+ /**
+ * Selects the given object in the editor.
+ *
+ * @param o
+ * The object to be selected.
+ * @param highlight
+ * Whether or not the object should be highlighted.
+ */
+ public void select(Object o, boolean highlight) {
+ if (textHash.containsKey(o)) {
+ StyledText t = textHash.get(o);
+ if (t != null) {
+ Composite comp = t.getParent();
+ while (comp != null) {
+ if (comp instanceof ExpandableComposite) {
+ ExpandableComposite ex = (ExpandableComposite) comp;
+ ex.setExpanded(true);
+ }
+ comp = comp.getParent();
+ }
+ focusOn(t, highlight);
+ }
+ } else if (o instanceof IBugzillaBug) {
+ focusOn(null, highlight);
+ }
+ }
+
+ public void selectDescription() {
+ for (Object o : textHash.keySet()) {
+ if (o.equals(bugzillaInput.getBug().getDescription())) {
+ select(o, true);
+ }
+ }
+ }
+
+ public void selectNewComment() {
+ focusOn(addCommentsTextBox, false);
+ }
+
+ public void selectNewDescription() {
+ focusOn(descriptionTextBox, false);
+ }
+
+ /**
+ * Scroll to a specified piece of text
+ *
+ * @param selectionComposite
+ * The StyledText to scroll to
+ */
+ private void focusOn(Control selectionComposite, boolean highlight) {
+ int pos = 0;
+ // if (previousText != null && !previousText.isDisposed()) {
+ // previousText.setsetSelection(0);
+ // }
+
+ // if (selectionComposite instanceof FormText)
+ // previousText = (FormText) selectionComposite;
+
+ if (selectionComposite != null) {
+
+ // if (highlight && selectionComposite instanceof FormText &&
+ // !selectionComposite.isDisposed())
+ // ((FormText) selectionComposite).set.setSelection(0, ((FormText)
+ // selectionComposite).getText().length());
+
+ // get the position of the text in the composite
+ pos = 0;
+ Control s = selectionComposite;
+ if (s.isDisposed())
+ return;
+ s.setEnabled(true);
+ s.setFocus();
+ s.forceFocus();
+ while (s != null && s != getEditorComposite()) {
+ if (!s.isDisposed()) {
+ pos += s.getLocation().y;
+ s = s.getParent();
+ }
+ }
+
+ pos = pos - 60; // form.getOrigin().y;
+
+ }
+ if (!form.getBody().isDisposed())
+ form.setOrigin(0, pos);
+ }
+
+ private BugzillaOutlinePage outlinePage = null;
+
+ @Override
+ public Object getAdapter(Class adapter) {
+ if (IContentOutlinePage.class.equals(adapter)) {
+ if (outlinePage == null && bugzillaInput != null) {
+ outlinePage = new BugzillaOutlinePage(bugzillaOutlineModel);
+ }
+ return outlinePage;
+ }
+ return super.getAdapter(adapter);
+ }
+
+ public BugzillaOutlineNode getOutlineModel() {
+ return bugzillaOutlineModel;
+ }
+
+ public BugzillaOutlinePage getOutline() {
+ return outlinePage;
+ }
+
+ private boolean isDisposed = false;
+
+ public boolean isDisposed() {
+ return isDisposed;
+ }
+
+ public void close() {
+ Display activeDisplay = getSite().getShell().getDisplay();
+ activeDisplay.asyncExec(new Runnable() {
+ public void run() {
+ if (getSite() != null && getSite().getPage() != null && !AbstractBugEditor.this.isDisposed())
+ if (parentEditor != null) {
+ getSite().getPage().closeEditor(parentEditor, false);
+ } else {
+ getSite().getPage().closeEditor(AbstractBugEditor.this, false);
+ }
+ }
+ });
+ }
+
+ public void addAttributeListener(IBugzillaAttributeListener listener) {
+ attributesListeners.add(listener);
+ }
+
+ public void removeAttributeListener(IBugzillaAttributeListener listener) {
+ attributesListeners.remove(listener);
+ }
+
+ public void setParentEditor(MylarTaskEditor parentEditor) {
+ this.parentEditor = parentEditor;
+ }
+
+ public BugzillaOutlineNode getBugzillaOutlineModel() {
+ return bugzillaOutlineModel;
+ }
+
+ public void setBugzillaOutlineModel(BugzillaOutlineNode bugzillaOutlineModel) {
+ this.bugzillaOutlineModel = bugzillaOutlineModel;
+ }
+
+ // private void addHyperlinks(final StyledText styledText, Composite
+ // composite) {
+ //
+ // StringMatcher javaElementMatcher = new StringMatcher("*(*.java:*)", true,
+ // false);
+ // String[] lines = styledText.getText().split("\r\n|\n");
+ //
+ // int totalLength = 0;
+ // for (int x = 0; x < lines.length; x++) {
+ //
+ // String line = lines[x];
+ // Position position = javaElementMatcher.find(line, 0, line.length());
+ // if (position != null) {
+ // String linkText = line.substring(position.getStart() + 1,
+ // position.getEnd() - 1);
+ // // Link hyperlink = new Link(styledText, SWT.NONE);
+ // IRegion region = new Region(styledText.getText().indexOf(line) +
+ // position.getStart(), position.getEnd()
+ // - position.getStart());
+ // addControl(styledText, region, linkText, line, HYPERLINK_TYPE_JAVA);
+ // }
+ //
+ // IHyperlink[] bugHyperlinks = BugzillaUITools.findBugHyperlinks(0,
+ // line.length(), line, 0);
+ // if (bugHyperlinks != null) {
+ // for (IHyperlink hyperlink : bugHyperlinks) {
+ // String linkText = hyperlink.getHyperlinkText();
+ // int index = linkText.lastIndexOf('=');
+ // if (index >= 0) {
+ // String taskId = linkText.substring(index + 1);
+ // String href = repository.getUrl() + hyperlink.getHyperlinkText();
+ // addControl(styledText, hyperlink.getHyperlinkRegion(), "bug# " + taskId,
+ // href,
+ // HYPERLINK_TYPE_TASK);
+ // }
+ //
+ // }
+ // }
+ //
+ // totalLength = totalLength + line.length();
+ //
+ // } // bottom of for loop
+ //
+ // // reposition widgets on paint event
+ // styledText.addPaintObjectListener(new PaintObjectListener() {
+ // public void paintObject(PaintObjectEvent event) {
+ // StyleRange style = event.style;
+ // int start = style.start;
+ // Map<Integer, Control> controlMap = controls.get(styledText);
+ // Control control = controlMap.get(start);
+ // if (control != null) {
+ // Point pt = control.getSize();
+ // int x = event.x + MARGIN;
+ // int y = event.y + event.ascent - 2 * pt.y / 3;
+ // control.setLocation(x, y);
+ // }
+ // }
+ // });
+ // }
+
+ // private void addControl(final StyledText styledText, IRegion region,
+ // String linkText, String href,
+ // final String listenerType) {
+ // Hyperlink hyperlink = toolkit.createHyperlink(styledText, linkText,
+ // SWT.NONE);
+ // hyperlink.setText(linkText);
+ // hyperlink.setFont(COMMENT_FONT);
+ // hyperlink.setHref(href);
+ // IHyperlinkListener hyperlinkListener =
+ // MylarTaskListPlugin.getDefault().getTaskHyperlinkListeners().get(
+ // listenerType);
+ // if (hyperlinkListener != null) {
+ // hyperlink.addHyperlinkListener(hyperlinkListener);
+ // }
+ // Map<Integer, Control> controlMap = controls.get(styledText);
+ // if (controlMap == null) {
+ // controlMap = new HashMap<Integer, Control>();
+ // controls.put(styledText, controlMap);
+ // }
+ // controlMap.put(new Integer(region.getOffset()), hyperlink);
+ // StyleRange style = new StyleRange();
+ // style.start = region.getOffset();
+ // style.length = region.getLength();
+ // hyperlink.pack();
+ // Rectangle rect = hyperlink.getBounds();
+ // int ascent = 2 * rect.height / 3;
+ // int descent = rect.height - ascent;
+ // style.metrics = new GlyphMetrics(ascent + MARGIN, descent + MARGIN,
+ // rect.width + 2 * MARGIN);
+ // styledText.setStyleRange(style);
+ // }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java
new file mode 100644
index 000000000..f9c6fd33e
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java
@@ -0,0 +1,1083 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.editor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.CompareUI;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.text.TextViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.mylar.bugzilla.core.Attribute;
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.bugzilla.core.Comment;
+import org.eclipse.mylar.bugzilla.core.IBugzillaBug;
+import org.eclipse.mylar.bugzilla.core.Operation;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.compare.BugzillaCompareInput;
+import org.eclipse.mylar.internal.bugzilla.core.internal.HtmlStreamTokenizer;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector;
+import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.StyledText;
+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.events.SelectionListener;
+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.Event;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.events.ExpansionAdapter;
+import org.eclipse.ui.forms.events.ExpansionEvent;
+import org.eclipse.ui.forms.events.IExpansionListener;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * An editor used to view a bug report that exists on a server. It uses a
+ * <code>BugReport</code> object to store the data.
+ *
+ * @author Mik Kersten (hardening of prototype)
+ * @author Rob Elves (adaption to Eclipse Forms)
+ */
+public class ExistingBugEditor extends AbstractBugEditor {
+
+ private static final String REASSIGN_BUG_TO = "Reassign bug to";
+
+ private static final String LABEL_EXPAND_ALL_BUTTON = "Expand All";
+
+ private static final String LABEL_COMPARE_BUTTON = "Compare";
+
+ private static final String ATTR_SUMMARY = "Summary";
+
+ protected Set<String> removeCC = new HashSet<String>();
+
+ protected BugzillaCompareInput compareInput;
+
+ protected Button compareButton;
+
+ protected Button[] radios;
+
+ protected Control[] radioOptions;
+
+ protected List keyWordsList;
+
+ protected Text keywordsText;
+
+ protected List ccList;
+
+ protected Text ccText;
+
+ protected Text addCommentsText;
+
+ protected BugReport bug;
+
+ public String getNewCommentText() {
+ return addCommentsTextBox.getText();
+ }
+
+ /**
+ * Creates a new <code>ExistingBugEditor</code>.
+ */
+ public ExistingBugEditor() {
+ super();
+
+ // Set up the input for comparing the bug report to the server
+ CompareConfiguration config = new CompareConfiguration();
+ config.setLeftEditable(false);
+ config.setRightEditable(false);
+ config.setLeftLabel("Local Bug Report");
+ config.setRightLabel("Remote Bug Report");
+ config.setLeftImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT));
+ config.setRightImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT));
+ compareInput = new BugzillaCompareInput(config);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+ if (!(input instanceof ExistingBugEditorInput))
+ throw new PartInitException("Invalid Input: Must be ExistingBugEditorInput");
+ ExistingBugEditorInput editorInput = (ExistingBugEditorInput) input;
+ repository = editorInput.getRepository();
+
+ setSite(site);
+ setInput(input);
+ bugzillaInput = editorInput;
+ bugzillaOutlineModel = BugzillaOutlineNode.parseBugReport(bugzillaInput.getBug());
+
+ bug = editorInput.getBug();
+ restoreBug();
+ isDirty = false;
+ updateEditorTitle();
+ }
+
+ /**
+ * This overrides the existing implementation in order to add an "add to
+ * favorites" option to the context menu.
+ *
+ * @see org.eclipse.mylar.internal.bugzilla.ui.AbstractBugEditor#createContextMenu()
+ */
+ @Override
+ protected void createContextMenu() {
+ contextMenuManager = new MenuManager("#BugEditor");
+ contextMenuManager.setRemoveAllWhenShown(true);
+ contextMenuManager.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ // manager.add(new
+ // AddToFavoritesAction(ExistingBugEditor.this));
+ // manager.add(new Separator());
+ manager.add(cutAction);
+ manager.add(copyAction);
+ manager.add(pasteAction);
+ manager.add(new Separator());
+ manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+ if (currentSelectedText == null || currentSelectedText.getSelectionText().length() == 0) {
+
+ copyAction.setEnabled(false);
+ } else {
+ copyAction.setEnabled(true);
+ }
+ }
+ });
+ getSite().registerContextMenu("#BugEditor", contextMenuManager, getSite().getSelectionProvider());
+ }
+
+ @Override
+ protected void addRadioButtons(Composite buttonComposite) {
+ FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay());
+ int i = 0;
+ Button selected = null;
+ radios = new Button[bug.getOperations().size()];
+ radioOptions = new Control[bug.getOperations().size()];
+ for (Iterator<Operation> it = bug.getOperations().iterator(); it.hasNext();) {
+ Operation o = it.next();
+ radios[i] = toolkit.createButton(buttonComposite, "", SWT.RADIO);
+ radios[i].setFont(TEXT_FONT);
+ GridData radioData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ if (!o.hasOptions() && !o.isInput())
+ radioData.horizontalSpan = 4;
+ else
+ radioData.horizontalSpan = 3;
+ radioData.heightHint = 20;
+ String opName = o.getOperationName();
+ opName = opName.replaceAll("</.*>", "");
+ opName = opName.replaceAll("<.*>", "");
+ radios[i].setText(opName);
+ radios[i].setLayoutData(radioData);
+ // radios[i].setBackground(background);
+ radios[i].addSelectionListener(new RadioButtonListener());
+ radios[i].addListener(SWT.FocusIn, new GenericListener());
+
+ if (o.hasOptions()) {
+ radioData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ radioData.horizontalSpan = 1;
+ radioData.heightHint = 20;
+ radioData.widthHint = AbstractBugEditor.WRAP_LENGTH;
+ // radioOptions[i] = new Combo(buttonComposite, SWT.NULL);
+ radioOptions[i] = new CCombo(buttonComposite, SWT.FLAT | SWT.READ_ONLY);
+ toolkit.adapt(radioOptions[i], true, true);
+ // radioOptions[i] = new Combo(buttonComposite, SWT.MULTI |
+ // SWT.V_SCROLL | SWT.READ_ONLY);
+ // radioOptions[i].setData(FormToolkit.KEY_DRAW_BORDER,
+ // FormToolkit.TEXT_BORDER);
+ // radioOptions[i] = new Combo(buttonComposite,
+ // SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ // | SWT.READ_ONLY);
+ radioOptions[i].setFont(TEXT_FONT);
+ radioOptions[i].setLayoutData(radioData);
+ // radioOptions[i].setBackground(background);
+
+ Object[] a = o.getOptionNames().toArray();
+ Arrays.sort(a);
+ for (int j = 0; j < a.length; j++) {
+ ((CCombo) radioOptions[i]).add((String) a[j]);
+ }
+ ((CCombo) radioOptions[i]).select(0);
+ ((CCombo) radioOptions[i]).addSelectionListener(new RadioButtonListener());
+ } else if (o.isInput()) {
+ radioData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ radioData.horizontalSpan = 1;
+ radioData.widthHint = 120;
+
+ // TODO: add condition for if opName = reassign to...
+ String assignmentValue = "";
+ if(opName.equals(REASSIGN_BUG_TO)) {
+ assignmentValue = repository.getUserName();
+ }
+ radioOptions[i] = toolkit.createText(buttonComposite, assignmentValue);// ,
+ // SWT.SINGLE);
+ radioOptions[i].setFont(TEXT_FONT);
+ radioOptions[i].setLayoutData(radioData);
+ // radioOptions[i].setBackground(background);
+ ((Text) radioOptions[i]).setText(o.getInputValue());
+ ((Text) radioOptions[i]).addModifyListener(new RadioButtonListener());
+ }
+
+ if (i == 0 || o.isChecked()) {
+ if (selected != null)
+ selected.setSelection(false);
+ selected = radios[i];
+ radios[i].setSelection(true);
+ if (o.hasOptions() && o.getOptionSelection() != null) {
+ int j = 0;
+ for (String s : ((CCombo) radioOptions[i]).getItems()) {
+ if (s.compareTo(o.getOptionSelection()) == 0) {
+ ((CCombo) radioOptions[i]).select(j);
+ }
+ j++;
+ }
+ }
+ bug.setSelectedOperation(o);
+ }
+
+ i++;
+ }
+ toolkit.paintBordersFor(buttonComposite);
+ }
+
+ @Override
+ protected void addActionButtons(Composite buttonComposite) {
+ FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay());
+ super.addActionButtons(buttonComposite);
+
+ compareButton = toolkit.createButton(buttonComposite, LABEL_COMPARE_BUTTON, SWT.NONE);
+// compareButton.setFont(TEXT_FONT);
+ GridData compareButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+// compareButtonData.widthHint = 100;
+// compareButtonData.heightHint = 20;
+// // compareButton.setText("Compare");
+ compareButton.setLayoutData(compareButtonData);
+ compareButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ OpenCompareEditorJob compareJob = new OpenCompareEditorJob("Comparing bug with remote server...");
+ compareJob.schedule();
+ }
+ });
+ compareButton.addListener(SWT.FocusIn, new GenericListener());
+
+ Button expandAll = toolkit.createButton(buttonComposite, LABEL_EXPAND_ALL_BUTTON, SWT.NONE);
+ expandAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+ expandAll.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ revealAllComments();
+
+ }
+ });
+
+
+ // TODO used for spell checking. Add back when we want to support this
+ // checkSpellingButton = new Button(buttonComposite, SWT.NONE);
+ // checkSpellingButton.setFont(TEXT_FONT);
+ // compareButtonData = new
+ // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ // compareButtonData.widthHint = 100;
+ // compareButtonData.heightHint = 20;
+ // checkSpellingButton.setText("CheckSpelling");
+ // checkSpellingButton.setLayoutData(compareButtonData);
+ // checkSpellingButton.addListener(SWT.Selection, new Listener() {
+ // public void handleEvent(Event e) {
+ // checkSpelling();
+ // }
+ // });
+ // checkSpellingButton.addListener(SWT.FocusIn, new GenericListener());
+ }
+
+ /**
+ * @return Returns the compareInput.
+ */
+ public BugzillaCompareInput getCompareInput() {
+ return compareInput;
+ }
+
+ @Override
+ public IBugzillaBug getBug() {
+ return bug;
+ }
+
+ @Override
+ protected String getTitleString() {
+// Attribute summary = bug.getAttribute(ATTR_SUMMARY);
+// String summaryVal = ((null != summary) ? summary.getNewValue() : null);
+ return bug.getLabel();// + ": " + checkText(summaryVal);
+ }
+
+ @Override
+ public void submitBug() {
+
+ submitButton.setEnabled(false);
+ ExistingBugEditor.this.showBusy(true);
+
+ final BugzillaReportSubmitForm bugzillaReportSubmitForm = BugzillaReportSubmitForm.makeExistingBugPost(bug,
+ repository, removeCC);
+
+ final BugzillaRepositoryConnector bugzillaRepositoryClient = (BugzillaRepositoryConnector) MylarTaskListPlugin
+ .getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+
+ IJobChangeListener closeEditorListener = new IJobChangeListener() {
+
+ public void done(final IJobChangeEvent event) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (event.getJob().getResult().equals(Status.OK_STATUS)) {
+ close();
+ } else {
+ submitButton.setEnabled(true);
+ ExistingBugEditor.this.showBusy(false);
+ }
+ }
+ });
+ }
+
+ public void aboutToRun(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void awake(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void running(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void scheduled(IJobChangeEvent event) {
+ // ignore
+ }
+
+ public void sleeping(IJobChangeEvent event) {
+ // ignore
+ }
+ };
+ bugzillaRepositoryClient.submitBugReport(bug, bugzillaReportSubmitForm, closeEditorListener);
+ }
+
+ @Override
+ protected void createDescriptionLayout(FormToolkit toolkit, final ScrolledForm form) {
+
+ Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE);
+ section.setText(LABEL_SECTION_DESCRIPTION);
+ section.setExpanded(true);
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ section.addExpansionListener(new IExpansionListener() {
+ public void expansionStateChanging(ExpansionEvent e) {
+ form.reflow(true);
+ }
+
+ public void expansionStateChanged(ExpansionEvent e) {
+ form.reflow(true);
+ }
+ });
+
+ // Description Area
+ Composite descriptionComposite = toolkit.createComposite(section);
+ GridLayout descriptionLayout = new GridLayout();
+ descriptionLayout.numColumns = 1;
+ descriptionComposite.setLayout(descriptionLayout);
+ // descriptionComposite.setBackground(background);
+ //GridData descriptionData = new GridData(GridData.FILL_HORIZONTAL);
+ //descriptionData.horizontalSpan = 1;
+ //descriptionData.grabExcessVerticalSpace = false;
+ // descriptionComposite.setLayoutData(descriptionData);
+ // End Description Area
+
+ section.setClient(descriptionComposite);
+
+ // FormText t = newLayout(descriptionComposite, 4, "Description:",
+ // HEADER);
+
+ // t.addListener(SWT.FocusIn, new DescriptionListener());
+ //StyledText t = newLayout(descriptionComposite, 4, bug.getDescription(), VALUE);
+ // t.setFont(COMMENT_FONT);
+
+ TextViewer viewer = addRepositoryText(repository, descriptionComposite, bug.getDescription());
+ StyledText styledText = viewer.getTextWidget();
+ styledText.addListener(SWT.FocusIn, new DescriptionListener());
+
+ texts.add(textsindex, styledText);
+ textHash.put(bug.getDescription(), styledText);
+ textsindex++;
+
+ }
+
+ /**
+ * http://www.eclipse.org and http://www.eclipse.org/mylar and a
+ */
+ @Override
+ protected void createCommentLayout(FormToolkit toolkit, final ScrolledForm form) {
+
+ Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE);
+ section.setText(LABEL_SECTION_COMMENTS);
+ section.setExpanded(true);
+ section.setLayout(new GridLayout());
+ section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ section.addExpansionListener(new IExpansionListener() {
+ public void expansionStateChanging(ExpansionEvent e) {
+ form.reflow(true);
+ }
+
+ public void expansionStateChanged(ExpansionEvent e) {
+ form.reflow(true);
+ }
+ });
+
+ // Additional (read-only) Comments Area
+ Composite addCommentsComposite = toolkit.createComposite(section);
+ section.setClient(addCommentsComposite);
+ GridLayout addCommentsLayout = new GridLayout();
+ addCommentsLayout.numColumns = 1;
+ addCommentsComposite.setLayout(addCommentsLayout);
+ // addCommentsComposite.setBackground(background);
+ GridData addCommentsData = new GridData(GridData.FILL_BOTH);
+ addCommentsData.horizontalSpan = 1;
+ addCommentsData.widthHint = DESCRIPTION_WIDTH;
+ addCommentsData.heightHint = DESCRIPTION_HEIGHT;
+ addCommentsData.grabExcessVerticalSpace = false;
+ addCommentsComposite.setLayoutData(addCommentsData);
+ // End Additional (read-only) Comments Area
+
+
+
+ StyledText styledText = null;
+ for (Iterator<Comment> it = bug.getComments().iterator(); it.hasNext();) {
+ final Comment comment = it.next();
+
+ ExpandableComposite ec = toolkit.createExpandableComposite(addCommentsComposite,
+ ExpandableComposite.TREE_NODE);
+
+ if (!it.hasNext()) {
+ ec.setExpanded(true);
+ }
+
+ ec.setText(comment.getNumber() + ": " +comment.getAuthorName() + ", " + simpleDateFormat.format(comment.getCreated()));
+
+ ec.addExpansionListener(new ExpansionAdapter() {
+ public void expansionStateChanged(ExpansionEvent e) {
+ form.reflow(true);
+ }
+ });
+
+ ec.setLayout(new GridLayout());
+
+ Composite ecComposite = toolkit.createComposite(ec);
+ ecComposite.setLayout(new GridLayout());
+ ec.setClient(ecComposite);
+ toolkit.paintBordersFor(ec);
+
+ if (comment.hasAttachment()) {
+
+ Link attachmentLink = new Link(ecComposite, SWT.NONE);
+
+ String attachmentHeader;
+
+ if(!comment.isObsolete()) {
+ attachmentHeader = " Attached: " + comment.getAttachmentDescription() + " [<a>view</a>]";
+ } else {
+ attachmentHeader = " Deprecated: " + comment.getAttachmentDescription();
+ }
+ // String result = MessageFormat.format(attachmentHeader, new
+ // String[] { node
+ // .getLabelText() });
+
+ attachmentLink.addSelectionListener(new SelectionAdapter() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e) {
+ String address = repository.getUrl() + "/attachment.cgi?id=" + comment.getAttachmentId()
+ + "&amp;action=view";
+ TaskUiUtil.openUrl(address, address, address);
+
+ }
+ });
+
+ attachmentLink.setText(attachmentHeader);
+
+ }
+
+ // styledText = newLayout(ecComposite, 1, comment.getText(), VALUE);
+ // styledText.addListener(SWT.FocusIn, new
+ // CommentListener(comment));
+ // styledText.setFont(COMMENT_FONT);
+
+ TextViewer viewer = addRepositoryText(repository, ecComposite, comment.getText());
+ styledText = viewer.getTextWidget();
+
+ // code for outline
+ texts.add(textsindex, styledText);
+ textHash.put(comment, styledText);
+ textsindex++;
+ }
+
+ Section sectionAdditionalComments = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR
+ | Section.TWISTIE);
+ sectionAdditionalComments.setText(LABEL_SECTION_NEW_COMMENT);
+ sectionAdditionalComments.setExpanded(true);
+ // sectionAdditionalComments.setLayout(new GridLayout());
+ // GridData newCommentCommentLayoutData = new GridData();
+ // newCommentCommentLayoutData.widthHint = DESCRIPTION_WIDTH;
+ // sectionAdditionalComments.setLayoutData(newCommentCommentLayoutData);
+ sectionAdditionalComments.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ sectionAdditionalComments.addExpansionListener(new IExpansionListener() {
+ public void expansionStateChanging(ExpansionEvent e) {
+ form.reflow(true);
+ }
+
+ public void expansionStateChanged(ExpansionEvent e) {
+ form.reflow(true);
+ }
+ });
+
+ Composite newCommentsComposite = toolkit.createComposite(sectionAdditionalComments);
+ newCommentsComposite.setLayout(new GridLayout());
+ newCommentsComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ addCommentsText = toolkit.createText(newCommentsComposite, bug.getNewComment(), SWT.MULTI | SWT.V_SCROLL
+ | SWT.WRAP);
+ addCommentsText.setFont(COMMENT_FONT);
+ toolkit.paintBordersFor(newCommentsComposite);
+ GridData addCommentsTextData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ //addCommentsTextData.horizontalSpan = 4;
+ addCommentsTextData.widthHint = DESCRIPTION_WIDTH;
+ addCommentsTextData.heightHint = DESCRIPTION_HEIGHT;
+ addCommentsTextData.grabExcessHorizontalSpace = true;
+
+ addCommentsText.setLayoutData(addCommentsTextData);
+ // addCommentsText.setText(bug.getNewComment());
+ addCommentsText.addListener(SWT.KeyUp, new Listener() {
+
+ public void handleEvent(Event event) {
+ String sel = addCommentsText.getText();
+ if (!(bug.getNewNewComment().equals(sel))) {
+ bug.setNewNewComment(sel);
+ changeDirtyStatus(true);
+ }
+ validateInput();
+ }
+ });
+ addCommentsText.addListener(SWT.FocusIn, new NewCommentListener());
+ // End Additional Comments Text
+
+ addCommentsTextBox = addCommentsText;
+
+ // this.createSeparatorSpace(addCommentsComposite);
+ sectionAdditionalComments.setClient(newCommentsComposite);
+ }
+
+ @Override
+ protected void addKeywordsList(FormToolkit toolkit, String keywords, Composite attributesComposite) {
+ // newLayout(attributesComposite, 1, "Keywords:", PROPERTY);
+ toolkit.createLabel(attributesComposite, "Keywords:");
+ keywordsText = toolkit.createText(attributesComposite, keywords);
+ keywordsText.setFont(TEXT_FONT);
+ keywordsText.setEditable(false);
+ // keywordsText.setForeground(foreground);
+ // keywordsText.setBackground(JFaceColors.getErrorBackground(display));
+ GridData keywordsData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ keywordsData.horizontalSpan = 2;
+ keywordsData.widthHint = 200;
+ keywordsText.setLayoutData(keywordsData);
+ // keywordsText.setText(keywords);
+ keywordsText.addListener(SWT.FocusIn, new GenericListener());
+ keyWordsList = new List(attributesComposite, SWT.MULTI | SWT.V_SCROLL);
+ keyWordsList.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
+ keyWordsList.setFont(TEXT_FONT);
+ GridData keyWordsTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ keyWordsTextData.horizontalSpan = 1;
+ keyWordsTextData.widthHint = 125;
+ keyWordsTextData.heightHint = 40;
+ keyWordsList.setLayoutData(keyWordsTextData);
+
+ // initialize the keywords list with valid values
+ java.util.List<String> keywordList = bug.getKeywords();
+ if (keywordList != null) {
+ for (Iterator<String> it = keywordList.iterator(); it.hasNext();) {
+ String keyword = it.next();
+ keyWordsList.add(keyword);
+ }
+
+ // get the selected keywords for the bug
+ StringTokenizer st = new StringTokenizer(keywords, ",", false);
+ ArrayList<Integer> indicies = new ArrayList<Integer>();
+ while (st.hasMoreTokens()) {
+ String s = st.nextToken().trim();
+ int index = keyWordsList.indexOf(s);
+ if (index != -1)
+ indicies.add(new Integer(index));
+ }
+
+ // select the keywords that were selected for the bug
+ int length = indicies.size();
+ int[] sel = new int[length];
+ for (int i = 0; i < length; i++) {
+ sel[i] = indicies.get(i).intValue();
+ }
+ keyWordsList.select(sel);
+ }
+
+ keyWordsList.addSelectionListener(new KeywordListener());
+ keyWordsList.addListener(SWT.FocusIn, new GenericListener());
+ }
+
+ @Override
+ protected void addCCList(FormToolkit toolkit, String ccValue, Composite attributesComposite) {
+ newLayout(attributesComposite, 1, "Add CC:", PROPERTY);
+ ccText = toolkit.createText(attributesComposite, ccValue);
+ ccText.setFont(TEXT_FONT);
+ ccText.setEditable(true);
+ // ccText.setForeground(foreground);
+ // ccText.setBackground(background);
+ GridData ccData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ ccData.horizontalSpan = 1;
+ ccData.widthHint = 200;
+ ccText.setLayoutData(ccData);
+ // ccText.setText(ccValue);
+ ccText.addListener(SWT.FocusIn, new GenericListener());
+ ccText.addModifyListener(new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ changeDirtyStatus(true);
+ Attribute a = bug.getAttributeForKnobName("newcc");
+ if (a != null) {
+ a.setNewValue(ccText.getText());
+ }
+ }
+
+ });
+
+ // newLayout(attributesComposite, 1, "CC: (Select to remove)",
+ // PROPERTY);
+ toolkit.createLabel(attributesComposite, "CC: (Select to remove)");
+ ccList = new List(attributesComposite, SWT.MULTI | SWT.V_SCROLL);// SWT.BORDER
+ ccList.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
+ ccList.setFont(TEXT_FONT);
+ GridData ccListData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ ccListData.horizontalSpan = 1;
+ ccListData.widthHint = 125;
+ ccListData.heightHint = 40;
+ ccList.setLayoutData(ccListData);
+
+ // initialize the keywords list with valid values
+ Set<String> ccs = bug.getCC();
+ if (ccs != null) {
+ for (Iterator<String> it = ccs.iterator(); it.hasNext();) {
+ String cc = it.next();
+ ccList.add(HtmlStreamTokenizer.unescape(cc));
+ }
+ }
+
+ ccList.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ changeDirtyStatus(true);
+
+ for (String cc : ccList.getItems()) {
+ int index = ccList.indexOf(cc);
+ if (ccList.isSelected(index)) {
+ removeCC.add(cc);
+ } else {
+ removeCC.remove(cc);
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ ccList.addListener(SWT.FocusIn, new GenericListener());
+ }
+
+ @Override
+ protected void updateBug() {
+
+ // go through all of the attributes and update the main values to the
+ // new ones
+ for (Iterator<Attribute> it = bug.getAttributes().iterator(); it.hasNext();) {
+ Attribute a = it.next();
+ if (a.getNewValue() != null && a.getNewValue().compareTo(a.getValue()) != 0) {
+ bug.setHasChanged(true);
+ }
+ a.setValue(a.getNewValue());
+
+ }
+ if (bug.getNewComment().compareTo(bug.getNewNewComment()) != 0) {
+ bug.setHasChanged(true);
+ }
+
+ // Update some other fields as well.
+ bug.setNewComment(bug.getNewNewComment());
+
+ }
+
+ @Override
+ protected void restoreBug() {
+
+ if (bug == null)
+ return;
+
+ // go through all of the attributes and restore the new values to the
+ // main ones
+ for (Iterator<Attribute> it = bug.getAttributes().iterator(); it.hasNext();) {
+ Attribute a = it.next();
+ a.setNewValue(a.getValue());
+ }
+
+ // Restore some other fields as well.
+ bug.setNewNewComment(bug.getNewComment());
+ }
+
+ /**
+ * This job opens a compare editor to compare the current state of the bug
+ * in the editor with the bug on the server.
+ */
+ protected class OpenCompareEditorJob extends Job {
+
+ public OpenCompareEditorJob(String name) {
+ super(name);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ final BugReport serverBug;
+ try {
+ serverBug = BugzillaRepositoryUtil.getBug(bug.getRepositoryUrl(), bug.getId());
+ // If no bug was found on the server, throw an exception so that
+ // the
+ // user gets the same message that appears when there is a
+ // problem reading the server.
+ if (serverBug == null)
+ throw new Exception();
+ } catch (Exception e) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ "Could not open bug.", "Bug #" + bug.getId() + " could not be read from the server.");
+ }
+ });
+ return new Status(IStatus.OK, IBugzillaConstants.PLUGIN_ID, IStatus.OK,
+ "Could not get the bug report from the server.", null);
+ }
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ compareInput.setTitle("Bug #" + bug.getId());
+ compareInput.setLeft(bug);
+ compareInput.setRight(serverBug);
+ CompareUI.openCompareEditor(compareInput);
+ }
+ });
+ return new Status(IStatus.OK, IBugzillaConstants.PLUGIN_ID, IStatus.OK, "", null);
+ }
+
+ }
+
+ /**
+ * Class to handle the selection change of the keywords.
+ */
+ protected class KeywordListener implements SelectionListener {
+
+ /*
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent arg0) {
+ changeDirtyStatus(true);
+
+ // get the selected keywords and create a string to submit
+ StringBuffer keywords = new StringBuffer();
+ String[] sel = keyWordsList.getSelection();
+
+ // allow unselecting 1 keyword when it is the only one selected
+ if (keyWordsList.getSelectionCount() == 1) {
+ int index = keyWordsList.getSelectionIndex();
+ String keyword = keyWordsList.getItem(index);
+ if (bug.getAttribute("Keywords").getNewValue().equals(keyword))
+ keyWordsList.deselectAll();
+ }
+
+ for (int i = 0; i < keyWordsList.getSelectionCount(); i++) {
+ keywords.append(sel[i]);
+ if (i != keyWordsList.getSelectionCount() - 1) {
+ keywords.append(",");
+ }
+ }
+ bug.getAttribute("Keywords").setNewValue(keywords.toString());
+
+ // update the keywords text field
+ keywordsText.setText(keywords.toString());
+ }
+
+ /*
+ * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ // no need to listen to this
+ }
+
+ }
+
+ /**
+ * A listener for selection of the description field.
+ */
+ protected class DescriptionListener implements Listener {
+ public void handleEvent(Event event) {
+ fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
+ new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), LABEL_SECTION_DESCRIPTION, true,
+ bug.getSummary()))));
+ }
+ }
+
+ /**
+ * A listener for selection of a comment.
+ */
+ protected class CommentListener implements Listener {
+
+ /** The comment that this listener is for. */
+ private Comment comment;
+
+ /**
+ * Creates a new <code>CommentListener</code>.
+ *
+ * @param comment
+ * The comment that this listener is for.
+ */
+ public CommentListener(Comment comment) {
+ this.comment = comment;
+ }
+
+ public void handleEvent(Event event) {
+ fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
+ new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), comment.getCreated().toString(),
+ comment, bug.getSummary()))));
+ }
+ }
+
+ /**
+ * A listener for selection of the textbox where a new comment is entered
+ * in.
+ */
+ protected class NewCommentListener implements Listener {
+ public void handleEvent(Event event) {
+ fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
+ new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), "New Comment", false, bug
+ .getSummary()))));
+ }
+ }
+
+ /**
+ * Class to handle the selection change of the radio buttons.
+ */
+ protected class RadioButtonListener implements SelectionListener, ModifyListener {
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ Button selected = null;
+ for (int i = 0; i < radios.length; i++) {
+ if (radios[i].getSelection())
+ selected = radios[i];
+ }
+ // determine the operation to do to the bug
+ for (int i = 0; i < radios.length; i++) {
+ if (radios[i] != e.widget && radios[i] != selected) {
+ radios[i].setSelection(false);
+ }
+
+ if (e.widget == radios[i]) {
+ Operation o = bug.getOperation(radios[i].getText());
+ bug.setSelectedOperation(o);
+ ExistingBugEditor.this.changeDirtyStatus(true);
+ } else if (e.widget == radioOptions[i]) {
+ Operation o = bug.getOperation(radios[i].getText());
+ o.setOptionSelection(((CCombo) radioOptions[i]).getItem(((CCombo) radioOptions[i])
+ .getSelectionIndex()));
+
+ if (bug.getSelectedOperation() != null)
+ bug.getSelectedOperation().setChecked(false);
+ o.setChecked(true);
+
+ bug.setSelectedOperation(o);
+ radios[i].setSelection(true);
+ if (selected != null && selected != radios[i]) {
+ selected.setSelection(false);
+ }
+ ExistingBugEditor.this.changeDirtyStatus(true);
+ }
+ }
+ validateInput();
+ }
+
+ public void modifyText(ModifyEvent e) {
+ Button selected = null;
+ for (int i = 0; i < radios.length; i++) {
+ if (radios[i].getSelection())
+ selected = radios[i];
+ }
+ // determine the operation to do to the bug
+ for (int i = 0; i < radios.length; i++) {
+ if (radios[i] != e.widget && radios[i] != selected) {
+ radios[i].setSelection(false);
+ }
+
+ if (e.widget == radios[i]) {
+ Operation o = bug.getOperation(radios[i].getText());
+ bug.setSelectedOperation(o);
+ ExistingBugEditor.this.changeDirtyStatus(true);
+ } else if (e.widget == radioOptions[i]) {
+ Operation o = bug.getOperation(radios[i].getText());
+ o.setInputValue(((Text) radioOptions[i]).getText());
+
+ if (bug.getSelectedOperation() != null)
+ bug.getSelectedOperation().setChecked(false);
+ o.setChecked(true);
+
+ bug.setSelectedOperation(o);
+ radios[i].setSelection(true);
+ if (selected != null && selected != radios[i]) {
+ selected.setSelection(false);
+ }
+ ExistingBugEditor.this.changeDirtyStatus(true);
+ }
+ }
+ validateInput();
+ }
+ }
+
+ private void validateInput() {
+ Operation o = bug.getSelectedOperation();
+ if (o != null && o.getKnobName().compareTo("resolve") == 0
+ && (addCommentsText.getText() == null || addCommentsText.getText().equals(""))) {
+ submitButton.setEnabled(false);
+ } else {
+ submitButton.setEnabled(true);
+ }
+ }
+
+ @Override
+ public void handleSummaryEvent() {
+ String sel = summaryText.getText();
+ Attribute a = getBug().getAttribute(ATTR_SUMMARY);
+ if (!(a.getNewValue().equals(sel))) {
+ a.setNewValue(sel);
+ changeDirtyStatus(true);
+ }
+ }
+
+ // TODO used for spell checking. Add back when we want to support this
+ // protected Button checkSpellingButton;
+ //
+ // private void checkSpelling() {
+ // SpellingContext context= new SpellingContext();
+ // context.setContentType(Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT));
+ // IDocument document = new Document(addCommentsTextBox.getText());
+ // ISpellingProblemCollector collector= new
+ // SpellingProblemCollector(document);
+ // EditorsUI.getSpellingService().check(document, context, collector, new
+ // NullProgressMonitor());
+ // }
+ //
+ // private class SpellingProblemCollector implements
+ // ISpellingProblemCollector {
+ //
+ // private IDocument document;
+ //
+ // private SpellingDialog spellingDialog;
+ //
+ // public SpellingProblemCollector(IDocument document){
+ // this.document = document;
+ // spellingDialog = new
+ // SpellingDialog(Display.getCurrent().getActiveShell(), "Spell Checking",
+ // document);
+ // }
+ //
+ // /*
+ // * @see
+ // org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#accept(org.eclipse.ui.texteditor.spelling.SpellingProblem)
+ // */
+ // public void accept(SpellingProblem problem) {
+ // try {
+ // int line= document.getLineOfOffset(problem.getOffset()) + 1;
+ // String word= document.get(problem.getOffset(), problem.getLength());
+ //
+ // spellingDialog.open(word, problem.getProposals());
+ //
+ // } catch (BadLocationException x) {
+ // // drop this SpellingProblem
+ // }
+ // }
+ //
+ // /*
+ // * @see
+ // org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#beginCollecting()
+ // */
+ // public void beginCollecting() {
+ //
+ // }
+ //
+ // /*
+ // * @see
+ // org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#endCollecting()
+ // */
+ // public void endCollecting() {
+ // MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
+ // "Spell Checking Finished", "The spell check has finished");
+ // }
+ // }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java
new file mode 100644
index 000000000..651d856aa
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.editor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.TextAttribute;
+import org.eclipse.jface.text.hyperlink.DefaultHyperlinkPresenter;
+import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
+import org.eclipse.jface.text.hyperlink.IHyperlinkPresenter;
+import org.eclipse.jface.text.presentation.IPresentationReconciler;
+import org.eclipse.jface.text.presentation.PresentationReconciler;
+import org.eclipse.jface.text.rules.DefaultDamagerRepairer;
+import org.eclipse.jface.text.rules.IRule;
+import org.eclipse.jface.text.rules.IToken;
+import org.eclipse.jface.text.rules.MultiLineRule;
+import org.eclipse.jface.text.rules.RuleBasedScanner;
+import org.eclipse.jface.text.rules.SingleLineRule;
+import org.eclipse.jface.text.rules.Token;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.editors.text.TextSourceViewerConfiguration;
+import org.eclipse.ui.internal.editors.text.URLHyperlinkDetector;
+
+/**
+ * @author Rob Elves
+ */
+public class RepositoryTextViewer extends SourceViewer {
+
+ private TaskRepository repository;
+
+ public RepositoryTextViewer(TaskRepository repository, Composite composite, int style) {
+ super(composite, null, style);
+ this.configure(new RepositoryViewerConfig());
+ this.repository = repository;
+ }
+
+ public TaskRepository getRepository() {
+ return repository;
+ }
+
+ public void setRepository(TaskRepository repository) {
+ this.repository = repository;
+ }
+
+ class RepositoryViewerConfig extends TextSourceViewerConfiguration {
+
+ private RepositoryTextScanner scanner = null;
+
+ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
+ PresentationReconciler reconciler = new PresentationReconciler();
+ reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
+
+ DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getDefaultScanner());
+ reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
+ reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+
+ return reconciler;
+ }
+
+ private RepositoryTextScanner getDefaultScanner() {
+ if (scanner == null) {
+ scanner = new RepositoryTextScanner();
+ }
+ return scanner;
+ }
+
+ public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
+ URLHyperlinkDetector hyperlinkDetector = new URLHyperlinkDetector();
+ List<IHyperlinkDetector> detectors = new ArrayList<IHyperlinkDetector>();
+ detectors.add(hyperlinkDetector);
+ detectors.addAll(Arrays.asList(MylarTaskListPlugin.getDefault().getTaskHyperlinkDetectors()));
+ return detectors.toArray(new IHyperlinkDetector[detectors.size()]);
+// return MylarTaskListPlugin.getDefault().getTaskHyperlinkDetectors();
+ }
+
+ public IHyperlinkPresenter getHyperlinkPresenter(ISourceViewer sourceViewer) {
+ return new DefaultHyperlinkPresenter(new RGB(0, 0, 200));
+ }
+
+ public int getHyperlinkStateMask(ISourceViewer sourceViewer) {
+ return SWT.NONE;
+ }
+ }
+
+ class RepositoryTextScanner extends RuleBasedScanner {
+ private Color URL_COLOR = new Color(Display.getCurrent(), new RGB(0, 0, 200));
+
+ public RepositoryTextScanner() {
+ IToken bugToken = new Token(new TextAttribute(URL_COLOR));
+ IRule[] rules = new IRule[7];
+ rules[0] = (new SingleLineRule("http://", " ", bugToken));
+ rules[1] = (new SingleLineRule("https://", " ", bugToken));
+ rules[2] = (new MultiLineRule("bug#", " ", bugToken));
+ rules[3] = (new MultiLineRule("bug #", " ", bugToken));
+ rules[4] = (new SingleLineRule("bug #", "\n", bugToken));
+ rules[5] = (new SingleLineRule("http://", "\n", bugToken));
+ rules[6] = (new SingleLineRule("https://", "\n", bugToken));
+// rules[7] = (new MultiLineRule(" bug ", " ", bugToken));
+// rules[8] = (new SingleLineRule(" at ", ")", bugToken));
+ setRules(rules);
+ }
+
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java
new file mode 100644
index 000000000..64dca1ce5
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java
@@ -0,0 +1,1602 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.search;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchOperation;
+import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchQuery;
+import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchResultCollector;
+import org.eclipse.mylar.internal.bugzilla.core.search.IBugzillaSearchOperation;
+import org.eclipse.mylar.internal.bugzilla.core.search.IBugzillaSearchResultCollector;
+import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUITools;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.AbstractBugzillaQueryPage;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryQuery;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.mylar.provisional.tasklist.TaskRepositoryManager;
+import org.eclipse.search.ui.ISearchPage;
+import org.eclipse.search.ui.ISearchPageContainer;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+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.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.internal.help.WorkbenchHelpSystem;
+
+/**
+ * Bugzilla search page
+ *
+ * @author Mik Kersten (hardening of prototype)
+ */
+public class BugzillaSearchPage extends AbstractBugzillaQueryPage implements ISearchPage, Listener {
+
+ private static final String MAX_HITS_GREATER = "Max hits shown must be greater than 0 or enter -1 for all results found.";
+
+ private static final String NUM_DAYS_POSITIVE = "Number of days must be a positive integer. ";
+
+ private static final String TITLE = "New Bugzilla Query";
+
+ private static final String DESCRIPTION = "Enter query parameters. If attributes are blank or stale press the Update button.";
+
+ private static final String TITLE_BUGZILLA_QUERY = "Bugzilla Query";
+
+ private static final String MAX_HITS = "100";
+
+ private static final int HEIGHT_ATTRIBUTE_COMBO = 60;
+
+ private TaskRepository repository = null;
+
+ protected Combo summaryPattern = null;
+
+ protected Combo repositoryCombo = null;
+
+ private static ArrayList<BugzillaSearchData> previousSummaryPatterns = new ArrayList<BugzillaSearchData>(20);
+
+ private static ArrayList<BugzillaSearchData> previousEmailPatterns = new ArrayList<BugzillaSearchData>(20);
+
+ private static ArrayList<BugzillaSearchData> previousCommentPatterns = new ArrayList<BugzillaSearchData>(20);
+
+ protected ISearchPageContainer scontainer = null;
+
+ private boolean firstTime = true;
+
+ private IDialogSettings fDialogSettings;
+
+ protected Text maxHitsText;
+
+ private static final String[] patternOperationText = { "all words", "any word", "regexp" };
+
+ private static final String[] patternOperationValues = { "allwordssubstr", "anywordssubstr", "regexp" };
+
+ private static final String[] emailOperationText = { "substring", "exact", "regexp" };
+
+ private static final String[] emailOperationValues = { "substring", "exact", "regexp" };
+
+ private static final String[] emailRoleValues = { "emailassigned_to1", "emailreporter1", "emailcc1",
+ "emaillongdesc1" };
+
+ protected IPreferenceStore prefs = BugzillaPlugin.getDefault().getPreferenceStore();
+
+ protected String maxHits;
+
+ private BugzillaRepositoryQuery originalQuery = null;
+
+ // private TaskRepository selectedRepository = null;
+
+ private static class BugzillaSearchData {
+ /** Pattern to match on */
+ String pattern;
+
+ /** Pattern matching criterion */
+ int operation;
+
+ BugzillaSearchData(String pattern, int operation) {
+ this.pattern = pattern;
+ this.operation = operation;
+ }
+ }
+
+ public BugzillaSearchPage() {
+ super(TITLE_BUGZILLA_QUERY);
+ setTitle(TITLE);
+ setDescription(DESCRIPTION);
+ setPageComplete(false);
+ }
+
+ public BugzillaSearchPage(TaskRepository repository) {
+ super(TITLE_BUGZILLA_QUERY);
+ setTitle(TITLE);
+ setDescription(DESCRIPTION);
+ this.repository = repository;
+ setPageComplete(false);
+ }
+
+ public BugzillaSearchPage(TaskRepository repository, BugzillaRepositoryQuery origQuery) {
+ super(TITLE_BUGZILLA_QUERY, origQuery.getDescription());
+ originalQuery = origQuery;
+ this.repository = repository;
+ setTitle(TITLE);
+ setDescription(DESCRIPTION);
+ setPageComplete(false);
+ }
+
+ public void createControl(Composite parent) {
+ readConfiguration();
+
+ Composite control = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ control.setLayout(layout);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ control.setLayoutData(gd);
+
+ if (scontainer == null) {
+ // Not presenting in search pane so add parent's content
+ super.createControl(control);
+ } else {
+ // if (repository == null) {
+ // search pane so add repository selection
+ createRepositoryGroup(control);
+ }
+ createSearchGroup(control);
+ createOptionsGroup(control);
+
+ createEmail(control);
+ createLastDays(control);
+
+ // createSaveQuery(control);
+ // createMaxHits(control);
+ input = new SavedQueryFile(BugzillaPlugin.getDefault().getStateLocation().toString(), "/queries");
+ // createUpdate(control);
+// if (originalQuery != null) {
+// try {
+// updateDefaults(originalQuery.getQueryUrl(), String.valueOf(originalQuery.getMaxHits()));
+// } catch (UnsupportedEncodingException e) {
+// // ignore
+// }
+// }
+ setControl(control);
+ WorkbenchHelpSystem.getInstance().setHelp(control, IBugzillaConstants.SEARCH_PAGE_CONTEXT);
+ }
+
+ private void createRepositoryGroup(Composite control) {
+ Group group = new Group(control, SWT.NONE);
+ group.setText("Repository");
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ group.setLayout(layout);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ repositoryCombo = new Combo(group, SWT.SINGLE | SWT.BORDER);
+ repositoryCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ String repositoryUrl = repositoryCombo.getItem(repositoryCombo.getSelectionIndex());
+ repository = MylarTaskListPlugin.getRepositoryManager().getRepository(BugzillaPlugin.REPOSITORY_KIND,
+ repositoryUrl);
+ updateAttributesFromRepository(repositoryUrl, false);
+ }
+ });
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ repositoryCombo.setLayoutData(gd);
+ }
+
+ private void createSearchGroup(Composite control) {
+ Group group = new Group(control, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ group.setLayout(layout);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 5;
+ group.setLayoutData(gd);
+
+ createTextSearchComposite(group);
+ createComment(group);
+ }
+
+ protected Control createTextSearchComposite(Composite control) {
+ GridData gd;
+ Label label;
+
+ Composite group = new Composite(control, SWT.NONE);
+ GridLayout layout = new GridLayout(3, false);
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ // Info text
+ label = new Label(group, SWT.LEFT);
+ label.setText("Summary/id contains: ");
+ gd = new GridData(GridData.BEGINNING);
+ gd.horizontalSpan = 1;
+ label.setLayoutData(gd);
+
+ // Pattern combo
+ summaryPattern = new Combo(group, SWT.SINGLE | SWT.BORDER);
+ summaryPattern.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ if (scontainer != null) {
+ scontainer.setPerformActionEnabled(canQuery());
+ }
+ }
+ });
+ summaryPattern.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleWidgetSelected(summaryPattern, summaryOperation, previousSummaryPatterns);
+ }
+ });
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ summaryPattern.setLayoutData(gd);
+
+ summaryOperation = new Combo(group, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
+ summaryOperation.setItems(patternOperationText);
+ summaryOperation.setText(patternOperationText[0]);
+ summaryOperation.select(0);
+
+ return group;
+ }
+
+ private Control createComment(Composite control) {
+ GridData gd;
+ Label label;
+
+ Composite group = new Composite(control, SWT.NONE);
+ GridLayout layout = new GridLayout(3, false);
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ // Info text
+ label = new Label(group, SWT.LEFT);
+ label.setText("Comment contains: ");
+ gd = new GridData(GridData.BEGINNING);
+ label.setLayoutData(gd);
+
+ // Comment pattern combo
+ commentPattern = new Combo(group, SWT.SINGLE | SWT.BORDER);
+ commentPattern.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ if (scontainer != null) {
+ scontainer.setPerformActionEnabled(canQuery());
+ }
+ }
+ });
+ commentPattern.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleWidgetSelected(commentPattern, commentOperation, previousCommentPatterns);
+ }
+ });
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ commentPattern.setLayoutData(gd);
+
+ commentOperation = new Combo(group, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
+ commentOperation.setItems(patternOperationText);
+ commentOperation.setText(patternOperationText[0]);
+ commentOperation.select(0);
+
+ return group;
+ }
+
+ protected Control createOptionsGroup(Composite control) {
+ Group group = new Group(control, SWT.NONE);
+ // group.setText("Bug Attributes");
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ group.setLayout(layout);
+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.horizontalSpan = 5;
+ group.setLayoutData(gd);
+
+ createProductAttributes(group);
+ createLists(group);
+ createUpdate(group);
+
+ return group;
+ }
+
+ /**
+ * Creates the area for selection on product/component/version.
+ */
+ protected Control createProductAttributes(Composite control) {
+
+ GridData gd;
+ GridLayout layout;
+
+ // Search expression
+ Composite group = new Composite(control, SWT.NONE);
+ layout = new GridLayout();
+ layout.numColumns = 4;
+ group.setLayout(layout);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.horizontalSpan = 5;
+ group.setLayoutData(gd);
+
+ // Labels
+ Label label = new Label(group, SWT.LEFT);
+ label.setText("Product");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Component");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Version");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Milestone");
+
+ // Lists
+ product = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = HEIGHT_ATTRIBUTE_COMBO;
+ product.setLayoutData(gd);
+
+ component = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = HEIGHT_ATTRIBUTE_COMBO;
+ component.setLayoutData(gd);
+
+ version = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = HEIGHT_ATTRIBUTE_COMBO;
+ version.setLayoutData(gd);
+
+ target = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = HEIGHT_ATTRIBUTE_COMBO;
+ target.setLayoutData(gd);
+
+ return group;
+ }
+
+ /**
+ * Creates the area for selection of bug attributes (status, etc.)
+ */
+ protected Control createLists(Composite control) {
+ GridData gd;
+ GridLayout layout;
+
+ // Search expression
+ Composite group = new Composite(control, SWT.NONE);
+ layout = new GridLayout();
+ layout.numColumns = 6;
+ group.setLayout(layout);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.horizontalSpan = 5;
+ group.setLayoutData(gd);
+
+ // Labels
+ Label label = new Label(group, SWT.LEFT);
+ label.setText("Status");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Resolution");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Severity");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Priority");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("Hardware");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText("OS");
+
+ // Lists
+ status = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = 40;
+ status.setLayoutData(gd);
+
+ resolution = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = 40;
+ resolution.setLayoutData(gd);
+
+ severity = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = 40;
+ severity.setLayoutData(gd);
+
+ priority = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = 40;
+ priority.setLayoutData(gd);
+
+ hardware = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = 40;
+ hardware.setLayoutData(gd);
+
+ os = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.heightHint = 40;
+ os.setLayoutData(gd);
+
+ return group;
+ }
+
+ protected Text daysText;
+
+ protected Control createLastDays(Composite control) {
+ GridLayout layout;
+ GridData gd;
+
+ Group group = new Group(control, SWT.NONE);
+ layout = new GridLayout(6, false);
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ Label label = new Label(group, SWT.LEFT);
+ label.setText("Only bugs changed in the last ");
+
+ // operation combo
+ daysText = new Text(group, SWT.BORDER);
+ daysText.setTextLimit(5);
+ GridData daysLayoutData = new GridData();
+ daysLayoutData.widthHint = 30;
+ daysText.setLayoutData(daysLayoutData);
+ daysText.addListener(SWT.Modify, this);
+ // daysText.addFocusListener(new FocusListener() {
+ //
+ // public void focusGained(FocusEvent e) {
+ // // ignore
+ //
+ // }
+ //
+ // public void focusLost(FocusEvent e) {
+ // String days = daysText.getText();
+ // if (days.length() == 0)
+ // return;
+ // try {
+ // if (Integer.parseInt(days) < 0) {
+ // daysText.setText("");
+ // }
+ // } catch (NumberFormatException ex) {
+ // daysText.setText("");
+ // }
+ // }
+ // });
+
+ // daysText.addModifyListener(new ModifyListener() {
+ // public void modifyText(ModifyEvent e) {
+ // String days = daysText.getText();
+ // if (days.length() == 0)
+ // return;
+ // for (int i = days.length() - 1; i >= 0; i--) {
+ // try {
+ // if (days.equals("") || Integer.parseInt(days) > -1) {
+ // if (i == days.length() - 1)
+ // return;
+ // else
+ // break;
+ // }
+ // } catch (NumberFormatException ex) {
+ // days = days.substring(0, i);
+ // }
+ // }
+ // daysText.setText(days);
+ // }
+ // });
+ label = new Label(group, SWT.LEFT);
+ label.setText(" days.");
+
+ label = new Label(group, SWT.LEFT);
+ label.setText(" Show a maximum of ");
+
+ // operation combo
+ maxHitsText = new Text(group, SWT.BORDER);
+ maxHitsText.setTextLimit(6);
+ maxHitsText.addListener(SWT.Modify, this);
+
+ // maxHitsText.addFocusListener(new FocusListener() {
+ //
+ // public void focusGained(FocusEvent e) {
+ // // ignore
+ //
+ // }
+ //
+ // public void focusLost(FocusEvent e) {
+ // String maxHitss = maxHitsText.getText();
+ // if (maxHitss.length() == 0)
+ // return;
+ //
+ // try {
+ // if (Integer.parseInt(maxHitss) < 0) {
+ // maxHitsText.setText(MAX_HITS);
+ //
+ // }
+ // } catch (NumberFormatException ex) {
+ // maxHitsText.setText(MAX_HITS);
+ // }
+ // }
+ // });
+
+ // maxHitsText.addModifyListener(new ModifyListener() {
+ // public void modifyText(ModifyEvent e) {
+ // String maxHitss = maxHitsText.getText();
+ // if (maxHitss.length() == 0)
+ // return;
+ // for (int i = maxHitss.length() - 1; i >= 0; i--) {
+ // try {
+ // if (maxHitss.equals("") || Integer.parseInt(maxHitss) > -1) {
+ // if (i == maxHitss.length() - 1) {
+ // maxHits = maxHitss;
+ // return;
+ // } else {
+ // break;
+ // }
+ // }
+ // } catch (NumberFormatException ex) {
+ // maxHitss = maxHitss.substring(0, i);
+ // }
+ // }
+ //
+ // BugzillaSearchPage.this.maxHits = maxHitss;
+ // }
+ // });
+ gd = new GridData();
+ gd.widthHint = 30;
+ maxHitsText.setLayoutData(gd);
+ label = new Label(group, SWT.LEFT);
+ label.setText(" hits.");
+
+ maxHits = MAX_HITS;
+ maxHitsText.setText(maxHits);
+
+ return group;
+ }
+
+ // protected Control createMaxHits(Composite control) {
+ // GridLayout layout;
+ // GridData gd;
+ //
+ // Group group = new Group(control, SWT.NONE);
+ // layout = new GridLayout(3, false);
+ // group.setLayout(layout);
+ // group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ // gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL |
+ // GridData.GRAB_HORIZONTAL);
+ // gd.horizontalSpan = 2;
+ // group.setLayoutData(gd);
+ //
+ // Label label = new Label(group, SWT.LEFT);
+ // label.setText("Show a maximum of ");
+ //
+ // // operation combo
+ // maxHitsText = new Text(group, SWT.BORDER);
+ // maxHitsText.setTextLimit(5);
+ // maxHitsText.addModifyListener(new ModifyListener() {
+ // public void modifyText(ModifyEvent e) {
+ // String maxHitss = maxHitsText.getText();
+ // if (maxHitss.length() == 0)
+ // return;
+ // for (int i = maxHitss.length() - 1; i >= 0; i--) {
+ // try {
+ // if (maxHitss.equals("") || Integer.parseInt(maxHitss) > -1) {
+ // if (i == maxHitss.length() - 1) {
+ // maxHits = maxHitss;
+ // return;
+ // } else {
+ // break;
+ // }
+ // }
+ // } catch (NumberFormatException ex) {
+ // maxHitss = maxHitss.substring(0, i);
+ // }
+ // }
+ //
+ // BugzillaSearchPage.this.maxHits = maxHitss;
+ // }
+ // });
+ // gd = new GridData();
+ // gd.widthHint = 20;
+ // maxHitsText.setLayoutData(gd);
+ // label = new Label(group, SWT.LEFT);
+ // label.setText(" Hits. (-1 means all hits are returned)");
+ //
+ // maxHits = "100";
+ // maxHitsText.setText(maxHits);
+ //
+ // return group;
+ // }
+
+ public String getMaxHits() {
+ return maxHitsText.getText();
+ }
+
+ private static final String[] emailText = { "bug owner", "reporter", "CC list", "commenter" };
+
+ protected Control createEmail(Composite control) {
+ GridLayout layout;
+ GridData gd;
+
+ Group group = new Group(control, SWT.NONE);
+ layout = new GridLayout(7, false);
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ Label label = new Label(group, SWT.LEFT);
+ label.setText("Email: ");
+
+ // pattern combo
+ emailPattern = new Combo(group, SWT.SINGLE | SWT.BORDER);
+ emailPattern.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ if (scontainer != null) {
+ scontainer.setPerformActionEnabled(canQuery());
+ }
+ }
+ });
+ emailPattern.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleWidgetSelected(emailPattern, emailOperation, previousEmailPatterns);
+ }
+ });
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ emailPattern.setLayoutData(gd);
+
+ // operation combo
+ emailOperation = new Combo(group, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
+ emailOperation.setItems(emailOperationText);
+ emailOperation.setText(emailOperationText[0]);
+ emailOperation.select(0);
+
+ // Composite buttons = new Composite(group, SWT.NONE);
+ // layout = new GridLayout(4, false);
+ // buttons.setLayout(layout);
+ // buttons.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ // gd = new GridData(GridData.BEGINNING);
+ // gd.horizontalSpan = 3;
+ // buttons.setLayoutData(gd);
+
+ emailButton = new Button[emailText.length];
+ for (int i = 0; i < emailButton.length; i++) {
+ Button button = new Button(group, SWT.CHECK);
+ button.setText(emailText[i]);
+ emailButton[i] = button;
+ }
+
+ return group;
+ }
+
+ /**
+ * Creates the buttons for remembering a query and accessing previously
+ * saved queries.
+ */
+ protected Control createSaveQuery(Composite control) {
+ GridLayout layout;
+ GridData gd;
+
+ Group group = new Group(control, SWT.NONE);
+ layout = new GridLayout(3, false);
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ // loadButton = new Button(group, SWT.PUSH | SWT.LEFT);
+ // loadButton.setText("Saved Queries...");
+ // final BugzillaSearchPage bsp = this;
+ // loadButton.addSelectionListener(new SelectionAdapter() {
+ //
+ // @Override
+ // public void widgetSelected(SelectionEvent event) {
+ // GetQueryDialog qd = new GetQueryDialog(getShell(), "Saved Queries",
+ // input);
+ // if (qd.open() == InputDialog.OK) {
+ // selIndex = qd.getSelected();
+ // if (selIndex != -1) {
+ // rememberedQuery = true;
+ // performAction();
+ // bsp.getShell().close();
+ // }
+ // }
+ // }
+ // });
+ // loadButton.setEnabled(true);
+ // loadButton.setLayoutData(new
+ // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+ //
+ // saveButton = new Button(group, SWT.PUSH | SWT.LEFT);
+ // saveButton.setText("Remember...");
+ // saveButton.addSelectionListener(new SelectionAdapter() {
+ //
+ // @Override
+ // public void widgetSelected(SelectionEvent event) {
+ // SaveQueryDialog qd = new SaveQueryDialog(getShell(), "Remember
+ // Query");
+ // if (qd.open() == InputDialog.OK) {
+ // String qName = qd.getText();
+ // if (qName != null && qName.compareTo("") != 0) {
+ // try {
+ // input.add(getQueryParameters().toString(), qName,
+ // summaryPattern.getText());
+ // } catch (UnsupportedEncodingException e) {
+ // /*
+ // * Do nothing. Every implementation of the Java
+ // * platform is required to support the standard
+ // * charset "UTF-8"
+ // */
+ // }
+ // }
+ // }
+ // }
+ // });
+ // saveButton.setEnabled(true);
+ // saveButton.setLayoutData(new
+ // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+
+ return group;
+ }
+
+ public static SavedQueryFile getInput() {
+ return input;
+ }
+
+ protected Control createUpdate(final Composite control) {
+ GridData gd;
+ // Label label;
+
+ Composite group = new Composite(control, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ gd = new GridData(GridData.BEGINNING);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ // Info text
+ // label = new Label(group, SWT.LEFT);
+ // label.setText("Update search options from server:");
+ // gd = new GridData(GridData.BEGINNING);
+ // label.setLayoutData(gd);
+
+ updateButton = new Button(group, SWT.PUSH);
+ updateButton.setText("Update Attributes from Repository");
+
+ updateButton.setLayoutData(new GridData());
+
+ updateButton.addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ if (repository != null) {
+ updateAttributesFromRepository(repository.getUrl(), true);
+ } else {
+ MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
+ IBugzillaConstants.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
+ }
+ }
+ });
+
+ return group;
+ }
+
+ private void handleWidgetSelected(Combo widget, Combo operation, ArrayList<BugzillaSearchData> history) {
+ if (widget.getSelectionIndex() < 0)
+ return;
+ int index = history.size() - 1 - widget.getSelectionIndex();
+ BugzillaSearchData patternData = history.get(index);
+ if (patternData == null || !widget.getText().equals(patternData.pattern))
+ return;
+ widget.setText(patternData.pattern);
+ operation.setText(operation.getItem(patternData.operation));
+ }
+
+ public boolean performAction() {
+ if (repository == null) {
+ MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
+ IBugzillaConstants.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
+ return false;
+ }
+
+ getPatternData(summaryPattern, summaryOperation, previousSummaryPatterns);
+ getPatternData(commentPattern, commentOperation, previousCommentPatterns);
+ getPatternData(this.emailPattern, emailOperation, previousEmailPatterns);
+
+ String summaryText;
+ String queryUrl;
+ if (rememberedQuery == true) {
+ queryUrl = getQueryURL(repository, new StringBuffer(input.getQueryParameters(selIndex)));
+ summaryText = input.getSummaryText(selIndex);
+ } else {
+ try {
+ StringBuffer params = getQueryParameters();
+ queryUrl = getQueryURL(repository, params);
+ summaryText = summaryPattern.getText();
+ } catch (UnsupportedEncodingException e) {
+ /*
+ * These statements should never be executed. Every
+ * implementation of the Java platform is required to support
+ * the standard charset "UTF-8"
+ */
+ queryUrl = "";
+ summaryText = "";
+ }
+ }
+
+ try {
+ // if the summary contains a single bug id, open the bug directly
+ int id = Integer.parseInt(summaryText);
+ return BugzillaUITools.show(repository.getUrl(), id);
+ } catch (NumberFormatException ignored) {
+ // ignore this since this means that the text is not a bug id
+ }
+
+ // Don't activate the search result view until it is known that the
+ // user is not opening a bug directly -- there is no need to open
+ // the view if no searching is going to take place.
+ NewSearchUI.activateSearchResultView();
+
+ BugzillaPlugin.getDefault().getPreferenceStore().setValue(IBugzillaConstants.MOST_RECENT_QUERY, summaryText);
+
+ IBugzillaSearchResultCollector collector = new BugzillaSearchResultCollector();
+
+ IBugzillaSearchOperation op = new BugzillaSearchOperation(repository, queryUrl, collector, maxHits);
+
+ BugzillaSearchQuery searchQuery = new BugzillaSearchQuery(op);
+ NewSearchUI.runQueryInBackground(searchQuery);
+
+ return true;
+ }
+
+ /**
+ * @see ISearchPage#setContainer(ISearchPageContainer)
+ */
+ public void setContainer(ISearchPageContainer container) {
+ scontainer = container;
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ if (visible && summaryPattern != null) {
+ if (firstTime) {
+ firstTime = false;
+ // Set item and text here to prevent page from resizing
+ for (String searchPattern : getPreviousPatterns(previousSummaryPatterns)) {
+ summaryPattern.add(searchPattern);
+ }
+ // summaryPattern.setItems(getPreviousPatterns(previousSummaryPatterns));
+ for (String comment : getPreviousPatterns(previousCommentPatterns)) {
+ commentPattern.add(comment);
+ }
+ // commentPattern.setItems(getPreviousPatterns(previousCommentPatterns));
+ for (String email : getPreviousPatterns(previousEmailPatterns)) {
+ emailPattern.add(email);
+ }
+ // emailPattern.setItems(getPreviousPatterns(previousEmailPatterns));
+
+ // TODO: update status, resolution, severity etc if possible...
+
+ if (repository == null) {
+ repository = MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(
+ BugzillaPlugin.REPOSITORY_KIND);
+ }
+ Set<TaskRepository> repositories = MylarTaskListPlugin.getRepositoryManager().getRepositories(
+ BugzillaPlugin.REPOSITORY_KIND);
+ String[] repositoryUrls = new String[repositories.size()];
+ int i = 0;
+ int indexToSelect = 0;
+ for (Iterator<TaskRepository> iter = repositories.iterator(); iter.hasNext();) {
+ TaskRepository currRepsitory = iter.next();
+ // if (i == 0 && repository == null) {
+ // repository = currRepsitory;
+ // indexToSelect = 0;
+ // }
+ if (repository != null && repository.equals(currRepsitory)) {
+ indexToSelect = i;
+ }
+ repositoryUrls[i] = currRepsitory.getUrl();
+ i++;
+ }
+
+ if (repository != null) {
+ updateAttributesFromRepository(repository.getUrl(), false);
+ }
+ if (repositoryCombo != null) {
+ repositoryCombo.setItems(repositoryUrls);
+ if (repositoryUrls.length == 0) {
+ MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
+ IBugzillaConstants.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
+ } else {
+ repositoryCombo.select(indexToSelect);
+ updateAttributesFromRepository(repositoryCombo.getItem(indexToSelect), false);
+ }
+ }
+ if (originalQuery != null) {
+ try {
+ updateDefaults(originalQuery.getQueryUrl(), String.valueOf(originalQuery.getMaxHits()));
+ } catch (UnsupportedEncodingException e) {
+ // ignore
+ }
+ }
+ }
+ if (scontainer != null) {
+ scontainer.setPerformActionEnabled(canQuery());
+ }
+ summaryPattern.setFocus();
+
+ }
+ super.setVisible(visible);
+ }
+
+ /**
+ * Returns <code>true</code> if at least some parameter is given to query
+ * on.
+ */
+ private boolean canQuery() {
+ return product.getSelectionCount() > 0 || component.getSelectionCount() > 0 || version.getSelectionCount() > 0
+ || target.getSelectionCount() > 0 || status.getSelectionCount() > 0
+ || resolution.getSelectionCount() > 0 || severity.getSelectionCount() > 0
+ || priority.getSelectionCount() > 0 || hardware.getSelectionCount() > 0 || os.getSelectionCount() > 0
+ || summaryPattern.getText().length() > 0 || commentPattern.getText().length() > 0
+ || emailPattern.getText().length() > 0;
+ }
+
+ /**
+ * Return search pattern data and update search history list. An existing
+ * entry will be updated or a new one created.
+ */
+ private BugzillaSearchData getPatternData(Combo widget, Combo operation,
+ ArrayList<BugzillaSearchData> previousSearchQueryData) {
+ String pattern = widget.getText();
+ if (pattern == null || pattern.trim().equals("")) {
+ return null;
+ }
+ BugzillaSearchData match = null;
+ int i = previousSearchQueryData.size() - 1;
+ while (i >= 0) {
+ match = previousSearchQueryData.get(i);
+ if (pattern.equals(match.pattern)) {
+ break;
+ }
+ i--;
+ }
+ if (i >= 0) {
+ match.operation = operation.getSelectionIndex();
+ // remove - will be added last (see below)
+ previousSearchQueryData.remove(match);
+ } else {
+ match = new BugzillaSearchData(widget.getText(), operation.getSelectionIndex());
+ }
+ previousSearchQueryData.add(match);
+ return match;
+ }
+
+ /**
+ * Returns an array of previous summary patterns
+ */
+ private String[] getPreviousPatterns(ArrayList<BugzillaSearchData> patternHistory) {
+ int size = patternHistory.size();
+ String[] patterns = new String[size];
+ for (int i = 0; i < size; i++)
+ patterns[i] = (patternHistory.get(size - 1 - i)).pattern;
+ return patterns;
+ }
+
+ public String getSearchURL(TaskRepository repository) {
+ try {
+ if (rememberedQuery) {
+ return getQueryURL(repository, new StringBuffer(input.getQueryParameters(selIndex)));
+ } else {
+ return getQueryURL(repository, getQueryParameters());
+ }
+ } catch (UnsupportedEncodingException e) {
+ // ignore
+ }
+ return "";
+ }
+
+ protected String getQueryURL(TaskRepository repository, StringBuffer params) {
+ StringBuffer url = new StringBuffer(getQueryURLStart(repository).toString());
+ url.append(params);
+
+ // HACK make sure that the searches come back sorted by priority. This
+ // should be a search opetion though
+ url.append("&order=Importance");
+ return url.toString();
+ }
+
+ /**
+ * Creates the bugzilla query URL start.
+ *
+ * Example: https://bugs.eclipse.org/bugs/buglist.cgi?
+ */
+ private StringBuffer getQueryURLStart(TaskRepository repository) {
+ // StringBuffer sb = new
+ // StringBuffer(BugzillaPlugin.getDefault().getServerName());
+ StringBuffer sb = new StringBuffer(repository.getUrl());
+
+ if (sb.charAt(sb.length() - 1) != '/') {
+ sb.append('/');
+ }
+ sb.append("buglist.cgi?");
+
+ // use the username and password if we have it
+ if (repository.hasCredentials()) {
+ try {
+ sb.append("GoAheadAndLogIn=1&Bugzilla_login="
+ + URLEncoder.encode(repository.getUserName(), BugzillaPlugin.ENCODING_UTF_8)
+ + "&Bugzilla_password="
+ + URLEncoder.encode(repository.getPassword(), BugzillaPlugin.ENCODING_UTF_8) + "&");
+ } catch (UnsupportedEncodingException e) {
+ MylarStatusHandler.fail(e, "unsupported encoding", false);
+ }
+ }
+
+ return sb;
+ }
+
+ /**
+ * Goes through the query form and builds up the query parameters.
+ *
+ * Example: short_desc_type=substring&amp;short_desc=bla&amp; ...
+ *
+ * @throws UnsupportedEncodingException
+ */
+ protected StringBuffer getQueryParameters() throws UnsupportedEncodingException {
+ StringBuffer sb = new StringBuffer();
+
+ sb.append("short_desc_type=");
+ sb.append(patternOperationValues[summaryOperation.getSelectionIndex()]);
+
+ sb.append("&short_desc=");
+ sb.append(URLEncoder.encode(summaryPattern.getText(), "UTF-8"));
+
+ int[] selected = product.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&product=");
+ sb.append(URLEncoder.encode(product.getItem(selected[i]), "UTF-8"));
+ }
+
+ selected = component.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&component=");
+ sb.append(URLEncoder.encode(component.getItem(selected[i]), "UTF-8"));
+ }
+
+ selected = version.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&version=");
+ sb.append(URLEncoder.encode(version.getItem(selected[i]), "UTF-8"));
+ }
+
+ selected = target.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&target_milestone=");
+ sb.append(URLEncoder.encode(target.getItem(selected[i]), "UTF-8"));
+ }
+
+ sb.append("&long_desc_type=");
+ sb.append(patternOperationValues[commentOperation.getSelectionIndex()]);
+ sb.append("&long_desc=");
+ sb.append(URLEncoder.encode(commentPattern.getText(), "UTF-8"));
+
+ selected = status.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&bug_status=");
+ sb.append(status.getItem(selected[i]));
+ }
+
+ selected = resolution.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&resolution=");
+ sb.append(resolution.getItem(selected[i]));
+ }
+
+ selected = severity.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&bug_severity=");
+ sb.append(severity.getItem(selected[i]));
+ }
+
+ selected = priority.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&priority=");
+ sb.append(priority.getItem(selected[i]));
+ }
+
+ selected = hardware.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&ref_platform=");
+ sb.append(URLEncoder.encode(hardware.getItem(selected[i]), "UTF-8"));
+ }
+
+ selected = os.getSelectionIndices();
+ for (int i = 0; i < selected.length; i++) {
+ sb.append("&op_sys=");
+ sb.append(URLEncoder.encode(os.getItem(selected[i]), "UTF-8"));
+ }
+
+ if (emailPattern.getText() != null) {
+ for (int i = 0; i < emailButton.length; i++) {
+ if (emailButton[i].getSelection()) {
+ sb.append("&");
+ sb.append(emailRoleValues[i]);
+ sb.append("=1");
+ }
+ }
+ sb.append("&emailtype1=");
+ sb.append(emailOperationValues[emailOperation.getSelectionIndex()]);
+ sb.append("&email1=");
+ sb.append(URLEncoder.encode(emailPattern.getText(), "UTF-8"));
+ }
+
+ if (daysText.getText() != null && !daysText.getText().equals("")) {
+ try {
+ Integer.parseInt(daysText.getText());
+ sb.append("&changedin=");
+ sb.append(URLEncoder.encode(daysText.getText(), "UTF-8"));
+ } catch (NumberFormatException ignored) {
+ // this means that the days is not a number, so don't worry
+ }
+ }
+
+ return sb;
+ }
+
+ // --------------- Configuration handling --------------
+
+ // Dialog store id constants
+ protected final static String PAGE_NAME = "BugzillaSearchPage"; //$NON-NLS-1$
+
+ protected Combo summaryOperation;
+
+ protected List product;
+
+ protected List os;
+
+ protected List hardware;
+
+ protected List priority;
+
+ protected List severity;
+
+ protected List resolution;
+
+ protected List status;
+
+ protected Combo commentOperation;
+
+ protected Combo commentPattern;
+
+ protected List component;
+
+ protected List version;
+
+ protected List target;
+
+ protected Combo emailOperation;
+
+ protected Combo emailPattern;
+
+ protected Button[] emailButton;
+
+ /** File containing saved queries */
+ protected static SavedQueryFile input;
+
+ // /** "Remember query" button */
+ // protected Button saveButton;
+
+ // /** "Saved queries..." button */
+ // protected Button loadButton;
+
+ /** Run a remembered query */
+ protected boolean rememberedQuery = false;
+
+ /** Index of the saved query to run */
+ protected int selIndex;
+
+ protected Button updateButton;
+
+ protected ProgressMonitorDialog monitorDialog = new ProgressMonitorDialog(BugzillaPlugin.getDefault()
+ .getWorkbench().getActiveWorkbenchWindow().getShell());
+
+ public IDialogSettings getDialogSettings() {
+ IDialogSettings settings = BugzillaPlugin.getDefault().getDialogSettings();
+ fDialogSettings = settings.getSection(PAGE_NAME);
+ if (fDialogSettings == null)
+ fDialogSettings = settings.addNewSection(PAGE_NAME);
+ return fDialogSettings;
+ }
+
+ /**
+ * Initializes itself from the stored page settings.
+ */
+ private void readConfiguration() {
+ getDialogSettings();
+ }
+
+ private void updateAttributesFromRepository(String repositoryUrl, boolean connect) {
+ monitorDialog.open();
+ IProgressMonitor monitor = monitorDialog.getProgressMonitor();
+ monitor.beginTask("Updating search options...", 55);
+
+ try {
+ // TaskRepository repository =
+ // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(
+ // BugzillaPlugin.REPOSITORY_KIND);
+ // String repositoryUrl = repository.getUrl();
+ if (connect) {
+ BugzillaRepositoryUtil.updateQueryOptions(repository, monitor);
+ }
+ product.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT, repositoryUrl));
+ monitor.worked(1);
+
+ component.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_COMPONENT,
+ repositoryUrl));
+ monitor.worked(1);
+
+ version.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_VERSION, repositoryUrl));
+ monitor.worked(1);
+
+ target.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_TARGET, repositoryUrl));
+ monitor.worked(1);
+
+ status.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_STATUS, repositoryUrl));
+ monitor.worked(1);
+
+// status.setSelection(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUSE_STATUS_PRESELECTED,
+// repositoryUrl));
+ monitor.worked(1);
+
+ resolution.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_RESOLUTION,
+ repositoryUrl));
+ monitor.worked(1);
+
+ severity
+ .setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_SEVERITY, repositoryUrl));
+ monitor.worked(1);
+
+ priority
+ .setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRIORITY, repositoryUrl));
+ monitor.worked(1);
+
+ hardware
+ .setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_HARDWARE, repositoryUrl));
+ monitor.worked(1);
+
+ os.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_OS, repositoryUrl));
+ monitor.worked(1);
+ } catch (LoginException exception) {
+ // we had a problem that seems to have been caused from bad
+ // login info
+ MessageDialog
+ .openError(
+ null,
+ "Login Error",
+ "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. ");
+ // BugzillaPlugin.log(exception);
+ } catch (IOException e) {
+ MessageDialog.openError(null, "Connection Error", e.getMessage()
+ + "\nPlease check your settings in the bugzilla preferences. ");
+ } finally {
+ monitor.done();
+ monitorDialog.close();
+ }
+ }
+
+ public TaskRepository getRepository() {
+ return repository;
+ }
+
+ public void setRepository(TaskRepository repository) {
+ this.repository = repository;
+ }
+
+ public boolean canFlipToNextPage() {
+ // if (getErrorMessage() != null)
+ // return false;
+ //
+ // return true;
+ return false;
+ }
+
+ public void handleEvent(Event event) {
+ String message = null;
+ if (event.widget == daysText) {
+ String days = daysText.getText();
+ if (days.length() > 0) {
+ try {
+ if (Integer.parseInt(days) < 0) {
+ message = NUM_DAYS_POSITIVE + days + " is invalid.";
+ }
+ } catch (NumberFormatException ex) {
+ message = NUM_DAYS_POSITIVE + days + " is invalid.";
+ }
+ }
+ } else if (event.widget == maxHitsText) {
+ String maxHitss = maxHitsText.getText();
+ if (maxHitss.length() == 0) {
+ message = MAX_HITS_GREATER;
+ } else {
+ try {
+ if (Integer.parseInt(maxHitss) < -1 || Integer.parseInt(maxHitss) == 0) {
+ message = MAX_HITS_GREATER;
+ }
+ } catch (NumberFormatException ex) {
+ message = MAX_HITS_GREATER;
+ }
+ }
+ }
+
+ setPageComplete(message == null);
+ setErrorMessage(message);
+ if(getWizard() != null) {
+ getWizard().getContainer().updateButtons();
+ }
+ }
+
+ /**
+ * TODO: get rid of this?
+ */
+ public void updateDefaults(String startingUrl, String maxHits) throws UnsupportedEncodingException {
+ // String serverName = startingUrl.substring(0,
+ // startingUrl.indexOf("?"));
+
+ startingUrl = startingUrl.substring(startingUrl.indexOf("?") + 1);
+ String[] options = startingUrl.split("&");
+ for (String option : options) {
+ String key = option.substring(0, option.indexOf("="));
+ String value = URLDecoder.decode(option.substring(option.indexOf("=") + 1), "UTF-8");
+ if (key == null)
+ continue;
+
+ if (key.equals("short_desc")) {
+ summaryPattern.setText(value);
+ } else if (key.equals("short_desc_type")) {
+ if (value.equals("allwordssubstr"))
+ value = "all words";
+ else if (value.equals("anywordssubstr"))
+ value = "any word";
+ int index = 0;
+ for (String item : summaryOperation.getItems()) {
+ if (item.compareTo(value) == 0)
+ break;
+ index++;
+ }
+ if (index < summaryOperation.getItemCount()) {
+ summaryOperation.select(index);
+ }
+ } else if (key.equals("product")) {
+ String[] sel = product.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ product.setSelection(selList.toArray(sel));
+ } else if (key.equals("component")) {
+ String[] sel = component.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ component.setSelection(selList.toArray(sel));
+ } else if (key.equals("version")) {
+ String[] sel = version.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ version.setSelection(selList.toArray(sel));
+ } else if (key.equals("target_milestone")) { // XXX
+ String[] sel = target.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ target.setSelection(selList.toArray(sel));
+ } else if (key.equals("version")) {
+ String[] sel = version.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ version.setSelection(selList.toArray(sel));
+ } else if (key.equals("long_desc_type")) {
+ if (value.equals("allwordssubstr"))
+ value = "all words";
+ else if (value.equals("anywordssubstr"))
+ value = "any word";
+ int index = 0;
+ for (String item : commentOperation.getItems()) {
+ if (item.compareTo(value) == 0)
+ break;
+ index++;
+ }
+ if (index < commentOperation.getItemCount()) {
+ commentOperation.select(index);
+ }
+ } else if (key.equals("long_desc")) {
+ commentPattern.setText(value);
+ } else if (key.equals("bug_status")) {
+ String[] sel = status.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ status.setSelection(selList.toArray(sel));
+ } else if (key.equals("resolution")) {
+ String[] sel = resolution.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ resolution.setSelection(selList.toArray(sel));
+ } else if (key.equals("bug_severity")) {
+ String[] sel = severity.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ severity.setSelection(selList.toArray(sel));
+ } else if (key.equals("priority")) {
+ String[] sel = priority.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ priority.setSelection(selList.toArray(sel));
+ } else if (key.equals("ref_platform")) {
+ String[] sel = hardware.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ hardware.setSelection(selList.toArray(sel));
+ } else if (key.equals("op_sys")) {
+ String[] sel = os.getSelection();
+ java.util.List<String> selList = Arrays.asList(sel);
+ selList = new ArrayList<String>(selList);
+ selList.add(value);
+ sel = new String[selList.size()];
+ os.setSelection(selList.toArray(sel));
+ } else if (key.equals("emailassigned_to1")) { // HACK: email
+ // buttons
+ // assumed to be
+ // in same
+ // position
+ if (value.equals("1"))
+ emailButton[0].setSelection(true);
+ else
+ emailButton[0].setSelection(false);
+ } else if (key.equals("emailreporter1")) { // HACK: email
+ // buttons assumed
+ // to be in same
+ // position
+ if (value.equals("1"))
+ emailButton[1].setSelection(true);
+ else
+ emailButton[1].setSelection(false);
+ } else if (key.equals("emailcc1")) { // HACK: email buttons
+ // assumed to be in same
+ // position
+ if (value.equals("1"))
+ emailButton[2].setSelection(true);
+ else
+ emailButton[2].setSelection(false);
+ } else if (key.equals("emaillongdesc1")) { // HACK: email
+ // buttons assumed
+ // to be in same
+ // position
+ if (value.equals("1"))
+ emailButton[3].setSelection(true);
+ else
+ emailButton[3].setSelection(false);
+ } else if (key.equals("emailtype1")) {
+ int index = 0;
+ for (String item : emailOperation.getItems()) {
+ if (item.compareTo(value) == 0)
+ break;
+ index++;
+ }
+ if (index < emailOperation.getItemCount()) {
+ emailOperation.select(index);
+ }
+ } else if (key.equals("email1")) {
+ emailPattern.setText(value);
+ } else if (key.equals("changedin")) {
+ daysText.setText(value);
+ }
+ }
+ this.maxHits = maxHits;
+ maxHitsText.setText(maxHits);
+ }
+
+ @Override
+ public BugzillaRepositoryQuery getQuery() {
+ if (originalQuery == null) {
+ try {
+ originalQuery = new BugzillaRepositoryQuery(repository.getUrl(), getQueryURL(repository,
+ getQueryParameters()), getQueryTitle(), getMaxHits(), MylarTaskListPlugin.getTaskListManager()
+ .getTaskList());
+ } catch (UnsupportedEncodingException e) {
+ return null;
+ }
+
+ } else {
+ try {
+ originalQuery.setQueryUrl(getQueryURL(repository, getQueryParameters()));
+ originalQuery.setMaxHits(Integer.parseInt(getMaxHits()));
+
+ } catch (UnsupportedEncodingException e) {
+ return null;
+ }
+ }
+ return originalQuery;
+ }
+
+// @Override
+// public boolean isPageComplete() {
+// return super.canFlipToNextPage();
+// }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java
new file mode 100644
index 000000000..ea68d7634
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Rob Elves
+ */
+public abstract class AbstractBugzillaQueryPage extends WizardPage {
+
+ private static final String TITLE_QUERY_TITLE = "Query Title";
+
+ private Text title;
+
+ private String titleString = "";
+
+ public AbstractBugzillaQueryPage(String wizardTitle) {
+ this(wizardTitle, "");
+ }
+
+ public AbstractBugzillaQueryPage(String wizardTitle, String queryTitle) {
+ super(wizardTitle);
+ titleString = queryTitle;
+ }
+
+ public void createControl(Composite parent) {
+
+ createTitleGroup(parent);
+
+ }
+
+ private void createTitleGroup(Composite composite) {
+ Group group = new Group(composite, SWT.NONE);
+ group.setText(TITLE_QUERY_TITLE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ group.setLayout(layout);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ group.setLayoutData(gd);
+
+ title = new Text(group, SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ title.setLayoutData(gd);
+ title.setText(titleString);
+
+ title.addKeyListener(new KeyListener() {
+
+ public void keyPressed(KeyEvent e) {
+ // ignore
+
+ }
+
+ public void keyReleased(KeyEvent e) {
+ setPageComplete(canFlipToNextPage());
+
+ }
+ });
+ }
+
+ public boolean canFlipToNextPage() {
+ if (getErrorMessage() != null || !isPageComplete())
+ return false;
+
+ return true;
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ if (title != null && !title.getText().equals("")) {
+ return true;
+ }
+ return false;
+ }
+
+ public String getQueryTitle() {
+ return title.getText();
+ }
+
+ public abstract BugzillaRepositoryQuery getQuery();
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java
new file mode 100644
index 000000000..e241421b0
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Rob Elves
+ */
+public class BugzillaCustomQueryWizardPage extends AbstractBugzillaQueryPage {
+
+ private static final String LABEL_CUSTOM_QUERY = "Custom Query";
+
+ private static final String TITLE = "Create query from URL";
+
+ private static final String DESCRIPTION = "Enter the name and URL for the query";
+
+ private Text queryText;
+
+ private Composite composite;
+
+ private BugzillaRepositoryQuery query;
+
+ private TaskRepository repository;
+
+ public BugzillaCustomQueryWizardPage(TaskRepository repository, BugzillaRepositoryQuery query) {
+ super(TITLE, query.getDescription());
+ this.query = query;
+ this.repository = repository;
+ setTitle(LABEL_CUSTOM_QUERY);
+ setDescription(DESCRIPTION);
+ }
+
+ public BugzillaCustomQueryWizardPage(TaskRepository repository) {
+ super(TITLE);
+ this.repository = repository;
+ setTitle(LABEL_CUSTOM_QUERY);
+ setDescription(DESCRIPTION);
+ }
+
+ public void createControl(Composite parent) {
+ composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout());
+
+ super.createControl(composite);
+ createCustomQueryGroup(composite);
+ composite.pack();
+ setControl(composite);
+ }
+
+ private void createCustomQueryGroup(Composite composite) {
+ Group group = new Group(composite, SWT.NONE);
+ group.setText(LABEL_CUSTOM_QUERY);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ group.setLayout(layout);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ gd.widthHint = 300;
+ group.setLayoutData(gd);
+
+ queryText = new Text(group, SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ queryText.setLayoutData(gd);
+
+ if (query != null) {
+ queryText.setText(query.getQueryUrl());
+ }
+
+ queryText.addKeyListener(new KeyListener() {
+
+ public void keyPressed(KeyEvent e) {
+ // ignore
+
+ }
+
+ public void keyReleased(KeyEvent e) {
+ setPageComplete(canFlipToNextPage());
+
+ }
+ });
+
+ }
+
+ public boolean canFlipToNextPage() {
+ return false;
+ }
+
+// @Override
+// public boolean isPageComplete() {
+// return super.canFlipToNextPage();
+// }
+
+// @Override
+// public IWizardPage getNextPage() {
+// return null;
+// }
+
+ @Override
+ public BugzillaRepositoryQuery getQuery() {
+ if (query == null) {
+ query = new BugzillaRepositoryQuery(repository.getUrl(), queryText.getText(), this.getQueryTitle(), "-1",
+ MylarTaskListPlugin.getTaskListManager().getTaskList());
+ query.setCustomQuery(true);
+ } else {
+ query.setQueryUrl(queryText.getText());
+ }
+ return query;
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java
new file mode 100644
index 000000000..a6f0d3d6c
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Rob Elves
+ */
+public class BugzillaQueryTypeWizardPage extends WizardPage {
+
+ private static final String BUTTON_LABEL_QUERY = "Create query from URL";
+
+ private static final String BUTTON_LABEL_FORM = "Create query using form";
+
+ private static final String TITLE = "Choose Bugzilla query type";
+
+ private static final String DESCRIPTION = "Select query type below.";
+
+ private Button buttonCustom;
+
+ private Button buttonForm;
+
+ private Composite composite;
+
+ private BugzillaCustomQueryWizardPage customPage;
+
+ private BugzillaSearchPage searchPage;
+
+ public BugzillaQueryTypeWizardPage(TaskRepository repository) {
+ super(TITLE);
+ setTitle(TITLE);
+ setDescription(DESCRIPTION);
+ customPage = new BugzillaCustomQueryWizardPage(repository);
+ searchPage = new BugzillaSearchPage(repository);
+
+
+ }
+
+ public void createControl(Composite parent) {
+ composite = new Composite(parent, SWT.NONE);
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+ gridData.grabExcessVerticalSpace = false;
+ composite.setLayoutData(gridData);
+ composite.setLayout(new GridLayout(1, false));
+
+ buttonForm = new Button(composite, SWT.RADIO);
+ buttonForm.setText(BUTTON_LABEL_FORM);
+ buttonForm.setSelection(true);
+
+ buttonCustom = new Button(composite, SWT.RADIO);
+ buttonCustom.setText(BUTTON_LABEL_QUERY);
+
+ setPageComplete(true);
+ setControl(composite);
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ if(buttonForm.getSelection()) {
+ searchPage.setWizard(this.getWizard());
+ return searchPage;
+ }
+ customPage.setWizard(this.getWizard());
+ return customPage;
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java
new file mode 100644
index 000000000..b9d433633
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java
@@ -0,0 +1,732 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.ApplicationWindow;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.bugzilla.core.BugzillaRemoteContextDelegate;
+import org.eclipse.mylar.bugzilla.core.Comment;
+import org.eclipse.mylar.bugzilla.core.IBugzillaBug;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BugzillaServerVersion;
+import org.eclipse.mylar.internal.bugzilla.core.internal.OfflineReportsFile;
+import org.eclipse.mylar.internal.bugzilla.core.internal.OfflineReportsFile.BugzillaOfflineStatus;
+import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchHit;
+import org.eclipse.mylar.internal.bugzilla.ui.WebBrowserDialog;
+import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaResultCollector;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaCategorySearchOperation.ICategorySearchListener;
+import org.eclipse.mylar.internal.bugzilla.ui.wizard.NewBugzillaReportWizard;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.internal.core.util.ZipFileUtil;
+import org.eclipse.mylar.internal.tasklist.ui.views.TaskRepositoriesView;
+import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractAddExistingTaskWizard;
+import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractRepositorySettingsPage;
+import org.eclipse.mylar.internal.tasklist.ui.wizards.ExistingTaskWizardPage;
+import org.eclipse.mylar.internal.tasklist.util.TaskDataExportJob;
+import org.eclipse.mylar.provisional.core.MylarPlugin;
+import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
+import org.eclipse.mylar.provisional.tasklist.DateRangeContainer;
+import org.eclipse.mylar.provisional.tasklist.IRemoteContextDelegate;
+import org.eclipse.mylar.provisional.tasklist.ITask;
+import org.eclipse.mylar.provisional.tasklist.ITaskActivityListener;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask.RepositoryTaskSyncState;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.progress.IProgressService;
+
+/**
+ * @author Mik Kersten
+ * @author Rob Elves
+ */
+public class BugzillaRepositoryConnector extends AbstractRepositoryConnector {
+
+ private static final String ZIPFILE_EXTENSION = ".zip";
+
+ private static final String APPLICATION_OCTET_STREAM = "application/octet-stream";
+
+ private static final String LABEL_JOB_SUBMIT = "Submitting to Bugzilla repository";
+
+ private static final String DESCRIPTION_DEFAULT = "<needs synchronize>";
+
+ private static final String CLIENT_LABEL = "Bugzilla (supports uncustomized 2.18-2.22)";
+
+ private List<String> supportedVersions;
+
+ private OfflineReportsFile offlineReportsFile;
+
+ public BugzillaRepositoryConnector() {
+ super();
+ offlineReportsFile = BugzillaPlugin.getDefault().getOfflineReports();
+ if (!BugzillaPlugin.getDefault().getPreferenceStore().getString(IBugzillaConstants.SERVER_VERSION).equals("")) {
+ MylarTaskListPlugin.getTaskListManager().addActivityListener(new ITaskActivityListener() {
+
+ public void tasklistRead() {
+ String oldVersionSetting = BugzillaPlugin.getDefault().getPreferenceStore().getString(
+ IBugzillaConstants.SERVER_VERSION);
+
+ Set<TaskRepository> existingBugzillaRepositories = MylarTaskListPlugin.getRepositoryManager()
+ .getRepositories(BugzillaPlugin.REPOSITORY_KIND);
+ for (TaskRepository repository : existingBugzillaRepositories) {
+ MylarTaskListPlugin.getRepositoryManager().setVersion(repository, oldVersionSetting);
+ }
+ BugzillaPlugin.getDefault().getPreferenceStore().setValue(IBugzillaConstants.SERVER_VERSION, "");
+ MylarTaskListPlugin.getTaskListManager().removeActivityListener(this);
+ }
+
+ public void taskActivated(ITask task) {
+ // ignore
+ }
+
+ public void tasksActivated(List<ITask> tasks) {
+ // ignore
+ }
+
+ public void taskDeactivated(ITask task) {
+ // ignore
+ }
+
+ public void activityChanged(DateRangeContainer week) {
+ // ignore
+ }
+ });
+ }
+ }
+
+ public String getLabel() {
+ return CLIENT_LABEL;
+ }
+
+ public AbstractRepositorySettingsPage getSettingsPage() {
+ return new BugzillaRepositorySettingsPage(this);
+ }
+
+ public String getRepositoryType() {
+ return BugzillaPlugin.REPOSITORY_KIND;
+ }
+
+ public void saveBugReport(IBugzillaBug bugzillaBug) {
+ String handle = AbstractRepositoryTask.getHandle(bugzillaBug.getRepositoryUrl(), bugzillaBug.getId());
+ ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle);
+ if (task instanceof BugzillaTask) {
+ BugzillaTask bugzillaTask = (BugzillaTask) task;
+ bugzillaTask.setBugReport((BugReport) bugzillaBug);
+
+ if (bugzillaBug.hasChanges()) {
+ bugzillaTask.setSyncState(RepositoryTaskSyncState.OUTGOING);
+ } else {
+ bugzillaTask.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
+ }
+ }
+ saveOffline(bugzillaBug, true);
+
+ }
+
+ private BugReport downloadReport(final BugzillaTask bugzillaTask) {
+ try {
+ return BugzillaRepositoryUtil.getBug(bugzillaTask.getRepositoryUrl(), AbstractRepositoryTask
+ .getTaskIdAsInt(bugzillaTask.getHandleIdentifier()));
+ } catch (final LoginException e) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), "Report Download Failed",
+ "Ensure proper repository configuration in " + TaskRepositoriesView.NAME + ".");
+ }
+ });
+ } catch (IOException e) {
+ if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ ((ApplicationWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow())
+ .setStatus("Download of bug: " + bugzillaTask + " failed due to I/O exception");
+ }
+ });
+ }
+ }
+ return null;
+ }
+
+ public ITask createTaskFromExistingId(TaskRepository repository, String id) {
+ int bugId = -1;
+ try {
+ if (id != null) {
+ bugId = Integer.parseInt(id);
+ } else {
+ return null;
+ }
+ } catch (NumberFormatException nfe) {
+ if (!forceSyncExecForTesting) {
+ MessageDialog.openInformation(null, MylarTaskListPlugin.TITLE_DIALOG, "Invalid report id: " + id);
+ }
+ return null;
+ }
+
+ String handle = AbstractRepositoryTask.getHandle(repository.getUrl(), bugId);
+ ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle);
+
+ if (task == null) {
+ task = new BugzillaTask(handle, DESCRIPTION_DEFAULT, true);
+ MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task);
+ }
+
+ // MylarTaskListPlugin.BgetTaskListManager().getTaskList().addTaskToArchive(newTask);
+ if (task instanceof AbstractRepositoryTask) {
+ synchronize((AbstractRepositoryTask) task, true, null);
+ }
+ return task;
+ }
+
+ public IWizard getNewQueryWizard(TaskRepository repository) {
+ return new NewBugzillaQueryWizard(repository);
+ }
+
+ public IWizard getEditQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) {
+ if (!(query instanceof BugzillaRepositoryQuery)) {
+ return null;
+ }
+ return new EditBugzillaQueryWizard(repository, (BugzillaRepositoryQuery) query);
+ }
+
+ public IWizard getAddExistingTaskWizard(TaskRepository repository) {
+
+ // TODO create a propper subclass for Bugzilla
+ return new AbstractAddExistingTaskWizard(repository) {
+
+ private ExistingTaskWizardPage page;
+
+ public void addPages() {
+ super.addPages();
+ this.page = new ExistingTaskWizardPage();
+ addPage(page);
+ }
+
+ protected String getTaskId() {
+ return page.getTaskId();
+ }
+ };
+ }
+
+ public void openEditQueryDialog(AbstractRepositoryQuery query) {
+ if (!(query instanceof BugzillaRepositoryQuery)) {
+ return;
+ }
+ // BugzillaRepositoryQuery queryCategory = (BugzillaRepositoryQuery)
+ // query;
+ //
+ // if (queryCategory.isCustomQuery()) {
+ // // BugzillaCustomRepositoryQuery queryCategory =
+ // // (BugzillaCustomRepositoryQuery) query;
+ // BugzillaCustomQueryDialog sqd = new
+ // BugzillaCustomQueryDialog(Display.getCurrent().getActiveShell(),
+ // queryCategory.getQueryUrl(), queryCategory.getDescription(),
+ // queryCategory.getMaxHits() + "");
+ // if (sqd.open() == Dialog.OK) {
+ // MylarTaskListPlugin.getTaskListManager().getTaskList().renameContainer(queryCategory,
+ // sqd.getName());
+ // // queryCategory.setDescription(sqd.getName());
+ // queryCategory.setQueryUrl(sqd.getUrl());
+ // int maxHits = -1;
+ // try {
+ // maxHits = Integer.parseInt(sqd.getMaxHits());
+ // } catch (Exception e) {
+ // }
+ // queryCategory.setMaxHits(maxHits);
+ //
+ // synchronize(queryCategory, null);
+ // }
+ // } else {
+ // // BugzillaRepositoryQuery queryCategory = (BugzillaRepositoryQuery)
+ // // query;
+ // BugzillaQueryDialog queryDialog = new
+ // BugzillaQueryDialog(Display.getCurrent().getActiveShell(),
+ // queryCategory.getRepositoryUrl(), queryCategory.getQueryUrl(),
+ // queryCategory.getDescription(),
+ // queryCategory.getMaxHits() + "");
+ // if (queryDialog.open() == Dialog.OK) {
+ // MylarTaskListPlugin.getTaskListManager().getTaskList().renameContainer(queryCategory,
+ // queryDialog.getName());
+ // // queryCategory.setDescription(queryDialog.getName());
+ // queryCategory.setQueryUrl(queryDialog.getUrl());
+ // queryCategory.setRepositoryUrl(queryDialog.getRepository().getUrl());
+ // int maxHits = -1;
+ // try {
+ // maxHits = Integer.parseInt(queryDialog.getMaxHits());
+ // } catch (Exception e) {
+ // }
+ // queryCategory.setMaxHits(maxHits);
+ //
+ // new SynchronizeReportsAction(queryCategory).run();
+ // }
+ // }
+
+ try {
+ TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository(
+ query.getRepositoryKind(), query.getRepositoryUrl());
+ if (repository == null)
+ return;
+
+ IWizard wizard = this.getEditQueryWizard(repository, query);
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ if (wizard != null && shell != null && !shell.isDisposed()) {
+ WizardDialog dialog = new WizardDialog(shell, wizard);
+ dialog.create();
+ dialog.setTitle("Edit Bugzilla Query");
+ dialog.setBlockOnOpen(true);
+ if (dialog.open() == Dialog.CANCEL) {
+ dialog.close();
+ return;
+ }
+ }
+ } catch (Exception e) {
+ MylarStatusHandler.fail(e, e.getMessage(), true);
+ }
+ }
+
+ private static void offlineStatusChange(IBugzillaBug bug, BugzillaOfflineStatus status, boolean forceSynch) {
+
+ RepositoryTaskSyncState state = null;
+ if (status == BugzillaOfflineStatus.SAVED_WITH_OUTGOING_CHANGES) {
+ state = RepositoryTaskSyncState.OUTGOING;
+ } else if (status == BugzillaOfflineStatus.SAVED) {
+ state = RepositoryTaskSyncState.SYNCHRONIZED;
+ } else if (status == BugzillaOfflineStatus.SAVED_WITH_INCOMMING_CHANGES) {
+ if (forceSynch) {
+ state = RepositoryTaskSyncState.INCOMING;
+ } else {
+ // User opened (forceSynch = false) so no need to denote
+ // incomming
+ state = RepositoryTaskSyncState.SYNCHRONIZED;
+ }
+ } else if (status == BugzillaOfflineStatus.CONFLICT) {
+ state = RepositoryTaskSyncState.CONFLICT;
+ } else if (status == BugzillaOfflineStatus.DELETED) {
+ state = RepositoryTaskSyncState.SYNCHRONIZED;
+ }
+ if (state == null) {
+ // this means that we got a status that we didn't understand
+ return;
+ }
+
+ String handle = AbstractRepositoryTask.getHandle(bug.getRepositoryUrl(), bug.getId());
+ ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle);
+ if (task != null && task instanceof BugzillaTask) {
+ BugzillaTask bugTask = (BugzillaTask) task;
+ bugTask.setSyncState(state);
+ MylarTaskListPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(bugTask);
+ }
+ }
+
+ public void submitBugReport(final IBugzillaBug bugReport, final BugzillaReportSubmitForm form,
+ IJobChangeListener listener) {
+
+ if (forceSyncExecForTesting) {
+ internalSubmitBugReport(bugReport, form);
+ } else {
+ // TODO: get rid of this idiom?
+ final WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+ protected void execute(final IProgressMonitor monitor) throws CoreException {
+ internalSubmitBugReport(bugReport, form);
+ }
+ };
+
+ Job job = new Job(LABEL_JOB_SUBMIT) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ op.run(monitor);
+ } catch (final Throwable throwable) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ // TODO: clean up exception handling
+ if (throwable.getCause() instanceof BugzillaException) {
+ MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Bugzilla could not post your bug.");
+ } else if (throwable.getCause() instanceof PossibleBugzillaFailureException) {
+ WebBrowserDialog.openAcceptAgreement(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Possible problem posting Bugzilla report.\n\n"
+ + throwable.getCause().getMessage(), form.getError());
+ } else if (throwable.getCause() instanceof LoginException) {
+ MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Bugzilla could not post your bug since your login name or password is incorrect."
+ + " Ensure proper repository configuration in "
+ + TaskRepositoriesView.NAME + ".");
+ } else {
+ MylarStatusHandler.fail(throwable, "could not post bug", false);
+ MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Could not post bug. Check repository credentials and connectivity.\n\n"
+ + throwable);
+ }
+ }
+ });
+ return new Status(Status.INFO, "org.eclipse.mylar.internal.bugzilla.ui", Status.INFO,
+ "Failed to submit bug", throwable);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.addJobChangeListener(listener);
+ job.schedule();
+ }
+ }
+
+ private void internalSubmitBugReport(IBugzillaBug bugReport, BugzillaReportSubmitForm form) {
+ try {
+ form.submitReportToRepository();
+ removeReport(bugReport);
+ String handle = AbstractRepositoryTask.getHandle(bugReport.getRepositoryUrl(), bugReport.getId());
+ // TODO: avoid getting archive tasks?
+ ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle);
+
+ Set<AbstractRepositoryQuery> queriesWithHandle = MylarTaskListPlugin.getTaskListManager().getTaskList()
+ .getQueriesForHandle(task.getHandleIdentifier());
+ synchronize(queriesWithHandle, null, Job.INTERACTIVE, 0);
+ // for (AbstractRepositoryQuery query : queriesWithHandle) {
+ // synchronize(query, null);
+ // }
+ if (task instanceof AbstractRepositoryTask) {
+ synchronize((AbstractRepositoryTask) task, true, null);
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Saves the given report to the offlineReportsFile, or, if it already
+ * exists in the file, updates it.
+ *
+ * @param bug
+ * The bug to add/update.
+ * @param saveChosen
+ * This is used to determine a refresh from a user save
+ */
+ public BugzillaOfflineStatus saveOffline(final IBugzillaBug bug, final boolean forceSynch) {
+
+ BugzillaOfflineStatus status = BugzillaOfflineStatus.ERROR;
+
+ if (!forceSyncExecForTesting) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ internalSaveOffline(bug, forceSynch);
+ }
+ });
+ } else {
+ internalSaveOffline(bug, forceSynch);
+ }
+ return status;
+ }
+
+ private void internalSaveOffline(final IBugzillaBug bug, final boolean forceSynch) {
+ // If there is already an offline report for this bug, update the file.
+ if (bug.isSavedOffline()) {
+ offlineReportsFile.update();
+ } else {
+ try {
+ // int index = -1;
+ // // If there is already an offline report with the
+ // same id, don't
+ // // save this report.
+ // if ((index = file.find(bug.getId())) >= 0) {
+ // removeReport(getOfflineBugs().get(index));
+ // // MessageDialog.openInformation(null, "Bug's Id
+ // is already
+ // // used.", "There is already a bug saved offline
+ // with an
+ // // identical id.");
+ // // return;
+ // }
+ BugzillaOfflineStatus offlineStatus = offlineReportsFile.add(bug, false);
+ bug.setOfflineState(true);
+ // saveForced forced to false (hack)
+ offlineStatusChange(bug, offlineStatus, forceSynch);
+
+ } catch (CoreException e) {
+ MylarStatusHandler.fail(e, e.getMessage(), false);
+ }
+ // file.sort(OfflineReportsFile.lastSel);
+ }
+ }
+
+ public static List<IBugzillaBug> getOfflineBugs() {
+ OfflineReportsFile file = BugzillaPlugin.getDefault().getOfflineReports();
+ return file.elements();
+ }
+
+ public static void removeReport(IBugzillaBug bug) {
+ bug.setOfflineState(false);
+ offlineStatusChange(bug, BugzillaOfflineStatus.DELETED, false);
+ ArrayList<IBugzillaBug> bugList = new ArrayList<IBugzillaBug>();
+ bugList.add(bug);
+ BugzillaPlugin.getDefault().getOfflineReports().remove(bugList);
+ }
+
+ @Override
+ public boolean canCreateTaskFromId() {
+ return true;
+ }
+
+ @Override
+ public boolean canCreateNewTask() {
+ return true;
+ }
+
+ @Override
+ public IWizard getNewTaskWizard(TaskRepository taskRepository) {
+ return new NewBugzillaReportWizard(taskRepository);
+ }
+
+ public List<String> getSupportedVersions() {
+ if (supportedVersions == null) {
+ supportedVersions = new ArrayList<String>();
+ for (BugzillaServerVersion version : BugzillaServerVersion.values()) {
+ supportedVersions.add(version.toString());
+ }
+ }
+ return supportedVersions;
+ }
+
+ /** public for testing purposes * */
+ @Override
+ public List<AbstractQueryHit> performQuery(final AbstractRepositoryQuery repositoryQuery, IProgressMonitor monitor,
+ MultiStatus status) {
+ TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository(
+ repositoryQuery.getRepositoryKind(), repositoryQuery.getRepositoryUrl());
+
+ final BugzillaCategorySearchOperation categorySearch = new BugzillaCategorySearchOperation(repository,
+ repositoryQuery.getQueryUrl(), repositoryQuery.getMaxHits());
+
+ final ArrayList<AbstractQueryHit> newHits = new ArrayList<AbstractQueryHit>();
+ categorySearch.addResultsListener(new ICategorySearchListener() {
+ public void searchCompleted(BugzillaResultCollector collector) {
+ for (BugzillaSearchHit hit : collector.getResults()) {
+ String description = hit.getId() + ": " + hit.getDescription();
+
+ // TODO: Associate new hit with task (if already exists)
+ newHits.add(new BugzillaQueryHit(description, hit.getPriority(),
+ repositoryQuery.getRepositoryUrl(), hit.getId(), null, hit.getState()));
+ }
+ }
+ });
+
+ categorySearch.execute(monitor);
+ try {
+ IStatus queryStatus = categorySearch.getStatus();
+ if (!queryStatus.isOK()) {
+ status.add(new Status(IStatus.OK, MylarTaskListPlugin.PLUGIN_ID, IStatus.OK, queryStatus.getMessage(),
+ queryStatus.getException()));
+ } else {
+ status.add(queryStatus);
+ }
+ } catch (LoginException e) {
+ // TODO: Set some form of disconnect status on Query?
+ MylarStatusHandler.fail(e, "login failure for repository url: " + repository, false);
+ status.add(new Status(IStatus.OK, MylarTaskListPlugin.PLUGIN_ID, IStatus.OK, "Could not log in", e));
+ }
+
+ return newHits;
+ }
+
+ @Override
+ protected void updateOfflineState(AbstractRepositoryTask repositoryTask, boolean forceSync) {
+ if (repositoryTask instanceof BugzillaTask) {
+ BugzillaTask bugzillaTask = (BugzillaTask) repositoryTask;
+ BugReport downloadedReport = downloadReport(bugzillaTask);
+ if (downloadedReport != null) {
+ bugzillaTask.setBugReport(downloadedReport);
+ saveOffline(downloadedReport, forceSync);
+ }
+ }
+ }
+
+ @Override
+ public boolean attachContext(TaskRepository repository, AbstractRepositoryTask task, String longComment)
+ throws IOException {
+ if (!repository.hasCredentials()) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ MylarTaskListPlugin.TITLE_DIALOG, "Repository credentials missing or invalid.");
+ return false;
+ } else {
+ boolean result = false;
+ MylarPlugin.getContextManager().saveContext(task.getHandleIdentifier());
+ File sourceContextFile = MylarPlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
+
+ if (sourceContextFile != null && sourceContextFile.exists()) {
+ File folder = sourceContextFile.getParentFile();
+ if (folder != null && folder.exists() && folder.isDirectory()) {
+ List<ITask> tasksToExport = new ArrayList<ITask>();
+ tasksToExport.add(task);
+ TaskDataExportJob job = new TaskDataExportJob(MylarPlugin.getDefault().getDataDirectory(), false,
+ false, true, true, sourceContextFile.getName() + ZIPFILE_EXTENSION, tasksToExport);
+
+ // IProgressService service =
+ // PlatformUI.getWorkbench().getProgressService();
+
+ try {
+ // service.run(true, false, job);
+ job.run(new NullProgressMonitor());
+
+ File zippedContextFile = new File(MylarPlugin.getDefault().getDataDirectory() + File.separator
+ + sourceContextFile.getName() + ZIPFILE_EXTENSION);
+ if (zippedContextFile != null && zippedContextFile.exists()) {
+ result = BugzillaRepositoryUtil.uploadAttachment(repository, BugzillaTask
+ .getTaskIdAsInt(task.getHandleIdentifier()), longComment,
+ MYLAR_CONTEXT_DESCRIPTION, zippedContextFile, APPLICATION_OCTET_STREAM, false);
+ if (result) {
+ synchronize(task, false, null);
+ }
+ }
+
+ } catch (InvocationTargetException e) {
+ MylarStatusHandler.fail(e, "Could not export task context as zip file", true);
+ } catch (InterruptedException e) {
+ MylarStatusHandler.fail(e, "Could not export task context as zip file", true);
+ }
+
+ }
+ }
+
+ // if (sourceContextFile != null && sourceContextFile.exists()) {
+ // result = BugzillaRepositoryUtil.uploadAttachment(repository,
+ // BugzillaTask.getTaskIdAsInt(task
+ // .getHandleIdentifier()), longComment, MYLAR_CONTEXT_DESCRIPTION,
+ // sourceContextFile,
+ // CONTENTTYPE_APPLICATION_XML, false);
+ // if (result) {
+ // synchronize(task, false, null);
+ // }
+ // }
+ return result;
+ }
+ }
+
+ @Override
+ public Set<IRemoteContextDelegate> getAvailableContexts(TaskRepository repository, AbstractRepositoryTask task) {
+ Set<IRemoteContextDelegate> contextDelegates = new HashSet<IRemoteContextDelegate>();
+ if (task instanceof BugzillaTask) {
+ BugzillaTask bugzillaTask = (BugzillaTask) task;
+ if (bugzillaTask.getBugReport() != null) {
+ for (Comment comment : bugzillaTask.getBugReport().getComments()) {
+ if (comment.hasAttachment() && comment.getAttachmentDescription().equals(MYLAR_CONTEXT_DESCRIPTION)) {
+ contextDelegates.add(new BugzillaRemoteContextDelegate(comment));
+ }
+ }
+ }
+ }
+ return contextDelegates;
+ }
+
+ @Override
+ public boolean retrieveContext(TaskRepository repository, AbstractRepositoryTask task,
+ IRemoteContextDelegate remoteContextDelegate) throws IOException {
+ boolean result = false;
+ boolean wasActive = false;
+ if (remoteContextDelegate instanceof BugzillaRemoteContextDelegate) {
+ BugzillaRemoteContextDelegate contextDelegate = (BugzillaRemoteContextDelegate) remoteContextDelegate;
+
+ if (task.isActive()) {
+ wasActive = true;
+ MylarTaskListPlugin.getTaskListManager().deactivateTask(task);
+ }
+
+ File destinationContextFile = MylarPlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
+
+ File destinationZipFile = new File(destinationContextFile.getPath() + ZIPFILE_EXTENSION);
+
+ // if(destinationContextFile.exists()) {
+ // destinationContextFile.delete();
+ // }
+
+ result = BugzillaRepositoryUtil.downloadAttachment(repository, contextDelegate.getId(), destinationZipFile,
+ true);
+
+ if (result) {
+
+ ZipFileUtil.unzipFiles(destinationZipFile, MylarPlugin.getDefault().getDataDirectory());
+
+ if (destinationContextFile.exists()) {
+
+ MylarTaskListPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task);
+ if (wasActive) {
+ MylarTaskListPlugin.getTaskListManager().activateTask(task);
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ public String getRepositoryUrlFromTaskUrl(String url) {
+ if (url == null) {
+ return null;
+ } else {
+ int index = url.indexOf(BugzillaRepositoryUtil.POST_ARGS_SHOW_BUG);
+ if (index != -1) {
+ return url.substring(0, index);
+ } else {
+ return null;
+ }
+ }
+ }
+
+ public void openRemoteTask(String repositoryUrl, String idString) {
+ int id = -1;
+ try {
+ id = Integer.parseInt(idString);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ if (id != -1) {
+ OpenBugzillaReportJob job = new OpenBugzillaReportJob(repositoryUrl, id);
+ IProgressService service = PlatformUI.getWorkbench().getProgressService();
+ try {
+ service.run(true, false, job);
+ } catch (Exception e) {
+ MylarStatusHandler.fail(e, "Could not open report", true);
+ }
+ }
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
new file mode 100644
index 000000000..7a43b8ee8
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractRepositorySettingsPage;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author Mik Kersten
+ */
+public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPage {
+
+ private static final String TITLE = "Bugzilla Repository Settings";
+
+ private static final String DESCRIPTION = "Example: https://bugs.eclipse.org/bugs (do not include index.cgi)";
+ private BugzillaRepositoryConnector connector;
+ protected Combo repositoryVersionCombo;
+
+ public BugzillaRepositorySettingsPage(BugzillaRepositoryConnector connector) {
+ super(TITLE, DESCRIPTION);
+ this.connector = connector;
+ }
+
+ protected void createAdditionalControls(Composite parent) {
+ Label repositoryVersionLabel = new Label(parent, SWT.NONE);
+ repositoryVersionLabel.setText("Repository Version: ");
+ repositoryVersionCombo = new Combo (parent, SWT.READ_ONLY);
+
+ for (String version : connector.getSupportedVersions()) {
+ repositoryVersionCombo.add(version);
+ }
+ if(repository != null && repositoryVersionCombo.indexOf(repository.getVersion()) >= 0) {
+ repositoryVersionCombo.select(repositoryVersionCombo.indexOf(repository.getVersion()));
+ } else {
+ int defaultIndex = connector.getSupportedVersions().size()-1;
+ repositoryVersionCombo.select(defaultIndex);
+ setVersion(repositoryVersionCombo.getItem(defaultIndex));
+ }
+
+ repositoryVersionCombo.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if(repositoryVersionCombo.getSelectionIndex() >= 0) {
+ setVersion(repositoryVersionCombo.getItem(repositoryVersionCombo.getSelectionIndex()));
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ return super.isPageComplete();
+ }
+
+ protected boolean isValidUrl(String name) {
+ if (name.startsWith(URL_PREFIX_HTTPS) || name.startsWith(URL_PREFIX_HTTP)) {
+ try {
+ new URL(name);
+ return true;
+ } catch (MalformedURLException e) {
+ }
+ }
+ return false;
+ }
+
+ protected void validateSettings() {
+ try {
+ URL serverURL = new URL(super.serverUrlEditor.getStringValue());
+ URLConnection cntx = BugzillaPlugin.getDefault().getUrlConnection(serverURL);
+ if (cntx == null || !(cntx instanceof HttpURLConnection)) {
+ MessageDialog.openInformation(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "Could not connect.");
+ }
+
+ HttpURLConnection serverConnection = (HttpURLConnection) cntx;
+ serverConnection.connect();
+ TaskRepository tempRepository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, getServerUrl());
+ tempRepository.setAuthenticationCredentials(getUserName(), getPassword());
+ BugzillaRepositoryUtil.getProductList(tempRepository);
+ } catch (MalformedURLException e) {
+ MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "Server URL is invalid.");
+ return;
+ } catch (LoginException e) {
+ MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Unable to authenticate with server. Login credentials invalid.");
+ return;
+ } catch (IOException e) {
+ MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "No Bugzilla server found at url");
+ return;
+ } catch (Throwable t) {
+ MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Unknown error occured. Check that server url and credentials are valid.");
+ return;
+ }
+
+ MessageDialog.openInformation(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Authentication credentials are valid.");
+
+ super.getWizard().getContainer().updateButtons();
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java
new file mode 100644
index 000000000..c9fe67a3b
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+/*
+ * Created on 14-Jan-2005
+ */
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.bugzilla.core.Comment;
+import org.eclipse.mylar.bugzilla.core.IBugzillaBug;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.internal.HtmlStreamTokenizer;
+import org.eclipse.mylar.internal.bugzilla.core.internal.OfflineReportsFile;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
+
+/**
+ * @author Mik Kersten
+ */
+public class BugzillaTask extends AbstractRepositoryTask {
+
+ /**
+ * The bug report for this BugzillaTask. This is <code>null</code> if the
+ * bug report with the specified ID was unable to download.
+ */
+ protected transient BugReport bugReport = null;
+
+ public BugzillaTask(String handle, String label, boolean newTask) {
+ super(handle, label, newTask);
+ isDirty = false;
+ initFromHandle();
+ }
+
+ public BugzillaTask(BugzillaQueryHit hit, boolean newTask) {
+ this(hit.getHandleIdentifier(), hit.getDescription(), newTask);
+ setPriority(hit.getPriority());
+ initFromHandle();
+ }
+
+ private void initFromHandle() {
+ int id = AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier());
+ String repositoryUrl = getRepositoryUrl();
+ // repositoryUrl =
+ // TaskRepositoryManager.getRepositoryUrl(getHandleIdentifier());
+ if (repositoryUrl != null) {
+ String url = BugzillaRepositoryUtil.getBugUrlWithoutLogin(repositoryUrl, id);
+ if (url != null) {
+ super.setUrl(url);
+ }
+ }
+ }
+
+ /**
+ * TODO: move?
+ */
+ public boolean readBugReport() {
+ IBugzillaBug tempBug = OfflineReportsFile.findBug(getRepositoryUrl(), AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier()));
+ if (tempBug == null) {
+ bugReport = null;
+ return true;
+ }
+ bugReport = (BugReport) tempBug;
+
+ if (bugReport.hasChanges())
+ syncState = RepositoryTaskSyncState.OUTGOING;
+ return true;
+ }
+
+ @Override
+ public String getDescription() {
+ if (this.isDownloaded() || !super.getDescription().startsWith("<")) {
+ return super.getDescription();
+ } else {
+ if (!isSynchronizing()) {
+ return AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier()) + ": <Could not find bug>";
+ } else {
+ return AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier()) + ":";
+ }
+ }
+ }
+
+ public BugReport getBugReport() {
+ return bugReport;
+ }
+
+ public String getTaskType() {
+ if (bugReport != null && bugReport.getAttribute(BugReport.ATTRIBUTE_SEVERITY) != null) {
+ return bugReport.getAttribute(BugReport.ATTRIBUTE_SEVERITY).getValue();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * @param bugReport
+ * The bugReport to set.
+ */
+ public void setBugReport(BugReport bugReport) {
+ this.bugReport = bugReport;
+
+ // TODO: remove?
+ if (bugReport != null) {
+ setDescription(HtmlStreamTokenizer.unescape(AbstractRepositoryTask
+ .getTaskIdAsInt(getHandleIdentifier())
+ + ": " + bugReport.getSummary()));
+ }
+ }
+
+ public boolean isDownloaded() {
+ return bugReport != null;
+ }
+
+ @Override
+ public String toString() {
+ return "bugzilla report id: " + getHandleIdentifier();
+ }
+
+ @Override
+ public boolean isCompleted() {
+ if (bugReport != null) {
+ return bugReport.isResolved();
+ } else {
+ return super.isCompleted();
+ }
+ }
+
+ @Override
+ public String getUrl() {
+ // fix for bug 103537 - should login automatically, but dont want to
+ // show the login info in the query string
+ return BugzillaRepositoryUtil.getBugUrlWithoutLogin(getRepositoryUrl(), AbstractRepositoryTask
+ .getTaskIdAsInt(handle));
+ }
+
+ @Override
+ public Date getCompletionDate() {
+ if (bugReport != null) {
+ if (bugReport.isResolved()) {
+ List<Comment> comments = bugReport.getComments();
+ if (comments != null && !comments.isEmpty()) {
+ return comments.get(comments.size() - 1).getCreated();
+ }
+ }
+ }
+ return null;
+ }
+
+ public String getRepositoryKind() {
+ return BugzillaPlugin.REPOSITORY_KIND;
+ }
+
+ @Override
+ public String getPriority() {
+ if (bugReport != null && bugReport.getAttribute(BugReport.ATTR_PRIORITY) != null) {
+ return bugReport.getAttribute(BugReport.ATTR_PRIORITY).getValue();
+ } else {
+ return super.getPriority();
+ }
+ }
+
+ @Override
+ public boolean isPersistentInWorkspace() {
+ return true;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java
new file mode 100644
index 000000000..5747b7cc3
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2006 Mylar eclipse.org project 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:
+ * Mylar project committers - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.jface.viewers.IDecoration;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ILightweightLabelDecorator;
+import org.eclipse.mylar.internal.bugzilla.ui.BugzillaImages;
+
+/**
+ * @author Mik Kersten
+ */
+public class BugzillaTaskDecorator implements ILightweightLabelDecorator {
+
+ public void decorate(Object element, IDecoration decoration) {
+ if (element instanceof BugzillaTask) {
+ String kind = ((BugzillaTask)element).getTaskType();
+ if ("major".equals(kind) || "blocker".equals(kind)) {
+ decoration.addOverlay(BugzillaImages.OVERLAY_MAJOR, IDecoration.BOTTOM_RIGHT);
+ } else if ("enhancement".equals(kind)){
+ decoration.addOverlay(BugzillaImages.OVERLAY_ENHANCEMENT, IDecoration.BOTTOM_RIGHT);
+ }
+ } else if (element instanceof BugzillaQueryHit) {
+ BugzillaQueryHit hit = (BugzillaQueryHit)element;
+ if (hit.getCorrespondingTask() != null) {
+ decorate(hit.getCorrespondingTask(), decoration);
+ }
+ }
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ // ignore
+ }
+
+ public void dispose() {
+ // ignore
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ // ignore
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java
new file mode 100644
index 000000000..7eae841b5
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java
@@ -0,0 +1,295 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+/*
+ * Created on 31-Jan-2005
+ */
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.mylar.bugzilla.core.BugReport;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaAttributeListener;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.AbstractBugEditor;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.BugzillaOutlineNode;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor;
+import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
+import org.eclipse.mylar.internal.tasklist.ui.editors.MylarTaskEditor;
+import org.eclipse.mylar.internal.tasklist.ui.editors.TaskEditorInput;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Mik Kersten
+ */
+public class BugzillaTaskEditor extends MylarTaskEditor {
+
+ private static final String EDITOR_TAB_ITLE = "Bug Editor";
+
+ /** The task that created this editor */
+ protected BugzillaTask bugTask;
+
+ /** This bug report can be modified by the user and saved offline. */
+ protected BugReport offlineBug;
+
+ private ExistingBugEditor bugzillaEditor;
+
+ private BugzillaTaskEditorInput bugzillaEditorInput;
+
+// private BugzillaOutlinePage outlinePage = null;
+
+// protected BugzillaOutlineNode bugzillaOutlineModel = null;
+
+ private IBugzillaAttributeListener ATTRIBUTE_LISTENER = new IBugzillaAttributeListener() {
+ public void attributeChanged(String attribute, String value) {
+ // TODO: get rid of this?
+ if (attribute.equals("Priority")) {
+ bugTask.setPriority(value);
+// if (TaskListView.getDefault() != null)
+// TaskListView.getDefault().notifyTaskDataChanged(bugTask);
+ }
+ }
+ };
+
+ public BugzillaTaskEditor() {
+ super();
+
+ // get the workbench page and add a listener so we can detect when it
+ // closes
+ // IWorkbench wb = MylarTaskListPlugin.getDefault().getWorkbench();
+ // IWorkbenchWindow aw = wb.getActiveWorkbenchWindow();
+ // IWorkbenchPage ap = aw.getActivePage();
+ // BugzillaTaskEditorListener listener = new
+ // BugzillaTaskEditorListener();
+ // ap.addPartListener(listener);
+
+ bugzillaEditor = new ExistingBugEditor();
+ bugzillaEditor.setParentEditor(this);
+ bugzillaEditor.addAttributeListener(ATTRIBUTE_LISTENER);
+ // taskSummaryEditor = new TaskInfoEditor();
+ // taskSummaryEditor.setParentEditor(this);
+ }
+
+ public AbstractBugEditor getBugzillaEditor() {
+ return bugzillaEditor;
+ }
+
+ public void gotoMarker(IMarker marker) {
+ // don't do anything
+ }
+
+ /**
+ * Creates page 1 of the multi-page editor, which allows you to change the
+ * font used in page 2.
+ */
+ private void createBugzillaSubmitPage() {
+ bugzillaEditor.createPartControl(getContainer());
+ Composite composite = bugzillaEditor.getEditorComposite();
+ int index = addPage(composite);
+ setPageText(index, EDITOR_TAB_ITLE);
+ }
+
+ /**
+ * Creates the pages of the multi-page editor.
+ */
+ @Override
+ protected void createPages() {
+ createBugzillaSubmitPage();
+ super.createPages();
+ }
+
+ /**
+ * Saves the multi-page editor's document.
+ */
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ super.doSave(monitor);
+ // if(taskSummaryEditor.isDirty())
+ // taskSummaryEditor.doSave(monitor);
+ if (bugzillaEditor.isDirty())
+ bugzillaEditor.doSave(monitor);
+
+ // TODO save both editors if needed
+ }
+
+ public boolean isDirty() {
+ return bugzillaEditor.isDirty() || super.isDirty();
+ }
+
+ public void changeDirtyStatus(boolean newDirtyStatus) {
+ firePropertyChange(PROP_DIRTY);
+ }
+
+ @Override
+ public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException {
+ if (!(editorInput instanceof BugzillaTaskEditorInput))
+ throw new PartInitException("Invalid Input: Must be BugzillaTaskEditorInput");
+ super.init(site, (IEditorInput) new TaskEditorInput(((BugzillaTaskEditorInput) editorInput).getBugTask(), false));
+ bugzillaEditorInput = (BugzillaTaskEditorInput) editorInput;
+ bugTask = bugzillaEditorInput.getBugTask();
+ bugzillaEditor.setBugzillaOutlineModel(BugzillaOutlineNode.parseBugReport(bugzillaEditorInput.getBug()));
+ offlineBug = bugzillaEditorInput.getOfflineBug();
+
+ super.setSite(site);
+ super.setInput(editorInput);
+
+ try {
+ bugzillaEditor.init(this.getEditorSite(), this.getEditorInput());
+ } catch (Exception e) {
+ throw new PartInitException(e.getMessage());
+ }
+
+ // Set the title on the editor's tab
+ // this.setPartName("Bug #" + bugzillaEditorInput.getBugId());
+ this.setPartName(bugTask.getDescription());
+ this.setTitleImage(TaskListImages.getImage(TaskListImages.TASK_REPOSITORY));
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ /**
+ * Calculates the contents of page 2 when the it is activated.
+ */
+ @Override
+ protected void pageChange(int newPageIndex) {
+ super.pageChange(newPageIndex);
+ }
+
+ /**
+ * Sets the font related data to be applied to the text in page 2.
+ */
+ @Override
+ public void setFocus() {
+ // The default focus for this editor is the submit page
+ bugzillaEditor.setFocus();
+ }
+
+ /**
+ * @return Returns the bugTask.
+ */
+ public BugzillaTask getBugTask() {
+ return bugTask;
+ }
+
+ /**
+ * @return Returns the offlineBug.
+ */
+ public BugReport getOfflineBug() {
+ return offlineBug;
+ }
+
+ /**
+ * Updates the title of the editor to reflect dirty status. If the bug
+ * report has been modified but not saved, then an indicator will appear in
+ * the title.
+ *
+ * @param isDirty
+ * is true when the bug report has been modified but not saved
+ */
+ public void showDirtyStatus(boolean isDirty) {
+ String prefix = (isDirty) ? "*" : "";
+ setPartName(prefix + "Bug #" + bugzillaEditorInput.getBugId());
+ }
+
+
+// @Override
+// public Object getAdapter(Class adapter) {
+// if (IContentOutlinePage.class.equals(adapter)) {
+// if (outlinePage == null && bugzillaEditorInput != null) {
+// outlinePage = new BugzillaOutlinePage(bugzillaOutlineModel);
+// }
+// return outlinePage;
+// }
+// return super.getAdapter(adapter);
+// }
+
+ @Override
+ public Object getAdapter(Class adapter) {
+ return bugzillaEditor.getAdapter(adapter);
+ }
+
+ // /**
+ // * Class to listen for editor events
+ // */
+ // private class BugzillaTaskEditorListener implements IPartListener
+ // {
+ //
+ // public void partActivated(IWorkbenchPart part) {
+ // // don't care about this event
+ // }
+ //
+ // public void partBroughtToTop(IWorkbenchPart part) {
+ // // don't care about this event
+ // }
+ //
+ // public void partClosed(IWorkbenchPart part) {
+ //
+ // // if we are closing a bug editor
+ // if (part instanceof BugzillaTaskEditor) {
+ // BugzillaTaskEditor taskEditor = (BugzillaTaskEditor)part;
+ //
+ // // check if it needs to be saved
+ // if (taskEditor.bugzillaEditor.isDirty) {
+ // // ask the user whether they want to save it or not and perform the
+ // appropriate action
+ // taskEditor.bugzillaEditor.changeDirtyStatus(false);
+ // boolean response = MessageDialog.openQuestion(null, "Save Changes",
+ // "You have made some changes to the bug, do you want to save them?");
+ // if (response) {
+ // taskEditor.bugzillaEditor.saveBug();
+ // } else {
+ // ExistingBugEditorInput input =
+ // (ExistingBugEditorInput)taskEditor.bugzillaEditor.getEditorInput();
+ // bugTask.setPriority(input.getBug().getAttribute("Priority").getValue());
+ // }
+ // }
+ // }
+ // }
+ //
+ // public void partDeactivated(IWorkbenchPart part) {
+ // // don't care about this event
+ // }
+ //
+ // public void partOpened(IWorkbenchPart part) {
+ // // don't care about this event
+ // }
+ // }
+
+ public void makeNewPage(BugReport serverBug, String newCommentText) {
+ if (serverBug == null) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
+ "Could not open bug.", "Bug #" + offlineBug.getId()
+ + " could not be read from the server. Try refreshing the bug task.");
+ return;
+ }
+ }
+
+ public void close() {
+ Display display = getSite().getShell().getDisplay();
+ display.asyncExec(new Runnable() {
+ public void run() {
+ getSite().getPage().closeEditor(BugzillaTaskEditor.this, false);
+ }
+ });
+ }
+
+ @Override
+ public void doSaveAs() {
+ // do nothing here
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java
new file mode 100644
index 000000000..aa4d9d5a9
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import java.util.Date;
+
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.internal.tasklist.TaskExternalizationException;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
+import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer;
+import org.eclipse.mylar.provisional.tasklist.DelegatingTaskExternalizer;
+import org.eclipse.mylar.provisional.tasklist.ITask;
+import org.eclipse.mylar.provisional.tasklist.TaskList;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask.RepositoryTaskSyncState;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * @author Mik Kersten
+ */
+public class BugzillaTaskExternalizer extends DelegatingTaskExternalizer {
+
+ private static final String STATUS_RESO = "RESO";
+
+ private static final String STATUS_NEW = "NEW";
+
+ private static final String LAST_DATE = "LastDate";
+
+ private static final String DIRTY = "Dirty";
+
+ private static final String SYNC_STATE = "offlineSyncState";
+
+ private static final String TAG_BUGZILLA_QUERY_HIT = "Bugzilla" + KEY_QUERY_HIT;
+
+ private static final String TAG_BUGZILLA_QUERY = "Bugzilla" + KEY_QUERY;
+
+ private static final String TAG_BUGZILLA_CUSTOM_QUERY = "BugzillaCustom" + KEY_QUERY;
+
+ private static final String TAG_BUGZILLA_REPORT = "BugzillaReport";
+
+ public String getQueryTagNameForElement(AbstractRepositoryQuery query) {
+ if (query instanceof BugzillaRepositoryQuery) {
+ if (((BugzillaRepositoryQuery)query).isCustomQuery()) {
+ return TAG_BUGZILLA_CUSTOM_QUERY;
+ } else {
+ return TAG_BUGZILLA_QUERY;
+ }
+ }
+ return "";
+ }
+
+ public boolean canReadQuery(Node node) {
+ return node.getNodeName().equals(TAG_BUGZILLA_CUSTOM_QUERY) || node.getNodeName().equals(TAG_BUGZILLA_QUERY);
+ }
+
+ public AbstractRepositoryQuery readQuery(Node node, TaskList taskList) throws TaskExternalizationException {
+ boolean hasCaughtException = false;
+ Element element = (Element) node;
+ BugzillaRepositoryQuery query = new BugzillaRepositoryQuery(
+ element.getAttribute(KEY_REPOSITORY_URL),
+ element.getAttribute(KEY_QUERY_STRING),
+ element.getAttribute(KEY_NAME),
+ element.getAttribute(KEY_QUERY_MAX_HITS), taskList);
+ if (node.getNodeName().equals(TAG_BUGZILLA_CUSTOM_QUERY)) {
+ query.setCustomQuery(true);
+ }
+ if(!element.getAttribute(KEY_LAST_REFRESH).equals("")) {
+ Date refreshDate = new Date();
+ try {
+ refreshDate.setTime(Long.parseLong(element.getAttribute(KEY_LAST_REFRESH)));
+ query.setLastRefresh(refreshDate);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+
+ NodeList list = node.getChildNodes();
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ try {
+ readQueryHit(child, taskList, query);
+ } catch (TaskExternalizationException e) {
+ hasCaughtException = true;
+ }
+ }
+ if (hasCaughtException) {
+ throw new TaskExternalizationException("Failed to load all tasks");
+ } else {
+ return query;
+ }
+ }
+
+// public void readRegistry(Node node, TaskList taskList) throws TaskExternalizationException {
+// boolean hasCaughtException = false;
+// NodeList list = node.getChildNodes();
+// for (int i = 0; i < list.getLength(); i++) {
+// try {
+// Node child = list.item(i);
+// ITask task = readTask(child, taskList, null, null);
+// if (task instanceof AbstractRepositoryTask) {
+// taskList.addTaskToArchive((AbstractRepositoryTask)task);
+// }
+// } catch (TaskExternalizationException e) {
+// hasCaughtException = true;
+// }
+// }
+//
+// if (hasCaughtException)
+// throw new TaskExternalizationException("Failed to restore all tasks");
+// }
+
+// public boolean canCreateElementFor(ITaskContainer cat) {
+// return false;
+// }
+
+ public boolean canCreateElementFor(AbstractRepositoryQuery category) {
+ return category instanceof BugzillaRepositoryQuery;
+ }
+
+ public boolean canCreateElementFor(ITask task) {
+ return task instanceof BugzillaTask;
+ }
+
+ public Element createTaskElement(ITask task, Document doc, Element parent) {
+ Element node = super.createTaskElement(task, doc, parent);
+ BugzillaTask bugzillaTask = (BugzillaTask) task;
+ if (bugzillaTask.getLastRefresh() != null) {
+ node.setAttribute(LAST_DATE, new Long(bugzillaTask.getLastRefresh().getTime()).toString());
+ } else {
+ node.setAttribute(LAST_DATE, new Long(new Date().getTime()).toString());
+ }
+
+ node.setAttribute(SYNC_STATE, bugzillaTask.getSyncState().toString());
+
+ if (bugzillaTask.isDirty()) {
+ node.setAttribute(DIRTY, VAL_TRUE);
+ } else {
+ node.setAttribute(DIRTY, VAL_FALSE);
+ }
+ return node;
+ }
+
+ @Override
+ public boolean canReadTask(Node node) {
+ return node.getNodeName().equals(getTaskTagName());
+ }
+
+ @Override
+ public ITask readTask(Node node, TaskList taskList, AbstractTaskContainer category, ITask parent)
+ throws TaskExternalizationException {
+ Element element = (Element) node;
+ String handle;
+ String label;
+ if (element.hasAttribute(KEY_HANDLE)) {
+ handle = element.getAttribute(KEY_HANDLE);
+ } else {
+ throw new TaskExternalizationException("Handle not stored for bug report");
+ }
+ if (element.hasAttribute(KEY_LABEL)) {
+ label = element.getAttribute(KEY_LABEL);
+ } else {
+ throw new TaskExternalizationException("Description not stored for bug report");
+ }
+ BugzillaTask task = new BugzillaTask(handle, label, false);
+ readTaskInfo(task, taskList, element, parent, category);
+
+ task.setCurrentlyDownloading(false);
+ task.setLastRefresh(new Date(new Long(element.getAttribute("LastDate")).longValue()));
+
+ if (element.getAttribute("Dirty").compareTo("true") == 0) {
+ task.setDirty(true);
+ } else {
+ task.setDirty(false);
+ }
+ try {
+ if (task.readBugReport() == false) {
+ MylarStatusHandler.log("Failed to read bug report", null);
+ }
+ } catch (Exception e) {
+ MylarStatusHandler.log(e, "Failed to read bug report");
+ }
+
+ if (element.hasAttribute(SYNC_STATE)) {
+ String syncState = element.getAttribute(SYNC_STATE);
+ if (syncState.compareTo(RepositoryTaskSyncState.SYNCHRONIZED.toString()) == 0) {
+ task.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
+ } else if (syncState.compareTo(RepositoryTaskSyncState.INCOMING.toString()) == 0) {
+ task.setSyncState(RepositoryTaskSyncState.INCOMING);
+ } else if (syncState.compareTo(RepositoryTaskSyncState.OUTGOING.toString()) == 0) {
+ task.setSyncState(RepositoryTaskSyncState.OUTGOING);
+ } else if (syncState.compareTo(RepositoryTaskSyncState.CONFLICT.toString()) == 0) {
+ task.setSyncState(RepositoryTaskSyncState.CONFLICT);
+ }
+ }
+
+ // TODO: put back, checking for null category?
+// taskList.internalAddTask(task, category);
+ return task;
+ }
+
+ public boolean canReadQueryHit(Node node) {
+ return node.getNodeName().equals(getQueryHitTagName());
+ }
+
+ public void readQueryHit(Node node, TaskList taskList, AbstractRepositoryQuery query) throws TaskExternalizationException {
+ Element element = (Element) node;
+ String handle;
+ String label;
+ String priority;
+ String status;
+ if (element.hasAttribute(KEY_HANDLE)) {
+ handle = element.getAttribute(KEY_HANDLE);
+ } else {
+ throw new TaskExternalizationException("Handle not stored for bug report");
+ }
+ if (element.hasAttribute(KEY_NAME)) {
+ label = element.getAttribute(KEY_NAME);
+ } else {
+ throw new TaskExternalizationException("Description not stored for bug report");
+ }
+ if (element.hasAttribute(KEY_PRIORITY)) {
+ priority = element.getAttribute(KEY_PRIORITY);
+ } else {
+ throw new TaskExternalizationException("Description not stored for bug report");
+ }
+
+ status = STATUS_NEW;
+ if (element.hasAttribute(KEY_COMPLETE)) {
+ status = element.getAttribute(KEY_COMPLETE);
+ if (status.equals(VAL_TRUE)) {
+ status = STATUS_RESO;
+ }
+ }
+ BugzillaQueryHit hit = new BugzillaQueryHit(label, priority, query.getRepositoryUrl(), AbstractRepositoryTask
+ .getTaskIdAsInt(handle), null, status);
+ ITask correspondingTask = taskList.getTask(hit.getHandleIdentifier());
+ if (correspondingTask instanceof BugzillaTask) {
+ hit.setCorrespondingTask((BugzillaTask)correspondingTask);
+ }
+
+ query.addHit(hit);
+ }
+
+ @Override
+ public String getTaskTagName() {
+ return TAG_BUGZILLA_REPORT;
+ }
+
+ @Override
+ public String getQueryHitTagName() {
+ return TAG_BUGZILLA_QUERY_HIT;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java
new file mode 100644
index 000000000..7dbe2e009
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+/**
+ * @author Rob Elves
+ */
+public class EditBugzillaQueryWizard extends Wizard {
+
+ private static final String TITLE = "Edit Bugzilla Query";
+
+ private final TaskRepository repository;
+
+ private AbstractBugzillaQueryPage page;
+
+ private BugzillaRepositoryQuery query;
+
+ public EditBugzillaQueryWizard(TaskRepository repository, BugzillaRepositoryQuery query) {
+ this.repository = repository;
+ this.query = query;
+ setNeedsProgressMonitor(true);
+ setWindowTitle(TITLE);
+ }
+
+ @Override
+ public void addPages() {
+ if (query.isCustomQuery()) {
+ page = new BugzillaCustomQueryWizardPage(repository, query);
+ } else {
+ page = new BugzillaSearchPage(repository, query);
+ }
+ addPage(page);
+
+ }
+
+ @Override
+ public boolean performFinish() {
+
+ query = page.getQuery();
+
+ final String queryTitle = page.getQueryTitle().trim();
+
+ MylarTaskListPlugin.getTaskListManager().getTaskList().renameContainer(query, queryTitle);
+
+ boolean offline = MylarTaskListPlugin.getMylarCorePrefs().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE);
+ if (!offline) {
+ WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+ protected void execute(IProgressMonitor monitor) throws CoreException {
+ monitor.beginTask("Executing query", 50);
+ try {
+ AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager()
+ .getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+
+ client.synchronize(query, null);
+ } finally {
+ monitor.done();
+ }
+ }
+ };
+
+ try {
+ getContainer().run(true, false, op);
+ } catch (Exception e) {
+ MylarStatusHandler.log(e, "There was a problem executing the query refresh");
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean canFinish() {
+ if (page != null && page.isPageComplete()) {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java
new file mode 100644
index 000000000..a4e5f0278
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+
+/**
+ * @author Mik Kersten
+ * @author Brock Janiczak
+ */
+public class NewBugzillaQueryWizard extends Wizard {
+
+ private static final String TITLE = "New Bugzilla Query";
+
+ private final TaskRepository repository;
+
+ BugzillaQueryTypeWizardPage page1;
+
+ public NewBugzillaQueryWizard(TaskRepository repository) {
+ this.repository = repository;
+ setNeedsProgressMonitor(true);
+ setWindowTitle(TITLE);
+ }
+
+ @Override
+ public void addPages() {
+ page1 = new BugzillaQueryTypeWizardPage(repository);
+ page1.setWizard(this);
+ addPage(page1);
+
+ }
+
+ @Override
+ public boolean performFinish() {
+
+ AbstractBugzillaQueryPage page;
+
+ if (page1.getNextPage() != null && page1.getNextPage() instanceof AbstractBugzillaQueryPage) {
+ page = (AbstractBugzillaQueryPage) page1.getNextPage();
+ } else {
+ return false;
+ }
+
+ final BugzillaRepositoryQuery queryCategory = page.getQuery();
+
+ MylarTaskListPlugin.getTaskListManager().getTaskList().addQuery(queryCategory);
+ boolean offline = MylarTaskListPlugin.getMylarCorePrefs().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE);
+ if (!offline) {
+ WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+ protected void execute(IProgressMonitor monitor) throws CoreException {
+ monitor.beginTask("Executing query", 50);
+ try {
+ AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager()
+ .getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+ client.synchronize(queryCategory, null);
+ } finally {
+ monitor.done();
+ }
+ }
+ };
+
+ try {
+ getContainer().run(true, false, op);
+ } catch (Exception e) {
+ MylarStatusHandler.log(e, "There was a problem executing the query refresh");
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean canFinish() {
+ if (page1.getNextPage() != null && page1.getNextPage().isPageComplete()) {
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java
new file mode 100644
index 000000000..6cf39e800
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.mylar.internal.bugzilla.ui.BugzillaOpenStructure;
+import org.eclipse.mylar.internal.bugzilla.ui.ViewBugzillaAction;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+
+/**
+ * @author Mik Kersten
+ */
+public class OpenBugzillaReportJob implements IRunnableWithProgress {
+
+ private int id;
+
+ private String serverUrl;
+
+ public OpenBugzillaReportJob(String serverUrl, int id) {
+ this.id = id;
+ this.serverUrl = serverUrl;
+ }
+
+ public void run(IProgressMonitor monitor) {
+ try {
+ monitor.beginTask("Opening Bugzilla Report", 10);
+ List<BugzillaOpenStructure> list = new ArrayList<BugzillaOpenStructure>(1);
+ list.add(new BugzillaOpenStructure(serverUrl, id, -1));
+ new ViewBugzillaAction("Open Bug " + id, list).run(monitor);
+ monitor.done();
+ } catch (Exception e) {
+ MylarStatusHandler.fail(e, "Unable to open Bug report: " + id, true);
+ }
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java
new file mode 100644
index 000000000..c5fb9f79a
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.wizard;
+
+import java.io.IOException;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.NewBugModel;
+import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException;
+import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
+import org.eclipse.mylar.internal.bugzilla.ui.WebBrowserDialog;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditorInput;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.search.internal.ui.SearchMessages;
+import org.eclipse.search.internal.ui.util.ExceptionHandler;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.progress.IProgressService;
+
+/**
+ * Class that contains shared functions for the wizards that submit bug reports.
+ *
+ * @author Eric Booth
+ * @author Mik Kersten (some hardening of prototype)
+ */
+public abstract class AbstractBugWizard extends Wizard implements INewWizard {
+
+ /** The ID of the posted bug report. */
+ private String id;
+
+ protected boolean fromDialog = false;
+
+ /** The model used to store all of the data for the wizard */
+ protected NewBugModel model;
+
+ /**
+ * Flag to indicate if the wizard can be completed based on the attributes
+ * page
+ */
+ protected boolean attributeCompleted = false;
+
+ /** The workbench instance */
+ protected IWorkbench workbenchInstance;
+
+ private final TaskRepository repository;
+
+ public AbstractBugWizard(TaskRepository repository) {
+ super();
+ this.repository = repository;
+ model = new NewBugModel();
+ id = null; // Since there is no bug posted yet.
+ super.setDefaultPageImageDescriptor(BugzillaUiPlugin.imageDescriptorFromPlugin(
+ "org.eclipse.mylar.internal.bugzilla.ui", "icons/wizban/bug-wizard.gif"));
+ // setForcePreviousAndNextButtons(true);
+ }
+
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.workbenchInstance = workbench;
+ }
+
+ @Override
+ public void addPages() {
+ super.addPages();
+ }
+
+ @Override
+ public boolean performFinish() {
+ // if (getWizardDataPage().serverSelected()) {
+ getWizardDataPage().saveDataToModel();
+ // If the bug report is sent successfully,
+ // then close the wizard and open the bug in an editor
+ if (postBug()) {
+ // if (!fromDialog)
+ // openBugEditor();
+ return true;
+ }
+ // If the report was not sent, keep the wizard open
+ else {
+ return false;
+ }
+ // }
+
+ // if (getWizardDataPage().offlineSelected()) {
+ // saveBugOffline();
+ // return true;
+ // }
+
+ // If no action was selected, keep the wizard open.
+ // return false;
+ }
+
+ // Flag to indicate if the bug was successfully sent
+ private boolean sentSuccessfully = false;
+
+ /**
+ * Attempts to post the bug on the Bugzilla server. If it fails, an error
+ * message pops up.
+ *
+ * @return true if the bug is posted successfully, and false otherwise
+ */
+ protected boolean postBug() {
+ final WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+ protected void execute(final IProgressMonitor monitor) throws CoreException {
+ PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
+ public void run() {
+ BugzillaReportSubmitForm form = BugzillaReportSubmitForm.makeNewBugPost(repository, model);
+ try {
+ id = form.submitReportToRepository();
+
+ if (id != null) {
+ sentSuccessfully = true;
+ }
+ } catch (BugzillaException e) {
+ MessageDialog.openError(null, "I/O Error", "Bugzilla could not post your bug.");
+ BugzillaPlugin.log(e);
+ } catch (PossibleBugzillaFailureException e) {
+ WebBrowserDialog.openAcceptAgreement(null, "Possible Bugzilla Client Failure",
+ "Bugzilla may not have posted your bug.\n" + e.getMessage(), form.getError());
+ BugzillaPlugin.log(e);
+ } catch (LoginException e) {
+ MessageDialog.openError(null, "Posting Error",
+ "Bugzilla could not post your bug since your login name or password is incorrect."
+ + "\nPlease check your settings in the bugzilla preferences. ");
+ sentSuccessfully = false;
+ }
+ }
+
+ });
+ }
+ };
+
+ IProgressService service = PlatformUI.getWorkbench().getProgressService();
+ try {
+ service.run(false, false, op);
+ } catch (Exception e) {
+ MylarStatusHandler.log(e, "Unable to submit bug");
+ }
+ return sentSuccessfully;
+ }
+
+ /**
+ * Try to open the editor with the newly created bug.
+ */
+ protected void openBugEditor() {
+
+ IEditorInput input = null;
+ try {
+ input = new ExistingBugEditorInput(repository.getUrl(), Integer.parseInt(id));
+ BugzillaPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(input,
+ IBugzillaConstants.EXISTING_BUG_EDITOR_ID, false);
+ } catch (LoginException e) {
+ // if we had an error with logging in, display an error
+ MessageDialog.openError(null, "Posting Error",
+ "Bugzilla could not access and display your bug in the editor because your login name or password is incorrect."
+ + "\nPlease check your settings in the bugzilla preferences. ");
+ } catch (PartInitException e) {
+ // if there was a problem, handle it and log it, then get out of
+ // here
+ ExceptionHandler.handle(e, SearchMessages.Search_Error_search_title,
+ SearchMessages.Search_Error_search_message);
+ BugzillaPlugin.log(e.getStatus());
+ } catch (IOException e) {
+ BugzillaPlugin.getDefault().logAndShowExceptionDetailsDialog(e, "occurred while opening the bug report.",
+ "Bugzilla Error");
+ }
+ }
+
+ /**
+ * Saves the bug report offline on the user's hard-drive. All offline bug
+ * reports are saved together in a single file in the plug-in's directory.
+ */
+ abstract protected void saveBugOffline();
+
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * @return the last page of this wizard
+ */
+ abstract protected AbstractBugzillaWizardPage getWizardDataPage();
+
+ public TaskRepository getRepository() {
+ return repository;
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java
new file mode 100644
index 000000000..42f0efaad
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java
@@ -0,0 +1,770 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.wizard;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.mylar.bugzilla.core.Attribute;
+import org.eclipse.mylar.internal.bugzilla.core.NewBugModel;
+import org.eclipse.mylar.internal.bugzilla.core.internal.BugReportElement;
+import org.eclipse.mylar.internal.bugzilla.ui.editor.AbstractBugEditor;
+import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.internal.WorkbenchImages;
+import org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages;
+
+/**
+ * Class that contains shared functions for the last page of the wizards that
+ * submit bug reports. This page allows the user to set the bug report's
+ * attributes before submitting it.
+ *
+ * @author Mik Kersten (hardening of initial prototype)
+ */
+public abstract class AbstractBugzillaWizardPage extends WizardPage implements Listener {
+
+ /** The instance of the workbench */
+ protected IWorkbench workbench;
+
+ /** Text field for the bugs url */
+ protected Text urlText;
+
+ /** Text field for the description of the bug */
+ protected Text descriptionText;
+
+ /** Text field for the summary of the bug */
+ protected Text summaryText;
+
+ /** Text field for the assignedTo of the bug */
+ protected Text assignedToText;
+
+ // /** Radio button to select when sending the new bug report to the server
+ // */
+ // protected Button serverButton;
+ //
+ // /** Radio button to select when saving the new bug report offline */
+ // protected Button offlineButton;
+
+ /** Combo box for the component that caused the bug */
+ protected Combo componentCombo;
+
+ /** Combo box for the priority of the bug */
+ protected Combo priorityCombo;
+
+ /** Combo box for the platform the bug occurred on */
+ protected Combo platformCombo;
+
+ /** Combo box for the severity of the bug */
+ protected Combo severityCombo;
+
+ /** Combo box for the products version */
+ protected Combo versionCombo;
+
+ /** Combo box for the OS that the bug occurred under */
+ protected Combo oSCombo;
+
+ /** Combo box for the Milestone that the bug addresses */
+ protected Combo milestoneCombo;
+
+ /** Enum for value */
+ protected final String VALUE = "VALUE";
+
+ /** Enum for property */
+ protected final String PROPERTY = "PROPERTY";
+
+ /** Enum for header */
+ protected final String HEADER = "HEADER";
+
+ /** The horizontal indentation of the labels */
+ protected final int HORZ_INDENT = 0;
+
+ /** Status variable for the possible errors on this page */
+ protected IStatus attributeStatus;
+
+ /**
+ * Constructor for AbstractWizardDataPage
+ *
+ * @param pageName
+ * the name of the page
+ * @param title
+ * the title of the page
+ * @param description
+ * the description text for the page
+ * @param workbench
+ * the instance of the workbench
+ */
+ public AbstractBugzillaWizardPage(String pageName, String title, String description, IWorkbench workbench) {
+ super(pageName);
+ setTitle(title);
+ setDescription(description);
+ this.workbench = workbench;
+
+ // set the status for the page
+ attributeStatus = new Status(IStatus.OK, "not_used", 0, "", null);
+ }
+
+ /**
+ * Applies the status to the status line of a dialog page.
+ *
+ * @param status
+ * The status to apply to the status line
+ */
+ protected void applyToStatusLine(IStatus status) {
+ String message = status.getMessage();
+ if (message.length() == 0)
+ message = null;
+ switch (status.getSeverity()) {
+ case IStatus.OK:
+ setErrorMessage(null);
+ setMessage(message);
+ break;
+ case IStatus.WARNING:
+ setErrorMessage(null);
+ setMessage(message, WizardPage.WARNING);
+ break;
+ case IStatus.INFO:
+ setErrorMessage(null);
+ setMessage(message, WizardPage.INFORMATION);
+ break;
+ default:
+ setErrorMessage(null);
+ setMessage(message, WizardPage.ERROR);
+ break;
+ }
+ }
+
+ /**
+ * Make sure that a String that is <code>null</code> is changed to a null
+ * string
+ *
+ * @param text
+ * The text to check if it is null or not
+ * @return The string in its proper format
+ */
+ public String checkText(String text) {
+ if (text == null)
+ return "";
+ else
+ return text;
+ }
+
+ @Override
+ public boolean canFlipToNextPage() {
+ // no next page for this path through the wizard
+ return false;
+ }
+
+ /**
+ * Create a new layout for a component
+ *
+ * @param composite
+ * The parent composite
+ * @param colSpan
+ * The number of columns that this can span
+ * @param text
+ * The text to add to the control
+ * @param style
+ * The style that the control should have
+ */
+ public void newLayout(Composite composite, int colSpan, String text, String style) {
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ data.horizontalSpan = colSpan;
+
+ // create the proper layout for the style
+ if (style.equalsIgnoreCase(VALUE)) {
+ Label l = new Label(composite, SWT.NONE);
+ FontData fontData = l.getFont().getFontData()[0];
+ fontData.setStyle(SWT.BOLD | fontData.getStyle());
+ Font font = new Font(null, fontData);
+ l.setFont(font);
+ l.setText(checkText(text));
+
+ data.horizontalIndent = HORZ_INDENT;
+ l.setLayoutData(data);
+ } else if (style.equalsIgnoreCase(PROPERTY)) {
+ Label l = new Label(composite, SWT.NONE);
+ FontData fontData = l.getFont().getFontData()[0];
+ fontData.setStyle(SWT.BOLD | fontData.getStyle());
+ Font font = new Font(null, fontData);
+ l.setFont(font);
+ l.setText(checkText(text));
+
+ data.horizontalIndent = HORZ_INDENT;
+ l.setLayoutData(data);
+ } else {
+ Composite generalTitleGroup = new Composite(composite, SWT.NONE);
+ generalTitleGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ generalTitleGroup.setLayoutData(data);
+ GridLayout generalTitleLayout = new GridLayout();
+ generalTitleLayout.numColumns = 2;
+ generalTitleLayout.marginWidth = 0;
+ generalTitleLayout.marginHeight = 9;
+ generalTitleGroup.setLayout(generalTitleLayout);
+
+ Label image = new Label(generalTitleGroup, SWT.NONE);
+ image.setImage(WorkbenchImages.getImage(IDEInternalWorkbenchImages.IMG_OBJS_WELCOME_ITEM));
+
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
+ image.setLayoutData(gd);
+ Label l = new Label(composite, SWT.NONE);
+ FontData fontData = l.getFont().getFontData()[0];
+ fontData.setStyle(SWT.BOLD | fontData.getStyle());
+ Font font = new Font(null, fontData);
+ l.setFont(font);
+ l.setText(checkText(text));
+
+ data.horizontalIndent = HORZ_INDENT;
+ l.setLayoutData(data);
+ }
+ }
+
+ /**
+ * Determine if the page is complete when the summary is changed
+ *
+ * @param e
+ * The event which occurred
+ */
+ public void handleEvent(Event e) {
+ boolean pageComplete = isPageComplete();
+
+ // Initialize a variable with the no error status
+ Status status = new Status(IStatus.OK, "not_used", 0, "", null);
+
+ setPageComplete(pageComplete);
+
+ if (!pageComplete)
+ status = new Status(IStatus.ERROR, "not_used", 0, "You must enter a summary and a description", null);
+
+ attributeStatus = status;
+
+ // Show the most serious error
+ applyToStatusLine(attributeStatus);
+
+ setPageComplete(pageComplete);
+ getWizard().getContainer().updateButtons();
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ saveDataToModel();
+ return null;
+ }
+
+ /**
+ * Sets the completed field on the wizard class when all the needed
+ * information is entered and the wizard can be completed
+ *
+ * @return true if the wizard can be completed, false otherwise
+ */
+ @Override
+ public boolean isPageComplete() {
+ AbstractBugWizard wizard = (AbstractBugWizard) getWizard();
+ if (summaryText.getText() == null || summaryText.getText().equals("") || descriptionText.getText() == null
+ || descriptionText.getText().equals("")) {
+ wizard.attributeCompleted = false;
+ return false;
+ }
+ // saveDataToModel();
+ wizard.attributeCompleted = true;
+ return true;
+ }
+
+ /**
+ * Save the data obtained from this point in the wizard to the model.
+ */
+ public void saveDataToModel() {
+ // get the model that we are using
+ AbstractBugWizard wizard = (AbstractBugWizard) getWizard();
+ NewBugModel nbm = wizard.model;
+
+ nbm.setDescription(descriptionText.getText());
+ nbm.setSummary(summaryText.getText());
+
+ // go through each of the attributes and sync their values with the
+ // combo boxes
+ for (Iterator<Attribute> it = nbm.getAttributes().iterator(); it.hasNext();) {
+ Attribute attribute = it.next();
+ String key = attribute.getName();
+ Map<String, String> values = attribute.getOptionValues();
+
+ try {
+ if (values == null)
+ values = new HashMap<String, String>();
+ if (key.equals(BugReportElement.OP_SYS.toString())) {
+ String os = oSCombo.getItem(oSCombo.getSelectionIndex());
+ attribute.setValue(os);
+ } else if (key.equals(BugReportElement.VERSION.toString())) {
+ String version = versionCombo.getItem(versionCombo.getSelectionIndex());
+ attribute.setValue(version);
+ } else if (key.equals(BugReportElement.BUG_SEVERITY.toString())) {
+ String severity = severityCombo.getItem(severityCombo.getSelectionIndex());
+ attribute.setValue(severity);
+ } else if (key.equals(BugReportElement.REP_PLATFORM.toString())) {
+ String platform = platformCombo.getItem(platformCombo.getSelectionIndex());
+ attribute.setValue(platform);
+ } else if (key.equals(BugReportElement.TARGET_MILESTONE.toString())) {
+ int index = milestoneCombo.getSelectionIndex();
+ if(index >= 0) {
+ String milestone = milestoneCombo.getItem(milestoneCombo.getSelectionIndex());
+ attribute.setValue(milestone);
+ }
+ } else if (key.equals(BugReportElement.COMPONENT.toString())) {
+ String component = componentCombo.getItem(componentCombo.getSelectionIndex());
+ attribute.setValue(component);
+ } else if (key.equals(BugReportElement.PRIORITY.toString())) {
+ String priority = priorityCombo.getItem(priorityCombo.getSelectionIndex());
+ attribute.setValue(priority);
+ } else if (key.equals(BugReportElement.BUG_FILE_LOC.toString())) {
+ String url = urlText.getText();
+ if (url.equalsIgnoreCase("http://"))
+ url = "";
+ attribute.setValue(url);
+ } else if (key.equals(BugReportElement.ASSIGNED_TO.toString())) {
+ String assignTo = assignedToText.getText();
+ attribute.setValue(assignTo);
+ } else {
+ // do nothing
+ }
+ } catch (IllegalArgumentException e) {
+ MylarStatusHandler.fail(e, "could not set attribute: " + attribute, false);
+ }
+ }
+ // wizard.attributeCompleted = true;
+ }
+
+ @Override
+ protected void setControl(Control c) {
+ super.setControl(c);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl(Composite parent) {
+ // whether the priority exists or not
+ boolean priExist = false;
+ boolean mileExist = false;
+
+ String url = null;
+
+ // get the model for the new bug
+ AbstractBugWizard wizard = (AbstractBugWizard) getWizard();
+ NewBugModel nbm = wizard.model;
+
+ // Set the current platform and OS on the model
+ setPlatformOptions(nbm);
+
+ // Attributes Composite- this holds all the combo fields and text
+ // fields
+ Composite attributesComposite = new Composite(parent, SWT.NONE);
+ GridLayout attributesLayout = new GridLayout();
+ attributesLayout.numColumns = 4;
+ attributesLayout.horizontalSpacing = 14;
+ attributesLayout.verticalSpacing = 6;
+ attributesLayout.makeColumnsEqualWidth = false;
+ attributesComposite.setLayout(attributesLayout);
+
+ GridData attributesData = new GridData(GridData.FILL_BOTH);
+ attributesData.horizontalSpan = 1;
+ attributesData.grabExcessVerticalSpace = false;
+ attributesComposite.setLayoutData(attributesData);
+ // End Attributes Composite
+
+ GridLayout attributesTitleLayout = new GridLayout();
+ attributesTitleLayout.horizontalSpacing = 0;
+ attributesTitleLayout.marginWidth = 0;
+
+ GridData attributesTitleData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ attributesTitleData.horizontalSpan = 4;
+
+ attributesTitleData.grabExcessVerticalSpace = false;
+
+ // Add the product to the composite
+ newLayout(attributesComposite, 1, "Product", PROPERTY);
+ newLayout(attributesComposite, 1, nbm.getProduct(), VALUE);
+
+ // Populate Attributes
+ for (Iterator<Attribute> it = nbm.getAttributes().iterator(); it.hasNext();) {
+ Attribute attribute = it.next();
+ String key = attribute.getParameterName();
+ String name = attribute.getName();
+ String value = checkText(attribute.getValue());
+ Map<String, String> values = attribute.getOptionValues();
+
+ // if it is a hidden field, don't try to display it
+ if (attribute.isHidden())
+ continue;
+
+ if (key == null)
+ key = "";
+
+ if (values == null)
+ values = new HashMap<String, String>();
+
+ GridData data = new GridData(GridData.BEGINNING);
+ data.horizontalSpan = 1;
+ data.horizontalIndent = HORZ_INDENT;
+ data.widthHint = 150;
+ // create and populate the combo fields for the attributes
+ if (key.equals(BugReportElement.OP_SYS.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+ oSCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY);
+
+ oSCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ oSCombo.add(a[i]);
+ }
+ int index;
+ if ((index = oSCombo.indexOf(value)) == -1)
+ index = 0;
+ oSCombo.select(index);
+ oSCombo.addListener(SWT.Modify, this);
+ } else if (key.equals(BugReportElement.VERSION.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+
+ versionCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+
+ versionCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ versionCombo.add(a[i]);
+ }
+ int index;
+ if ((index = versionCombo.indexOf(value)) == -1)
+ index = 0;
+ versionCombo.select(index);
+ versionCombo.addListener(SWT.Modify, this);
+ } else if (key.equals(BugReportElement.BUG_SEVERITY.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+ severityCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+
+ severityCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ severityCombo.add(a[i]);
+ }
+ int index;
+ if ((index = severityCombo.indexOf(value)) == -1)
+ index = 0;
+ severityCombo.select(index);
+ severityCombo.addListener(SWT.Modify, this);
+
+ } else if (key.equals(BugReportElement.REP_PLATFORM.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+ platformCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+
+ platformCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ platformCombo.add(a[i]);
+ }
+ int index;
+ if ((index = platformCombo.indexOf(value)) == -1)
+ index = 0;
+ platformCombo.select(index);
+ platformCombo.addListener(SWT.Modify, this);
+ } else if (key.equals(BugReportElement.TARGET_MILESTONE.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+ milestoneCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+ milestoneCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ milestoneCombo.add(a[i]);
+ }
+ int index;
+ if ((index = milestoneCombo.indexOf(value)) == -1)
+ index = 0;
+ milestoneCombo.select(index);
+ milestoneCombo.addListener(SWT.Modify, this);
+ //if(s.isEmpty()) milestoneCombo.setEnabled(false);
+ mileExist = true;
+ } else if (key.equals(BugReportElement.COMPONENT.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+ componentCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+
+ componentCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ componentCombo.add(a[i]);
+ }
+ int index;
+ if ((index = componentCombo.indexOf(value)) == -1)
+ index = 0;
+ componentCombo.select(index);
+ componentCombo.addListener(SWT.Modify, this);
+ } else if (key.equals(BugReportElement.PRIORITY.getKeyString())) {
+ newLayout(attributesComposite, 1, name, PROPERTY);
+ priorityCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL
+ | SWT.READ_ONLY);
+
+ priorityCombo.setLayoutData(data);
+ Set<String> s = values.keySet();
+ String[] a = s.toArray(new String[s.size()]);
+ for (int i = 0; i < a.length; i++) {
+ priorityCombo.add(a[i]);
+ }
+ int index;
+ if ((index = priorityCombo.indexOf(value)) == -1)
+ index = 0;
+ priorityCombo.select(index);
+ priorityCombo.addListener(SWT.Modify, this);
+ priExist = true;
+ } else if (key.equals(BugReportElement.BUG_FILE_LOC.getKeyString())) {
+ url = value;
+ } else {
+ // do nothing if it isn't a standard value to change
+ }
+ }
+
+ if (priExist && !mileExist) {
+ newLayout(attributesComposite, 1, "", PROPERTY);
+ newLayout(attributesComposite, 1, "", PROPERTY);
+ }
+
+ Composite textComposite = new Composite(attributesComposite, SWT.NONE);
+ textComposite.setLayout(new GridLayout(3, false));
+ GridData textCompositeGD = new GridData();
+ textCompositeGD.horizontalSpan = 4;
+ textCompositeGD.grabExcessHorizontalSpace = true;
+ textComposite.setLayoutData(textCompositeGD);
+
+
+ GridData urlTextData;
+ if (url != null) {
+ newLayout(textComposite, 1, BugReportElement.BUG_FILE_LOC.toString(), PROPERTY);
+ urlText = new Text(textComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP);
+ urlTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+
+ urlTextData.horizontalSpan = 2;
+ // summaryTextData.widthHint = 200;
+ urlText.setLayoutData(urlTextData);
+ urlText.setText(url);
+ urlText.addListener(SWT.FocusOut, this);
+ }
+
+ GridData summaryTextData;
+ newLayout(textComposite, 1, BugReportElement.ASSIGNED_TO.toString(), PROPERTY);
+ Label l = new Label(textComposite, SWT.NONE);
+ l.setText("(if email is incorrect submit will not proceed)");
+ summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ summaryTextData.horizontalSpan = 1;
+ l.setLayoutData(summaryTextData);
+ assignedToText = new Text(textComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP);
+ summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+
+ summaryTextData.horizontalSpan = 1;
+ summaryTextData.widthHint = 200;
+ assignedToText.setLayoutData(summaryTextData);
+ assignedToText.setText("");
+
+ // add the summary text field
+ newLayout(textComposite, 1, BugReportElement.SHORT_DESC.toString(), PROPERTY);
+ summaryText = new Text(textComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP);
+ summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+
+ summaryTextData.horizontalSpan = 2;
+ summaryTextData.widthHint = 200;
+ summaryText.setLayoutData(summaryTextData);
+ summaryText.setText(nbm.getSummary());
+ summaryText.addListener(SWT.Modify, this);
+
+ // Description Text
+ Composite descriptionComposite = new Composite(attributesComposite, SWT.NONE);
+
+ descriptionComposite.setLayout(attributesTitleLayout);
+
+ GridData descriptionData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ descriptionData.horizontalSpan = 4;
+ descriptionData.grabExcessVerticalSpace = false;
+ descriptionComposite.setLayoutData(descriptionData);
+ newLayout(descriptionComposite, 4, "Description:", HEADER);
+
+ // add the description text field
+ descriptionText = new Text(attributesComposite, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.WRAP);
+
+ descriptionText.setFont(AbstractBugEditor.COMMENT_FONT);
+ GridData descriptionTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ descriptionTextData.horizontalSpan = 4;
+ descriptionTextData.widthHint = AbstractBugEditor.DESCRIPTION_WIDTH;
+ descriptionTextData.heightHint = AbstractBugEditor.DESCRIPTION_HEIGHT;
+ descriptionText.setLayoutData(descriptionTextData);
+ descriptionText.addListener(SWT.Modify, this);
+
+ // serverButton = new Button(attributesComposite, SWT.RADIO);
+ // serverButton.setText("Submit bug report to the server.");
+ // GridData toServerButtonData = new
+ // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ // toServerButtonData.horizontalSpan = 4;
+ // serverButton.setLayoutData(toServerButtonData);
+ // serverButton.setSelection(true);
+ //
+ // offlineButton = new Button(attributesComposite, SWT.RADIO);
+ // offlineButton.setText("Save bug report offline.");
+ // GridData offlineButtonData = new
+ // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ // offlineButtonData.horizontalSpan = 4;
+ // offlineButton.setLayoutData(offlineButtonData);
+ // offlineButton.setSelection(false);
+
+ // if (wizard.fromDialog)
+ // offlineButton.setEnabled(false);
+
+ setControl(attributesComposite);
+ return;
+ }
+
+ // /**
+ // * @return <code>true</code> if the radio button to submit the bug to the
+ // * server is selected.
+ // */
+ // public boolean serverSelected() {
+ // return (serverButton == null) ? false : serverButton.getSelection();
+ // }
+ //
+ // /**
+ // * @return <code>true</code> if the radio button to save the bug offline
+ // * is selected.
+ // */
+ // public boolean offlineSelected() {
+ // return (offlineButton == null) ? false : offlineButton.getSelection();
+ // }
+
+ /*
+ * The following are Bugzilla's: OS's All AIX Windows 95 Windows 98 Windows
+ * CE Windows Mobile 2003 Windows Mobile 2005 Windows ME Windows 2000
+ * Windows NT Windows XP Windows 2003 Server Windows All MacOS X Linux
+ * Linux-GTK Linux-Motif HP-UX Neutrino QNX-Photon Solaris Solaris-GTK
+ * Solaris-Motif SymbianOS-Series 80 Unix All other
+ *
+ * The following are the platforsm in Bugzilla: All Macintosh PC Power PC
+ * Sun Other
+ *
+ * The following are Java's Archictures: [PA_RISC, ppc, sparc, x86, x86_64,
+ * ia64, ia64_32]
+ *
+ * The following are Java's OS's: [aix, hpux, linux, macosx, qnx, solaris,
+ * win32]
+ */
+ /**
+ * Sets the OS and Platform for the new bug
+ *
+ * @param newBugModel
+ * The bug to set the options for
+ */
+ public void setPlatformOptions(NewBugModel newBugModel) {
+ try {
+ // A Map from Java's OS and Platform to Buzilla's
+ Map<String, String> java2buzillaOSMap = new HashMap<String, String>();
+ Map<String, String> java2buzillaPlatformMap = new HashMap<String, String>();
+
+ java2buzillaPlatformMap.put("x86", "PC");
+ java2buzillaPlatformMap.put("x86_64", "PC");
+ java2buzillaPlatformMap.put("ia64", "PC");
+ java2buzillaPlatformMap.put("ia64_32", "PC");
+ java2buzillaPlatformMap.put("sparc", "Sun");
+ java2buzillaPlatformMap.put("ppc", "Power");
+
+ java2buzillaOSMap.put("aix", "AIX");
+ java2buzillaOSMap.put("hpux", "HP-UX");
+ java2buzillaOSMap.put("linux", "Linux");
+ java2buzillaOSMap.put("macosx", "MacOS X");
+ java2buzillaOSMap.put("qnx", "QNX-Photon");
+ java2buzillaOSMap.put("solaris", "Solaris");
+ java2buzillaOSMap.put("win32", "Windows All");
+
+ // Get OS Lookup Map
+ // Check that the result is in Values, if it is not, set it to other
+ Attribute opSysAttribute = newBugModel.getAttribute(BugReportElement.OP_SYS.toString());
+ Attribute platformAttribute = newBugModel.getAttribute(BugReportElement.REP_PLATFORM.toString());
+
+ String OS = Platform.getOS();
+ String platform = Platform.getOSArch();
+
+ String bugzillaOS = null; // Bugzilla String for OS
+ String bugzillaPlatform = null; // Bugzilla String for Platform
+
+ if (java2buzillaOSMap != null && java2buzillaOSMap.containsKey(OS) && opSysAttribute != null
+ && opSysAttribute.getOptionValues() != null) {
+ bugzillaOS = java2buzillaOSMap.get(OS);
+ if (opSysAttribute != null && !opSysAttribute.getOptionValues().values().contains(bugzillaOS)) {
+ // If the OS we found is not in the list of available
+ // options, set bugzillaOS
+ // to null, and just use "other"
+ bugzillaOS = null;
+ }
+ } else {
+ // If we have a strangeOS, then just set buzillaOS to null, and
+ // use "other"
+ bugzillaOS = null;
+ }
+
+ if (platform != null && java2buzillaPlatformMap.containsKey(platform)) {
+ bugzillaPlatform = java2buzillaPlatformMap.get(platform);
+
+ if (platformAttribute != null
+ && !platformAttribute.getOptionValues().values().contains(bugzillaPlatform)) {
+ // If the platform we found is not int the list of available
+ // optinos, set the
+ // Bugzilla Platform to null, and juse use "other"
+ bugzillaPlatform = null;
+ }
+ } else {
+ // If we have a strange platform, then just set bugzillaPatforrm
+ // to null, and use "other"
+ bugzillaPlatform = null;
+ }
+
+ // Set the OS and the Platform in the model
+ if (bugzillaOS != null && opSysAttribute != null)
+ opSysAttribute.setValue(bugzillaOS);
+ if (bugzillaPlatform != null && platformAttribute != null)
+ platformAttribute.setValue(bugzillaPlatform);
+
+ } catch (Exception e) {
+ MylarStatusHandler.fail(e, "could not set platform options", false);
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java
new file mode 100644
index 000000000..d63e669bb
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.wizard;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.security.auth.login.LoginException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.core.NewBugModel;
+import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
+import org.eclipse.mylar.internal.tasklist.ui.views.TaskRepositoriesView;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Shawn Minto
+ *
+ * The first page of the new bug wizard where the user chooses the bug's product
+ */
+public class BugzillaProductPage extends AbstractWizardListPage {
+
+ private static final String NEW_BUGZILLA_TASK_ERROR_TITLE = "New Bugzilla Task Error";
+
+ private static final String DESCRIPTION = "Pick a product on which to enter a bug.\n"
+ + "Press the Update button if you do not see the desired product.";
+
+ private static final String LABEL_UPDATE = "Update Products from Repository";
+
+ /** The list of products to submit a bug report for */
+ static List<String> products = null;
+
+ /**
+ * Reference to the bug wizard which created this page so we can create the
+ * second page
+ */
+ NewBugzillaReportWizard bugWizard;
+
+ /**
+ * String to hold previous product; determines if attribute option values
+ * need to be updated
+ */
+ private String prevProduct;
+
+ private final TaskRepository repository;
+
+ /**
+ * Constructor for BugzillaProductPage
+ *
+ * @param workbench
+ * The instance of the workbench
+ * @param bugWiz
+ * The bug wizard which created this page
+ * @param repository
+ * The repository the data is coming from
+ */
+ public BugzillaProductPage(IWorkbench workbench, NewBugzillaReportWizard bugWiz, TaskRepository repository) {
+ super("Page1", IBugzillaConstants.TITLE_NEW_BUG, DESCRIPTION, workbench);
+ this.bugWizard = bugWiz;
+ this.repository = repository;
+ setImageDescriptor(BugzillaUiPlugin.imageDescriptorFromPlugin("org.eclipse.mylar.bugzilla.ui",
+ "icons/wizban/bug-wizard.gif"));
+ }
+
+ protected ProgressMonitorDialog monitorDialog = new ProgressMonitorDialog(BugzillaPlugin.getDefault()
+ .getWorkbench().getActiveWorkbenchWindow().getShell());
+
+ protected IPreferenceStore prefs = BugzillaPlugin.getDefault().getPreferenceStore();
+
+ @Override
+ public void createAdditionalControls(Composite parent) {
+ Button updateButton = new Button(parent, SWT.LEFT | SWT.PUSH);
+ updateButton.setText(LABEL_UPDATE);
+
+ updateButton.setLayoutData(new GridData());
+
+ updateButton.addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+
+ monitorDialog.open();
+ IProgressMonitor monitor = monitorDialog.getProgressMonitor();
+ monitor.beginTask("Updating search options...", 55);
+
+ try {
+ BugzillaRepositoryUtil.updateQueryOptions(repository, monitor);
+
+ products = new ArrayList<String>();
+ for (String product : BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT,
+ repository.getUrl())) {
+ products.add(product);
+ }
+ monitor.worked(1);
+ populateList(false);
+ } catch (LoginException exception) {
+ // we had a problem that seems to have been caused from bad
+ // login info
+ MessageDialog
+ .openError(
+ null,
+ "Login Error",
+ "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. ");
+ BugzillaPlugin.log(exception);
+ } catch (IOException exception) {
+ MessageDialog
+ .openError(
+ null,
+ "Connection Error","\nPlease check your settings in the bugzilla preferences. ");
+ } finally {
+ monitor.done();
+ monitorDialog.close();
+ }
+ }
+ });
+ }
+
+ private void initProducts() {
+ // try to get the list of products from the server
+ if (!bugWizard.model.hasParsedProducts()) {
+ String repositoryUrl = repository.getUrl();
+ try {
+ String[] storedProducts = BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT,
+ repositoryUrl);
+ if (storedProducts.length > 0) {
+ products = Arrays.asList(storedProducts);
+ } else {
+ products = BugzillaRepositoryUtil.getProductList(repository);
+ }
+ bugWizard.model.setConnected(true);
+ bugWizard.model.setParsedProductsStatus(true);
+
+ } catch (Exception e) {
+ bugWizard.model.setConnected(false);
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ MessageDialog
+ .openError(Display.getDefault().getActiveShell(), NEW_BUGZILLA_TASK_ERROR_TITLE,
+ "Unable to get products. Ensure proper repository configuration in "+TaskRepositoriesView.NAME+".");
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * Populates the listBox with all available products.
+ *
+ * @param read
+ */
+ @Override
+ protected void populateList(boolean init) {
+ if (init) {
+ initProducts();
+ }
+
+ if (products != null) {
+ listBox.removeAll();
+ Iterator<String> itr = products.iterator();
+
+ while (itr.hasNext()) {
+ String prod = itr.next();
+ listBox.add(prod);
+ }
+ }
+ listBox.setFocus();
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+ handleEventHelper(event, "You must select a product");
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ // save the product information to the model
+ saveDataToModel();
+ NewBugzillaReportWizard wizard = (NewBugzillaReportWizard) getWizard();
+ NewBugModel model = wizard.model;
+
+ // try to get the attributes from the bugzilla server
+ try {
+ //if (prevProduct != null && !prevProduct.equals(model.getProduct())) {
+ //!model.hasParsedAttributes() ||
+ String serverUrl = repository.getUrl();
+// if (model.isConnected()) {
+// BugzillaRepositoryUtil.setupNewBugAttributes(serverUrl, model, false);
+// } else {
+
+ BugzillaRepositoryUtil.setupBugAttributes(serverUrl, model);
+// }
+ model.setParsedAttributesStatus(true);
+ if (prevProduct == null) {
+ bugWizard.setAttributePage(new WizardAttributesPage(workbench));
+ bugWizard.addPage(bugWizard.getAttributePage());
+ } else {
+ // selected product has changed
+ // will createControl again with new attributes in model
+ bugWizard.getAttributePage().setControl(null);
+ }
+ //}
+ } catch (final Exception e) {
+ e.printStackTrace();
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ MessageDialog.openError(Display.getDefault().getActiveShell(), NEW_BUGZILLA_TASK_ERROR_TITLE, e
+ .getLocalizedMessage()
+ + " Ensure proper repository configuration in " + TaskRepositoriesView.NAME + ".");
+ }
+ });
+// MylarStatusHandler.fail(e, e.getLocalizedMessage()+" Ensure proper repository configuration in "+TaskRepositoriesView.NAME+".", true);
+// BugzillaPlugin.getDefault().logAndShowExceptionDetailsDialog(e, "occurred.", "Bugzilla Error");
+ }
+ return super.getNextPage();
+ }
+
+ /**
+ * Save the currently selected product to the model when next is clicked
+ */
+ private void saveDataToModel() {
+ // Gets the model
+ NewBugModel model = bugWizard.model;
+
+ prevProduct = model.getProduct();
+ model.setProduct((listBox.getSelection())[0]);
+ }
+
+ @Override
+ public String getTableName() {
+ return "Product:";
+ }
+}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java
new file mode 100644
index 000000000..99526c481
--- /dev/null
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2003 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.internal.bugzilla.ui.wizard;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector;
+import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTask;
+import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil;
+import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.provisional.tasklist.TaskCategory;
+import org.eclipse.mylar.provisional.tasklist.TaskRepository;
+
+/**
+ * @author Mik Kersten
+ */
+public class NewBugzillaReportWizard extends AbstractBugWizard {
+
+ private static final String TITLE = "New Bugzilla Task";
+
+ /**
+ * The wizard page where the attributes are selected and the bug is
+ * submitted
+ */
+ private WizardAttributesPage attributePage;
+
+ private final TaskRepository repository;
+
+ public NewBugzillaReportWizard(TaskRepository repository) {
+ this(false, repository);
+ super.setWindowTitle(TITLE);
+ }
+
+ public NewBugzillaReportWizard(boolean fromDialog, TaskRepository repository) {
+ super(repository);
+ this.repository = repository;
+ this.fromDialog = fromDialog;
+ }
+
+ @Override
+ public void addPages() {
+ super.addPages();
+ addPage(new BugzillaProductPage(workbenchInstance, this, repository));
+ }
+
+ @Override
+ public boolean canFinish() {
+ return attributeCompleted;
+ }
+
+ @Override
+ protected void saveBugOffline() {
+ BugzillaRepositoryConnector client = (BugzillaRepositoryConnector)MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+ client.saveOffline(model, true);
+ }
+
+ @Override
+ protected AbstractBugzillaWizardPage getWizardDataPage() {
+ return attributePage;
+ }
+
+ public WizardAttributesPage getAttributePage() {
+ return attributePage;
+ }
+
+ public void setAttributePage(WizardAttributesPage attributePage) {
+ this.attributePage = attributePage;
+ }
+
+ @Override
+ public boolean performFinish() {
+ super.performFinish();
+ String bugIdString = this.getId();
+ int bugId = -1;
+ boolean validId = false;
+ try {
+ if (bugIdString != null) {
+ bugId = Integer.parseInt(bugIdString);
+ validId = true;
+ }
+ } catch (NumberFormatException nfe) {
+ // ignore
+ }
+ if (!validId) {
+ MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
+ "Could not create bug id, no valid id");
+ return false;
+ }
+
+ BugzillaTask newTask = new BugzillaTask(AbstractRepositoryTask.getHandle(repository.getUrl(),
+ bugId), "<bugzilla info>", true);
+ Object selectedObject = null;
+ if (TaskListView.getDefault() != null)
+ selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection())
+ .getFirstElement();
+
+// MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask);
+
+ if (selectedObject instanceof TaskCategory) {
+ MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, ((TaskCategory) selectedObject));
+ } else {
+ MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory());
+ }
+
+ AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
+// client.addTaskToArchive(newTask);
+ TaskUiUtil.openEditor(newTask, true);
+
+ if (!newTask.isDownloaded()) {
+ client.synchronize(newTask, true, null);
+ }
+
+ return true;
+ }
+}
diff --git a/org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch b/org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch
new file mode 100644
index 000000000..6ae599b1f
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_DISABLED_BUILDER" value="org.eclipse.jdt.core.javabuilder"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+</launchConfiguration>
diff --git a/org.eclipse.mylyn.help.ui/.project b/org.eclipse.mylyn.help.ui/.project
new file mode 100644
index 000000000..240934ada
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.mylar.doc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs b/org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 000000000..b51ee80ea
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Fri Jun 02 15:30:45 PDT 2006
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=true
diff --git a/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..264ee8811
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Mylar Documentation Plugin
+Bundle-SymbolicName: org.eclipse.mylar.doc; singleton:=true
+Bundle-Version: 0.5.3
+Bundle-Localization: plugin
+Eclipse-AutoStart: true
+Bundle-Vendor: Eclipse.org
diff --git a/org.eclipse.mylyn.help.ui/about.html b/org.eclipse.mylyn.help.ui/about.html
new file mode 100644
index 000000000..1aeb16b5f
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/about.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>May 2, 2006</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/contributing.html b/org.eclipse.mylyn.help.ui/doc/contributing.html
new file mode 100644
index 000000000..83a26ee1f
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/contributing.html
@@ -0,0 +1,176 @@
+<html>
+ <head>
+ <title>
+ Mylar FAQ
+ </title>
+ </head>
+ <body>
+ <center><h1>Mylar Contributor Reference</h1></center>
+ <p>Those interested in contributing should start out by emailing
+<a href="mailto:mylar-dev@eclipse.org">mylar-dev@eclipse.org</a> in order to get
+an idea of the current priorities.&nbsp; Also refer to the list of <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=helpwanted&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+reports marked help wanted</a>.&nbsp;</p>
+ <ul>
+ <li><a href="#contributing-intro">Introduction</a></li>
+ <li><a href="#contributing-setup">Workspace setup</a></li>
+ <li><a href="#bootstrap">Working bootstrapped</a></li>
+ <li><a href="#contributing-patches">Contributing patches</li>
+<!-- <li>Building</li>-->
+ </a></li>
+ <li><a href="#bootstrap">Building the JIRA Connector</a></li>
+ <li><a href="#building-dist">Building a distribution</a></li>
+ </ul><hr width="50%">
+ <h3>&nbsp; <br>
+ <a name="contributing-setup">Workspace setup</a></h3>
+ <ul>
+ <li>Building Mylar feature from HEAD requires
+ the latest Eclipse milestone release and
+ <a href="http://java.sun.com/j2se/1.5.0/download.jsp">JDK 1.5</a>.&nbsp;
+ Associate the J2SE-1.5 with your installed JRE on the Execution Environments preference page. </li>
+ <li>In the CVS Repositories view, add the following CVS location:
+ <b>HOST =</b> dev.eclipse.org&nbsp; <b>Repository Path</b>:
+ /cvsroot/technology.<br>If you do not have an account you may enter <b>anonymous</b> for the user name
+and leave the password blank.</li>
+ <li>Check out all of the projects under org.eclipse.mylar (except mylar.jira,
+ mylar.sandbox, mylar.viz, and mylar.zest.* which have additional
+ dependencies).&nbsp; There should be no errors or warnings.</li>
+ <li>Run org.eclipse.mylar.tests.AllTests as a JUnit Plug-in Test, with
+ assertions enabled.&nbsp; All tests should pass and there should be no
+ console output once you have done the following:<ul>
+ <li>Add the following to the test configuration under Arguments -&gt; VM
+ Arguments: -enableassertions -Xmx384M</li>
+ <li>Add a <b>credentials.properties</b> file to
+ org.eclipse.mylar.bugzilla.tests, and define &quot;username: xxx&quot; and
+ &quot;password: yyy&quot; in it. Email mylar-dev@ecipse.org for a username and
+ password.</li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+ <h3><a name="connector-jira">JIRA Connector</a></h3>
+ <ul>
+ <li>Get the latest <a href="http://subclipse.tigris.org/download.html">
+ Subclipse</a> plug-in, e.g. from the following update site:
+ subclipse.tigris.org/update_1.0.x</li>
+ <li>Set up a Subversion repository for
+ <a href="http://jira-dashboard.tigris.org/">JIRA Dashboard</a> (see the
+ <a href="http://jira-dashboard.tigris.org/servlets/ProjectSource">JIRA
+ Dahsboard doc</a> for troubleshooting):<ul>
+ <li>username: <code>guest</code> </li>
+ <li>password: &lt;blank&gt;</li>
+ <li>repository:
+ <a href="http://jira-dashboard.tigris.org/svn/jira-dashboard/trunk">
+ http://jira-dashboard.tigris.org/svn/jira-dashboard/trunk</a></li>
+ </ul>
+ </li>
+ <li>Check out the JIRA Dashboard Core featureres:<ul>
+ <li>org.tigris.jira.core</li>
+ <li>org.tigris.jira.core.soap</li>
+ <li>org.tigris.jira.core-feature</li>
+ </ul>
+ </li>
+ <li>Create a working set that excludes <i>org.tigris.jira</i> plug-ins
+ so that you have no warnings in the Problems list</li>
+ <li>Note that the JIRA connector has it's own test suite: <i>
+ org.eclipse.mylar.jira.tests.AllJiraTests</i></li>
+ </ul>
+ <hr>
+<h3><a name="bootstrap">Working bootsrapped</a> </h3>
+<p>To make eating your own dog food easier and avoid having to update to dev
+builds Mylar committers work bootstrapped:</p>
+ <ul>
+ <li>Set up a fresh workspace launched from an Eclipse that does not have
+ Mylar installed, and check out Mylar into
+ it.</li>
+ <li>Create a new Launch Configuration, point it at your workspace,
+ and work in that.&nbsp; The launching workspace will typically use very
+ little memory, but if you have a memory constrained machine you can kill
+ its java process.</li>
+ <li>Whenever your changes make it into HEAD synch up your launching
+ workspace and restart.&nbsp; You could conceivably </li>
+ </ul>
+ <hr>
+<h3><a name="contributing-patches">Contributing patches</a> </h3>
+ <p>All contributions to Mylar including patches should be made by using
+ Mylar in order to ensure that we
+ <a href="http://en.wikipedia.org/wiki/Eat_one's_own_dog_food">eat our our
+ own dog food</a>.&nbsp; A task context should be attached to each patch to
+ make applying and evolving it easier.</p>
+ <ul>
+ <li>Each patch should correspond to a single bug report, and a single
+ patch should be made for each set of changes to be reviewed.</li>
+ <li>With few exceptions patches should be accompanied by a JUnit test,
+ and in general unit tests are one of the most valuable and long-lived
+ contributions.&nbsp; If you are having trouble writing a test (e.g.
+ trickiness verifying what happens in the UI) comment on the
+ corresponding bug report so that we can point you at similar test cases
+ or consider extending the test harness if needed. </li>
+ <li>Minimize the amount of changes to existing code to make review
+ easier.&nbsp; </li>
+ <li>Synchronize often to ensure you have the latest code.&nbsp; Once you
+ start modifying resources, put the Synchronize view in Outgoing mode and press
+ the Change Set button so that Mylar tracks the context for the patch.</li>
+ <li>Before creating a new JUnit test class class check the components test
+ suite for similar test cases (e.g.
+ <tt>AllTasklistTests</tt>).</li>
+ <li>Set the formatter by importing org.eclipse.mylar/developer/javaFormatterSettings.xml
+ into Window -&gt; Preferences -&gt; Java -&gt; Code Style -&gt; Formatter.&nbsp;
+ Format code using Eclipse's formatter (Ctrl+Shift+F)
+ and ensure that no&nbsp; have been added.</li>
+ <li>Ensure that there is no console output.&nbsp; For logging errors use
+ <tt>MylarStatusHandler</tt>.</li>
+ </ul>
+ <p>To submit:</p>
+ <ul>
+ <li>Ensure there are no build errors, warnings, and that <tt>org.eclipse.mylar.tests.AllTests</tt> passes.</li>
+ <li>Synchronize using Incoming mode and ensure that there are no
+ conflicts, and merge them locally if there are.</li>
+ <li>Right click the task context change set (or the project containing
+ the patch--patches should be made for a project, not a file), press Team
+ -&gt; Create Patch, and make the file suffix &quot;.txt&quot;.</li>
+ <li>Attach the patch to the bug report, and <i>indicate in the comment
+ what testing was done to validate it</i> (e.g. unit test coverage,
+ manual tests performed).</li>
+ <li>Attach the task context to the bug report.</li>
+ </ul>
+ <hr>
+<h3><a name=building-dist>Building a distribution</a></h3>
+<ul>
+ <li>Using PDE Build support to create a Mylar distribution from HEAD, using
+ a plain Eclipse 3.2<ul>
+ <li>org.eclipse.mylar-feature/feature.xml -&gt; Overview -&gt; change version
+ number to current date (e.g. 0.4.7.v20060125-0800)<ul>
+ <li>On Plug-ins tab -&gt; Versions... -&gt; Force feature version into plug-in and
+ fragment manifests</li>
+ <li>Repeat above for org.eclipse.mylar-bugzilla-feature.xml</li>
+</ul>
+ </li>
+ <li>org.eclipse.mylar-site/e3.2/site.xml<ul>
+ <li>Delete old features (grayed out)</li>
+ <li>Add new mylar-bugzilla and mylar features</li>
+ <li>Hit Build All (if this fails restart Eclipse and try again)</li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li>To install, add the path of org.eclipse.mylar-site/e3.2/site.xml as a
+ local update site</li>
+ <li>Bugzilla support can be built independently of the Mylar UI by checking
+ out the following projects mylar.bugzilla.core, mylar.bugzilla.ui,
+ mylar.tasklist, mylar.core </li>
+</ul>
+ <p>Merging and building the 3.1 branch:</p>
+ <ul>
+ <li>Right-click the org.eclipse.mylar.java, mylar.ide, and mylar.xml
+ project, <i>Team</i> -&gt; <i>Switch to Another Branch...</i>, then <i>Refresh</i> the
+ <i>Branches</i>
+ and select <b>e_3_1 </b></li>
+ <li>The list of files that should not be overwritten is in:
+ org.eclipse.mylar-site/merge.text</li>
+ </ul>
+ <p>Deploying:</p>
+ <ul>
+ <li>Instructions are in org.eclipse.mylar-site/release.txt</li>
+ </ul>
+ <p>&nbsp; </p>
+</body></html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/dev/changes.html b/org.eclipse.mylyn.help.ui/doc/dev/changes.html
new file mode 100644
index 000000000..bea7d91d3
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/dev/changes.html
@@ -0,0 +1,12395 @@
+<HTML>
+<HEAD>
+ <TITLE>Mylar Release Notes</TITLE>
+
+ <style>
+<!--
+div.Section1
+ {page:Section1;}
+a:link
+ {color:blue;
+ text-decoration:underline;}
+ div.MsoNormal
+ {margin:0in;
+ margin-bottom:.0001pt;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ color:windowtext;}
+-->
+</style>
+
+</HEAD>
+<BODY LINK="#4756AC" VLINK="#60657B" BGCOLOR="#FFFFFF">
+
+ <h2>Release Notes</h2>
+ <div class="Section1">
+ <h3>Mylar 0.3.9 released 2005-09-26</h3>
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.9.1 is
+ now available, includes numerous bug fixes, and support for Eclipse
+ 3.2M2. &nbsp;Unfortunately due to changes in Eclipse 3.2M2 it is no
+ longer possible for the same plug-ins to support both 3.1 and 3.2.&nbsp;
+ But fortunately it was possible to coerce the update site allow you
+ to select either the 3.1 or 3.2 based feature.&nbsp; Another key change
+ in this release is that the Mylar Monitor has been almost entirely
+ decoupled from the UBC user study in preparation for the 0.4
+ release, and is now available in CVS at dev.eclipse.org. </span>
+ </font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Acknowledgements</span></font></b></p>
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Thanks go out to
+ Wes Coelho for contributing making the Previous/Next task navigation
+ in the Task List persistent, and for helping provide a previous of
+ whether a task has context. &nbsp;Also, Eugene Kuleshov came up with the
+ really good idea of making landmark creation work by dragging an
+ element to an Active view (see below).</span></font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed (22 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 95.22%" cellSpacing="0" cellPadding="0" width="95%" border="0" id="table34">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109815" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109815">
+ 109815</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add phase
+ 2 upgrade popup </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110111" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110111">
+ 110111</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ context activity context </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110113" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110113">
+ 110113</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ restructure documentation </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110234" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110234">
+ 110234</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">guard
+ against failure of elements to open </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110132" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110132">
+ 110132</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ ClassCircularityError on startup </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110200" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110200">
+ 110200</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">clean up
+ task list extension points and create JIRA plug-in </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104607" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104607">
+ 104607</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ FAQ document </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110630" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110630">
+ 110630</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ java.lang.VerifyError with Mylar 0.3.9 on Eclipse 3.2M2
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110112" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110112">
+ 110112</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">tasks
+ fail to get removed from root </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109816" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109816">
+ 109816</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ search labels blink on every selection </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106257" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106257">
+ 106257</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">zazam@uvic.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Proposed
+ enhancement: Decouple UBC study </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109803" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109803">
+ 109803</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">bsd@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Tooltips
+ on task list cause loss of focus </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109804" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109804">
+ 109804</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">bsd@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Differentiating task categories is difficult with Mylar a...
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110464" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110464">
+ 110464</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ active search check box selections disjoint </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107810" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107810">
+ 107810</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">toggle of
+ folding can cause file modification when using ... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110508" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110508">
+ 110508</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Allow
+ drag-n-drop to Active Search to create landmark </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109462" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109462">
+ 109462</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">can't
+ change category name </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109783" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109783">
+ 109783</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">wes.coelho@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ indication of whether task has context </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110061" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110061">
+ 110061</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">wes.coelho@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">previous
+ task history should be persistent </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107490" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107490">
+ 107490</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">if view
+ is not active content can stick after task de-act... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110133" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110133">
+ 110133</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Unhandled
+ event loop exception </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110134" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=110134">
+ 110134</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Wrong
+ line breaks in Bugzilla comment editors </span></font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.8 released 2005-09-19</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.8 is
+ now available and provides the first cut at predicted interest
+ facilities such as Active Search (new &amp; noteworthy snippets are
+ below).&nbsp; These features are available for those users who update and
+ are in Phase 2 of the user study (under Preferences -&gt; Mylar -&gt; User
+ Study must have over 25000 events).&nbsp; If you should be in Phase 2 but
+ don’t see the Phase 2 update site email
+ <a title="mailto:mylar@cs.ubc.ca" href="mailto:mylar@cs.ubc.ca">
+ mylar@cs.ubc.ca</a>. &nbsp;The focus for this week is refactoring
+ awareness and continuing to de-couple the UBC study. &nbsp;Special thanks
+ goes out to Brian de Alwis for identifying some important Linux/GTK
+ issues.&nbsp; </span></font><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></b></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (20 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 100%" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table32">
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109459" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109459">
+ 109459</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">during
+ bugzilla refresh focus is repeatedly lost.. </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109538" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109538">
+ 109538</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ active search disable when view is not active </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108408" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108408">
+ 108408</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">don't
+ allow non-existing elements to be landmarks </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108409" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108409">
+ 108409</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ usage summary limit results to accepted users </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109232" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109232">
+ 109232</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer refreshes too much on marker change </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109456" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109456">
+ 109456</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problems
+ list blinks in save in filtered mode </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109642" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109642">
+ 109642</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">mylar can
+ block workspace on startup </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107384" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107384">
+ 107384</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ hierarchy can contain duplicate elements </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109815" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109815">
+ 109815</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add phase
+ 2 upgarde popup </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108294" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108294">
+ 108294</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ active search laziness </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109315" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109315">
+ 109315</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer fails to unlink with editor when Mylar i... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109348" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109348">
+ 109348</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ streamline date chooser </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106690" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106690">
+ 106690</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add &quot;edit
+ highlighters&quot; button to &quot;choose highlighter&quot; menu </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109534" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109534">
+ 109534</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ &quot;remove from this category&quot; action </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109462" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109462">
+ 109462</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">can't
+ change category name </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106938" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106938">
+ 106938</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Implement
+ &quot;new&quot; marker for Bugzilla query </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106931" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106931">
+ 106931</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Improve
+ icons for bugzilla tasks </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109262" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109262">
+ 109262</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problems
+ list filter does not retain state on startup </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 0in; PADDING-LEFT: 15pt; PADDING-BOTTOM: 0in; PADDING-TOP: 0in">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109313" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109313">
+ 109313</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 0in; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">outline
+ view refreshes too often </span></font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.7 released 2005-09-12</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.7 is
+ now available.&nbsp; The most notable changes are synchronization status
+ for Bugzilla (pasted from the New &amp; Noteworthy below) and a move to
+ extension points for the Mylar bridges.&nbsp; The focus for this week is
+ improving Active Search and Active Hierarchy performance and
+ integration, and 0.3.8 will be the first release of these
+ facilities. </span></font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (20 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 94.12%" cellSpacing="0" cellPadding="0" width="94%" border="0" id="table9">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103589" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103589">
+ 103589</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">task list
+ and active search contribution items fail to sh... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104253" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104253">
+ 104253</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">tri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ mylar bridges extension points </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105516" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105516">
+ 105516</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">s.s@rutgers.edu</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer shows nothing upon eclipse startup unles... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106931" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106931">
+ 106931</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Improve
+ icons for bugzilla tasks </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106938" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106938">
+ 106938</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Implement
+ &quot;new&quot; marker for Bugzilla query </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107460" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107460">
+ 107460</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ Java Browsing Perspective robustness </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107812" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107812">
+ 107812</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ prompt to view tutorial video on phase1 start </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108006" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108006">
+ 108006</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add UI
+ for restoring the tasklist from the backup copy </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108445" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108445">
+ 108445</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">NPE on
+ shut down from Update Manager </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108446" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108446">
+ 108446</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">NPE on
+ shut down from Update Manager </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108475" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108475">
+ 108475</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">if active
+ task is only under archive reports it still nee... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108535" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108535">
+ 108535</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ttftestrayv@yahoo.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">INVA</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Bugzilla
+ Editor has problems in modified bugzilla repository </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108742" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108742">
+ 108742</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">min</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ugawhyop001@sneakemail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Eclipse's
+ Problems filters interact badly with Mylar </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109147" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109147">
+ 109147</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">s.s@rutgers.edu</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">&quot;link
+ with editor&quot; doesn't work </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109155" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109155">
+ 109155</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">s.s@rutgers.edu</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ incorporate working sets into the interest model </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109251" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109251">
+ 109251</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">context
+ is not saved on shutdown or task deactivation </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109252" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109252">
+ 109252</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">INVA</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ task not consistently highlighted </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109261" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109261">
+ 109261</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">offline
+ reports pops up repeatedly </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109262" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109262">
+ 109262</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problems
+ list filter does not retain state on startup </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109315" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109315">
+ 109315</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer fails to unlink with editor when Mylar i... </span>
+ </font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.6 released 2005-08-29</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.6 is
+ out, contains numerous fixes.&nbsp; This week’s focus will be tuning
+ Active Search, Bugzilla and task list enhancements, and
+ infrastructure improvements including making the bridges
+ extension-point based.&nbsp; Also note that per Eugene’s suggestion we
+ are now tagging bug reports that contain interesting design
+ discussions with a “[discussion]” prefix on the bug summary. &nbsp;Here
+ is the
+ <a title="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&amp;order=relevance+desc&amp;bug_status=__open__&amp;product=Mylar&amp;content=%5Bdiscussion%5D" href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=Mylar&content=%5Bdiscussion%5D">
+ bugzilla query</a>:</span></font></p>
+ <table class="MsoNormalTable" style="WIDTH: 100%" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table7">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107596" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107596">
+ 107596</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">timmunro@amazon.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">NEW</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal">
+ <font face="Tahoma" color="black" size="2">
+ <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ [discussion] XP / Agile support features </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106940" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106940">
+ 106940</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">NEW</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal">
+ <font face="Tahoma" color="black" size="2">
+ <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ [discussion] Add support for QA tools </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102848" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102848">
+ 102848</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">NEW</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal">
+ <font face="Tahoma" color="black" size="2">
+ <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ [discussion] support multiple bug providers </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104497" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104497">
+ 104497</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">NEW</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal">
+ <font face="Tahoma" color="black" size="2">
+ <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ [discussion] automatic task activation </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104638" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104638">
+ 104638</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">jakubwach@o2.pl</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">NEW</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal">
+ <font face="Tahoma" color="black" size="2">
+ <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ [discussion] improve automatic folding </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105100" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105100">
+ 105100</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ASSI</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal">
+ <font face="Tahoma" color="black" size="2">
+ <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma">
+ &nbsp;</span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ [discussion] prototype sharing of task contexts </span>
+ </font></td>
+ </tr>
+ </table>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ &nbsp;Tasks completed last week (33 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 94.7%" cellSpacing="0" cellPadding="0" width="94%" border="0" id="table8">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107542" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107542">
+ 107542</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Build
+ errors should increase interest level for java files </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107477" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107477">
+ 107477</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">split out
+ IDE-specific dependencies into mylar.ide component </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107463" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107463">
+ 107463</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ &quot;unfiltered&quot; view selections are reported incorrectly </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103734" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103734">
+ 103734</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ statistics generation check for phase switch </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106762" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106762">
+ 106762</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ within user analysis of edit ratio </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107809" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107809">
+ 107809</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ error logging more verbose </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104873" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104873">
+ 104873</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">suppress
+ active search results showing up in package expl... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104110" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104110">
+ 104110</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ support for resetting edges </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104063" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104063">
+ 104063</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">toggling
+ related element providers fails to remove the se... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103419" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103419">
+ 103419</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ active search infrastructure </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106913" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106913">
+ 106913</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Annoying
+ task description editor activation on single mou... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107062" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107062">
+ 107062</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ custom queries </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107087" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107087">
+ 107087</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Remote
+ changes are not being shown for bugs that have loc... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106927" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106927">
+ 106927</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">automatic
+ refresh of bugzilla reports fails </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108163" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108163">
+ 108163</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ tasks disappear </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104601" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104601">
+ 104601</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">explore
+ making Mylar run on JDK 1.4 </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107285" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107285">
+ 107285</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make task
+ list save state purely based on changes </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107745" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107745">
+ 107745</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Study
+ results should be submitted from a background job </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107459" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107459">
+ 107459</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Deactivate mylar filter in all views on task deactivation
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107549" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107549">
+ 107549</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Accessibility of Mylar glasses in all views </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107304" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107304">
+ 107304</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">timmunro@amazon.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Make key
+ project resources always visible </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107659" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107659">
+ 107659</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make sure
+ that tooltip works for bugzilla hits </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107754" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107754">
+ 107754</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">entire
+ tasklist can be lost if mylar is closed before loa... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106923" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106923">
+ 106923</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Bugzilla
+ operations should run in background jobs </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108154" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108154">
+ 108154</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ navigating to previous task doesn't work if only one task...
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107484" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107484">
+ 107484</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Task
+ context not saved on restart </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108062" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108062">
+ 108062</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">eu@md.pp.ru</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">NPE when
+ opening resources from CVS resources history </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104255" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104255">
+ 104255</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ 'context categories' </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102680" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102680">
+ 102680</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">all views
+ should de-register taskscape listeners when dea... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108068" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=108068">
+ 108068</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">update
+ active search based on resource changes </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103235" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103235">
+ 103235</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ monitoring multiple workbench windows </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102047" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102047">
+ 102047</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P5</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Drag and
+ Drop overwrites task description </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101947" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101947">
+ 101947</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P5</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ensure
+ update of XML outline view </span></font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.5 released 2005-08-22</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.5 is
+ out and a big thanks goes out to Eugene Kuleshov and Tim Munro for
+ contributing so many useful bug reports and comments on improving
+ the usability and integration of Mylar.&nbsp; The focus for this week’s
+ 0.3.6 release will be resolving those issues, and getting the
+ predicted interest features like Active Search ready for the user
+ study.</span></font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (30 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 93.66%" cellSpacing="0" cellPadding="0" width="93%" border="0" id="table6">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106930" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106930">
+ 106930</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Task list
+ is loosing its content after each restart </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106929" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106929">
+ 106929</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Add
+ tooltip for description column in the tasklist </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107152" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107152">
+ 107152</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ &quot;unsure&quot; the default for questionnaire responses </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104889" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104889">
+ 104889</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ differentiate between element selections of normal, decay...
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107055" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107055">
+ 107055</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">min</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Task List
+ Filter </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105516" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105516">
+ 105516</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer shows nothing upon eclipse startup unles... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107129" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107129">
+ 107129</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Add
+ &quot;Collapse All&quot; action to tasklist toolbar </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107074" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107074">
+ 107074</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Allow
+ group operation for &quot;Make less interesting&quot; action </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107088" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107088">
+ 107088</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Choose
+ highliter menu should have option to remove highliter </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103234" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103234">
+ 103234</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">monitor
+ seems to be storing too much for preferences </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104512" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104512">
+ 104512</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">after a
+ report is disabled task context can remain in pac... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106899" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106899">
+ 106899</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">INVA</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">suppress
+ filtering of active tasks </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107081" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107081">
+ 107081</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">completed
+ bugs don't filter from root </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103031" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103031">
+ 103031</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">lkf@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">summarize
+ perspective and activity usage </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107146" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107146">
+ 107146</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">text
+ selections cause too much refreshing ManifestEditor </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107305" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107305">
+ 107305</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Eclipse
+ hangs when modifying ant build.xml </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107351" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107351">
+ 107351</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Startup
+ slow </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105094" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105094">
+ 105094</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ invalidate search results </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106924" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106924">
+ 106924</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">npe when
+ no products are available </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102852" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102852">
+ 102852</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ link to bug report in editor </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103866" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103866">
+ 103866</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">All</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Crtl-click
+ in the code to navigate to bug </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106925" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106925">
+ 106925</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">error
+ stopping bugzilla plug-in </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107085" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107085">
+ 107085</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Put a
+ limit on a fetched query result size </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106926" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106926">
+ 106926</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">too many
+ &quot;download failed&quot; messages in log </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106699" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106699">
+ 106699</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Should
+ not have to redo demographic information when user... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106861" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106861">
+ 106861</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ custom drill-down adapter </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106906" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106906">
+ 106906</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Additional actions for tasklist popup menu </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107175" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107175">
+ 107175</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">offline
+ report exception </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107168" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=107168">
+ 107168</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Show in
+ browser link improvmemnts </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106566" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106566">
+ 106566</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">zazam@uvic.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make the
+ sign-up form HTML </span></font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.4 released 2004-08-15</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.4 is
+ out with an improved task list and the bug fixes listed below.&nbsp; Note
+ that due to vacation schedules this was a 3 week cycle and not our
+ usual 1 week cycle.&nbsp; A <i><span style="FONT-STYLE: italic">big
+ thanks goes out Eugene Kuleshov</span></i> who has been very helpful
+ in clearly outlining usability issues and providing some great ideas
+ for enhancements. &nbsp;The focus for this week’s 0.3.5 release will be
+ addressing those usability issues and getting Active Search to the
+ point where we start using it for our daily development.</span></font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (33 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 93.8%" cellSpacing="0" cellPadding="0" width="93%" border="0" id="table5">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103729" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103729">
+ 103729</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ support for disjoint selections in Mylar views </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106629" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106629">
+ 106629</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">WORK</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ NoSuchMethodError when loading Mylar </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106669" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106669">
+ 106669</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">LATE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Phase
+ Switch problem </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106800" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106800">
+ 106800</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Add an
+ option to deactivate task without closing opened e... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102800" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102800">
+ 102800</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ selections in package explorer jump to previous location
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102689" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102689">
+ 102689</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">control
+ enablement of Mylar actions </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106801" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106801">
+ 106801</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Provide
+ back/forward navigation in task view </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106820" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106820">
+ 106820</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Select
+ items of interest based on naming convention </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106899" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106899">
+ 106899</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">INVA</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">suppress
+ filtering of active tasks </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106917" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106917">
+ 106917</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Unable to
+ select two nodes in package explorer view </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104265" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104265">
+ 104265</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ planning game report </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104793" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104793">
+ 104793</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">quick
+ search action </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103733" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103733">
+ 103733</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ gamma settings </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104263" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104263">
+ 104263</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ reminders in task list </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104898" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104898">
+ 104898</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ periodically save the task list </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105098" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105098">
+ 105098</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">WORK</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">dragging
+ a task from the root to a category fails to remo... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105571" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105571">
+ 105571</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">estimated
+ time for tasks </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103031" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103031">
+ 103031</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">lkf@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">summarize
+ perspective and activity usage </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102959" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102959">
+ 102959</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">show
+ progress during upload </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104089" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104089">
+ 104089</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">on bug
+ change refresh </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104927" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104927">
+ 104927</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">dozens of
+ refresh jobs can hang </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105097" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105097">
+ 105097</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ back/forward buttons to task list </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101900" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101900">
+ 101900</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ search npe </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102592" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102592">
+ 102592</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">Oth</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ documentation is out of date </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102850" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102850">
+ 102850</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ submitting a comment can fail silently </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103914" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103914">
+ 103914</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">WORK</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Using the
+ outline view to select fails </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105158" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105158">
+ 105158</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">min</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">&quot;glasses&quot;
+ icon disappearing on editor pane </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105516" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105516">
+ 105516</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer shows nothing upon eclipse startup unles... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106664" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106664">
+ 106664</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ questionnaire text box should wrap lines </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102683" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102683">
+ 102683</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ reassinging bugs </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102855" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102855">
+ 102855</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ support for CC'ing members and viewing CC list </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103537" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103537">
+ 103537</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">password
+ shows up in query string when internal browser used </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106566" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106566">
+ 106566</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">PC</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">zazam@uvic.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make the
+ sign-up form HTML </span></font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.3 released 2005-07-25</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.3 is
+ out and has had some substantial improvements in terms of both UI
+ and architecture.&nbsp; Most of the key bugs have been addressed, and
+ we’re now focusing on usability enhancements and refinements.&nbsp; We
+ also worked on Active Search, but that needs considerably more
+ effort and won’t be release until mid or late next month.&nbsp; Please
+ note that I will be away on vacation for most of the next two weeks,
+ so send any critical questions to Shawn (sminto@cs.ubc.ca).</span></font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (40 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 93.62%" cellSpacing="0" cellPadding="0" width="93%" border="0" id="table4">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102679" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102679">
+ 102679</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add show
+ filtered action to navigator </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104243" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104243">
+ 104243</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ flash demo tutorial </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104274" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104274">
+ 104274</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ interaction event errors </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104644" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104644">
+ 104644</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">monitor
+ task activation </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104691" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104691">
+ 104691</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ collectors support csv export and user id mapping </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104888" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104888">
+ 104888</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">revise
+ docs for 0.3.2 </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103940" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103940">
+ 103940</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">update
+ documentation for 0.3.2 </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104489" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104489">
+ 104489</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">clean up
+ composite context API </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104555" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104555">
+ 104555</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ mechanism for analyzing statistics per-user </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103869" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103869">
+ 103869</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ highlighters a task list decorator </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104425" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104425">
+ 104425</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">WONT</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Clear
+ Task Context Fails for a bugzilla task in a query </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102673" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102673">
+ 102673</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">task
+ editor dirty state </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102946" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102946">
+ 102946</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ unified utility for InteractionEvent externalization </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103092" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103092">
+ 103092</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ category filtering and sorting </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104257" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104257">
+ 104257</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make mode
+ where only one task context can be active </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104260" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104260">
+ 104260</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">merge
+ TaskListManager and TaskList </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104663" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104663">
+ 104663</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ sleeping for more than 3 hours </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104890" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104890">
+ 104890</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">tasklist
+ was lost when upgrading mylar </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103440" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103440">
+ 103440</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ bugzilla refresh on a standard category </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104261" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104261">
+ 104261</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make time
+ refresh automatically on task list </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102681" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102681">
+ 102681</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ensure
+ that non-existing elements can not be searched </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102870" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102870">
+ 102870</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ documentation of known limitations </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102959" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102959">
+ 102959</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">show
+ progress during upload </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103288" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103288">
+ 103288</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">&quot;close
+ all editors&quot; not closing all </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103742" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103742">
+ 103742</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Packages
+ do not reappear in Java Browsing Packages view w... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104074" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104074">
+ 104074</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make all
+ Java active search categories one and add drop-d... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104118" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104118">
+ 104118</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Bugzilla
+ refresh fails if task active </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104389" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104389">
+ 104389</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ search not working on startup, can't be disabled </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104424" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104424">
+ 104424</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ bugzilla searches fail due to invalid thread access </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104526" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104526">
+ 104526</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ highlighters and clear context action use task list ...
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103588" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103588">
+ 103588</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">use
+ extension points in place of ITaskListActionContributor
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104382" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104382">
+ 104382</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">stop
+ button for active search </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104510" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104510">
+ 104510</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">resolving
+ bugs fails </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103866" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103866">
+ 103866</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Crtl-click
+ in the code to navigate to bug </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103881" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103881">
+ 103881</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Context
+ menu actions are enabled for all elements </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104553" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104553">
+ 104553</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">after new
+ report is created via task list, open it </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103537" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103537">
+ 103537</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">password
+ shows up in query string when internal browser used </span>
+ </font></td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.2 released 2005-07-18</h3>
+ <div class="Section1">
+ <p class="MsoPlainText"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">0.3.2 went out on
+ Friday evening with a lot of improvements, hardening of the UI and a
+ de-coupling of the Tasks plug-in from the Mylar UI.&nbsp; For this
+ Friday’s 0.3.3 release we’ll be focusing on fixing any bugs that
+ come in as a result of people starting to use Phase 1, improving the
+ usability of active views, creating extension points to help manage
+ the loose coupling we created last week, and making the remaining
+ planned enhancements to the task list.</span></font></p>
+ <p class="MsoPlainText"><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (51 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 93.52%" cellSpacing="0" cellPadding="0" width="93%" border="0" id="table3">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101920" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101920">
+ 101920</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">mylar
+ editor doesn't provide ruler shortcuts </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102589" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102589">
+ 102589</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">decorator
+ flicker in package explorer </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102676" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102676">
+ 102676</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ support for moving from study phase1 to phase2 </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102800" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102800">
+ 102800</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ selections in package explorer jump to previous location
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102916" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102916">
+ 102916</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">split
+ bugzilla into core and ui plugins </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103014" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103014">
+ 103014</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problems
+ list filtering is broken </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103099" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103099">
+ 103099</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">decouple
+ tasks from mylar.ui </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103288" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103288">
+ 103288</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">&quot;close
+ all editors&quot; not closing all </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103368" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103368">
+ 103368</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">refactor
+ bugzilla UI and dependancy with task list </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103373" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103373">
+ 103373</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">on task
+ activation expand all intersting in managed views </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103418" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103418">
+ 103418</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ active search UI </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103585" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103585">
+ 103585</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer refreshes too much </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103589" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103589">
+ 103589</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">task list
+ and active search contribution items fail to sh... </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103748" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103748">
+ 103748</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ highlighters work with de-coupled task list </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103915" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103915">
+ 103915</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Parameters are missing from the context assist </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104037" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104037">
+ 104037</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ensure
+ that monitor can progress through phases </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104091" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104091">
+ 104091</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">predicted
+ interest items are never removed from the contest </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102090" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102090">
+ 102090</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">package
+ explorer synchronization with interest filtering off </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102101" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102101">
+ 102101</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">mylar
+ perspective extensions </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102667" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102667">
+ 102667</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">clarify
+ preference wizard effects and preference page </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103415" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103415">
+ 103415</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add new
+ and noteworthy on Java Browsing perspective </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103435" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103435">
+ 103435</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">suppress
+ automatic wizard launches when in runtime workspace </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103749" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103749">
+ 103749</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Inconsistent font usage in Mylar Task List </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103940" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103940">
+ 103940</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">update
+ documentation for 0.3.2 </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104070" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104070">
+ 104070</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">put back
+ drill-down adapter on task list </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103236" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103236">
+ 103236</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make sure
+ active reports can't disappear </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103237" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103237">
+ 103237</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ mechanism to back up all task scapes, tasklist etc. </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103289" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103289">
+ 103289</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">preserve
+ downloaded labels during refresh </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103364" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103364">
+ 103364</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ timestamp to user sign-up </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103414" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103414">
+ 103414</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ task list documentation </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103680" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103680">
+ 103680</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ preference page for the monitor </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103726" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103726">
+ 103726</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">reopened
+ bug reports are filtered as completed </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103422" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103422">
+ 103422</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">labels
+ showing HTML characters wrong </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103570" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103570">
+ 103570</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ensure
+ that task list writes versions </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102662" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102662">
+ 102662</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">lkf@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">create
+ summary statistics for perspective usage </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102595" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102595">
+ 102595</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">feature
+ for &quot;About&quot; dialog </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102682" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102682">
+ 102682</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ new comment text area </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102852" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102852">
+ 102852</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ link to bug report in editor </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103016" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103016">
+ 103016</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">silent
+ failure to open bug reports </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103107" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103107">
+ 103107</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">bugzilla
+ fails to load corrupted offline reports </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103332" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103332">
+ 103332</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ buzilla support proxy servers </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103594" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103594">
+ 103594</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ query categories work again </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103744" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103744">
+ 103744</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">bugzilla
+ reports are not refreshed </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104057" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104057">
+ 104057</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">on
+ startup active task's context is inactive </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100661" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100661">
+ 100661</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ bugzilla &quot;submit&quot; button use job </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102586" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102586">
+ 102586</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add &quot;
+ refresh products&quot; button to new bug report wizard page
+ </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103280" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103280">
+ 103280</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">remember
+ query settings in tasks list </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103411" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103411">
+ 103411</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ bug editor UI </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103519" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103519">
+ 103519</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make
+ single BugzillaContentProvider </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103876" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103876">
+ 103876</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make task
+ list refresh on bug editor submit </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103880" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103880">
+ 103880</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ &quot;create bugzilla report&quot; action to task list </span></font>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.1 released 2005-07-11</h3>
+ <p><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">The goals for this
+ Friday’s 0.3.2 release will be responding to the first user feedback
+ that we get, hardening predicted interest, improving the UIs of the
+ active views, and improving the coupling between the Mylar core,
+ Bugzilla, and Tasks plug-ins. </span></font></p>
+ <p><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (30 total)</span></font></b></p>
+ <table class="MsoNormalTable" style="WIDTH: 87.32%" cellSpacing="0" cellPadding="0" width="87%" border="0" id="table2">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101940" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101940">
+ 101940</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Landmark
+ notification incorrect </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102365" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102365">
+ 102365</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">fix crazy
+ explorer selection cascade </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102418" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102418">
+ 102418</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Java Browsing
+ views don't update properly </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102786" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102786">
+ 102786</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">keyboard
+ shortcuts not working </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102889" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102889">
+ 102889</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">use Eclipse
+ proxy settings for upload/registration </span></font></nobr>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103014" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103014">
+ 103014</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problems list
+ filtering is broken </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103222" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103222">
+ 103222</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">maj</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">manual
+ landmark update is broken </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100920" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100920">
+ 100920</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">mylar
+ attempts to select everything on update from cvs </span></font>
+ </nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102667" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102667">
+ 102667</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">clarify
+ preference wizard effects and preference page </span></font>
+ </nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102675" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102675">
+ 102675</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">prune
+ dangling predicted interest nodes </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102800" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102800">
+ 102800</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">selections in
+ package explorer jump to previous location </span></font></nobr>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102954" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102954">
+ 102954</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">blo</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Unable to get
+ a user study id </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102896" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102896">
+ 102896</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P4</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">restore
+ default on preference page disables OK button </span></font>
+ </nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102669" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102669">
+ 102669</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ deletions of tasks with context </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102593" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102593">
+ 102593</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support for
+ refreshing a single query </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102685" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102685">
+ 102685</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add study
+ sign up wizard </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102791" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102791">
+ 102791</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">remove the
+ dependancy on XStream </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102871" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102871">
+ 102871</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ mechanism for opening reports in a web browser </span></font>
+ </nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101916" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101916">
+ 101916</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">minor task
+ list UI nits </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102409" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102409">
+ 102409</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">task list
+ drag and drop </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102671" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102671">
+ 102671</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">automatic
+ elapsed time for tasks </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102672" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102672">
+ 102672</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">closing the
+ task editor </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103032" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103032">
+ 103032</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">npe on close
+ of eclipse when task list is still refreshing </span></font>
+ </nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103228" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103228">
+ 103228</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">make labels
+ italic when bug reports are being refreshed </span></font>
+ </nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103229" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103229">
+ 103229</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ preference for automatic bugzilla refresh on work... </span>
+ </font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102795" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102795">
+ 102795</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P3</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">ksueda@gmail.com</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">preference
+ page fails to show </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102600" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102600">
+ 102600</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">nor</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">lkf@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">provide
+ generic action monitoring facility </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102664" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102664">
+ 102664</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">lkf@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">monitor
+ activity/capability changes </span></font></nobr></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103034" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103034">
+ 103034</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">enh</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P2</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">lkf@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">log new
+ workbench window openings and closings </span></font></nobr>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103016" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103016">
+ 103016</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">cri</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">P1</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">silent
+ failure to open bug reports </span></font></nobr></td>
+ </tr>
+ </table>
+ <h3>&nbsp;</h3>
+ <h3>Mylar 0.3.0 released 2005-07-04</h3>
+ <p><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">The first cut at the
+ Mylar 0.3.1 preview release is scheduled for this Friday.&nbsp; All sources
+ are up on eclipse.org, other than the monitor feature, which will have
+ to remain at UBC for the duration of the study.&nbsp; Planning and
+ discussions should take place on this list from now on. Each Monday I
+ will report on the tasks that we have completed in the past week, the P1
+ tasks that need to be done this week, and the P2 tasks that would nice
+ to have done this week.&nbsp; All reports marked as P3 should be considered
+ when we schedule the following week’s tasks.&nbsp; For the duration of the
+ study we’ll rev the minor-minor version number each Friday, making those
+ updates available to study subjects.&nbsp; I’ll keep the following page
+ up-to-date as our conventions evolve:
+ <a title="http://eclipse.org/mylar/dev.html" href="http://eclipse.org/mylar/dev.html">
+ http://eclipse.org/mylar/dev.html</a> </span></font></p>
+ <p><b><font face="Tahoma" size="2">
+ <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Tasks completed last week (22 total)</span></font></b></p>
+ <div class="Section1">
+ <table class="MsoNormalTable" style="WIDTH: 88.24%" cellSpacing="0" cellPadding="0" width="88%" border="0" id="table1">
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101891" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101891">
+ 101891</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">LATE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ support for monitoring preference changes </span></font>
+ </td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102200" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102200">
+ 102200</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">resetting
+ folding discards unsaved edits </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102588" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102588">
+ 102588</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problem
+ with UI hang on startup </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102049" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102049">
+ 102049</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ monitor support for upgrading from baseline to Mylar </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100461" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100461">
+ 100461</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Unable to
+ Raise Children Properly </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101561" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101561">
+ 101561</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ksueda@gmail.com
+ </span></font></nobr></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ Categories and Tasks should be different </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101898" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101898">
+ 101898</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">improve
+ icons </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101899" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101899">
+ 101899</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ksueda@gmail.com
+ </span></font></nobr></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">problems
+ with task list refresh </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102249" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102249">
+ 102249</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">on shell
+ de-activation Mylar causes noticeable slowdown </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102352" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102352">
+ 102352</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ksueda@gmail.com
+ </span></font></nobr></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">adding a
+ new bugzilla report doesn't cause it to appear </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102382" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102382">
+ 102382</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ perspective change monitoring </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101911" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101911">
+ 101911</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Support
+ bugzilla queries </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102399" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102399">
+ 102399</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">support
+ interest filtering in Java Browsing Perspective </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=99420" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=99420">
+ 99420</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">beatmik@acm.org</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Plugin
+ Xml filtering problems </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100946" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100946">
+ 100946</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ksueda@gmail.com</span></font></nobr></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">RESO
+ </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">remove
+ ability to create subtasks </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101562" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101562">
+ 101562</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">ksueda@gmail.com
+ </span></font></nobr></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">DUPL</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Add
+ support for creating a bugzilla query category </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100627" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100627">
+ 100627</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Add
+ preference for automatic closing </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100983" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=100983">
+ 100983</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">active
+ search view fails to refresh when results return </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101661" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101661">
+ 101661</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">beatmik@acm.org</span></font></nobr></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">view
+ filters </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101901" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=101901">
+ 101901</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">add
+ keyboard shortcut for &quot;search in task context&quot; </span>
+ </font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102120" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102120">
+ 102120</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">verify
+ new bugzilla icons </span></font></td>
+ </tr>
+ <tr>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 15pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <a title="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102243" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102243">
+ 102243</a> </span></font></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">sminto@cs.ubc.ca</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">RESO</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <nobr>
+ <p class="MsoNormal">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">
+ <font face="Tahoma" size="2">FIXE</font></span></nobr><span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><font face="Tahoma" size="2">
+ </font></span></td>
+ <td style="PADDING-RIGHT: 3pt; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; PADDING-TOP: 3pt">
+ <p class="MsoNormal"><font face="Tahoma" size="2">
+ <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">failure
+ to set status of report to FIXED </span></font></td>
+ </tr>
+ </table>
+ </div>
+ <p>&nbsp;</p>
+ <h3>Mylar 0.2 internal release 2005-03</h3>
+ <p>
+ <font face="Tahoma" size="2">
+ <span style="font-size: 10pt; font-family: Tahoma">Mylar views integrated with standard JDT views,
+ problems list, navigator, and outline.&nbsp; Aware of Java, plugin.xml, Ant build.xml, and Bugzilla
+ structure.&nbsp; Active search prototype.&nbsp; Task
+ list, generic interest decorators, sorters, filters.&nbsp;
+ </span></font>
+ </p>
+ <p>
+ &nbsp;</p>
+ <h3>Mylar 0.1 internal release 2004-08</h3>
+ <p><font face="Tahoma" size="2">
+ <span style="font-size: 10pt; font-family: Tahoma">Private release for
+ IBM Toronto Lab user study.&nbsp; Mylar degree-of-interest visualization
+ appears in the following new Eclipse views intended to replace their
+ Eclipse counterparts: Package Explorer,
+ Problems List, and Document Outline.</span></font></p>
+ </body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsd b/org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsd
new file mode 100644
index 000000000..1ece91b2c
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsd
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/dev/index.html b/org.eclipse.mylyn.help.ui/doc/dev/index.html
new file mode 100644
index 000000000..b2832954a
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/dev/index.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+ <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css">
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <title>
+ Mylar Tools
+ </title>
+ </head>
+ <body>
+ <h1>
+ Developer Documentation</h1>
+ <p>The latest developer documentation is at:
+ <a href="http://eclipse.org/mylar/dev.html">
+ http://eclipse.org/mylar/dev.html</a> </p>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/dev/model.vsd b/org.eclipse.mylyn.help.ui/doc/dev/model.vsd
new file mode 100644
index 000000000..168c5f186
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/dev/model.vsd
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/dev/plan.html b/org.eclipse.mylyn.help.ui/doc/dev/plan.html
new file mode 100644
index 000000000..69bdef96f
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/dev/plan.html
@@ -0,0 +1,371 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<title>April 2006</title>
+</head>
+
+<body>
+
+ <p>The following is a tentative plan for Mylar releases up to 1.0.0.&nbsp; Current priorities are represented by the <a href="bugs.php">
+ open bugzilla reports</a>.
+ </p>
+
+ <table border="0" cellspacing="0" cellpadding="0" align="center">
+ <tr>
+
+ <td height="18" align="right"></td>
+ <td height="18" align="center">
+ </td>
+ <td align="center" height="18"></td>
+ <td height="18" align="center"></td>
+ <td height="18" align="center">Eclipse</td>
+ <td height="18" align="center"></td>
+ <td align="center" height="18">Mylar</td>
+ <td height="18" align="center"></td>
+ <td align="center">Planned Features</td>
+ <td height="18" align="center"></td>
+ <td align="center">Planned API*</td>
+ </tr>
+ <tr>
+
+ <td height="18" align="right"><b>April&nbsp;</b></td>
+ <td height="18">
+ <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td></td>
+ <td height="18"></td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18">7</td>
+ <td height="18">&nbsp;&nbsp;</td>
+ <td height="18">&nbsp; 3.2M6</td>
+ <td height="18">&nbsp;&nbsp;</td>
+ <td align="right" height="18">&nbsp;&nbsp; 0.5.0</td>
+ <td height="18">&nbsp;&nbsp;</td>
+ <td rowspan="3" align="left" valign="top">Tasks: task list and
+ personal planning, Bugzilla and JIRA connectors<br>
+ Context: SDK integration and Focused UI</td>
+ <td height="18">&nbsp;&nbsp;</td>
+ <td rowspan="3" align="left" valign="top">Repository Connectors
+ (provisional)</td>
+ </tr>
+
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ </tr>
+
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18">28</td>
+
+ <td height="18"></td>
+
+ <td height="18">3.2RC2</td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18">0.5.1</td>
+
+ <td height="18"></td>
+
+ <td rowspan="4" align="left" valign="top">Tasks: repository task
+ change notifications<br>
+ Context: repository context attachments </td>
+
+ <td height="18"></td>
+
+ <td rowspan="4" align="left" valign="top">Changes to plug-in refactoring and
+ cleanup</td>
+
+ </tr>
+ <tr>
+
+ <td height="18" align="right"><b>May&nbsp; </b></td>
+ <td height="18">
+ <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+ <td height="18"></td>
+
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18">19</td>
+
+ <td height="18"></td>
+
+ <td height="18">3.2RC4</td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18">0.5.2</td>
+
+ <td height="18"></td>
+
+ <td rowspan="4" align="left" valign="top">Tasks: generic attributes
+ in task list<br>
+ Context: active search improvements, local context, monitor
+ improvements</td>
+
+ <td height="18"></td>
+
+ <td rowspan="4" align="left" valign="top">Changes to ITask hierarchy</td>
+
+ </tr>
+
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18">&nbsp;&nbsp;&nbsp;</td>
+ <td height="18"></td>
+ </tr>
+
+ <tr>
+
+ <td height="18" align="right"><b>June&nbsp; </b></td>
+ <td height="18">
+ <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+ <td height="18"></td>
+
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18">9</td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18">0.5.3</td>
+
+ <td height="18"></td>
+
+ <td rowspan="3" align="left" valign="top">Tasks: common editor<br>
+ Context: Apply Mylar to debug views</td>
+
+ <td height="18"></td>
+
+ <td rowspan="3" align="left" valign="top">Monitor API (provisional)</td>
+
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18">&nbsp;&nbsp;&nbsp;</td>
+ <td height="18"></td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18">28</td>
+ <td height="18"></td>
+ <td height="18">Callisto</td>
+ <td height="18"></td>
+ <td align="right" height="18">&nbsp;&nbsp;&nbsp;0.6.0</td>
+ <td height="18"></td>
+ <td align="left" valign="top" rowspan="2">Previously experimental features
+ finalized, UI and performance tuning, docs</td>
+ <td height="18"></td>
+ <td align="left" valign="top">Tasks API (provisional)</td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td align="center" height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/gray.gif" width="2" height="18"></td>
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+
+ <td align="right" height="18"></td>
+
+ <td height="18"></td>
+
+ <td height="18"></td>
+ <td align="left" valign="top">&nbsp;</td>
+ </tr>
+ <tr>
+
+ <td height="18" align="right"><b>Sept&nbsp; </b></td>
+ <td height="18">
+ <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td align="left" valign="top">&nbsp;</td>
+
+ <td height="18"></td>
+
+ <td align="left" valign="top">&nbsp;</td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18">&nbsp;&nbsp;&nbsp;0.7.0</td>
+ <td height="18"></td>
+ <td>Mylar context model revision</td>
+
+ <td height="18"></td>
+
+ <td>Context API (provisional)</td>
+ </tr>
+ <tr>
+
+ <td height="18" align="right"><b>2007&nbsp; </b></td>
+ <td height="18">
+ <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td align="left" valign="top">&nbsp;</td>
+
+ <td height="18"></td>
+
+ <td align="left" valign="top">&nbsp;</td>
+ </tr>
+ <tr>
+ <td height="18" align="right"></td>
+ <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td>
+ <td align="right" height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td height="18"></td>
+ <td align="right" height="18">&nbsp;&nbsp;&nbsp;1.0.0</td>
+ <td height="18"></td>
+ <td>Tools project quality</td>
+
+ <td height="18"></td>
+
+ <td>Meet Eclipse API contract</td>
+ </tr>
+
+ </table>
+<p>* See the
+<a href="http://www.eclipse.org/mylar/doc/devref.php#extending-overview">
+Contributor Reference</a> for the extensibility overview. </p>
+ <p><i>Last updated: 2005-04-03</i></p>
+</body>
+
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/faq.html b/org.eclipse.mylyn.help.ui/doc/faq.html
new file mode 100644
index 000000000..3538480f3
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/faq.html
@@ -0,0 +1,486 @@
+<html>
+ <head>
+ <title>
+ Mylar FAQ
+ </title>
+ </head>
+ <body>
+ <div align=center><h1>Mylar Frequently Asked Questions</h1></div>
+ <p><b>Setup</b></p>
+ <ul>
+ <li><a href="#configuration-eclipse">Recommended configuration</a></li>
+ <li><a href="#install">Install troubleshooting</a></li>
+ <li><a href="#install-linux">Installing on Linux</a>&nbsp;
+ </li>
+ <li><a href="#install-macos">Installing on MacOS</a></li>
+ <li><a href="#uninstall">Uninstall troubleshooting</a></li>
+ <li><a href="#tasklist-backup">Task backup and restore</a></li>
+ </ul>
+ <p><b>Integration</b></p>
+<ul>
+ <li><a href="#performance-summary">Performance profile</a></li>
+ <li><a href="#subversion-clients">Subversion limitations</a></li>
+</ul>
+ <p><b>Working with Context</b></p>
+<ul>
+ <li><a href="#context-ui-config">Which Focused UI features can I turn off?</a></li>
+</ul>
+<p><b>Tasks and Repository Connectors</b></p>
+ <ul>
+ <li><a href="#repositories-unsupported">What if Mylar doesn't support my task/bug/issue tracker?</a></li>
+ <li><a href="#upgrading-repositories">How do I upgrade to multiple task repository support?</a>
+ </li>
+ <li><a href="#versions-repositories">Why is only one task appearing in Bugzilla queries?</a>
+ </li>
+ <li><a href="#repositories-jira-config">Is there any configuration
+ needed to make Mylar work with my JIRA repository?</a></li>
+ <li><a href="#eclipse-views-tasks">How does the Mylar Task List relate to the Eclipse Tasks view?</a></li>
+ <li><a href="#repositories-connectivity">Connectivity and proxy servers</a></li>
+ </ul>
+<p><b>Java Development</b></p>
+ <ul>
+ <li><a href="#content-assist">Content assist troubleshooting</a></li>
+ <li><a href="#filtering-declarations">How do I stop declarations from showing up in the Package Explorer?</a></li>
+ <li><a href="#active-search-empty">Why does nothing show up in the Active Search or Active Hierarchy?</a></li>
+ </ul>
+
+ <p><b>Key Limitations </b></p>
+ <ul>
+ <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106678">Bug 106678</a>&nbsp;
+ The Package Explorer hierarchical layout is not supported properly yet and
+ will show uninteresting elements when enabled.</li>
+ <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102663">Bug
+ 102663</a>&nbsp; Multiple workbench windows are not supported and Mylar may
+ not capture context correctly if you have more than one window open.</li>
+ </ul>
+ <p>&nbsp;</p>
+
+
+
+ <hr>
+<h3><a name="configuration-eclipse">Recommended configuration</a></h3>
+ <p>Recommendations for Mylar 0.5.0:</p>
+ <ul>
+ <li>Package Explorer<ul>
+ <li>Use flat layout in the Package Explorer (local pull down -&gt; <i>Layout</i>
+ -&gt; <i>Flat</i>).&nbsp; Hierarchical layout is not supported.</li>
+ <li>Link the Package Explorer with the editor (toolbar -&gt; <i>Link with
+ Editor</i>).&nbsp; With Mylar applied this won't cause the jumping around
+ problems it typically does.</li>
+ <li>Deselect the Referenced Libraries filter (local pull down -&gt; <i>Filters</i>
+ -&gt; <i>Referenced Libraries</i>).&nbsp; With Mylar applied libraries won't blow
+ up the tree.</li>
+ <li>Leave the <i>General</i> -&gt; <i>Appearance </i>-&gt; <i>Java Type Indicator
+ </i>off.&nbsp;
+ Since the type under the Java file is visible when Mylar is visible when
+ Mylar is applied this information is redundant.</li>
+ </ul>
+ </li>
+ <li>Editors<ul>
+ <li>Turn comment folding on to reduce clutter when using auto folding
+ (<i>Preferences</i> -&gt; <i>Java </i>-&gt; <i>Editor </i>-&gt; <i>Folding</i>).&nbsp; </li>
+ <li>Turn off or increase the number of editors to leave open (<i>Preferences</i> -&gt;
+ <i>General </i>-&gt; <i>Editors </i>-&gt; <i>Number of opened editors before closing</i>).&nbsp; Since
+ Mylar will manage the open editors with task activation, this number can
+ be set higher or automatic closing disabled entirely.</li>
+ <li>If auto folding is used, the Outline view can be closed or made a
+ fast view</li>
+ </ul>
+ </li>
+ <li>Views<ul>
+ <li>Outline: can keep closed for Java development, since the Package Explorer and folded signatures should
+ provide enough context, and the in-place Outline (Ctrl+O) can be used
+ when needed.</li>
+ </ul>
+ </li>
+ <li>Team<ul>
+ <li>Set Synchronize view to Change Sets mode (on 3.2: third toolbar
+ button: select <i>Change Sets</i>;&nbsp; on 3.1: toggle toolbar button:
+ <i>Show Change
+ Sets</i>)</li>
+ <li>Use graphical CVS decorators only (<i>Preferences -&gt; Team -&gt; CVS -&gt; Label Decorations
+ -&gt; Text Decorations</i> -&gt; clear all but Project; <i>Icon Decorations</i> -&gt; enable
+ all).&nbsp; This helps reduce visual clutter.</li>
+ </ul>
+ </li>
+ </ul>
+ <hr>
+<h3>&nbsp;</h3>
+ <h3><a name="performance-summary">Performance profile</a></h3>
+<p>The goal is for Mylar to have no noticeable effect on Eclipse's speed or
+memory usage, you do not need to increase the amount of memory Eclipse runs with
+to use Mylar, and any performance issue should be
+<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Mylar">reported as
+a bug</a>.&nbsp; The current performance profile is:</p>
+<ol>
+ <li>Mylar only runs if a task is active, and has no impact on Eclipse if no
+ task is active.</li>
+ <li>Task context models have negligible memory overhead.&nbsp; </li>
+ <li>When a task is active, additional view refresh is required to update the
+ views based on interest model changes.&nbsp; This should not be noticeable
+ on Windows where refresh is very quick, but could be more noticeable on
+ other platforms.</li>
+ <li>The time to activate a task context is dominated by the time it takes
+ Eclipse to open the editors in the context.&nbsp; You can set the preference
+ for how many editors to open in the Mylar preference page (e.g. setting to 1
+ will dramatically reduce activation time, but also remove the benefit of
+ having open editors correspond to the task context).&nbsp; You can also turn off
+ editor management entirely in the Mylar Tasks view pull-down.</li>
+ <li>Eclipse startup is slowed down by (4) if a task is active when Eclipse
+ is shut down.</li>
+ <li>The low priority background searches that the Active Search view runs
+ can be noticeable on slower machines.</li>
+</ol>
+ <hr>
+ <h3>&nbsp;</h3>
+ <h3><a name="install">Install Troubleshooting</a></h3>
+ <p>For supported platforms and known limitations please see
+ <a href="http://eclipse.org/mylar/dl.php">http://eclipse.org/mylar/dl.php</a>&nbsp;
+ Install/update failures can include:</p>
+<p><b>Update manager failure</b>: the update manager failed because it could not
+access the update site, or because it got confused about the configuration state
+of your Eclipse.&nbsp; In this case you may see update errors like: <tt>org.eclipse.update.internal.core.SiteFilePackedPluginContentConsumer</tt>.&nbsp;
+First try updating again to
+see if the feature is accessible.&nbsp; If you are trying to update the JIRA
+connector you can also try de-selecting that feature in case the Tigris.org
+update site is not accessible.&nbsp; Using use &quot;Search new features..&quot; when
+installing can help avoid this problem.&nbsp; If that does not work see the
+feature configuration troubleshooting below.</p><b>Incompatible VM (e.g. JDK 1.4)</b>: in this case you'll errors like the following in your log file.&nbsp; To
+check JDK version that Eclipse was launched with to to Help -&gt; About Eclipse SDK
+-&gt; Configuration Details and verify that the java.vm.version is 1.5.&nbsp; Mac
+users should refer to the last comment on
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=116347#c4">bug 1163477</a>
+for instructions on how to change the 1.4 default.<p>
+<tt>&nbsp;&nbsp;&nbsp; Root exception:
+ java.lang.UnsupportedClassVersionError: <br>
+&nbsp;&nbsp;&nbsp; org/eclipse/mylar/tasklist/MylarTasklistPlugin
+ (Unsupported major.minor version 49.0)
+</tt>
+</p>
+<p>
+If you are using JDK 1.6 on Eclipse 3.1 (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=140955">not
+recommended</a>) you must add the following line to your config.ini file: <tt>
+<br>
+&nbsp;&nbsp;&nbsp; org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1,JRE-1.1,J2SE-1.2,<br>
+&nbsp;&nbsp;&nbsp; J2SE-1.3,J2SE-1.4,J2SE-1.5,JavaSE-1.6</p><p>
+</tt>
+<b>Incompatible version of Eclipse</b>: separate versions and update sites exist
+<a href="http://eclipse.org/mylar/dl.php">for Eclipse 3.1 and for the latest 3.2</a>), in which case you may see errors like the following in your
+&lt;workspace&gt;/.metadata/.log file or in a Mylar view:</p>
+<p>
+<tt>&nbsp;&nbsp;&nbsp; java.lang.NoSuchMethodError:
+ org.eclipse.ui.internal.dialogs.FilteredTree.getFilterControl()<br>
+&nbsp;&nbsp;&nbsp; The activator org.eclipse.mylar.java.MylarJavaPlugin for bundle org.eclipse.mylar.java is invalid
+</tt>
+</p>
+<p><b>Mylar feature configuration problem</b>: if the above do not address the
+issue, the easiest thing to do is
+uninstall any old versions and update to the latest Mylar.&nbsp; Your tasks won't be
+lost, by default they are stored in the &lt;workspace&gt;/.mylar/tasklist.xml file
+which will be read next time Mylar starts correctly.&nbsp;First, uninstall the old version of Mylar using Help -&gt;
+Software Updates -&gt; Manage Configuration.&nbsp; You need to first Disable on all
+Mylar features by right-clicking them, allow Eclipse to restart after the last
+is disabled, and after restart.&nbsp; Then ensure that the 3rd toolbar button is
+pressed (figure below) so that you see the disabled features to uninstall, and
+Uninstall them using the popup menu.&nbsp; If you don't uninstall the the Update
+Manager will think that you have the latest and tell you that there are no
+updates. Note that manually removing the plug-ins
+and features can lead to Eclipse configuration errors. After uninstalling update Eclipse
+by adding the correct update site specified at:
+ <a href="http://eclipse.org/mylar/dl.php">http://eclipse.org/mylar/dl.php</a>,
+and after that automatically or manually updating will install the correct
+version.</p>
+<p>
+<img border="0" src="images/faq/eclipse-manage-configuration.gif" width="679" height="335"></p>
+ <hr>
+ <p>
+&nbsp;</p>
+
+
+<h3><a name="install-linux">Installing on Linux</a></h3>
+ <p>Mylar Task Management features make user of Eclipse's Internal Browser
+ which may require additional install steps.&nbsp; The following have been
+ verified on Fedora Core.</p>
+ <ol>
+ <li>Run Mozilla (not firefox) to confirm that it works.</li>
+ <li>Confirm the location of your Mozilla install ( /usr/lib/mozilla-1.7.12
+ on our test box)</li>
+ <li>Set necessary environment variables in &lt;home_directory&gt;/.bashrc,
+ adding the following 3 lines<br>
+&nbsp;&nbsp;&nbsp; MOZILLA_FIVE_HOME=/usr/lib/mozilla-1.7.12<br>
+&nbsp;&nbsp;&nbsp; LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MOZILLA_FIVE_HOME<br>
+&nbsp;&nbsp;&nbsp; export MOZILLA_FIVE_HOME LD_LIBRARY_PATH </li>
+ <li>Log out and log in again (or type &quot;source .bashrc&quot; at the prompt)</li>
+ <li>Start Eclipse and test the internal web browser</li>
+ </ol>
+ <p>If you are get exceptions indicating missing libraries, check that the
+ paths are accurate and that you in fact have the libraries requested. For
+ example, on our test box a library was still missing after these steps. The
+ libstdc++.so.5 was being reported as missing. To solve this problem, find an
+ rpm online that will install the missing legacy library. In our case we
+ found necessary rpm (compat-libstdc++-33-3.2.3-47.fc4.i386.rpm) on
+ <a title="http://www.rpmfind.net/" href="http://www.rpmfind.net">rpmfind.net</a>
+ using their search facility.&nbsp; References:
+ <a title="http://www.eclipse.org/swt/faq.php" href="http://www.eclipse.org/swt/faq.php">
+ SWT FAQ</a></p>
+ <hr>
+
+
+<h3>&nbsp;</h3>
+<h3><a name="install-macos">Installing on MacOS</a></h3>
+ <p>If you see errors like the following it may be due to Xerces missing from
+ the Mac JDK so you may need to add it to your default classpath.&nbsp;
+ Please refer to and comment on
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=144287">bug 144287</a>
+ if you see this problem.</p>
+<blockquote>
+ <p>Could not create Bugzilla editor input<br>
+ java.io.IOException: SAX2 driver class org.apache.xerces.parsers.SAXParser
+ not found</p>
+</blockquote>
+ <p>To ensure that you are using the 1.5 VM refer to the last comment on
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=116347#c4">bug 1163477</a>
+for instructions on how to change the 1.4 default.</p>
+ <hr>
+ <p>&nbsp;</p>
+ <h3><a name="uninstall">Uninstall Troubleshooting</a></h3>
+ <p>
+On Eclipse 3.1, you may need to reset the Java editor to be default for &quot;.java&quot;
+again via: <i>Preferences -&gt; General -&gt; Editors -&gt; File Associations
+</i> </p>
+ <p>
+On Eclipse 3.2, you may need to ensure that the &quot;Java Completions&quot; and &quot;Java
+Types&quot; proposal categories are included in the default proposals via:
+<i>Preferences -&gt; Java -&gt; Editor -&gt; Content Assist -&gt; Advanced</i> (<a href="#content-assist-duplication">see
+screenshot</a>) <i>-&gt; Restore Defaults</i></p>
+ <hr>
+ <p>
+&nbsp;</p>
+
+
+<h3><a name="tasklist-backup">Task backup and restore</a>&nbsp;&nbsp;&nbsp; </h3>
+<p>The task list is <b>backed up by default</b> in the
+ &lt;workspace&gt;/.mylar/backup directory, with rolling backups set according to
+ the schedule in <i>Preferences -&gt; Mylar -&gt; Task List -&gt; Backup</i>.&nbsp;
+ Use <i>File -&gt; Import -&gt; Mylar Task Data</i> to restore from one of the
+ archive zips.</p>
+<p>If the Task List is blank Mylar failed to <a href="#install-failure">install or update</a>,
+or there was a problem reading the task list.&nbsp; By default Mylar
+keeps your task list in <i>&lt;workspace&gt;/.mylar/tasklist.xml</i>.&nbsp; If
+you move workspaces, and have not changed the Mylar data directory via the Task
+List preference page, the new location will be used when Eclipse restarts (hit
+Restore Defaults on that page to copy tasks back to the default location).&nbsp;
+If your tasks disappear due to to a bug you can check the .mylar folder for a <i>tasklist-backup.xml</i>
+file, which will contain the previously-saved list.&nbsp;</p>
+<p>You can also back up your task list and context data manually or periodically use
+ <i>File -&gt;
+ Import/Export -&gt; &nbsp;Mylar Task Data</i>.&nbsp; Note that when restoring
+ an previous tasklist.xml file you should first close Eclipse.</p>
+ <p>
+ <img border="0" src="images/faq/tasklist-backup.gif" width="525" height="310"></p>
+
+ <hr>
+
+
+<h3>&nbsp;</h3>
+<h3><a name="context-ui-config">Which Focused UI features can I turn off?</a></h3>
+ <p>
+ All of them.&nbsp; When no task is active neither are any of Mylar's
+ features.&nbsp; When working with task contexts Mylar's Focused UI features
+ are all optional and in general configurable.&nbsp; The following table
+ summarizes how the key features can be toggled.&nbsp; Additional
+ configuration options are under the Mylar and General -&gt; Appearance
+ preference pages.</p>
+<table border="1" style="border-collapse: collapse" width="100%" id="table2" cellpadding="4" bordercolor="#FFFFFF">
+ <tr>
+ <td bgcolor="#595791" width="17%" align="center"><font color="#FFFFFF">
+ <b>UI Mechanism</b></font></td>
+ <td bgcolor="#595791" width="20%" align="center"><font color="#FFFFFF">
+ <b>Example/description</b></font></td>
+ <td bgcolor="#595791" width="*" align="center"><font color="#FFFFFF"><b>
+ Toggle using</b></font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB">Interest filtering</td>
+ <td bgcolor="#FAF7FB" align="left">
+ Package Explorer</td>
+ <td bgcolor="#FAF7FB">Apply Mylar button on view toolbar</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB">Interest decoration</td>
+ <td bgcolor="#FAF7FB" align="left">
+ Bolding of landmark elements</td>
+ <td bgcolor="#FAF7FB">Preferences -&gt; General -&gt; Appearance -&gt; Label
+ Decoration</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB">Content assist</td>
+ <td bgcolor="#FAF7FB" align="left">
+ Ranking of interesting elements</td>
+ <td bgcolor="#FAF7FB">Eclipse 3.2: Java -&gt; Editor -&gt; Content Assist -&gt;
+ Work in Progress -&gt; turn off Mylar, turn on Java<br>
+ Eclipse 3.1: set the Java editor to be default for .java, not the Mylar
+ Java editor</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB">Active change sets</td>
+ <td bgcolor="#FAF7FB" align="left">
+ Grouping of changes by tasks</td>
+ <td bgcolor="#FAF7FB">Preferences -&gt; Mylar -&gt; Team</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB">Editor management</td>
+ <td bgcolor="#FAF7FB" align="left">
+ Auto opening/closing of editors</td>
+ <td bgcolor="#FAF7FB">Preferences -&gt; Mylar -&gt; Editor Management</td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB">Active views</td>
+ <td bgcolor="#FAF7FB" align="left">
+ Active Search and Hierarchy</td>
+ <td bgcolor="#FAF7FB">Only on if view is active</td>
+ </tr>
+</table>
+
+ <hr>
+
+ <h3>&nbsp;</h3>
+<h3><a name="repositories-unsupported">What if Mylar doesn't support my task/bug/issue tracker?</a></h3>
+<p>First, do a search of the <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=anywordssubstr&short_desc=%5Bconnector%5D&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">open
+repository connector requests</a> and vote for the corresponding bug if your tracker is found, or create
+a new report.&nbsp; In the meantime, you can work with those reports (but not
+with queries) via the web integration.&nbsp; To create a task from any web-based
+repository:</p>
+<ul>
+ <li>Drag the URL from the Address bar of the browser, or from a hyperlink in
+ a bug listing to the Mylar Tasks view.&nbsp; This will create a task for the
+ bug, link it to the page, and populate the description with the title of the
+ corresponding page.&nbsp;&nbsp; In Mozilla, simply drag
+ the URL.&nbsp; In Internet Explorer you must have Ctrl pressed in
+ order for Eclipse to recognize the drop.</li>
+ <li>Alternatively you can copy the URL, press the New Task button on the
+ Mylar Tasks view.&nbsp; This has the same effect as above but you can edit
+ the description after retrieving it.</li>
+ <li>Opening the task will now open the corresponding issue.&nbsp; You can
+ also right-click the task and select Open in External Browser.</li>
+</ul>
+ <p>
+ <img border="0" src="images/0.4.1/tasklist-weblink-editor.gif" width="585" height="195"></p>
+ <hr>
+ <p>&nbsp;</p>
+ <h3><a name="repositories-connectivity">Connectivity and proxy servers</a></h3>
+ <p>For accessing repositories via a proxy server, Mylar uses the settings
+ under <i>Preferences -&gt; Install/Update</i>.&nbsp; If you are seeing
+ errors like <span class="e" id="q_10b3e1bc7372e609_1">
+ <font face="Times New Roman" size="3"><span style="FONT-SIZE: 12pt">&quot;HTTP
+ Response Code 407&quot; it is likely that you need to configure these proxy
+ server settings.</span></font></span></p>
+ <hr>
+ <p>&nbsp;</p>
+ <h3><a name="upgrading-repositories">How do I upgrade to multiple
+task repository support?</a></h3>
+<p>Bugzilla Client users follow these steps after updating in order to
+migrate to multiple repository support from version 0.4.6 or older</p>
+<ul>
+ <li>After
+updating and restarting, deactivate your active task, open the Mylar -&gt; Task
+Repositories view and re-add your previous repository using the wizard.</li>
+<li>Ensure that you enter the correct Server URL by pressing the &#8220;validate&#8221; button
+on the corresponding dialog, since this URL will be used for the migration.</li>
+ <li>Exit the workbench and restart Eclipse to complete the migration.</li>
+</ul>
+ <hr>
+ <p>&nbsp;</p>
+<h3><a name="versions-repositories">Why is only one task appearing in Bugzilla
+queries?</a></h3>
+ <p>This is a symptom of the wrong Bugzilla version selected in your Mylar
+ Bugzilla preferences ( Window -&gt; Preferences -&gt; Mylar -&gt; Bugzilla Client ).
+ For example, if you are connecting to the Eclipse.org Bugzilla then the 2.20
+ option must be selected.</p>
+ <hr>
+<h3>&nbsp;</h3>
+<h3><a name="repositories-jira-config">Is there any configuration needed to make
+Mylar work with my JIRA repository?</a></h3>
+ <p>Yes, JIRA SOAP/RPC services have to be running on the server.&nbsp; For
+ additional details see the Requirements at:
+ <a href="http://jira-dashboard.tigris.org/">
+ http://jira-dashboard.tigris.org/</a> </p>
+ <hr>
+<h3>&nbsp;</h3>
+<h3><a name="eclipse-views-tasks">How does the Mylar Task List relate to the Eclipse Tasks view?</a></h3>
+ <p>The SDK's Tasks view is used for showing markers such as 'todo' tags
+ which indicate a local problem with a resource, similar to a compiler
+ warning.&nbsp; As such, these 'tasks' are at a much lower level of
+ granularity than than Mylar's tasks, and one task could involve cleaning up
+ multiple todos.&nbsp; In order to make working with only the markers in a
+ particular task context, e.g. for clean-up before committing, the Apply
+ Mylar filter is available for both the Problems and the Tasks views.&nbsp; </p>
+ <hr>
+<h3>&nbsp; </h3>
+ <h3><a name="subversion-clients">Subversion Limitations</a></h3>
+ <p>Mylar's Active Change Set integration, which allows you to work with
+ changes per-task, support's the Eclipse SDK's CVS integration, and should
+ work with any source repository client that extends Eclipse's Change Set
+ support.&nbsp; As of March 2006 no Subversion clients support change sets,
+ and as such this feature is not available for those clients.&nbsp; </p>
+ <p>&nbsp;</p>
+ <hr>
+ <h3>&nbsp;</h3>
+<h3><a name="active-search-empty0">Why does nothing show up in the Active Search or Active Hierarchy?</a></h3>
+ <p>
+ As you work and elements become landmarks (bold decoration), and
+ these elements populate the Active Search and Active Hierarchy
+ views.&nbsp; To force an element to populate the views manually make
+ it a landmark by right-clicking or hitting Ctrl+Alt+Shift+Up Arrow.&nbsp;
+</p>
+ <hr>
+<p>
+ &nbsp;</p>
+ <h3><a name="content-assist">Content assist troubleshooting</a></h3>
+<p>In Eclipse 3.2, Mylar uses extended content assist processors in order to
+rank and separate the elements in the current task context.&nbsp; To see
+proposals ranked according to interest you must have only the <i>(Mylar)</i>
+proposals kinds enabled in the list below, otherwise you will see duplicates.&nbsp;
+<b>If you do not see any proposals</b>, check this list to ensure that either
+the Mylar or the plain proposals are enabled.&nbsp; Running <i>New -&gt; Mylar -&gt; Recommended
+Preferences</i> will do this for you automatically, or you can set toggle them
+manually in the preference page.&nbsp; Proposals will disappear if&nbsp; a
+workspace into which Mylar was installed is run without Mylar installed (e.g. as
+a result of uninstalling or multiple Eclipses using same workspace, see Platform
+<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=140416">bug 140416</a>).</p>
+<p>If after invoking content assist you see an error message dialog that states
+&quot;The extension tool too long to return from the 'computeCompletionProposals()'
+operation&quot;, this is most likely due to something interrupting the proposal
+operation (e.g. garbage collection).&nbsp; Ignore it if it does not recur,
+increase Eclipse's memory if it does (e.g via -Xmx384M command line argument),
+or see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=141457">bug 141457</a>
+for more details.</p>
+<p>
+ <img border="0" src="images/faq/content-assist.gif"></p>
+ <hr>
+<p>&nbsp;</p>
+ <h3><a name="filtering-declarations">How do I stop declarations from showing up in the Package Explorer?</a></h3>
+<p>If you don't like Mylar's constant showing of Java members in the
+ Package Explorer, select the drop-down menu, then &quot;Filters...&quot; and
+ enable the &quot;Mylar Java Declarations Filter&quot;.&nbsp; It will then
+ stick in the menu in case you want to toggle between modes.&nbsp;
+Note that this will hide interest information about members that aren't in your
+current file (e.g. showing you which methods are landmarks) so this mode is not
+recommended, but can be useful for 1024x768 screen resolutions.</p>
+ <p>
+ <img border="0" src="images/0.3/filtering-declarations.gif" width="441" height="211"></p>
+ <hr>
+<p>
+ &nbsp;</p>
+ <h3><a name="active-search-empty">Why does nothing show up in the Active Search or Active Hierarchy?</a></h3>
+ <p>
+ As you work and elements become landmarks (bold decoration), and
+ these elements populate the Active Search and Active Hierarchy
+ views.&nbsp; To force an element to populate the views manually make
+ it a landmark by right-clicking or hitting Ctrl+Alt+Shift+Up Arrow.&nbsp;
+</p>
+ <hr>
+<p>
+ &nbsp;</p>
+<p>&nbsp;</p>
+</body></html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif
new file mode 100644
index 000000000..ecfd2e891
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gif
new file mode 100644
index 000000000..c211f3c04
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gif
new file mode 100644
index 000000000..22a4b73a1
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gif
new file mode 100644
index 000000000..88c6ab700
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gif
new file mode 100644
index 000000000..3dabe9c5b
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gif
new file mode 100644
index 000000000..84a923cb7
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gif
new file mode 100644
index 000000000..36a82463a
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gif
new file mode 100644
index 000000000..8b687aac5
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gif
new file mode 100644
index 000000000..d8db0972c
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gif
new file mode 100644
index 000000000..4ddaba40f
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gif
new file mode 100644
index 000000000..5a2beb235
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gif
new file mode 100644
index 000000000..15223483e
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gif
new file mode 100644
index 000000000..a455fc3fc
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gif
new file mode 100644
index 000000000..a2d110bd1
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gif
new file mode 100644
index 000000000..df618d3b9
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gif
new file mode 100644
index 000000000..10e6c4be4
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gif
new file mode 100644
index 000000000..6f9015f34
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gif
new file mode 100644
index 000000000..2b5ec2de0
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gif
new file mode 100644
index 000000000..89bcc93fe
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gif
new file mode 100644
index 000000000..8501646c7
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gif
new file mode 100644
index 000000000..5afa19dbb
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gif
new file mode 100644
index 000000000..f67baeb31
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gif
new file mode 100644
index 000000000..07b7474e4
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gif
new file mode 100644
index 000000000..441e8b8e3
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gif
new file mode 100644
index 000000000..8503d1cdb
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gif
new file mode 100644
index 000000000..e53ffb440
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif b/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif
new file mode 100644
index 000000000..09ebe09a3
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gif b/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gif
new file mode 100644
index 000000000..bc9edc1c2
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gif b/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gif
new file mode 100644
index 000000000..d748bab4b
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gif b/org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gif
new file mode 100644
index 000000000..47e59b973
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gif
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/integrating.html b/org.eclipse.mylyn.help.ui/doc/integrating.html
new file mode 100644
index 000000000..b43da3ed5
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/integrating.html
@@ -0,0 +1,80 @@
+<html>
+ <head>
+ <title>
+ Mylar FAQ
+ </title>
+ </head>
+ <body>
+ <center><h1>Mylar Integrator Reference</h1></center>
+ <p align="left">We recommend that those interested in integrating Mylar
+ email <a href="mailto:mylar-dev@eclipse.org">
+mylar-dev@eclipse.org</a> regarding for pointers to examples and guidance on
+ upcoming changes.</p>
+ <ul>
+ <li><a href="#extending-overview">Extensibility Overview</a></li>
+ <li><a href="#frameworks">Frameworks &amp; APIs</a></li>
+ <li><a href="#repository-requirements">Task repository requirements</a></li>
+ </ul>
+ <hr width="50%">
+ <h3>&nbsp; <br>
+ <a name="extending-overview">Extensibility overview</a></h3>
+<p>Following the Eclipse conventions, Mylar will not make any API guarantees
+until the 1.0 release.&nbsp; However, a driving goal of the Mylar project is to
+provide a task management and focused UI framework that can be easily extended
+by any Eclipse SDK and RCP based applications.&nbsp; The Mylar components are
+loosely coupled by preliminary extension points and APIs, and these will be
+stabilizing between the 0.5 and 1.0 releases.&nbsp; </p>
+ <hr>
+ <h3><a name="frameworks">Frameworks and APIs</a></h3>
+<p>Mylar provides the following Frameworks.&nbsp; See the
+<a href="http://www.eclipse.org/mylar/presentations.php">EclipseCon 2006
+presentation</a> for more information.</p>
+ <ul>
+ <li>Tasks (org.eclipse.mylar.tasklist): adds first class task
+ abstraction for tasks to Eclipse, similar to Eclipse's facilities for
+ resources.</li>
+ <li>Context (org.eclipse.mylar.core): abstractions for focusing the UI
+ on context.&nbsp; Contexts ties tasks to resources.</li>
+ <li>Monitor (org.eclipse.mylar.monitor): facilities for monitoring
+ interaction with Eclipse.</li>
+ </ul>
+ <p>In addition Mylar provides the following API:</p>
+ <ul>
+ <li>Bugzilla (org.eclipse.mylar.bugzilla.core): Java API used for
+ accessing Bugzilla reports on a server, not coupled to Eclipse.</li>
+ </ul>
+ <hr>
+ <h3><a name="repository-requirements">Task repository requirements</a></h3>
+<p>Mylar can be extended to any task/bug/issue/story repository or tracker by
+creating a Repository Connector that links Mylar's task management facilities
+with the repository.&nbsp; Connection to the task repository is handled by the
+connector (e.g. via HTTP for the Bugzilla Connector, via SOAP for the JIRA
+Connector).&nbsp; The following are required to support task list integration:</p>
+ <ul>
+ <li>Tasks must be uniquely identifiable by a per-repository integer or
+ string handle (e.g.&nbsp; repository: https://bugs.eclipse.org/bugs, id
+ 138144)</li>
+ <li>Mechanism for executing a string-based query and returning task IDs
+ (e.g. submit query via SOAP, retrieve matching task IDs)</li>
+ <li>Mechanism for accessing all of the task attributes (e.g.
+ description, priority, comment thread)</li>
+ </ul>
+ <p>The following are optional:</p>
+ <ul>
+ <li>Notification of changes (e.g. RSS-based notification of an update
+ made via that web UI)</li>
+ <li>Retrieving a user's saved queries (e.g. searches or filters saved
+ via the web UI)</li>
+ </ul>
+ <p>The following additional mechanisms enable task authoring:</p>
+ <ul>
+ <li>Retrieving all of the operations possible on a task given login
+ credentials (e.g. ability to reassign, change priority)</li>
+ <li>Accessing all of the repository attributes (e.g. lists of products,
+ components, versions)</li>
+ <li>Setting any of the task's attributes (e.g. changing components,
+ reassigning)</li>
+ <li>Adding and retrieving attachments (e.g. adding screenshots)</li>
+ </ul>
+<p>&nbsp;&nbsp; </p>
+</body></html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/new-0.3.html b/org.eclipse.mylyn.help.ui/doc/new-0.3.html
new file mode 100644
index 000000000..6dc16be72
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/new-0.3.html
@@ -0,0 +1,711 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1"
+ type="text/css">
+<title>Mylar New & Noteworthy</title>
+</head>
+<body>
+<h1 align="center">New and Noteworthy for Mylar 0.3</h1>
+<p>Covers 0.3.1 (released July 11, 2005) to 0.4.0 (released October 28, 2005).&nbsp; Send questions to <a href="mailto:mylar-users@eclipse.org">mylar-users@eclipse.org</a>.&nbsp;
+Submit feature requests to
+<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Mylar">Bugzilla</a>.</p>
+<h2>Task context</h2>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table62">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>JUnit testing of task context</b></p>
+ </td>
+ <td width="70%" valign="top">
+ To automatically test every
+ element in your task context add one of the two Mylar JUnit launch
+ configurations visible below.&nbsp; This has the effect of
+ automatically creating a suite with every interesting test in your
+ context (those that you've selected and edited), as well as every
+ test that has a predicted interest (those whose test methods show up
+ in the Active Search view).<p>
+ <img border="0" src="images/0.3/test-context.gif" width="555" height="194"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table63">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table60">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Linked mode for Active Search</b></p>
+ </td>
+ <td width="70%" valign="top">
+ The Active Search view now
+ has a &quot;Link with Editor&quot; button.<p>
+ <img border="0" src="images/0.3/active-search-linked.gif" width="241" height="158"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table61">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table64">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Predicted interest of errors</b></p>
+ </td>
+ <td width="70%" valign="top">
+ The predicted interest of
+ errors can be turned and off in the Java preferences.&nbsp;When on, Java elements that have errors get a predicted
+ interest, which means that they show up in views such as a the
+ package explorer.&nbsp; Once the errors are fixed the predicted
+ interest goes away.&nbsp; Set this on the Java preference page.&nbsp;
+ Off by default.<p>
+ <img border="0" src="images/0.3/preference-error-interest.gif" width="488" height="131"><p>
+ <img border="0" src="images/0.3/interest-error.gif" width="233" height="189"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table55">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Reduced context size</b></p>
+ </td>
+ <td width="70%" valign="top">
+ When a context is saved it
+ now gets collapsed to remove redundancy in how interaction events
+ contribute to interest. This results in an order of magnitude file
+ size reduction, and much faster activation/deactivation. </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table56">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table42">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Open Type integration</b></p>
+ </td>
+ <td width="70%" valign="top">
+ If a task context is active, the Open Type dialog will first types
+ that are in the task context, and then place those matches on top of
+ the list as you type.&nbsp; When no task is active the Open Type
+ dialog reverts to its standard behavior of showing types that you
+ have selected from within the dialog.<p>
+ <img border="0" src="images/0.3/open-type.gif" width="487" height="259"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table51">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table45">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Qualified names in Active Search</b></p>
+ </td>
+ <td width="70%" valign="top">
+ A toolbar button controls whether element names are qualified in the
+ Active Search view.<p>
+ <img border="0" src="images/0.3/active-search-qualify.gif" width="236" height="125"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table52">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table48">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Increased laziness</b></p>
+ </td>
+ <td width="70%" valign="top">
+ When no task is active, Mylar is inactive and Eclipse should behave
+ as if Mylar were not installed.&nbsp; Also, when the Active Search
+ view is closed, no background searches will be run.</td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table50">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table41">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Drag-and-drop Landmark creation</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Elements such as methods and
+ types can be drag-and-dropped into the Active Search and Active
+ Hierarchy views.&nbsp; This will cause them to become landmarks, and
+ to populate those views with related elements.&nbsp; To get rid of
+ an element from an active view it needs to be made less interesting
+ than a landmark, which can be done by right-clicking it in any view
+ and selecting the &quot;Make Less Interesting&quot; action, or by hitting
+ Ctrl+Alt+Shift+Down Arrow when editing that element.<p>
+ <img border="0" src="images/0.3/active-search-manipulation.gif" width="509" height="219"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table49">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table26">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Active Search</b></p>
+ </td>
+ <td width="70%" valign="top">
+ As you work and elements become landmarks
+ (bold decoration), Active Search eagerly finds related elements.&nbsp;
+ To force an element to populate the Active Search view manually make
+ it a landmark by right-clicking or hitting Ctrl+Alt+Shift+Up Arrow.&nbsp;
+ Use the pull-downs on the toolbar to alter the degree-of-separation
+ scope of the search.&nbsp; Note that elements with predicted
+ interest are gray.<p>
+ <img border="0" src="images/0.3/active-search.gif" width="340" height="309"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table27">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Active Hierarchy</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Similar to Active Search, this view actively
+ finds and presents the type hierarchy of the current set of
+ landmarks.<p>
+ <img border="0" src="images/0.3/active-hierarchy.gif" width="364" height="145"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table29">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Filter declarations in Package Explorer </b></p>
+ </td>
+ <td width="70%" valign="top">
+ If you don't like Mylar's constant showing of Java members in the
+ Package Explorer, select the drop-down menu, then &quot;Filters...&quot; and
+ enable the &quot;Mylar Java Declarations Filter&quot;.&nbsp; It will then
+ stick in the menu in case you want to toggle between modes.<p>
+ <img border="0" src="images/0.3/filtering-declarations.gif" width="441" height="211"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+ </table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table23">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Interest filter exclusions</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Resources that are always
+ considered interesting can be configured to always show when the
+ interest filter is on, via the root Mylar preference page.&nbsp;
+ Note that the parent of the resource, e.g. the project or folder,
+ needs to be interesting for it's children to show.&nbsp;
+ <p>
+ <img border="0" src="images/0.3/filtering-exclusion.gif" width="420" height="240"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table16">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Context highlighters</b></p>
+ </td>
+ <td valign="top" width="70%">
+ You can associate a task with a highlighter. This can be useful if
+ you are using Mylar without the filtering support.&nbsp; It also
+ allows you to distinguish between task contexts if you have multiple
+ tasks active.&nbsp;&nbsp; <p><img
+ src="images/0.3/highlight.gif"></p>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Ant editing</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Interest-based filtering is now supported in the Ant editor's
+ Outline view by toggling the glasses.<p>
+ <img border="0" src="images/0.3/filtering-ant.gif" width="464" height="113"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table8">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Interest-based content assist</b></p>
+ </td>
+ <td width="70%" valign="top">
+ The top of the content assist menu will put the items that are in
+ your task context on top of the list, to enable quick selection via
+ arrow keys. Once you start typing the menu will work as usual. Note
+ that the Mylar Java Editor needs to be set as default for &quot;.java&quot;
+ files (this is the only new functionality that comes from the Mylar
+ Java editor).<p>
+ <img border="0" src="images/0.3/interest-content-assist.gif" width="432" height="131"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table40">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Navigator interest filtering</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Interest filtering works in the navigator, similarly to the Package
+ Explorer.&nbsp; To temporarily un filter a node Alt+click it<p>
+ <img border="0" src="images/0.3/filtering-navigator.gif" width="353" height="195"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table9">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Toggle auto folding</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Pressing the editor toolbar button with the Mylar glasses on it will
+ enable/disable Mylar's automatic folding.&nbsp; This can be useful
+ when needing to browse through the code, or copy/paste code around
+ (since Eclipse's folding support can cause odd expansions when
+ copying folded regions,
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104648">bug
+ 104648</a>).&nbsp; The
+ keyboard shortcut is Ctrl+Alt+Shift+F.<p>
+ <img border="0" src="images/0.3/folding-toggle.gif" width="276" height="127"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table4">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Show all filtered children</b></p>
+ </td>
+ <td width="70%" valign="top">
+ When you are using filtering in a Mylar view you have the option of
+ temporarily showing all children of a filtered node by Alt+clicking
+ a node that is not currently selected.&nbsp; For example, you can
+ Alt+click a source folder, keep the Alt+key down, and continue
+ drilling down until you find a method of interest.
+ To navigate using the
+ keyboard alone use the Right Arrow key instead of Alt+clicking, and
+ the Down Arrow key to select elements.&nbsp;<p><img src="images/0.3/alt-click.gif" alt="Alt Click"
+ title="New Java Project Wizard"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+ </table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table5">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Search within task context</b></p>
+ </td>
+ <td valign="top" width="70%">The automatically updated Mylar Task
+ Context working set can be searched as any other working set, either
+ via the popup menus or using the search dialog.&nbsp; For example,
+ to find all System.out/err calls before checking in, search for
+ &quot;System.&quot; within the task context. To quickly search all references
+ click Alt+Shift+G.<p>
+ <img border="0" src="images/0.3/search-context.gif" width="470" height="133"></p>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table6">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Directly manipulate interest</b></p>
+ </td>
+ <td valign="top" width="70%">Directly manually manipulate the
+ interest level of one or more elements by right clicking them and using the two
+ Mylar actions in the popup menu.&nbsp; Keyboard shortcuts for these
+ are Ctrl+Alt+Shift+Up Arrow for Make Landmark, and&nbsp;
+ Ctrl+Alt+Shift+Down Arrow for Make Less Interesting.&nbsp; This now supports disjoint
+ selections.<p>
+ <img border="0" src="images/0.3/interest-manipulate.gif" width="262" height="65"></p>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table7">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Interest filtering for the Java Browsing
+ perspective</b></p>
+ </td>
+ <td valign="top" width="70%">Interest filtering can be toggled for
+ the Packages, Types, and Members views simultaneously by clicking
+ the leftmost toolbar button visible below.<p>
+ <img border="0" src="images/0.3/interest-java-browsing.gif" width="404" height="100"></p>
+
+ </td>
+ </tr>
+ </table>
+
+<h3>&nbsp;</h3>
+<h2>Task List</h2>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table46">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Task history</b></p>
+ </td>
+ <td width="70%" valign="top">
+ The task list now has a
+ back/forward navigation history with drop-downs of previously
+ activated tasks.<p>
+ <img border="0" src="images/0.3/tasks-history.gif" width="495" height="169"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table47">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table31">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Synchronization state</b></p>
+ </td>
+ <td valign="top" width="70%">
+ If a bug report has information on it that has not been viewed, such
+ as new comments, the blue &quot;incoming&quot; overlay is displayed.&nbsp; If
+ a bug has changes on it that have been saved but have not been
+ committed to Bugzilla, the gray &quot;outgoing&quot; overlay is displayed.&nbsp;
+ A red overlay appears if there is a conflict.<p>
+ <img border="0" src="images/0.3/bugzilla-synch.gif" width="323" height="186"></p>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table30">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Offline mode</b></p>
+ </td>
+ <td valign="top" width="70%">
+ You can now explicitly state
+ whether you want to work with cached copies of Bugzilla reports and
+ avoid refresh with the server.&nbsp; In offline mode the cached bug
+ copy is always used.&nbsp; In online mode the Bugzilla server is
+ always checked for the latest report.<p>
+ <img border="0" src="images/0.3/tasks-offline.gif" width="326" height="207"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table32">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Task history navigation</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Navigate between previously
+ activate tasks using the Task List view's pull down menu (upper
+ right-hand corner of the toolbar).<p>
+ <img border="0" src="images/0.3/tasks-history.gif"></p>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table33">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table17">
+ <colgroup>
+ <col width="20%" valign="top" align="right">
+ <col width="80%" valign="top" align="left">
+ </colgroup>
+ <tbody>
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Focus on a single task category</b></p>
+ </td>
+ <td width="70%" valign="top">
+ To see only the tasks for a single category
+ select the &quot;Go Into Category&quot; action from the context menu.&nbsp; To
+ go back to viewing all tasks and categories under the root use the
+ &quot;Go Up To Root&quot; action in the Task List's toolbar pull down menu
+ (visible above).<p>
+ <img border="0" src="images/0.3/tasks-go-navigation.gif" width="284" height="74"></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table13">
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Quick filter</b></p>
+ </td>
+ <td width="70%" valign="top">
+ To filter task by name or
+ regexp type the filter text into the field and all matched tasks
+ will display.&nbsp; Note that this will temporarily suppress all
+ other filters.&nbsp; To clear the query press the &quot;x&quot; button to the
+ right of the text field.<p>
+ <img border="0" src="images/0.3/tasks-quick-filter.gif" width="315" height="173"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table14">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Reminders</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Set a reminder for a task when creating it, or by selecting the
+ &quot;Summary&quot; tab of the Task Editor.&nbsp; When you start using Eclipse
+ on the given day the reminders will come up.<p>
+ <img border="0" src="images/0.3/tasks-reminders.gif" width="452" height="154"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table10">
+ <colgroup>
+ <col width="20%" valign="top" align="right">
+ <col width="80%" valign="top" align="left">
+ </colgroup>
+ <tbody>
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Open reports in web browser</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Bug reports can be opened with either the Bug Editor or the Internal
+ Web Browser.&nbsp; This can be set as a Task List preferences.&nbsp;
+ When the Bug Editor is open you can click the hyperlink to show the
+ report in the browser (e.g. to use a feature not yet available in
+ the editor, such as voting).&nbsp; <p>
+ <img border="0" src="images/0.3/bugzilla-internal-browser.gif" width="344" height="157"></p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table57">
+ <colgroup>
+ <col width="20%" valign="top" align="right">
+ <col width="80%" valign="top" align="left">
+ </colgroup>
+ <tbody>
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Move tasks directory</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Bug reports can be opened with either the Bug Editor or the Internal
+ Web Browser.&nbsp; This can be set as a Task List preferences.&nbsp;
+ When the Bug Editor is open you can click the hyperlink to show the
+ report in the browser (e.g. to use a feature not yet available in
+ the editor, such as voting).&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3>Bugzilla Client</h3>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table36">
+ <tr>
+ <td width="30%" valign="top" align="left">
+ <p align="right"><b>Support Ctrl+click in Java Editor to navigate to
+ bug</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Ctrl+click on a comment that
+ contains one of the following forms will open the bug with the given
+ id: bug# 123, bug 123,
+ Bug #123,
+ Bug#123. (Note that all of these are
+ case insensitive and can be followed by a colon or whitespace).<p>
+ <img border="0" src="images/0.3/bugzilla-hyperlink.gif" width="381" height="102"></p>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table37">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="600" id="table38">
+ <tr>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Custom queries</b></p>
+ </td>
+ <td valign="top" width="70%">
+ To create a custom Bugzilla
+ query paste the query URL into the New Bugzilla Query dialog. This
+ enables support of queries that can not be configured via the
+ dialog, and as such some query hits may not open or format properly.<p>
+ <img border="0" src="images/0.3/bugzilla-query-custom.gif" width="483" height="106"></p>
+
+ </td>
+ </tr>
+ </table>
+
+</body>
+</html>
diff --git a/org.eclipse.mylyn.help.ui/doc/new-0.4.html b/org.eclipse.mylyn.help.ui/doc/new-0.4.html
new file mode 100644
index 000000000..b150304f5
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/new-0.4.html
@@ -0,0 +1,1053 @@
+<html>
+<head>
+ <title>Mylar New &amp; Noteworthy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Mik Kersten" />
+ <meta name="keywords" content="Mylar, Eclipse" />
+ <link rel="stylesheet" type="text/css" href="http://eclipse.org/eclipse.org-common/themes/Phoenix/css/visual.css" media="screen" />
+</head>
+<body>
+<div align=center><h1>New &amp; Noteworthy for Mylar 0.4.1 - 0.5.0</h1></div>
+<ul>
+ <li>To avoid potentially confusing the update manager use &quot;Search for new
+features..&quot; when installing.</li>
+ <li><b>Bugzilla Connector users</b>: after updating, if you get a &quot;Could not log in&quot; error when
+synchronizing a query and your credentials are correct open it, verify that it is associated to the correct
+repository, and click OK (some older task lists did not properly associate
+queries with repositories). </li>
+ <li><b>JIRA Connector users</b>: JIRA Core Services 0.8.0 (from Tigris.org) will
+get installed with this release if it was not downloaded with a previous one.</li>
+ <li><b>Eclipse 3.2 users</b>: this release supports Eclipse 3.2M6 (not M5). The custom Mylar
+ Java editor is gone, so before restarting
+ deactivate the current task or close all active editors, and run the New -&gt;
+ Mylar -&gt; Preference Configuration wizard if it does not pop up
+ automatically.&nbsp; If auto folding doesn't work reset the folding provider (see
+ <a href="#active-folding">Active Folding</a>).<br>
+&nbsp; </li>
+</ul>
+
+<table border="1" style="border-collapse: collapse" width="100%" id="table128" cellpadding="4" bordercolor="#FFFFFF">
+ <tr>
+ <td bgcolor="#595791" width="7%" align="center"><b>
+ <font color="#FFFFFF" size="1">Release</font></b></td>
+ <td bgcolor="#595791" width="5%" align="center"><b>
+ <font color="#FFFFFF" size="1">Resolved
+ </font></b></td>
+ <td bgcolor="#595791" width="*" align="center"><b>
+ <font color="#FFFFFF" size="1">Community Contributions</font></b></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.5.0<br>
+ <i>April 07</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-03-18&chfieldto=2006-04-08&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ <font size="1">62</font><font size="1"> <br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Robert Elves contributed the bug
+ editor improvements and numerous other patches, and has now been voted
+ in as a committer.&nbsp; Brock Janiczak contributed patches to JIRA and
+ and task list support.&nbsp; Brian de Alwis provided a patch to the
+ Monitor to make obfuscation a preference.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.10<br>
+ <i>March 17</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-02-24&chfieldto=2006-03-18&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ <font size="1">80
+ <br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Robert Elves contributed the Task
+ Activity view, ported the Bugzilla editor to Forms, and resolved
+ numerous bugs. Ian Whalley provided patches for Bugzilla and IBM JDK
+ compliance. Eugene Kuleshov provided patches for improved task
+ comparison and repository protocols. Wang Bin provided additional source
+ code scrutiny and optimizations. Peik Aschan provided a useful assertion
+ test case. </font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.9<br>
+ <i>Feb. 23</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-01-31&chfieldto=2006-02-23&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 50<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Robert Elves provided patches that
+ resolved 17 reports. The JIRA support was made possible by Brock
+ Janiczak's help and his JIRA Core Services feature. Wesley Coelho
+ provided initial integration patches and 10 very valuable JIRA test
+ cases, and Eugene Kuleshov helped with debugging. Wang Bin provided
+ patches for JUnit integration and code quality. Tom Eicher and Daniel
+ Megert made tighter editor integration possible with new SDK content
+ assist and folding APIs.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.8
+ <br>
+ <i>Jan. 30</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-01-15&chfieldto=2006-01-31&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 52<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Robert Elves has provided numerous
+ fixes to the Task List and Bugzilla Client.&nbsp; Brock Janiczak
+ provided a patch that improved the multi-repository aware wizard, and
+ with Eugene Kuleshov provided valuable feedback on the UI and
+ architecture for task repository support.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.7
+ <br>
+ <i>Jan.16 '06</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-12-17&chfieldto=2006-01-14&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 36<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Brock Janiczak fixed lazy loading
+ of image registry, provided 3.2M4 patches, and a highlighter fix. Robert
+ Elves improved external browser integration and the task editor. David
+ Bari and Tomasz Smietanka set up bugzilla servers with alternate
+ encodings. Eugene Kuleshov provided an idea for avoiding inducing
+ interest on resources upon check-out.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.6
+ <br>
+ <i>Dec. 16</i></font></td>
+ <td bgcolor="#FAF7FB" align="center"><font size="1"><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-12-12&chfieldto=2005-12-16&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">16
+ <br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Brock Janiczak contributed SAX
+ based context externalization to replace the considerably slower DOM
+ based version.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.5<br>
+ <i>Dec. 12</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-12-04&chfieldto=2005-12-11&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 24<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Brock Janiczak contributed an
+ improvement to the Task List extension point schema and patches for
+ compatibility with the upcoming Eclipse 3.2M4 release. Wes Coelho
+ improved the date chooser dialog.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.4<br>
+ <i>Dec. 2</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-11-22&chfieldto=2005-12-03&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 39<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Wesley Coelho added support for
+ in-progress tasks in the Task Planner and background saves of the task
+ list. Igor Fedorenko provided a patch for an NPE in the java problem
+ resolution, and Ian Bull provided a patch to the for setting platform
+ and hardware defaults in the bug wizard.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.3<br>
+ <i>Nov. 22</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-11-14&chfieldto=2005-11-21&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 32<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Leah Findlater continued to improve
+ the extensibility of the Mylar Monitor for her upcoming study of WTP
+ usage. </font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.2<br>
+ <i>Nov. 14</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-11-06&chfieldto=2005-11-15&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 31<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Leah Findlater helped make the
+ Monitor more extensible to other user studies.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.4.1<br>
+ <i>Nov. 4</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2005-10-31&chfieldto=2005-11-05&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 28<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Wesley Coelho provided a history
+ navigation patch and other
+ improvements to the Task List. </font></td>
+ </tr>
+</table>
+
+<hr>
+
+<h2>Task Context</h2>
+
+<table cellpadding="10" cellspacing="0" id="table177">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Apply Mylar to Project Explorer<br>
+ (3.2 only)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Mylar can be applied to the Eclipse 3.2 Project Explorer view.<p>
+ <img border="0" src="images/0.5.0/apply-project-explorer.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table178">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Apply Mylar to Tasks Marker view</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Mylar can now be applied to the 'Tasks' Markers view.&nbsp; This can
+ be useful for looking over the TODO and other tasks in the active
+ task context before committing.<p>
+ <img border="0" src="images/0.5.0/apply-task-markers.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table171">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Alt+Click Navigation Improvements</b></p>
+ </td>
+ <td valign="top" width="70%">
+ When a view is in filtered mode, Alt+Click a tree node to unfilter
+ all of its children.&nbsp; This can be repeated until the desired
+ element is found.&nbsp; You can also Alt+Click the white space in
+ Package Explorer to unfilter all of the projects.&nbsp; If Alt is
+ let go, the view will spring back to showing only the task context.&nbsp;
+ Note that on some Linux configurations Alt must be pressed along
+ with another modifier key.<p>
+ <img border="0" src="images/0.5.0/navigate-alt-click.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table192">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Editor Management</b></p>
+ </td>
+ <td valign="top" width="70%">
+ If the Manage Editors with Context option is selected open editors
+ will correspond to the active task context:<br>
+ - On task activation the editors of the most interesting elements
+ will be automatically opened, and populate the Ctrl+E list.&nbsp;
+ Set the number of editors to open on the Mylar preference page.<br>
+ - Closing an editor will mark the corresponding file and all
+ children uninteresting (Note that &quot;Mark Less Interesting&quot; now
+ recurses to children).&nbsp; So if you navigate to something
+ uninteresting simply hit Ctrl+F4.<br>
+ - Marking a file less interesting will cause it to close.<p>It is
+ recommended that you either turn off the &quot;Close Editors
+ Automatically&quot; workbench setting, or set a high number to leave
+ open.</p>
+ <p>
+ <img border="0" src="images/0.4.3/editors-auto-manage.gif" width="318" height="150"><p>
+ <img border="0" src="images/0.4.3/editors-auto-manage-pref.gif" width="400" height="43"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" width="601" id="table187">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>No more custom Java Editor <br>
+ (3.2 only)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The custom Mylar Java editor is gone, and the automatic folding and
+ content assist integration will now work with any Java editor, e.g.
+ AJDT's, thanks to new Eclipse APIs.</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table188">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b><a name="active-folding">Active Folding Improvements </a>
+ <br>
+ <a name="active-folding">(3.2 only)</a></b></p>
+ </td>
+ <td valign="top" width="70%">
+ Active folding has been improved, no longer requires the Mylar Java
+ Folding provider, and should work with any Eclipse 3.2-based Java
+ folding provider in addition to the default one.&nbsp; If you were
+ using Mylar's active folding restore the default provider via
+ Preferences -&gt; Java -&gt; Editor -&gt; Folding -&gt; Restore Defaults (first
+ deactivate the active context to close all open Java editors).</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table194">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Support for Hierarchical Problems Layout<br>
+ (3.2 only) </b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Mylar interest filter can now be applied to the Eclipse 3.2
+ Hierarchical Layout of the Problems view.&nbsp; The Flat Layout is
+ recommended when Mylar is applied, since it helps focus on the
+ markers of interest.
+ <p>
+ <img border="0" src="images/0.4.2/problems-hierarchical.gif" width="451" height="189"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table191">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Context Capture Pause Indication</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Pausing context capture is now indicated on the status bar.&nbsp;
+ Note that other notifications can occlude this one, so if you notice
+ newly selected elements not populating the context check the state
+ of the toggle button on the Task List.<p>
+ <img border="0" src="images/0.4.3/context-capture-pause-indicator.gif" width="305" height="126"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table193">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Task context indication</b></p>
+ </td>
+ <td valign="top" width="70%">
+ If a task is inactive, but has a context associated with it, the
+ Activate widget appears lightly filled (i.e. as bug 111722 below).&nbsp; <p>
+ <img border="0" src="images/0.4.1/tasklist-context.gif" width="297" height="191"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<h3>&nbsp;&nbsp;&nbsp; </h3>
+<h3>Task List</h3>
+
+<table cellpadding="10" cellspacing="0" id="table168">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Automatic task list backup</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Using <i>Preferences -&gt; Mylar -&gt; Task List</i> the task list and contexts are now automatically backed up to
+ the specified location.
+ Backup has the same effect as the Task Data export, and will create
+ a zip file at the desired location.&nbsp; The zip files can later be
+ imported used using File -&gt; Import -&gt; Mylar Task Data.<p>
+ <img border="0" src="images/0.5.0/tasklist-backup.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table169">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Background query synchronization</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Using <i>Preferences -&gt; Mylar -&gt; Task Repositories </i>queries and
+ repository tasks can be synchronized given the specified schedule.<p>
+ <img border="0" src="images/0.5.0/query-synchronization.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table167">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Color and Font settings</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Task list and task editor colors and fonts can be configured via the
+ global preference settings.<p>
+ <img border="0" src="images/0.5.0/colors-and-fonts.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table195">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Archive category</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Archive category includes all tasks that have been worked on.&nbsp;
+ It is filtered by default, but shows up when the &quot;Find:&quot; view filter
+ is used.&nbsp; Filtering can be toggled using the view menu.<p>
+ <img border="0" src="images/0.5.0/tasklist-archive.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table174">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Task priorities and status indication</b></p>
+ </td>
+ <td valign="top" width="70%">
+ NOTE: you may need to resize your columns after&nbsp;
+ updating.<p>Task priorities are now icon based instead of using the Bugzilla
+ P1..5 scheme, and the default priority has no icon.&nbsp;&nbsp;&nbsp;More task
+ status is indicated</p>
+ <ul>
+ <li>Notes are overlaid on top (see &quot;long: ui issues&quot; below)</li>
+ <li>Severity is overlaid in the bottom right (for Bugzilla green
+ triangle means enhancement, red circle means blocker/major, for
+ JIRA additional task types appear).</li>
+ <li>For Bugzilla incoming/outgoing state is in a separate
+ column.</li>
+ <li>Tooltips indicate the repository connector branding icon.</li>
+ </ul>
+ <p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.10/tasklist-status.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table175">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Task Activity view<br>
+ (Experimental)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The experimental Task Activity view and will replaces the Task
+ Planner wizard for viewing task activity, and appears in the new
+ Planning perspective. This view shows the task activity context,
+ which will drive the Apply Mylar to Task List action coming in 0.5.
+ Note that elapsed times are still approximate, and will be more
+ configurable for 0.5. Tasks can be dragged to the current, next, or
+ future week to set reminders for those weeks.<p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.10/task-activity.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table153">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>JIRA Connector</b></p>
+ </td>
+ <td valign="top" width="70%">
+ JIRA tasks and queries are now supported in the task list.&nbsp; Add
+ a new JIRA repository via the Task Repositories view, then
+ right-click in the task list to Add a New Repository Query, and
+ select from one of your existing JIRA filters.&nbsp; Note that on
+ very large repositories (e.g. Codehaus the very first query that's
+ run on a newly added repository will be slow).&nbsp;
+ <p>Refer to the <a href="http://www.eclipse.org/mylar/start.php">
+ Getting Started</a> page for an integration overview.&nbsp; Also note that the task list now provides icon overlays indicating
+ repository task type/severity, and text overlays for queries indicating the repository.
+ </p>
+ <p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.9/jira-select-type.gif"></p>
+ <p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.9/jira-query.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table151">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Task data import</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Task date can now be imported from an existing .mylar directory, or
+ from a backup zip file created by the Mylar export wizard.<p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.9/tasklist-import.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table152">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Active task indication<br>
+ (3.2 only)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The currently active task is indicated with a hyperlink below the
+ toolbar that can be used to bring the task into focus.<p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.9/tasklist-indication-active.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table150">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Notification popups<br>
+ (3.2 only)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Task reminders no longer appear in a separate dialog windows.&nbsp;
+ When a task becomes overdue, a notification 'toaster' pops up that
+ can be used to bring the task up.&nbsp; The notification will not
+ come up again, since the overdue task will be colored red and always
+ visible in the task list until the reminder is reset.<p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.9/tasklist-notification.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table126">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Support for Multiple Repositories</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Preliminary support for multiple repositories is included, so more
+ than one Bugzilla repository can be used.&nbsp; The repositories
+ view is visible by default in the Team Synchronizing and CVS
+ Repositories perspectives.<p>
+ <img border="0" src="images/0.4.7/tasklist-repositories.gif" width="391" height="121"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table124">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>External Browser Integration</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Tasks can be created by drag-and-dropping a URL from a link or from
+ the Address bar onto the task list, causing the web link and
+ description to be set automatically.&nbsp; In Mozilla, simply drag
+ the URL.&nbsp; In Internet Explorer you must have Ctrl pressed in
+ order for Eclipse to recognize the drop.<p>
+ Tasks with web links and bug reports can also be opened using the
+ default external browser.</p>
+ <p>
+ <img border="0" src="images/0.4.7/tasklist-open-external.gif" width="347" height="60"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table122">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Overdue Tasks</b></p>
+ </td>
+ <td valign="top" width="70%">
+ If you have been using task reminders you may notice tasks
+ previously filtered showing in red.&nbsp; Tasks that are not
+ completed and are past their reminder date will no longer get
+ filtered away.&nbsp; The reminder date of a task a task or bug
+ report can be cleared using the Task Info editor tab.&nbsp;
+ If a category has overdue
+ tasks in it that category will be colored red.<p>
+ <img border="0" src="images/0.4.6/tasklist-pastreminder.gif" width="589" height="234"><br>
+&nbsp; &nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table123">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Multiple Selections</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Multiple selections, made by Ctrl and Shift clicking, are now
+ supported.&nbsp; You can now drag-and-drop multiple tasks, mark
+ completed, delete, and synchronize multiple reports.&nbsp; If you
+ are using Eclipse 3.1, note that elements will not be selected
+ automatically when your right-click them to bring up the popup menu,
+ so you need to first select the element and then bring up the popup.</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table120">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Improved Task Manipulation</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Dragging and dropping items to categories moves them, and items can
+ be dragged into the root.&nbsp; Also, if the Mylar Tasks view is in
+ fast view mode the active task will be indicated when you mouse over
+ the icon and on the view description bar.<p>&nbsp;<img border="0" src="images/0.4.5/tasklist-drag.gif" width="303" height="172"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table121">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Task Planner</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Task Planner has been available for a while is still
+ experimental, but the UI has improved.&nbsp; Invoke it via File -&gt;
+ New -&gt; Other -&gt; Mylar Task Planner, specify the number of days, and
+ you will see a report of your past activity.&nbsp; You can drag
+ tasks from the task list into the plan (e.g. from a Bugzilla query),
+ and set their reminders and estimates.&nbsp; All tasks in the plan
+ can be automatically added to a category.<p>
+ <img border="0" src="images/0.4.5/taskist-planner.gif" width="603" height="407"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table114">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Improved Task List actions and shortcuts</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Task List popup menu has been improved to be more context
+ sensitive and to always create items in the category that is
+ currently in focus.&nbsp; Tooltip behavior has been improved.&nbsp;
+ Common actions are now keyboard shortcuts:<br>
+ - New Task: ins<br>
+ - Delete: del<br>
+ - Rename: F2<br>
+ - Copy Description: Ctrl+C<p>
+ <img border="0" src="images/0.4.1/tasklist-popup.gif" width="231" height="297"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table115">
+ <tr>
+ <td width="15%" valign="top" align="left">
+ <p align="right"><b>Links to web reports</b></p>
+ </td>
+ <td width="70%" valign="top">
+ Tasks can be linked to web pages.&nbsp; For example, if you want a
+ task to correspond to a Wiki page or to a bug report copy the URL of
+ the report, click the New Task button on the Task List, and the URL
+ will automatically be inserted in the Web Link field.&nbsp; If you
+ click Get Description the title of the page will be inserted into
+ the Description field.&nbsp; The task will appear with a Web icon
+ decorator, and will automatically bring up a Task Editor page that
+ loads the web link when opened.&nbsp;
+ <p>
+ <img border="0" src="images/0.4.1/tasklist-weblink.gif" width="528" height="155"></p>
+ <p>
+ <img border="0" src="images/0.4.1/tasklist-weblink-editor.gif" width="585" height="195"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table116">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table117">
+ <tr>
+ <td width="15%" valign="top" align="left">
+ <p align="right"><b>Task context data&nbsp; export</b></p>
+ </td>
+ <td width="70%" valign="top">
+ The Mylar Task List and related data can be exported, e.g. for
+ backup purposes.&nbsp; You can now export to an archive file.<p>
+ <img border="0" src="images/0.4.1/tasklist-export.gif" width="555" height="343"></td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table118">
+ <tr>
+ <td>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<h3>&nbsp; </h3>
+<h3>Team Integration</h3>
+
+<table cellpadding="10" cellspacing="0" id="table196">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Task Context Change Sets</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The active task now corresponds to a Change Set that's managed by
+ Mylar.&nbsp; All resources in the task's context automatically get
+ included in this change set, making it possible to synchronize and
+ commit only those resources.&nbsp; Resources modified that are not
+ part of the Task Context will appear outside of the Change Set in
+ the Synchronize view.&nbsp; Note that as with other Change Sets you
+ need to set the Synchronize view into either Incoming or Outgoing
+ mode and toggle the &quot;Show Change Sets&quot; button.<p>
+ <img border="0" src="images/0.4.2/context-change-set.gif" width="498" height="192"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table197">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Context Change Set Persistence and Manipulation</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The active task context change sets now persist, so that if there
+ are any uncommitted resources in the change set it will not
+ disappear when the task is deactivated, and multiple change sets can
+ be present.&nbsp; While the context change sets are affected by
+ interest manipulations (i.e. marking a file uninteresting will
+ remove it from the change set), they do not 'see' the interest decay
+ in order to indefinitely retain any resources modified as part of
+ that task.&nbsp; If resources are changed outside of the context
+ (e.g. by applying a patch) they can be added to the task via the Add
+ To menu (visible below).&nbsp; If the task context they are added to
+ is active those resources will be also come interesting.<p>
+ <img border="0" src="images/0.4.4/changeset-addto.gif" width="592" height="271"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table198">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Active Change Set Improvements </b></p>
+ </td>
+ <td valign="top" width="70%">
+ Mylar's Active Change sets now capture now include resources
+ that are edited indirectly, e.g. resources modified as a result of
+ refactorings and applying patches.<p>Note that if on Eclipse 3.2M6
+ your Synchronize view gets stuck now showing Show Change Sets button
+ select Remove Current Synchronization from the view menu.</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table199">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Mapping of Incoming Changes to Reports</b></p>
+ </td>
+ <td valign="top" width="70%">
+ When the Synchronize view is in Incoming and Change Sets mode
+ (visible below), and Mylar Change Set support was used to commit,
+ incoming changes will be grouped by task description.&nbsp; Right
+ clicking a Change Set will bring up an &quot;Open Corresponding Report&quot;
+ action to navigate to the corresponding issue (either Bugzilla
+ report or Web Link).&nbsp; The same action is available for
+ navigating from commit messages to reports in the CVS Resource
+ History view. <p>
+ <img border="0" src="images/0.4.3/synchronize-change-sets.gif" width="593" height="206"></p>
+ <p>
+ <img border="0" src="images/0.4.3/cvs-resource-history-open.gif" width="476" height="163"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table200">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Open Task from History View<br>
+ (3.2 only)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Change set support<p>
+ <img border="0" src="images/0.5.0/open-task-from-history.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table201">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Commit Task Context</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Resources in the Task Context can be committed either by
+ right-clicking the active task and selecting the Commit Task Context
+ action, or by right-clicking the Change Set in the Synchronize view.&nbsp;
+ In both cases the commit message will be populated by the
+ description and URL of the task (if available).&nbsp; The comment
+ prefix can be changed in the Task List preferences page.&nbsp; <p>
+ <img border="0" src="images/0.4.2/context-commit.gif" width="231" height="79"><p>
+ <img border="0" src="images/0.4.2/context-commit-wizard.gif" width="525" height="369"><p>
+ <img border="0" src="images/0.4.2/context-commit-prefix.gif" width="432" height="84"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<h3>&nbsp; </h3>
+<h3>Bugzilla Connector</h3>
+
+<table cellpadding="10" cellspacing="0" id="table173">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Form-based Bugzilla Editor with Hyperlink
+ support</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The editor now uses Eclipse forms, collapses comments that expand on
+ selection.&nbsp; The following hyperlinks are supported in comment
+ bodies:<ul>
+ <li>Java elements in stack traces</li>
+ <li>Bug links (e.g. bug 123)</li>
+ <li>Hyperlinks</li>
+ <li>Attachments</li>
+ </ul>
+ <p>
+ On Eclipse 3.1, click the comment for the links to become active.<p>
+ To apply a patch click the &quot;view&quot; link, hit Ctrl+A and Ctrl+C on the
+ text to get it into the clipboard, then Apply Patch).&nbsp; To
+ expand all comments click the &quot;Expand All&quot; button at the bottom of
+ the editor.&nbsp;
+ <p>
+ <img border="0" src="images/0.5.0/task-editor-hyperlinks.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table165">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Multiple Bugzilla versions supported</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Bugzilla versions are now associated with each repository, and can
+ be set from the Task Repositories view.&nbsp; Uncustomized versions
+ 2.16-2.22 are supported.<p>If you are switching from Bugzilla 2.18
+ to 2.20 you will need to update the existing Bugzilla Queries in
+ your task list.&nbsp; Double click each query category to edit it,
+ press &quot;Update Options&quot;, and then simply click OK to save the query.&nbsp;
+ Please note that the default Bugzilla configuration is now 2.20.</p>
+ <p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.10/bugzilla-versions.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table125">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Support for Unicode Character Sets</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Bugzilla character settings are honored.&nbsp; For repositories
+ older than 2.20 you may need to use the internal browser for
+ submission if encoding is ignored.<p>
+ <img border="0" src="images/0.4.7/bugzilla-encoding.gif" width="354" height="42"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table106">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Improved Outline</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Bug Editor Outline can be used to navigate the report by
+ commenter and date.<p>
+ <img border="0" src="images/0.4.3/bugzilla-outline.gif" width="382" height="165"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table100">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Proxy Settings</b></p>
+ </td>
+ <td valign="top" width="70%">
+ To enable use with firewalls and proxy servers the Bugzilla Client
+ follows proxy settings set in the Install/Update preference page.</td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" id="table77">
+ <tr>
+ <td align="left" valign="top" width="15%">
+ <p align="right"><b>Browser tab for Bugzilla reports</b></p>
+ </td>
+ <td valign="top" width="70%">
+ A new editor tab makes it easy to switch from the Bug Editor to
+ Browser-based editing.&nbsp; Note that when using the Browser
+ queries will not automatically refresh after submitting changes on a
+ bug.&nbsp; You can set the Browser to be the default editor in the
+ Task List preference page.<p>
+ <img border="0" src="images/0.4.1/bugzilla-prefs-open-reports.gif" width="231" height="50"><p>
+ <img border="0" src="images/0.4.1/bugzilla-editor-browser.gif" width="563" height="360"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/new.html b/org.eclipse.mylyn.help.ui/doc/new.html
new file mode 100644
index 000000000..35d096da8
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/new.html
@@ -0,0 +1,407 @@
+<html>
+<head>
+ <title>Mylar New &amp; Noteworthy</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Mik Kersten" />
+ <meta name="keywords" content="Mylar, Eclipse" />
+ <link rel="stylesheet" type="text/css" href="http://eclipse.org/eclipse.org-common/themes/Phoenix/css/visual.css" media="screen" />
+</head>
+<body>
+<div align=center><h1>New &amp; Noteworthy for Mylar 0.5.2</h1></div>
+
+<table border="1" style="border-collapse: collapse" width="100%" id="table128" cellpadding="4" bordercolor="#FFFFFF">
+ <tr>
+ <td bgcolor="#595791" width="7%" align="center"><b>
+ <font color="#FFFFFF" size="1">Release</font></b></td>
+ <td bgcolor="#595791" width="5%" align="center"><b>
+ <font color="#FFFFFF" size="1">Resolved
+ </font></b></td>
+ <td bgcolor="#595791" width="*" align="center"><b>
+ <font color="#FFFFFF" size="1">Community Contributions</font></b></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.5.3<br>
+ <i>tbd</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-05-19&chfieldto=2006-06-09&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ x<br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">...</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#E0D0E6"><font size="1">0.5.2<br>
+ <i>May 22</i></font></td>
+ <td bgcolor="#E0D0E6" align="center">
+ <font size="1">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-04-29&chfieldto=2006-05-20&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ 64<br>
+ reports</a></font></td>
+ <td bgcolor="#E0D0E6"><font size="1">Brock Janiczak made another big
+ contribution with the
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=133764">
+ form-based JIRA editor</a>, updates for
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=139320">new JIRA
+ APIs</a>, and
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=141251">wizard
+ progress</a>.&nbsp; David Barri's patch and help were instrumental in
+ supporting
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=117035">alternate
+ encodings</a>.&nbsp; Sefan Langer made use of the internal browser for
+ tasks <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=132656">
+ optional</a>.&nbsp; Minor fixes were also contributed by
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=142362">Brian de
+ Alwis</a> and
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=139293">Leah
+ Findlater</a>.</font></td>
+ </tr>
+ <tr>
+ <td bgcolor="#FAF7FB"><font size="1">0.5.1<br>
+ <i>April 28</i></font></td>
+ <td bgcolor="#FAF7FB" align="center">
+ <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-04-08&chfieldto=2006-04-29&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
+ <font size="1">34</font><font size="1"><br>
+ reports</a></font></td>
+ <td bgcolor="#FAF7FB"><font size="1">Brock Janiczak and
+ Eugene Kuleshov made a very substantial contribution of custom JIRA
+ query support.&nbsp; Gunnar Wagenknecht contributed a patch for RC1
+ compatibility.</font></td>
+ </tr>
+ </table>
+
+<p>Also see:<br>
+<b>&nbsp;&nbsp;&nbsp;&nbsp; - </b><b>
+<a href="new-0.4.html">New &amp; Noteworthy for Mylar 0.4</a></b><br>
+<b>&nbsp;&nbsp;&nbsp;&nbsp; - <a href="new-0.3.html">New &amp; Noteworthy for
+Mylar 0.3</a></b></p>
+
+<p>Update instructions:</p>
+<ul>
+ <li>Use &quot;Search for new features..&quot; when updating to avoid confusing the
+ Update Manager</li>
+ <li>Bugzilla users: submit all outgoing changes before updating since this
+ update will recreate the offline file</li>
+ <li>JIRA users: JIRA Core Services 0.9.0 is required and included on the
+ update site, synch queries after updating</li>
+</ul>
+
+<hr>
+
+<table cellpadding="10" cellspacing="0" id="table234">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#E0D0E6">
+ <p align="right"><b>misc 0.5.3</b></p>
+ </td>
+ <td valign="top" width="70%">
+ resource exclusion page, can be used to prevent
+ monitoring of projects, generated files that get checked
+ in, etc.<p>Bugzilla</p>
+ <ul>
+ <li>reports open offline, synch in background</li>
+ <li>new comments are all unfolded</li>
+ <li>first synch will be slow if lots of old tasks</li>
+ <li>can add attachments</li>
+ <li>reports synch in background, open without going
+ to server</li>
+ </ul>
+ <p>&quot;Open in Browser&quot; obeys platform options.&nbsp;
+ Better browser integration.</p>
+ <p>
+ Viewers: Multiple window support (update FAQ), Apply Mylar
+ performance improved<p>
+ Preference clean-up<p>
+ Subclipse change set support <br>
+ - setup instructions<br>
+&nbsp; <a href="http://subclipse.tigris.org/servlets/ReadMsg?list=users&msgNo=6914">
+ http://subclipse.tigris.org/servlets/ReadMsg?list=users&amp;msgNo=6914</a>
+ <br>
+&nbsp; <a href="http://subclipse.tigris.org/update_1.2.x">
+ http://subclipse.tigris.org/update_1.2.x</a> <br>
+&nbsp;<p>
+ &nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+ <h2>Task List</h2>
+
+<table cellpadding="10" cellspacing="0">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>Daily Progress </b></p>
+ </td>
+ <td valign="top" width="70%">
+ Using
+ Apply Mylar in the Task List now helps track daily task
+ progress by highlighting tasks scheduled for today (default
+ is blue) and always showing tasks completed today
+ (default is green).&nbsp; With Apply Mylar enabled the
+ previous sort order is removed and interest based
+ sorting is added (e.g. brings overdue tasks to the top
+ and completed ones to the bottom, then sorts by priority
+ and description).<p>Repository tasks with incoming
+ comments are now always considered to be interesting
+ (e.g. 133196 below).&nbsp;
+ Note that if you see too many tasks with incoming
+ notifications you can select them all and click <i>
+ Synchronize with Repository</i> on the context menu to
+ catch up.&nbsp; </p>
+ <p>
+ <img src="images/0.5.2/tasklist-apply-mylar.gif"></td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table208">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
+ <p align="right"><b>Apply Mylar to Task Activity</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Similar to how Mylar only shows the resources interesting to a task
+ when applied to a resource view, the Mylar filter will show only the
+ tasks relevant to the current work week when applied to the Task
+ List view.&nbsp; This helps reduce information overload for those
+ that make heavy use of the Task List by focusing on the tasks
+ scheduled for this week, incomplete tasks that have become
+ interesting by being worked on recently, and those that are past
+ their reminders.&nbsp; To mark a task uninteresting set its reminder
+ for next week or later.&nbsp; Also note that tasks scheduled for
+ today are highlighted in blue by default (see <i>Preferences -&gt;
+ General -&gt; Fonts and Colors</i> to change).<p>
+ <img src="images/0.5.1/apply-tasklist.gif"></td>
+ </tr>
+ </table>
+
+<h2>&nbsp; </h2>
+<h2>Task Context</h2>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table211">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
+ <p align="right"><b>Editor Auto Close</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Editors now close automatically when the corresponding files become
+ uninteresting.&nbsp; This ensures that the number of open editors
+ does not bloat, and that the editors match the context visible in
+ vies like the Package Explorer.&nbsp; Note that when a context is
+ activated the Eclipse preference for closing editors will be
+ disabled, and re-enabled on deactivation if previously set.<p>
+ <img src="images/0.5.1/editors-close.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table210">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
+ <p align="right"><b>Filter Auto Removal</b></p>
+ </td>
+ <td valign="top" width="70%">
+ When Mylar is applied to a view, the existing filters will be
+ removed from the view.&nbsp; This enables Alt+click browsing of all
+ elements (e.g. .settings folder), and ensures that filters such as
+ Referenced Libraries and Working Sets do not hide elements
+ interesting to a context.&nbsp; The filters are restored when the
+ Apply Mylar button is toggled off.</td>
+ </tr>
+ </table>
+
+<p>&nbsp; </p>
+<h2>Team</h2>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table233">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>Support for CVS Change Sets with Models</b></p>
+ </td>
+ <td valign="top" width="70%">
+ If you are using the model-based change sets, you will notice that
+ the Mylar Active Change sets work show up with a decoration in the
+ lower-right corner, and that you can view both incoming and outgoing
+ change sets at the same time.&nbsp; However, note that there is a
+ refresh problem on startup, so if a change
+ set you expect is missing or if you get a <i>There are no more Incoming/Outgoing changes</i> message
+ in the view on startup toggle the third toolbar button between <i>
+ All Models</i> and <i>Change Sets</i> (see Platform/Team
+ <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=142395">bug
+ 142395</a>).&nbsp;
+ <p>
+ <img src="images/0.5.2/changesets-model-based.gif"></td>
+ </tr>
+</table>
+
+<p>&nbsp; </p>
+
+<h2>Bugzilla Connector</h2>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table227">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>Search Integration</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Bugzilla search page now only shows attributes relevant to the
+ selected product.&nbsp; The results shown in the Search view are now
+ opened and displayed consistently with the Task List (e.g.
+ indicating which hits are in the Task list via the icon).<p>
+ <img src="images/0.5.2/bugzilla-search.gif"></td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table228">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>Bugzilla Connector Uses XML/RDF</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Bugzilla connector now exclusively uses XML and RDF to run
+ queries and retrieve bug reports (previously relied on HTML
+ parsing).&nbsp; This means that it can now be used with many
+ customized repositories (e.g. RedHat), and that all bug attributes
+ should be visible and editable (e.g. keywords).&nbsp; Attachments
+ now show up in a new section on the report.<p>Synchronization and incoming change notification has been
+ streamlined and only downloads changed reports (refer to Time Zone
+ settings below).</p>
+ <p>
+ <img src="images/0.5.2/task-repository-sync.gif"></td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table229">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>Character Encodings and Time Zones</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Bugzilla Connector now has full support for encodings (note
+ UTF-8 support was improved in Bugzilla 2.22).&nbsp;
+ For most installations
+ the default UTF-8 settings should work, but you can also force the
+ encoding used in the repository settings page.<p>
+ <img src="images/0.5.2/bugzilla-encodings-editor.gif"><p>
+ The time zone setting <b>must be set correctly</b> for synchronization to
+ only synchronize changed tasks correctly.&nbsp; If you do not set this
+ value your local time zone will be used.&nbsp; Note that the
+ eclipse.org repository is on Canada/Eastern time.<p>
+ <img src="images/0.5.2/bugzilla-encodings-settings.gif"></td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table209">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
+ <p align="right"><b>Task Context Attachments</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Task contexts can now be attached to Bugzilla tasks and retrieved
+ into the workspace, via the Task List popup menu.&nbsp; When a task
+ has a repository context the lower-left repository icon turns purple and
+ gets taller.<p>Note: not (yet) supported on
+ Bugzilla 2.18.<p>
+ <img src="images/0.5.1/context-attach-popup.gif"><p>
+ <img src="images/0.5.1/context-retrieve.gif"></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table205">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
+ <p align="right"><b>End of Support for 2.16</b></p>
+ </td>
+ <td valign="top" width="70%">
+ This release marks the end of both bugzilla.org and Mylar support
+ for Bugzilla 2.16, so those using the old installation will need to
+ <a href="http://www.bugzilla.org/news/">upgrade</a>.</td>
+ </tr>
+ </table>
+
+<h2>&nbsp; </h2>
+<h2>JIRA Connector</h2>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table223">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>JIRA Editor<br>
+ (Experimental)</b></p>
+ </td>
+ <td valign="top" width="70%">
+ The Eclipse Forms-based JIRA editor provides integrated
+ editing for JIRA repository tasks.&nbsp; At this time
+ only new comment posting is supported, and attributes
+ can not be edited.&nbsp; Since offline editing for JIRA
+ tasks is not yet supported saving a comment will result
+ in it being posted.&nbsp; Note that you must synchronize
+ your queries before using this editor.<p>
+ <img src="images/0.5.2/jira-editor.gif"></td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table224">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
+ <p align="right"><b>Add Individual Tasks</b></p>
+ </td>
+ <td valign="top" width="70%">
+ Individual JIRA tasks can now be added by issue key via the
+ Task List (via context menu -&gt; <i>Add Existing Repository Task</i>)</td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <hr>
+ </td>
+ </tr>
+</table>
+
+<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table204">
+ <tr>
+ <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
+ <p align="right"><b>Custom Queries</b></p>
+ </td>
+ <td valign="top" width="70%">
+ In addition to using filters stored on the server, custom JIRA
+ queries can now be added via <i>New Repository Query</i> wizard. <p>
+ <img src="images/0.5.1/jira-query-custom.gif"></td>
+ </tr>
+ </table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/overview.html b/org.eclipse.mylyn.help.ui/doc/overview.html
new file mode 100644
index 000000000..930bb775c
--- /dev/null
+++ b/org.eclipse.mylyn.help.ui/doc/overview.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+ <link rel="stylesheet" href="book.css" charset="ISO-8859-1" type="text/css">
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <title>
+ Mylar Overview
+ </title>
+ </head>
+ <body>
+ <h1>
+ Mylar</h1>
+ <blockquote>
+ <p><b>Please note: </b>documentation of Mylar is still poor. The best way to get an overview of Mylar is by watching the flash
+ demos and by reviewing the latest <b><a href="new.html">New &amp; Noteworthy</a></b></p>
+ </blockquote>
+ <h3>Flash Demos </h3>
+ <p>From <a href="http://eclipse.org/mylar/doc.php">
+ http://eclipse.org/mylar/doc.php</a> </p>
+ <li><b><a href="http://eclipse.org/mylar/doc/demo/mylar-demo-04.html">
+ Getting started</a></b> (v0.4, 3.5 min, 8.7 MB) </li>
+ <li><a href="http://eclipse.org/mylar/doc/demo/mylar-demo-04-reports.html">
+ <b>Working with tasks and Bugzilla reports</b> </a>(v0.4, 3.5 min, 6 MB)</li>
+ <h3>Overview</h3>
+ <p>As you work on programming tasks, Mylar watches your activity and creates
+ a task context.&nbsp; This context is associated with the task that you have
+ activated.&nbsp; Mylar extends Eclipse structure views and editors to show
+ you only what you're working on by focusing on the task context, and to
+ highlight the degree of interest of the program structure that you are
+ working on.&nbsp; The following list and figure summarize the core Mylar
+ features.&nbsp; </p>
+ <ol>
+ <li>Use the task list to create tasks and categories.&nbsp; You can also
+ add a bugzilla report as a task, or create a bugzilla query as a
+ category.&nbsp; A task context is activated by clicking the gray
+ glasses, which causes the task and its category to become bold.&nbsp;
+ Note that tasks can show up in multiple categories (e.g. as a result of
+ a query, as in the figure below).&nbsp; To disable the context click the
+ glasses again.&nbsp; If you are using bugzilla reports you must
+ configure the Bugzilla server first (Preferences -&gt; Bugzilla).&nbsp; If
+ you double-click a Bugzilla report it will open with the internal
+ browser, or with a Bugzilla Editor if you set Preferences -&gt; Mylar -&gt;
+ Task List accordingly.</li>
+ <li>Click the Mylar glasses to filter out all uninteresting elements
+ (i.e. those not a part of the task context), shown here on the Outline
+ view.&nbsp; You will notice that views with Mylar filtering update
+ automatically as you work.&nbsp; Toggle this button to switch between
+ the standard view mode and the Mylar interest filtering.&nbsp; If you
+ have no task context active and all of the Mylar glasses are toggled off
+ all of the Mylar functionality is disabled.</li>
+ <li>The Problems list can be filtered just like the outline.</li>
+ <li>The editor provides an automatic folding feature that can be toggled
+ using the toolbar button next to &quot;Mark Occurrences&quot;.&nbsp; When enabled
+ all uninteresting elements will be folded, an interesting elements
+ unfolded.&nbsp; Note that if you use the Mylar Java editor for &quot;.java&quot;
+ files the highest interest elements will be moved to the top of the
+ content assist list.</li>
+ <li>Mylar filtering works in the Package Explorer as well.&nbsp;
+ Elements that are not a part of the task context show up in gray
+ consistently throughout the views.&nbsp; The highest interest elements,
+ called Landmarks, show up in bold.&nbsp; </li>
+ </ol>
+ <p><img border="0" src="images/0.3/overview.gif" width="640" height="461"></p>
+ <p>&nbsp;</p>
+
+ </body>
+</html>
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java
deleted file mode 100644
index d045345b4..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskListTableSorter;
-import org.eclipse.mylar.provisional.tasklist.Task;
-import org.eclipse.mylar.provisional.tasklist.TaskCategory;
-import org.eclipse.mylar.provisional.tasklist.TaskList;
-
-/**
- * @author Mik Kersten
- */
-public class TableSorterTest extends TestCase {
-
- public void testRootTaskSorting() {
- TaskListTableSorter sorter = new TaskListTableSorter(null, "description");
-
- Task task = new Task("1", "", true);
- TaskCategory category = new TaskCategory("cat", new TaskList());
-
- assertEquals(-1, sorter.compare(null, task, category));
- assertEquals(1, sorter.compare(null, category, task));
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java
deleted file mode 100644
index adeeb9592..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.tests;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.core.MylarContextManager;
-import org.eclipse.mylar.provisional.core.InteractionEvent;
-import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate;
-import org.eclipse.mylar.provisional.tasklist.DateRangeContainer;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
-import org.eclipse.mylar.provisional.tasklist.Task;
-import org.eclipse.mylar.provisional.tasklist.TaskList;
-
-/**
- * @author Rob Elves
- */
-public class TaskActivityViewTest extends TestCase {
-
- private long currentStartMili = 1200;
-
- private long currentEndMili = 1900;
-
- private TaskList taskList;
-
- protected void setUp() throws Exception {
- super.setUp();
- taskList = MylarTaskListPlugin.getTaskListManager().getTaskList();
- }
-
- protected void tearDown() throws Exception {
-// MylarTaskListPlugin.getTaskListManager().readExistingOrCreateNewList();
- MylarTaskListPlugin.getTaskListManager().resetTaskList();
- super.tearDown();
- }
-
- public void testDateRangeContainer() {
-
- Calendar startDate = GregorianCalendar.getInstance();
- startDate.setTimeInMillis(1000);
- Calendar endDate = GregorianCalendar.getInstance();
- endDate.setTimeInMillis(2000);
-
- DateRangeContainer testContainer = new DateRangeContainer(startDate, endDate, "test date range container", taskList);
- assertTrue(testContainer.includes(startDate));
- assertTrue(testContainer.includes(endDate));
- Calendar midTime = GregorianCalendar.getInstance();
- midTime.setTimeInMillis(1500);
- assertTrue(testContainer.includes(midTime));
-
- ITask task1 = new Task("task 1", "Task 1", true);
- ITask task2 = new Task("task 2", "Task 2", true);
-
- Calendar currentTaskStart = GregorianCalendar.getInstance();
- currentTaskStart.setTimeInMillis(currentStartMili);
- Calendar currentTaskEnd = GregorianCalendar.getInstance();
- currentTaskEnd.setTimeInMillis(currentEndMili);
- testContainer.addTask(new DateRangeActivityDelegate(testContainer, task1, currentTaskStart, currentTaskEnd, 0));
- assertEquals(currentEndMili - currentStartMili, testContainer.getTotalElapsed());
- testContainer.addTask(new DateRangeActivityDelegate(testContainer, task2, currentTaskStart, currentTaskEnd, 0));
- assertEquals(2 * (currentEndMili - currentStartMili), testContainer.getTotalElapsed());
- assertEquals(2, testContainer.getChildren().size());
- testContainer.addTask(new DateRangeActivityDelegate(testContainer, task2, currentTaskStart, currentTaskEnd));
- assertEquals(3 * (currentEndMili - currentStartMili), testContainer.getTotalElapsed());
- assertEquals(2 * (currentEndMili - currentStartMili), testContainer.getElapsed(new DateRangeActivityDelegate(
- testContainer, task2, currentTaskStart, currentTaskEnd)));
- assertEquals(2, testContainer.getChildren().size());
- }
-
- public void testNegativeInactivity() {
- Calendar startDate = GregorianCalendar.getInstance();
- startDate.setTimeInMillis(1000);
- Calendar endDate = GregorianCalendar.getInstance();
- endDate.setTimeInMillis(2000);
- ITask task1 = new Task("task 1", "Task 1", true);
- DateRangeContainer testContainer = new DateRangeContainer(startDate, endDate, "test date range container", taskList);
- testContainer.addTask(new DateRangeActivityDelegate(testContainer, task1, startDate, endDate, 3000));
- assertEquals(0, testContainer.getTotalElapsed());
- }
-
- public void testTaskListManagerActivity() {
-
- ITask task1 = new Task("task 1", "Task 1", true);
- ITask task2 = new Task("task 2", "Task 2", true);
- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1);
- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task2);
-
- // test this week
- DateRangeContainer thisWeekActivity = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(thisWeekActivity);
- assertEquals(0, thisWeekActivity.getChildren().size());
-
- Calendar thisWeekCalendarStart = GregorianCalendar.getInstance();
- Calendar thisWeekCalendarStop = GregorianCalendar.getInstance();
- thisWeekCalendarStop.add(Calendar.MILLISECOND, 2);
- assertTrue(thisWeekActivity.includes(thisWeekCalendarStart));
-
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- thisWeekCalendarStart.getTime(), thisWeekCalendarStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- thisWeekCalendarStop.getTime(), thisWeekCalendarStop.getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(1, thisWeekActivity.getChildren().size());
- assertEquals(thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime(),
- thisWeekActivity.getTotalElapsed());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(1, thisWeekActivity.getChildren().size());
- assertEquals(2 * (thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime()),
- thisWeekActivity.getTotalElapsed());
- assertEquals(2 * (thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime()),
- thisWeekActivity.getElapsed(new DateRangeActivityDelegate(thisWeekActivity, task1, null, null)));
-
- // multiple tasks in category
- event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2.getHandleIdentifier(),
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, thisWeekCalendarStart
- .getTime(), thisWeekCalendarStart.getTime());
- event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2.getHandleIdentifier(),
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, thisWeekCalendarStop
- .getTime(), thisWeekCalendarStop.getTime());
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(2, thisWeekActivity.getChildren().size());
-
- // test Past
- DateRangeContainer pastActivity = MylarTaskListPlugin.getTaskListManager().getActivityPast();
- assertNotNull(pastActivity);
- assertEquals(0, pastActivity.getChildren().size());
-
- InteractionEvent event3 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- pastActivity.getStart().getTime(), pastActivity.getStart().getTime());
- InteractionEvent event4 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- pastActivity.getEnd().getTime(), pastActivity.getEnd().getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event3);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event4);
- assertEquals(1, pastActivity.getChildren().size());
-
- // test Future
- DateRangeContainer futureActivity = MylarTaskListPlugin.getTaskListManager().getActivityFuture();
- assertNotNull(futureActivity);
- assertEquals(0, futureActivity.getChildren().size());
-
- InteractionEvent event5 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- futureActivity.getStart().getTime(), futureActivity.getStart().getTime());
- InteractionEvent event6 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- futureActivity.getEnd().getTime(), futureActivity.getEnd().getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event5);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event6);
- assertEquals(1, futureActivity.getChildren().size());
-
- // test Next week activity
- DateRangeContainer activityNextWeek = MylarTaskListPlugin.getTaskListManager().getActivityNextWeek();
- assertNotNull(activityNextWeek);
- assertEquals(0, activityNextWeek.getChildren().size());
-
- InteractionEvent event7 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- activityNextWeek.getStart().getTime(), activityNextWeek.getStart().getTime());
- InteractionEvent event8 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- activityNextWeek.getEnd().getTime(), activityNextWeek.getEnd().getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event7);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event8);
- assertEquals(1, activityNextWeek.getChildren().size());
-
- // test Previous week activity
- DateRangeContainer activityPreviousWeek = MylarTaskListPlugin.getTaskListManager().getActivityPrevious();
- assertNotNull(activityPreviousWeek);
- assertEquals(0, activityPreviousWeek.getChildren().size());
-
- InteractionEvent event9 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- activityPreviousWeek.getStart().getTime(), activityPreviousWeek.getStart().getTime());
- InteractionEvent event10 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- activityPreviousWeek.getEnd().getTime(), activityPreviousWeek.getEnd().getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event9);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event10);
- assertEquals(1, activityPreviousWeek.getChildren().size());
- }
-
- public void testTaskListManagerInactivity() {
-
- ITask task1 = new Task("task 1", "Task 1", true);
- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1);
-
- DateRangeContainer activityThisWeek = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(activityThisWeek);
- assertEquals(0, activityThisWeek.getChildren().size());
-
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- activityThisWeek.getStart().getTime(), activityThisWeek.getStart().getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- activityThisWeek.getEnd().getTime(), activityThisWeek.getEnd().getTime());
-
- Calendar inactivityStart = GregorianCalendar.getInstance();
- Calendar inactivityEnd = GregorianCalendar.getInstance();
- inactivityEnd.add(Calendar.HOUR_OF_DAY, 1);
-
- InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime());
- InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_ACTIVATED, 2f, inactivityEnd.getTime(), inactivityEnd.getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(1, activityThisWeek.getChildren().size());
-
- long expectedTotalTime = (activityThisWeek.getEnd().getTime().getTime() - activityThisWeek.getStart().getTime()
- .getTime())
- - (inactivityEnd.getTime().getTime() - inactivityStart.getTime().getTime());
- assertEquals(expectedTotalTime, activityThisWeek.getTotalElapsed());
- assertEquals(expectedTotalTime, activityThisWeek.getElapsed(new DateRangeActivityDelegate(activityThisWeek,
- task1, null, null)));
-
- }
-
- // attention:Deactivated -> task:Activated -> attention:Activated ->
- // task:Deactivated
- public void testInterleavedActivation() {
-
- ITask task1 = new Task("task 1", "Task 1", true);
- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1);
-
- DateRangeContainer activityThisWeek = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(activityThisWeek);
- assertEquals(0, activityThisWeek.getChildren().size());
-
- Calendar taskActivationStart = GregorianCalendar.getInstance();
- taskActivationStart.add(Calendar.MILLISECOND, 15);
- Calendar taskActivationStop = GregorianCalendar.getInstance();
- taskActivationStop.add(Calendar.MILLISECOND, 25);
-
- Calendar inactivityStart = GregorianCalendar.getInstance();
- inactivityStart.add(Calendar.MILLISECOND, 5);
- Calendar inactivityStop = GregorianCalendar.getInstance();
- inactivityStop.add(Calendar.MILLISECOND, 18);
-
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- taskActivationStart.getTime(), taskActivationStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- taskActivationStop.getTime(), taskActivationStop.getTime());
-
- InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime());
- InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_ACTIVATED, 2f, inactivityStop.getTime(), inactivityStop.getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(1, activityThisWeek.getChildren().size());
-
- long expectedTotalTime = taskActivationStop.getTimeInMillis() - taskActivationStart.getTimeInMillis();
- assertEquals(expectedTotalTime, activityThisWeek.getTotalElapsed());
- assertEquals(expectedTotalTime, activityThisWeek.getElapsed(new DateRangeActivityDelegate(activityThisWeek,
- task1, null, null)));
- }
-
- // task:Activated -> attention:Deactivated -> task:Deactivated ->
- // attention:Activated
- public void testInterleavedActivation2() {
-
- ITask task1 = new Task("task 1", "Task 1", true);
- MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1);
-
- DateRangeContainer activityThisWeek = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(activityThisWeek);
- assertEquals(0, activityThisWeek.getChildren().size());
-
- Calendar taskActivationStart = GregorianCalendar.getInstance();
- taskActivationStart.add(Calendar.MILLISECOND, 10);
- Calendar taskActivationStop = GregorianCalendar.getInstance();
- taskActivationStop.add(Calendar.MILLISECOND, 20);
-
- Calendar inactivityStart = GregorianCalendar.getInstance();
- inactivityStart.add(Calendar.MILLISECOND, 15);
- Calendar inactivityStop = GregorianCalendar.getInstance();
- inactivityStop.add(Calendar.MILLISECOND, 25);
-
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f,
- taskActivationStart.getTime(), taskActivationStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f,
- taskActivationStop.getTime(), taskActivationStop.getTime());
-
- InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime());
- InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_ACTIVATED, 2f, inactivityStop.getTime(), inactivityStop.getTime());
-
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2);
- MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2);
- assertEquals(1, activityThisWeek.getChildren().size());
-
- long expectedTotalTime = inactivityStart.getTimeInMillis() - taskActivationStart.getTimeInMillis();
- assertEquals(expectedTotalTime, activityThisWeek.getTotalElapsed());
- assertEquals(expectedTotalTime, activityThisWeek.getElapsed(new DateRangeActivityDelegate(activityThisWeek,
- task1, null, null)));
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java
deleted file mode 100644
index beef09500..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.tests;
-
-import java.util.Arrays;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskKeyComparator;
-
-/**
- * @author Eugene Kuleshov https://bugs.eclipse.org/bugs/show_bug.cgi?id=129511
- * @author Mik Kersten
- */
-public class TaskKeyComparatorTest extends TestCase {
-
- public void testPatterns() {
- comparisonCheck("", new String[] { null, null, "" });
- comparisonCheck(" ", new String[] { null, null, " " });
- comparisonCheck("aa", new String[] { null, null, "aa" });
- comparisonCheck("11", new String[] { "", "11", "" });
- comparisonCheck("11 aa", new String[] { "", "11", " aa" });
- comparisonCheck(" 11 aa", new String[] { null, null, " 11 aa" });
- comparisonCheck("aa11 bb", new String[] { "aa", "11", " bb" });
- comparisonCheck("aa-11 bb", new String[] { "aa-", "11", " bb" });
- comparisonCheck("aa 11 bb", new String[] { null, null, "aa 11 bb" });
- comparisonCheck("aa bb 11 cc", new String[] { null, null, "aa bb 11 cc" });
-
- comparisonCheck("aa", "aa", 0);
- comparisonCheck("aa", "bb", -1);
- comparisonCheck("bb", "aa", 1);
-
- comparisonCheck("aa11", "aa11", 0);
- comparisonCheck("aa11", "aa12", -1);
- comparisonCheck("aa12", "aa11", 1);
-
- comparisonCheck("aa1", "aa11", -1);
- comparisonCheck("aa1", "aa2", -1);
- comparisonCheck("aa1", "aa21", -1);
-
- comparisonCheck("aa1 aaa", "aa1 aaa", 0);
- comparisonCheck("aa1 aaa", "aa1 bbb", -1);
- comparisonCheck("aa1 bbb", "aa11 aaa", -1);
- }
-
- private void comparisonCheck(String s, String[] exptecation) {
- String[] res = new TaskKeyComparator().split(s);
- assertTrue("Invalid " + Arrays.asList(res) + " " + Arrays.asList(exptecation), Arrays.equals(res, exptecation));
- }
-
- public void comparisonCheck(String s1, String s2, int n) {
- assertEquals(n, new TaskKeyComparator().compare(s1, s2));
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java
index 2372d45db..722d52f65 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java
@@ -25,11 +25,9 @@ import junit.framework.TestCase;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin;
import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaQueryHit;
import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryQuery;
import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTask;
import org.eclipse.mylar.internal.tasklist.ScheduledTaskListRefreshJob;
-import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
import org.eclipse.mylar.provisional.tasklist.ITask;
@@ -75,25 +73,25 @@ public class TaskListManagerTest extends TestCase {
File legacyListFile = new File("temptasklist.xml");
legacyListFile.deleteOnExit();
TaskTestUtil.copy(TaskTestUtil.getLocalFile("testdata/legacy/tasklist_0_4_8.xml"), legacyListFile);
-
+
assertEquals(362445, legacyListFile.length());
assertTrue(legacyListFile.exists());
-
+
manager.setTaskListFile(legacyListFile);
manager.readExistingOrCreateNewList();
manager.setTaskListFile(originalFile);
-
+
Set<ITask> allTasks = manager.getTaskList().getAllTasks();
Set<ITask> allRootTasks = manager.getTaskList().getRootTasks();
Set<ITaskContainer> allCategories = manager.getTaskList().getCategories();
- Set<ITaskListElement> allRoots = manager.getTaskList().getRootElements();
+ Set<ITaskListElement> allRoots = manager.getTaskList().getRootElements();
assertEquals(0, allRootTasks.size());
-
+
manager.saveTaskList();
TaskList list = new TaskList();
manager.setTaskList(list);
manager.readExistingOrCreateNewList();
-
+
assertEquals(allRootTasks.size(), manager.getTaskList().getRootTasks().size());
assertEquals(allCategories, manager.getTaskList().getCategories());
assertEquals(allRoots.size(), manager.getTaskList().getRootElements().size());
@@ -104,15 +102,15 @@ public class TaskListManagerTest extends TestCase {
list = new TaskList();
manager.setTaskList(list);
manager.readExistingOrCreateNewList();
-
+
assertEquals(allRootTasks.size(), manager.getTaskList().getRootTasks().size());
assertEquals(allCategories, manager.getTaskList().getCategories());
assertEquals(allRoots.size(), manager.getTaskList().getRootElements().size());
assertEquals(allTasks.size(), manager.getTaskList().getAllTasks().size());
-
+
manager.deactivateTask(manager.getTaskList().getActiveTask());
}
-
+
public void testRepositoryUrlHandles() {
String repository = IBugzillaConstants.ECLIPSE_BUGZILLA_URL;
@@ -138,7 +136,7 @@ public class TaskListManagerTest extends TestCase {
Task task1 = new Task("t1", "t1", true);
manager.moveToRoot(task1);
assertEquals(1, manager.getTaskList().getRootTasks().size());
- assertEquals(TaskList.LABEL_ROOT, task1.getCategory().getHandleIdentifier());
+ assertEquals(TaskList.LABEL_ROOT, task1.getCategory().getHandleIdentifier());
TaskCategory cat1 = new TaskCategory("c1");
manager.addCategory(cat1);
@@ -175,9 +173,9 @@ public class TaskListManagerTest extends TestCase {
TaskList list = new TaskList();
assertTrue(list.isEmpty());
list.internalAddRootTask(new Task("", "", true));
- assertFalse(list.isEmpty());
+ assertFalse(list.isEmpty());
}
-
+
public void testCategories() {
BugzillaTask task = new BugzillaTask("b1", "b 1", true);
TaskCategory category = new TaskCategory("cat");
@@ -188,8 +186,8 @@ public class TaskListManagerTest extends TestCase {
TaskList list = new TaskList();
manager.setTaskList(list);
manager.readExistingOrCreateNewList();
- assertEquals(2, manager.getTaskList().getCategories().size());
- assertEquals(1, manager.getTaskList().getAllTasks().size());
+ assertEquals(2, manager.getTaskList().getCategories().size());
+ assertEquals(1, manager.getTaskList().getAllTasks().size());
}
public void testDelete() {
@@ -199,7 +197,7 @@ public class TaskListManagerTest extends TestCase {
manager.deleteTask(task);
assertEquals(0, manager.getTaskList().getAllTasks().size());
}
-
+
public void testBugzillaCustomQueryExternalization() {
BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1");
query.setCustomQuery(true);
@@ -211,10 +209,10 @@ public class TaskListManagerTest extends TestCase {
manager.setTaskList(list);
manager.readExistingOrCreateNewList();
assertEquals(1, manager.getTaskList().getQueries().size());
- BugzillaRepositoryQuery readQuery = (BugzillaRepositoryQuery) manager.getTaskList().getQueries().get(0);
+ BugzillaRepositoryQuery readQuery = (BugzillaRepositoryQuery)manager.getTaskList().getQueries().get(0);
assertTrue(readQuery.isCustomQuery());
}
-
+
public void testQueryExternalization() {
AbstractRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1");
assertEquals("repositoryUrl", query.getRepositoryUrl());
@@ -236,17 +234,17 @@ public class TaskListManagerTest extends TestCase {
BugzillaTask repositoryTask = new BugzillaTask("handle", "label", true);
repositoryTask.setKind("kind");
manager.getTaskList().addTaskToArchive(repositoryTask);
- // repositoryTask.setCategory(manager.getTaskList().getArchiveCategory());
+// repositoryTask.setCategory(manager.getTaskList().getArchiveCategory());
assertEquals(1, manager.getTaskList().getArchiveTasks().size());
assertEquals(0, manager.getTaskList().getRootTasks().size());
manager.saveTaskList();
-
+
manager.setTaskList(new TaskList());
manager.readExistingOrCreateNewList();
assertEquals(1, manager.getTaskList().getArchiveTasks().size());
assertEquals(0, manager.getTaskList().getRootTasks().size());
}
-
+
public void testRepositoryTaskExternalization() {
BugzillaTask repositoryTask = new BugzillaTask("handle", "label", true);
repositoryTask.setKind("kind");
@@ -257,9 +255,8 @@ public class TaskListManagerTest extends TestCase {
manager.setTaskList(list);
manager.readExistingOrCreateNewList();
assertEquals(1, manager.getTaskList().getRootTasks().size());
- AbstractRepositoryTask readTask = (AbstractRepositoryTask) manager.getTaskList().getRootTasks().iterator()
- .next();
-
+ AbstractRepositoryTask readTask = (AbstractRepositoryTask)manager.getTaskList().getRootTasks().iterator().next();
+
assertEquals(repositoryTask.getHandleIdentifier(), readTask.getHandleIdentifier());
assertEquals(repositoryTask.getDescription(), readTask.getDescription());
assertEquals(repositoryTask.getKind(), readTask.getKind());
@@ -284,23 +281,23 @@ public class TaskListManagerTest extends TestCase {
Iterator<TaskCategory> iterator = readCats.iterator();
TaskCategory readCat1 = iterator.next();
assertEquals(cat1, readCat1);
- assertEquals(1, readCat1.getChildren().size());
-
+ assertEquals(1, readCat1.getChildren().size());
+
manager.saveTaskList();
- assertNotNull(manager.getTaskList());
+ assertNotNull(manager.getTaskList());
manager.setTaskList(new TaskList());
manager.readExistingOrCreateNewList();
// read again
readCats = manager.getTaskList().getTaskCategories();
assertTrue(manager.getTaskList().getCategories().contains(cat1));
-
+
iterator = readCats.iterator();
readCat1 = iterator.next();
assertEquals(cat1, readCat1);
assertEquals(1, readCat1.getChildren().size());
}
-
+
public void testCreationAndExternalization() {
Set<ITask> rootTasks = new HashSet<ITask>();
Task task1 = new Task(manager.genUniqueTaskHandle(), "task 1", true);
@@ -338,7 +335,7 @@ public class TaskListManagerTest extends TestCase {
manager.moveToRoot(reportInRoot);
rootTasks.add(reportInRoot);
- assertEquals("" + manager.getTaskList().getRootElements(), 5, manager.getTaskList().getRootElements().size());
+ assertEquals(""+ manager.getTaskList().getRootElements(), 5, manager.getTaskList().getRootElements().size());
manager.saveTaskList();
assertNotNull(manager.getTaskList());
@@ -347,13 +344,13 @@ public class TaskListManagerTest extends TestCase {
manager.readExistingOrCreateNewList();
assertNotNull(manager.getTaskList());
- assertEquals(rootTasks, manager.getTaskList().getRootTasks());
-
+ assertEquals(rootTasks, manager.getTaskList().getRootTasks());
+
Set<ITask> readList = manager.getTaskList().getRootTasks();
for (ITask task : readList) {
if (task.equals(task1)) {
assertEquals(task1.getDescription(), task.getDescription());
- assertEquals(1, task.getChildren().size());
+ assertEquals(1, task.getChildren().size());
}
if (task.equals(reportInRoot)) {
assertEquals(reportInRoot.getDescription(), task.getDescription());
@@ -373,63 +370,7 @@ public class TaskListManagerTest extends TestCase {
ScheduledTaskListRefreshJob job = new ScheduledTaskListRefreshJob(500, manager);
job.run(new NullProgressMonitor());
Thread.sleep(1500);
- assertEquals(counter, job.getCount());
+ assertEquals(counter, job.getCount());
}
-
- public void testgetQueriesAndHitsForHandle() {
-
- BugzillaQueryHit hit1 = new BugzillaQueryHit("description1", "P1", "repositoryURL", 1, null, "status");
- BugzillaQueryHit hit2 = new BugzillaQueryHit("description2", "P1", "repositoryURL", 2, null, "status");
- BugzillaQueryHit hit3 = new BugzillaQueryHit("description3", "P1", "repositoryURL", 3, null, "status");
-
- BugzillaQueryHit hit1twin = new BugzillaQueryHit("description1", "P1", "repositoryURL", 1, null, "status");
- BugzillaQueryHit hit2twin = new BugzillaQueryHit("description2", "P1", "repositoryURL", 2, null, "status");
- BugzillaQueryHit hit3twin = new BugzillaQueryHit("description3", "P1", "repositoryURL", 3, null, "status");
-
- AbstractRepositoryQuery query1 = new AbstractRepositoryQuery() {
- @Override
- public String getRepositoryKind() {
- // ignore
- return "newkind";
- }
- };
-
- AbstractRepositoryQuery query2 = new AbstractRepositoryQuery() {
- @Override
- public String getRepositoryKind() {
- // ignore
- return "newkind";
- }
- };
-
- query1.addHit(hit1);
- query1.addHit(hit2);
- query1.addHit(hit3);
- assertEquals(query1.getHits().size(), 3);
-
- query2.addHit(hit1twin);
- query2.addHit(hit2twin);
- query2.addHit(hit3twin);
- assertEquals(query2.getHits().size(), 3);
-
- manager.addQuery(query1);
- manager.addQuery(query2);
-
- TaskList taskList = manager.getTaskList();
- Set<AbstractRepositoryQuery> queriesReturned = taskList.getQueriesForHandle(AbstractRepositoryTask.getHandle(
- "repositoryURL", 1));
- assertNotNull(queriesReturned);
- assertEquals(queriesReturned.size(), 2);
- assertTrue(queriesReturned.contains(query1));
- assertTrue(queriesReturned.contains(query2));
-
- Set<AbstractQueryHit> hitsReturned = taskList.getQueryHitsForHandle(AbstractRepositoryTask.getHandle(
- "repositoryURL", 2));
- assertNotNull(hitsReturned);
- assertEquals(hitsReturned.size(), 2);
- assertTrue(hitsReturned.contains(hit2));
- assertTrue(hitsReturned.contains(hit2twin));
-
- }
-
+
}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java
index edf744c36..c0e8e3957 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java
@@ -20,6 +20,7 @@ import junit.framework.TestCase;
import org.eclipse.mylar.internal.tasklist.ui.ITaskListNotification;
import org.eclipse.mylar.internal.tasklist.ui.ITaskListNotificationProvider;
import org.eclipse.mylar.internal.tasklist.ui.TaskListNotificationManager;
+import org.eclipse.mylar.internal.tasklist.ui.TaskListNotificationPopup;
import org.eclipse.mylar.internal.tasklist.ui.TaskListNotificationReminder;
import org.eclipse.mylar.provisional.tasklist.Task;
import org.eclipse.swt.SWT;
@@ -27,7 +28,7 @@ import org.eclipse.swt.widgets.Shell;
public class TaskListNotificationManagerTest extends TestCase {
-// TaskListNotificationPopup popup;
+ TaskListNotificationPopup popup;
Shell dialogShell;
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java
index 613762283..acc16b1f3 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java
@@ -20,7 +20,7 @@ import java.io.OutputStream;
import java.net.URL;
import java.util.Date;
-import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.FileLocator;
import org.eclipse.mylar.bugzilla.core.Attribute;
import org.eclipse.mylar.bugzilla.core.BugReport;
import org.eclipse.mylar.bugzilla.core.Comment;
@@ -35,8 +35,7 @@ public class TaskTestUtil {
public static File getLocalFile(String path) {
try {
URL installURL = MylarTasksTestsPlugin.getDefault().getBundle().getEntry(path);
-
- URL localURL = Platform.asLocalURL(installURL);//FileLocator.toFileURL(installURL);
+ URL localURL = FileLocator.toFileURL(installURL);
return new File(localURL.getFile());
} catch (IOException e) {
return null;
diff --git a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
index 176b01be4..e01ee6a7a 100644
--- a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Mylar TaskList Plug-in
Bundle-SymbolicName: org.eclipse.mylar.tasklist; singleton:=true
-Bundle-Version: 0.4.9
+Bundle-Version: 0.4.8.v20060221-1550
Bundle-Activator: org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
diff --git a/org.eclipse.mylyn.tasks.ui/build.xml b/org.eclipse.mylyn.tasks.ui/build.xml
deleted file mode 100644
index 9e71711ee..000000000
--- a/org.eclipse.mylyn.tasks.ui/build.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- WARNING: Eclipse auto-generated file.
- Any modifications will be overwritten.
- To include a user specific buildfile here, simply create one in the same
- directory with the processing instruction <?eclipse.ant.import?>
- as the first entry and export the buildfile again. -->
-<project basedir="." default="build" name="org.eclipse.mylar.tasklist">
- <property environment="env"/>
- <property name="ECLIPSE_HOME" value="../../../Apps/eclipse-3.2M5"/>
- <property name="debuglevel" value="source,lines,vars"/>
- <property name="target" value="1.5"/>
- <property name="source" value="1.5"/>
- <path id="Plug-in Dependencies.libraryclasspath">
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui_3.2.0.I20060216-1600.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.swt_3.2.0.v3224m.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.swt.win32.win32.x86_3.2.0.v3224.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.jface_3.2.0.I20060216-1600.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.commands_3.2.0.I20060214-1600.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui.workbench_3.2.0.I20060216-1600.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime_3.2.0.v20060216.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.0.v20060215a/runtime_registry_compatibility.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.registry_3.2.0.v20060217.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.jobs_3.2.0.v20060206.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.preferences_1.0.0.v20060215a.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.contenttype_3.2.0.v20060215a.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.common_1.0.0.v20060215a.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.osgi_3.2.0.v20060214.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.resources_3.2.0.v20060214.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui.browser_3.2.0.v20060212.jar"/>
- <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui.forms_3.2.0.v20060212b.jar"/>
- <pathelement location="../../../org.eclipse.mylar.core"/>
- </path>
- <path id="org.eclipse.mylar.tasklist.classpath">
- <path refid="Plug-in Dependencies.libraryclasspath"/>
- <pathelement location="bin"/>
- </path>
- <target name="init">
- <mkdir dir="bin"/>
- <copy includeemptydirs="false" todir="bin">
- <fileset dir="src" excludes="**/*.launch, **/*.java"/>
- </copy>
- </target>
- <target name="clean">
- <delete dir="bin"/>
- </target>
- <target depends="clean" name="cleanall"/>
- <target depends="build-subprojects,build-project" name="build"/>
- <target name="build-subprojects"/>
- <target depends="init" name="build-project">
- <echo message="${ant.project.name}: ${ant.file}"/>
- <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
- <src path="src"/>
- <classpath refid="org.eclipse.mylar.tasklist.classpath"/>
- </javac>
- </target>
- <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
- <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
- <copy todir="${ant.library.dir}">
- <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
- </copy>
- <unzip dest="${ant.library.dir}">
- <patternset includes="jdtCompilerAdapter.jar"/>
- <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
- </unzip>
- </target>
- <target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
- <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
- <antcall target="build"/>
- </target>
-</project>
diff --git a/org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gif b/org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gif
deleted file mode 100644
index 0205b2917..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gif b/org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gif
deleted file mode 100644
index 8a1fd4734..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gif b/org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gif
deleted file mode 100644
index fd01f49e0..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gif b/org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gif
deleted file mode 100644
index 77b112185..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gif
deleted file mode 100644
index 7fe247650..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gif
deleted file mode 100644
index d98c0701d..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gif
deleted file mode 100644
index 17118d84b..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gif
deleted file mode 100644
index 45b759436..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gif
deleted file mode 100644
index 3313cd5ff..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gif
deleted file mode 100644
index 8c5125e46..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gif
deleted file mode 100644
index 1e364acb5..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gif
deleted file mode 100644
index 45b759436..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gif
deleted file mode 100644
index 7323d9601..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gif
deleted file mode 100644
index 44ed28d04..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gif b/org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gif
deleted file mode 100644
index 08e472ad6..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml
index 51e5551b5..2ec83dc7d 100644
--- a/org.eclipse.mylyn.tasks.ui/plugin.xml
+++ b/org.eclipse.mylyn.tasks.ui/plugin.xml
@@ -32,6 +32,7 @@
<extension
point="org.eclipse.ui.importWizards">
<wizard
+ category="org.eclipse.mylar.tasklist.importcategory"
class="org.eclipse.mylar.internal.tasklist.ui.wizards.TaskDataImportWizard"
icon="icons/eview16/task-list.gif"
id="org.eclipse.mylar.tasklist.ui.importWizard"
@@ -40,10 +41,14 @@
Import Mylar task data files from file system.
</description>
</wizard>
+ <category
+ id="org.eclipse.mylar.tasklist.importcategory"
+ name="Mylar"/>
</extension>
<extension point="org.eclipse.ui.exportWizards">
<wizard
+ category="org.eclipse.mylar.tasklist.exportcategory"
class="org.eclipse.mylar.internal.tasklist.ui.wizards.TaskDataExportWizard"
icon="icons/eview16/task-list.gif"
id="org.eclipse.mylar.tasklist.ui.exportWizard"
@@ -52,6 +57,9 @@
Export Mylar task data files to the file system.
</description>
</wizard>
+ <category
+ id="org.eclipse.mylar.tasklist.exportcategory"
+ name="Mylar"/>
</extension>
@@ -90,7 +98,7 @@
name="Task Repositories">
</view>
</extension>
-
+
<extension point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">
<viewShortcut id="org.eclipse.mylar.tasks.ui.views.TaskListView"/>
@@ -156,17 +164,6 @@
targetID="org.eclipse.mylar.tasks.ui.views.TaskListView">
<action
- class="org.eclipse.mylar.internal.tasklist.ui.actions.NewRepositoryTaskAction"
- enablesFor="*"
- icon="icons/etool16/task-repository-new.gif"
- id="org.eclipse.mylar.bugzilla.tasklist.addNew"
- label="New Repository Task"
- style="push"
- toolbarPath="reports"
- tooltip="New Repository Task">
- </action>
-
- <action
class="org.eclipse.mylar.internal.tasklist.ui.SynchronizeReportsAction"
enablesFor="*"
icon="icons/etool16/repository-synchronize.gif"
@@ -193,18 +190,7 @@
label="Add Existing Repository Task"
style="push"
tooltip="Add Repository Task">
- </action>
-
- <action
- class="org.eclipse.mylar.internal.tasklist.ui.actions.NewRepositoryTaskAction"
- enablesFor="*"
- icon="icons/etool16/task-repository-new.gif"
- id="org.eclipse.mylar.bugzilla.tasklist.popup.addNew"
- label="New Repository Task"
- menubarPath="reports"
- tooltip="New Repository Task"/>
-
-
+ </action>
<action
class="org.eclipse.mylar.internal.tasklist.ui.actions.NewQueryAction"
enablesFor="*"
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java
index 07117f52c..1148fd29e 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskList;
@@ -55,9 +55,9 @@ public class ScheduledTaskListRefreshJob extends Job {
List<AbstractRepositoryQuery> queries = Collections.unmodifiableList(taskList.getQueries());
for (AbstractRepositoryQuery query : queries) {
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
query.getRepositoryKind());
- connector.synchronize(query);
+ client.synchronize(query);
if (monitor.isCanceled())
return Status.CANCEL_STATUS;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java
deleted file mode 100644
index 50f9985c3..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.planner.ui;
-
-import java.text.DateFormat;
-
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.mylar.internal.core.util.DateUtil;
-import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Ken Sueda
- */
-public class TaskPlannerLabelProvider extends TaskElementLabelProvider implements ITableLabelProvider, IColorProvider {
-
- private TaskElementLabelProvider taskListLabelProvider = new TaskElementLabelProvider();
-
- public Image getColumnImage(Object element, int columnIndex) {
- if (columnIndex == 0) {
- return super.getImage(element);
- } else {
- return null;
- }
- }
-
- public String getColumnText(Object element, int columnIndex) {
- try {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- switch (columnIndex) {
- case 1:
- return task.getPriority();
- case 2:
- return task.getDescription();
- case 3:
- if (task.getCreationDate() != null) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getCreationDate());
- } else {
- MylarStatusHandler.log("Task has no creation date: " + task.getDescription(), this);
- return "[unknown]";
- }
- case 4:
- if (task.getCompletionDate() != null) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getCompletionDate());
- } else {
- return "";
- }
- case 5:
- return DateUtil.getFormattedDurationShort(task.getElapsedTime());
- case 6:
- return task.getEstimateTimeHours() + " hours";
- }
- }
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not produce completed task label", false);
- return "";
- }
- return null;
- }
-
- public Color getForeground(Object element) {
- return taskListLabelProvider.getForeground(element);
- }
-
- public Color getBackground(Object element) {
- return taskListLabelProvider.getBackground(element);
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java
deleted file mode 100644
index 03a6ee7a7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui;
-
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskActivityView;
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
-import org.eclipse.ui.IFolderLayout;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveFactory;
-
-/**
- * @author Mik Kersten
- */
-public class PlanningPerspectiveFactory implements IPerspectiveFactory {
-
- public void createInitialLayout(IPageLayout layout) {
- defineActions(layout);
- defineLayout(layout);
- }
-
- public void defineActions(IPageLayout layout) {
- layout.addShowViewShortcut(IPageLayout.ID_RES_NAV);
- layout.addShowViewShortcut(IPageLayout.ID_PROP_SHEET);
- layout.addShowViewShortcut(TaskListView.ID);
- layout.addShowViewShortcut(TaskActivityView.ID);
-
- layout.addActionSet(IPageLayout.ID_NAVIGATE_ACTION_SET);
- }
-
- public void defineLayout(IPageLayout layout) {
- String editorArea = layout.getEditorArea();
-
- IFolderLayout topLeft = layout.createFolder(
- "topLeft", IPageLayout.LEFT, (float) 0.4, editorArea);//$NON-NLS-1$
- topLeft.addView(TaskListView.ID);
-
- IFolderLayout bottomLeft = layout.createFolder(
- "bottomLeft", IPageLayout.BOTTOM, (float) 0.50,//$NON-NLS-1$
- "topLeft");//$NON-NLS-1$
- bottomLeft.addView(TaskActivityView.ID);
- topLeft.addPlaceholder(IPageLayout.ID_RES_NAV);
-
-// IFolderLayout bottomRight = layout.createFolder(
-// "bottomRight", IPageLayout.BOTTOM, (float) 0.66,//$NON-NLS-1$
-// editorArea);
-//
-// bottomRight.addView(IPageLayout.ID_TASK_LIST);
-
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java
index dd9a79c4e..390b73b60 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java
@@ -17,7 +17,7 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask;
import org.eclipse.mylar.provisional.tasklist.ITask;
@@ -53,31 +53,31 @@ public class SynchronizeReportsAction extends Action implements IViewActionDeleg
@Override
public void run() {
if (query != null) {
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(query.getRepositoryKind());
- if (connector != null) connector.synchronize(query);
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(query.getRepositoryKind());
+ if (client != null) client.synchronize(query);
} else if (TaskListView.getDefault() != null) {
ISelection selection = TaskListView.getDefault().getViewer().getSelection();
for (Object obj : ((IStructuredSelection) selection).toList()) {
if (obj instanceof AbstractRepositoryQuery) {
AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) obj;
- AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(repositoryQuery.getRepositoryKind());
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(repositoryQuery.getRepositoryKind());
if (client != null) client.synchronize(repositoryQuery);
} else if (obj instanceof TaskCategory) {
TaskCategory cat = (TaskCategory) obj;
for (ITask task : cat.getChildren()) {
if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(task.getRepositoryKind());
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(task.getRepositoryKind());
if (client != null) client.requestRefresh((AbstractRepositoryTask)task);
}
}
} else if (obj instanceof AbstractRepositoryTask) {
AbstractRepositoryTask bugTask = (AbstractRepositoryTask)obj;
- AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(bugTask.getRepositoryKind());
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(bugTask.getRepositoryKind());
if (client != null) client.requestRefresh(bugTask);
} else if (obj instanceof AbstractQueryHit) {
AbstractQueryHit hit = (AbstractQueryHit) obj;
if (hit.getCorrespondingTask() != null) {
- AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(hit.getCorrespondingTask().getRepositoryKind());
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(hit.getCorrespondingTask().getRepositoryKind());
if (client != null) client.requestRefresh(hit.getCorrespondingTask());
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java
deleted file mode 100644
index 55d91b855..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.mylar.internal.tasklist.ui;
-
-import org.eclipse.mylar.provisional.tasklist.TaskArchive;
-
-/**
- * @author Mik Kersten
- */
-public class TaskArchiveFilter extends AbstractTaskFilter {
-
- public boolean select(Object element) {
- if (element instanceof TaskArchive) {
- return false;
- }
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java
deleted file mode 100644
index 1fc94d074..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.mylar.internal.tasklist.ui;
-
-import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-
-/**
- * @author Mik Kersten
- */
-public class TaskCompletionFilter extends AbstractTaskFilter {
-
- public boolean select(Object element) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- if (shouldAlwaysShow(task)) {
- return true;
- }
- return !task.isCompleted();
- } else if (element instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) element;
- if (hit.getCorrespondingTask() != null) {
- if (shouldAlwaysShow(hit.getCorrespondingTask())) {
- return true;
- } else {
- return !hit.getCorrespondingTask().isCompleted();
- }
- } else {
- return true;
- }
- }
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java
deleted file mode 100644
index eb7714308..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListColorsAndFonts {
-
- public static final Color BACKGROUND_ARCHIVE = new Color(Display.getDefault(), 225, 226, 246);
-
- public static final Color COLOR_GRAY_LIGHT = new Color(Display.getDefault(), 170, 170, 170);
-
- public static final Color COLOR_TASK_COMPLETED = new Color(Display.getDefault(), 170, 170, 170);
-
- public static final Color COLOR_TASK_ACTIVE = new Color(Display.getDefault(), 36, 22, 50);
-
- public static final Color COLOR_TASK_OVERDUE = new Color(Display.getDefault(), 200, 10, 30);
-
- public static final Color COLOR_HYPERLINK = new Color(Display.getDefault(), 0, 0, 255);
-
- public static final Font BOLD = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);
-
- public static final Font ITALIC = JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT);
-
- /**
- * NOTE: disposal of JFaceResources fonts handled by registry.
- */
- public static void dispose() {
- BACKGROUND_ARCHIVE.dispose();
- COLOR_GRAY_LIGHT.dispose();
- COLOR_TASK_COMPLETED.dispose();
- COLOR_TASK_ACTIVE.dispose();
- COLOR_TASK_OVERDUE.dispose();
- COLOR_HYPERLINK.dispose();
- }
-
- public static final String THEME_COLOR_ID_TASKLIST_CATEGORY = "org.eclipse.mylar.tasklist.ui.colors.background.category";
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java
deleted file mode 100644
index 1d74525b2..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 - 2006 Mylar eclipse.org project 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:
- * Mylar project committers - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui;
-
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListImageDescriptor extends CompositeImageDescriptor {
-
- private ImageData base;
-
- private ImageData overlay;
-
- private Point fSize;
-
- private boolean top;
-
- private boolean left;
-
- public TaskListImageDescriptor(ImageDescriptor baseDesc, ImageDescriptor overlayDesc, boolean top,
- boolean left) {
- this.base = getImageData(baseDesc);
- this.top = top;
- this.left = left;
- if (overlayDesc != null)
- this.overlay = getImageData(overlayDesc);
- Point size = new Point(base.width, base.height);
- setImageSize(size);
- }
-
- public TaskListImageDescriptor(ImageDescriptor baseDesc, Point size) {
- this.base = getImageData(baseDesc);
- setImageSize(size);
- }
-
- @Override
- protected void drawCompositeImage(int width, int height) {
- drawImage(base, 0, 0);
- int x = 0;
- int y = 0;
- if (!left)
- x = 8;// base.width - overlay.width;
- if (!top)
- y = 8;// base.height - overlay.height;
- if (overlay != null) {
- drawImage(overlay, x, y);
- }
- }
-
- private ImageData getImageData(ImageDescriptor descriptor) {
- ImageData data = descriptor.getImageData(); // see bug 51965:
- // getImageData can
- // return null
- if (data == null) {
- data = DEFAULT_IMAGE_DATA;
- }
- return data;
- }
-
- /**
- * Sets the size of the image created by calling
- * <code>createImage()</code>.
- *
- * @param size
- * the size of the image returned from calling
- * <code>createImage()</code>
- * @see ImageDescriptor#createImage()
- */
- public void setImageSize(Point size) {
- Assert.isNotNull(size);
- Assert.isTrue(size.x >= 0 && size.y >= 0);
- fSize = size;
- }
-
- @Override
- protected Point getSize() {
- return new Point(fSize.x, fSize.y);
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java
index 20ae4fadf..afff7d4e6 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java
@@ -19,6 +19,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.events.ShellListener;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
/**
@@ -30,13 +33,13 @@ public class TaskListNotificationManager {
private static final String OPEN_NOTIFICATION_JOB = "Open Notification Job";
-// private static final long CLOSE_POPUP_DELAY = 1000 * 10;
+ private static final long CLOSE_POPUP_DELAY = 1000 * 10;
private static final long OPEN_POPUP_DELAY = 1000 * 60;
private static final boolean runSystem = true;
-// private TaskListNotificationPopup popup;
+ private TaskListNotificationPopup popup;
private List<ITaskListNotification> notifications = new ArrayList<ITaskListNotification>();
@@ -53,22 +56,23 @@ public class TaskListNotificationManager {
if (!PlatformUI.getWorkbench().getDisplay().isDisposed()) {
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
-// if ((popup != null && popup.close()) || popup == null) {
-// closeJob.cancel();
-// collectNotifications();
-// synchronized (TaskListNotificationManager.class) {
-// if (currentlyNotifying.size() > 0) {
-// popup = new TaskListNotificationPopup(new Shell(PlatformUI.getWorkbench().getDisplay()));
-// popup.setContents(new ArrayList<ITaskListNotification>(currentlyNotifying));
-// cleanNotified();
-// popup.setBlockOnOpen(false);
-// popup.open();
-// closeJob.setSystem(runSystem);
-// closeJob.schedule(CLOSE_POPUP_DELAY);
-// popup.getShell().addShellListener(SHELL_LISTENER);
-// }
-// }
-// }
+ if ((popup != null && popup.close()) || popup == null) {
+ closeJob.cancel();
+ collectNotifications();
+ synchronized (TaskListNotificationManager.class) {
+ if (currentlyNotifying.size() > 0) {
+ popup = new TaskListNotificationPopup(new Shell(PlatformUI.getWorkbench().getDisplay()));
+ popup.setContents(new ArrayList<ITaskListNotification>(currentlyNotifying));
+ cleanNotified();
+ popup.setBlockOnOpen(false);
+ popup.open();
+ closeJob.setSystem(runSystem);
+ closeJob.schedule(CLOSE_POPUP_DELAY);
+ popup.getShell().addShellListener(SHELL_LISTENER);
+ }
+ }
+ }
+
}
});
}
@@ -91,11 +95,11 @@ public class TaskListNotificationManager {
if (!PlatformUI.getWorkbench().getDisplay().isDisposed()) {
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
-// if (popup != null) {
-// synchronized (popup) {
-// popup.close();
-// }
-// }
+ if (popup != null) {
+ synchronized (popup) {
+ popup.close();
+ }
+ }
}
});
}
@@ -107,43 +111,43 @@ public class TaskListNotificationManager {
};
-// private ShellListener SHELL_LISTENER = new ShellListener() {
-//
-// public void shellClosed(ShellEvent arg0) {
-// }
-//
-// public void shellDeactivated(ShellEvent arg0) {
-//// popup.close();
-// // don't want notifications right away
-// openJob.cancel();
-// openJob.schedule(OPEN_POPUP_DELAY);
-// }
-//
-// public void shellActivated(ShellEvent arg0) {
-// closeJob.cancel();
-// }
-//
-// public void shellDeiconified(ShellEvent arg0) {
-// // ingore
-// }
-//
-// public void shellIconified(ShellEvent arg0) {
-// // ignore
-// }
-// };
-
-// private void cleanNotified() {
-// for (ITaskListNotification notification : currentlyNotifying) {
-// notification.setNotified(true);
-// }
-// currentlyNotifying.clear();
-// }
-//
-// private void collectNotifications() {
-// for (ITaskListNotificationProvider provider : notificationProviders) {
-// currentlyNotifying.addAll(provider.getNotifications());
-// }
-// }
+ private ShellListener SHELL_LISTENER = new ShellListener() {
+
+ public void shellClosed(ShellEvent arg0) {
+ }
+
+ public void shellDeactivated(ShellEvent arg0) {
+ popup.close();
+ // don't want notifications right away
+ openJob.cancel();
+ openJob.schedule(OPEN_POPUP_DELAY);
+ }
+
+ public void shellActivated(ShellEvent arg0) {
+ closeJob.cancel();
+ }
+
+ public void shellDeiconified(ShellEvent arg0) {
+ // ingore
+ }
+
+ public void shellIconified(ShellEvent arg0) {
+ // ignore
+ }
+ };
+
+ private void cleanNotified() {
+ for (ITaskListNotification notification : currentlyNotifying) {
+ notification.setNotified(true);
+ }
+ currentlyNotifying.clear();
+ }
+
+ private void collectNotifications() {
+ for (ITaskListNotificationProvider provider : notificationProviders) {
+ currentlyNotifying.addAll(provider.getNotifications());
+ }
+ }
public void startNotification(long initialStartupTime) {
openJob.setSystem(runSystem);
@@ -153,9 +157,9 @@ public class TaskListNotificationManager {
public void stopNotification() {
openJob.cancel();
closeJob.cancel();
-// if(popup != null) {
-// popup.close();
-// }
+ if(popup != null) {
+ popup.close();
+ }
}
public void addNotificationProvider(ITaskListNotificationProvider notification_provider) {
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java
index 0dcdd6a0b..ef7dbb753 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java
@@ -1,226 +1,227 @@
-///*******************************************************************************
-// * Copyright (c) 2004 - 2006 University Of British Columbia 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:
-// * University Of British Columbia - initial API and implementation
-// *******************************************************************************/
-//
-//package org.eclipse.mylar.internal.tasklist.ui;
-//
-//import java.util.List;
-//
-//import org.eclipse.swt.SWT;
-//import org.eclipse.swt.events.SelectionAdapter;
-//import org.eclipse.swt.events.SelectionEvent;
-//import org.eclipse.swt.graphics.Font;
-//import org.eclipse.swt.graphics.FontData;
-//import org.eclipse.swt.graphics.Rectangle;
-//import org.eclipse.swt.layout.GridLayout;
-//import org.eclipse.swt.layout.RowData;
-//import org.eclipse.swt.layout.RowLayout;
-//import org.eclipse.swt.widgets.Button;
-//import org.eclipse.swt.widgets.Composite;
-//import org.eclipse.swt.widgets.Control;
-//import org.eclipse.swt.widgets.Display;
-//import org.eclipse.swt.widgets.Shell;
-//import org.eclipse.ui.IWorkbenchWindow;
-//import org.eclipse.ui.PlatformUI;
-//import org.eclipse.ui.forms.events.HyperlinkAdapter;
-//import org.eclipse.ui.forms.events.HyperlinkEvent;
-//import org.eclipse.ui.forms.widgets.Form;
-//import org.eclipse.ui.forms.widgets.FormToolkit;
-//import org.eclipse.ui.forms.widgets.ImageHyperlink;
-//import org.eclipse.ui.forms.widgets.Section;
-//
-///**
-// * @author Rob Elves
-// */
-//public class TaskListNotificationPopup extends PopupDialog {
-//
-// private static final int BUTTON_FONT_SIZE = 7;
-//
-// static boolean takeFocusOnOpen = false;
-//
-// static boolean persistBounds = false;
-//
-// static boolean showDialogMenu = false;
-//
-// static boolean showPersistAction = false;
-//
-// static String titleText;
-//
-// static final String MYLAR_NOTIFICATION_LABEL = "Mylar Notification";
-//
-// static String infoText = null;
-//
-// private FormToolkit toolkit;
-//
-// private Form form;
-//
-// private Rectangle bounds;
-//
-// List<ITaskListNotification> notifications;
-//
-// private Composite sectionClient;
-//
-// public TaskListNotificationPopup(Shell parent) {
-// super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, takeFocusOnOpen, persistBounds, showDialogMenu,
-// showPersistAction, titleText, infoText);
-// }
-//
-// public void setContents(List<ITaskListNotification> notifications) {
-// this.notifications = notifications;
-// }
-//
-// protected Control createContents(Composite parent) {
-// getShell().setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY));
-// return createDialogArea(parent);
-// }
-//
-// protected final Control createDialogArea(final Composite parent) {
-//
-// getShell().setText(MYLAR_NOTIFICATION_LABEL);
-//
-// toolkit = new FormToolkit(parent.getDisplay());
-// form = toolkit.createForm(parent);
-// form.getBody().setLayout(new GridLayout());
-//
-// Section section = toolkit.createSection(form.getBody(), Section.TITLE_BAR);
-//
-// section.setText(MYLAR_NOTIFICATION_LABEL);
-// section.setLayout(new GridLayout());
-//
-// sectionClient = toolkit.createComposite(section);
-// sectionClient.setLayout(new GridLayout());
-// for (final ITaskListNotification notification : notifications) {
-// ImageHyperlink link = toolkit.createImageHyperlink(sectionClient, SWT.WRAP | SWT.TOP);
-// link.setText(notification.getDescription());
-// link.setImage(notification.getNotificationIcon());
-// link.addHyperlinkListener(new HyperlinkAdapter() {
-// public void linkActivated(HyperlinkEvent e) {
-// notification.setNotified(true);
-// notification.openResource();
-// IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-// if (window != null) {
-// Shell windowShell = window.getShell();
-// if (windowShell != null) {
-//// windowShell.moveAbove(null);
-// windowShell.setMaximized(true);
-// windowShell.open();
-// }
-// }
-// }
-// });
-// }
-//
-// section.setClient(sectionClient);
-//
-// Composite buttonsComposite = toolkit.createComposite(sectionClient);
-// buttonsComposite.setLayout(new RowLayout());
-// Button buttonOpenAll = toolkit.createButton(buttonsComposite, "Open All", SWT.NONE);
-//
-// {
-// Font initialFont = buttonOpenAll.getFont();
-// FontData[] fontData = initialFont.getFontData();
-// for (int i = 0; i < fontData.length; i++) {
-// fontData[i].setHeight(BUTTON_FONT_SIZE);
-// }
-// Font newFont = new Font(getShell().getDisplay(), fontData);
-// buttonOpenAll.setFont(newFont);
-// }
-// buttonOpenAll.addSelectionListener(new SelectionAdapter() {
-// public void widgetSelected(SelectionEvent e) {
-// for (ITaskListNotification notification : notifications) {
-// notification.setNotified(true);
-// notification.openResource();
-// }
-// IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-// if (window != null) {
-// Shell windowShell = window.getShell();
-// if (windowShell != null) {
-// windowShell.setMaximized(true);
-// windowShell.open();
-// }
-// }
-// close();
-// }
-// });
-//
-// RowData buttonOpenAllRowData = new RowData(45, 15);
-// buttonOpenAll.setLayoutData(buttonOpenAllRowData);
-//
-// Button buttonDismiss = toolkit.createButton(buttonsComposite, "Close", SWT.NONE);
-//
-// {
-// Font initialFont = buttonDismiss.getFont();
-// FontData[] fontData = initialFont.getFontData();
-// for (int i = 0; i < fontData.length; i++) {
-// fontData[i].setHeight(BUTTON_FONT_SIZE);
-// }
-// Font newFont = new Font(getShell().getDisplay(), fontData);
-// buttonDismiss.setFont(newFont);
-// }
-// buttonDismiss.addSelectionListener(new SelectionAdapter() {
-// public void widgetSelected(SelectionEvent e) {
-// for (ITaskListNotification notification : notifications) {
-// notification.setNotified(true);
-// }
-// close();
-// }
-// });
-//
-// RowData buttonDismissRowData = new RowData(30, 15);
-// buttonDismiss.setLayoutData(buttonDismissRowData);
-// // toolkit.paintBordersFor(parent);
-// form.pack();
-// return parent;
-// }
-//
-// /**
-// * Initialize the shell's bounds.
-// */
-// public void initializeBounds() {
-// getShell().setBounds(restoreBounds());
-// }
-//
-// private Rectangle restoreBounds() {
-// bounds = form.getBounds();
-// Rectangle maxBounds = null;
-// if (getShell() != null && !getShell().isDisposed())
-// maxBounds = getShell().getDisplay().getClientArea();
-// else {
-// // fallback
-// Display display = Display.getCurrent();
-// if (display == null)
-// display = Display.getDefault();
-// if (display != null && !display.isDisposed())
-// maxBounds = display.getBounds();
-// }
-//
-// if (bounds.width > -1 && bounds.height > -1) {
-// if (maxBounds != null) {
-// bounds.width = Math.min(bounds.width, maxBounds.width);
-// bounds.height = Math.min(bounds.height, maxBounds.height);
-// }
-// // Enforce an absolute minimal size
-// bounds.width = Math.max(bounds.width, 30);
-// bounds.height = Math.max(bounds.height, 30);
-// }
-//
-// if (bounds.x > -1 && bounds.y > -1 && maxBounds != null) {
-// bounds.x = Math.max(bounds.x, maxBounds.x);
-// bounds.y = Math.max(bounds.y, maxBounds.y);
-//
-// if (bounds.width > -1 && bounds.height > -1) {
-// bounds.x = maxBounds.width - bounds.width;
-// bounds.y = maxBounds.height - bounds.height;
-// }
-// }
-// return bounds;
-// }
-//
-//}
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia 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:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.tasklist.ui;
+
+import java.util.List;
+
+import org.eclipse.jface.dialogs.PopupDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.Form;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ImageHyperlink;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @author Rob Elves
+ */
+public class TaskListNotificationPopup extends PopupDialog {
+
+ private static final int BUTTON_FONT_SIZE = 7;
+
+ static boolean takeFocusOnOpen = false;
+
+ static boolean persistBounds = false;
+
+ static boolean showDialogMenu = false;
+
+ static boolean showPersistAction = false;
+
+ static String titleText;
+
+ static final String MYLAR_NOTIFICATION_LABEL = "Mylar Notification";
+
+ static String infoText = null;
+
+ private FormToolkit toolkit;
+
+ private Form form;
+
+ private Rectangle bounds;
+
+ List<ITaskListNotification> notifications;
+
+ private Composite sectionClient;
+
+ public TaskListNotificationPopup(Shell parent) {
+ super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, takeFocusOnOpen, persistBounds, showDialogMenu,
+ showPersistAction, titleText, infoText);
+ }
+
+ public void setContents(List<ITaskListNotification> notifications) {
+ this.notifications = notifications;
+ }
+
+ protected Control createContents(Composite parent) {
+ getShell().setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY));
+ return createDialogArea(parent);
+ }
+
+ protected final Control createDialogArea(final Composite parent) {
+
+ getShell().setText(MYLAR_NOTIFICATION_LABEL);
+
+ toolkit = new FormToolkit(parent.getDisplay());
+ form = toolkit.createForm(parent);
+ form.getBody().setLayout(new GridLayout());
+
+ Section section = toolkit.createSection(form.getBody(), Section.TITLE_BAR);
+
+ section.setText(MYLAR_NOTIFICATION_LABEL);
+ section.setLayout(new GridLayout());
+
+ sectionClient = toolkit.createComposite(section);
+ sectionClient.setLayout(new GridLayout());
+ for (final ITaskListNotification notification : notifications) {
+ ImageHyperlink link = toolkit.createImageHyperlink(sectionClient, SWT.WRAP | SWT.TOP);
+ link.setText(notification.getDescription());
+ link.setImage(notification.getNotificationIcon());
+ link.addHyperlinkListener(new HyperlinkAdapter() {
+ public void linkActivated(HyperlinkEvent e) {
+ notification.setNotified(true);
+ notification.openResource();
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ Shell windowShell = window.getShell();
+ if (windowShell != null) {
+// windowShell.moveAbove(null);
+ windowShell.setMaximized(true);
+ windowShell.open();
+ }
+ }
+ }
+ });
+ }
+
+ section.setClient(sectionClient);
+
+ Composite buttonsComposite = toolkit.createComposite(sectionClient);
+ buttonsComposite.setLayout(new RowLayout());
+ Button buttonOpenAll = toolkit.createButton(buttonsComposite, "Open All", SWT.NONE);
+
+ {
+ Font initialFont = buttonOpenAll.getFont();
+ FontData[] fontData = initialFont.getFontData();
+ for (int i = 0; i < fontData.length; i++) {
+ fontData[i].setHeight(BUTTON_FONT_SIZE);
+ }
+ Font newFont = new Font(getShell().getDisplay(), fontData);
+ buttonOpenAll.setFont(newFont);
+ }
+ buttonOpenAll.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ for (ITaskListNotification notification : notifications) {
+ notification.setNotified(true);
+ notification.openResource();
+ }
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ Shell windowShell = window.getShell();
+ if (windowShell != null) {
+ windowShell.setMaximized(true);
+ windowShell.open();
+ }
+ }
+ close();
+ }
+ });
+
+ RowData buttonOpenAllRowData = new RowData(45, 15);
+ buttonOpenAll.setLayoutData(buttonOpenAllRowData);
+
+ Button buttonDismiss = toolkit.createButton(buttonsComposite, "Close", SWT.NONE);
+
+ {
+ Font initialFont = buttonDismiss.getFont();
+ FontData[] fontData = initialFont.getFontData();
+ for (int i = 0; i < fontData.length; i++) {
+ fontData[i].setHeight(BUTTON_FONT_SIZE);
+ }
+ Font newFont = new Font(getShell().getDisplay(), fontData);
+ buttonDismiss.setFont(newFont);
+ }
+ buttonDismiss.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ for (ITaskListNotification notification : notifications) {
+ notification.setNotified(true);
+ }
+ close();
+ }
+ });
+
+ RowData buttonDismissRowData = new RowData(30, 15);
+ buttonDismiss.setLayoutData(buttonDismissRowData);
+ // toolkit.paintBordersFor(parent);
+ form.pack();
+ return parent;
+ }
+
+ /**
+ * Initialize the shell's bounds.
+ */
+ public void initializeBounds() {
+ getShell().setBounds(restoreBounds());
+ }
+
+ private Rectangle restoreBounds() {
+ bounds = form.getBounds();
+ Rectangle maxBounds = null;
+ if (getShell() != null && !getShell().isDisposed())
+ maxBounds = getShell().getDisplay().getClientArea();
+ else {
+ // fallback
+ Display display = Display.getCurrent();
+ if (display == null)
+ display = Display.getDefault();
+ if (display != null && !display.isDisposed())
+ maxBounds = display.getBounds();
+ }
+
+ if (bounds.width > -1 && bounds.height > -1) {
+ if (maxBounds != null) {
+ bounds.width = Math.min(bounds.width, maxBounds.width);
+ bounds.height = Math.min(bounds.height, maxBounds.height);
+ }
+ // Enforce an absolute minimal size
+ bounds.width = Math.max(bounds.width, 30);
+ bounds.height = Math.max(bounds.height, 30);
+ }
+
+ if (bounds.x > -1 && bounds.y > -1 && maxBounds != null) {
+ bounds.x = Math.max(bounds.x, maxBounds.x);
+ bounds.y = Math.max(bounds.y, maxBounds.y);
+
+ if (bounds.width > -1 && bounds.height > -1) {
+ bounds.x = maxBounds.width - bounds.width;
+ bounds.y = maxBounds.height - bounds.height;
+ }
+ }
+ return bounds;
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java
index a55785557..7b4319506 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.mylar.internal.tasklist.ui;
-import org.eclipse.ui.internal.dialogs.PatternFilter;
+import org.eclipse.ui.dialogs.PatternFilter;
/**
* @author Mik Kersten
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java
index b77703e6d..50cee6384 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java
@@ -47,7 +47,6 @@ public class AddRepositoryAction extends Action {
if (wizard != null && shell != null && !shell.isDisposed()) {
WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.create();
- dialog.getShell().setText("Add New Task Repository");
// dialog.getShell().setText("Mylar Tasks");
dialog.setBlockOnOpen(true);
if (dialog.open() == Dialog.CANCEL) {
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java
deleted file mode 100644
index 2ae9a6d1f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
-
-/**
- * @author Mik Kersten
- */
-public class ExpandAllAction extends Action {
-
- private static final String LABEL = "Expand All";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.expand.all";
-
- private TaskListView taskListView;
-
- public ExpandAllAction(TaskListView taskListView) {
- super(LABEL);
- this.taskListView = taskListView;
- setId(ID);
- setText(LABEL);
- setToolTipText(LABEL);
- setImageDescriptor(TaskListImages.EXPAND_ALL);
- }
-
- public void run() {
- if (taskListView.getViewer() != null)
- taskListView.getViewer().expandAll();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java
deleted file mode 100644
index 3fc809151..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
-import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class FilterArchiveContainerAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.filter.archive";
-
- private static final String LABEL = "Filter Archive Category";
-
- private final TaskListView view;
-
- public FilterArchiveContainerAction(TaskListView view) {
- this.view = view;
- setText(LABEL);
- setToolTipText(LABEL);
- setId(ID);
- setImageDescriptor(TaskListImages.FILTER_ARCHIVE);
- setChecked(MylarTaskListPlugin.getMylarCorePrefs().contains(TaskListPreferenceConstants.FILTER_ARCHIVE_MODE));
- }
-
- @Override
- public void run() {
- MylarTaskListPlugin.getMylarCorePrefs().setValue(TaskListPreferenceConstants.FILTER_ARCHIVE_MODE, isChecked());
- if (isChecked()) {
- view.addFilter(view.getArchiveFilter());
- } else {
- view.removeFilter(view.getArchiveFilter());
- }
- this.view.getViewer().refresh();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java
deleted file mode 100644
index e38bde8f5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.actions;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasklist.ui.wizards.MultiRepositoryAwareWizard;
-import org.eclipse.mylar.internal.tasklist.ui.wizards.NewRepositoryTaskPage;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
-import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten and Ken Sueda
- */
-public class NewRepositoryTaskAction extends Action implements IViewActionDelegate {
-
- public static final String ID = "org.eclipse.mylar.tasklist.ui.repositories.actions.create";
-
- @Override
- public void run() {
-
- boolean offline = MylarTaskListPlugin.getPrefs().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE);
- if (offline) {
- MessageDialog.openInformation(null, "Unable to create bug report",
- "Unable to create a new bug report since you are currently offline");
- return;
- }
- // TaskRepository repository =
- // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(BugzillaPlugin.REPOSITORY_KIND);
- List<String> connectorKinds = new ArrayList<String>();
- for (AbstractRepositoryConnector client: MylarTaskListPlugin.getRepositoryManager().getRepositoryClients()) {
- if (client.canCreateTaskFromId()) {
- connectorKinds.add(client.getRepositoryType());
- }
- }
-
- IWizard wizard = new MultiRepositoryAwareWizard(new NewRepositoryTaskPage(connectorKinds));
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (wizard != null && shell != null && !shell.isDisposed()) {
-
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.setBlockOnOpen(true);
- dialog.open();
-
- } else {
- // TODO handle not good
- }
- }
-
- public void init(IViewPart view) {
-
- }
-
- public void run(IAction action) {
- run();
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
-
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java
index 2769aebe6..38dfe1e37 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java
@@ -20,7 +20,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.mylar.internal.tasklist.ui.TaskListUiUtil;
import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
import org.eclipse.mylar.provisional.tasklist.ITask;
import org.eclipse.mylar.provisional.tasklist.ITaskContainer;
@@ -58,10 +58,10 @@ public class OpenTaskListElementAction extends Action {
//element instanceof IQueryHit;
boolean forceUpdate = false;
- final AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ final AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
task.getRepositoryKind());
- if (!task.isLocal() && connector != null) {
- Job refreshJob = connector.synchronize(task, forceUpdate, new IJobChangeListener() {
+ if (!task.isLocal() && client != null) {
+ Job refreshJob = client.synchronize(task, forceUpdate, new IJobChangeListener() {
public void done(IJobChangeEvent event) {
TaskListUiUtil.openEditor(task);
@@ -97,7 +97,7 @@ public class OpenTaskListElementAction extends Action {
TaskListUiUtil.openEditor((ITaskContainer) element);
} else if (element instanceof AbstractRepositoryQuery) {
AbstractRepositoryQuery query = (AbstractRepositoryQuery) element;
- AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
query.getRepositoryKind());
client.openEditQueryDialog(query);
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java
deleted file mode 100644
index e10eccc0e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.views;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.provisional.tasklist.DateRangeContainer;
-import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate;
-import org.eclipse.mylar.provisional.tasklist.TaskListManager;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class TaskActivityContentProvider implements IStructuredContentProvider, ITreeContentProvider {
-
-// private TreeViewer treeViewer;
-
- private TaskListManager taskListManager;
-
- public TaskActivityContentProvider(TaskListManager taskActivityManager) {
- this.taskListManager = taskActivityManager;
-// this.treeViewer = viewer;
- }
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-// treeViewer = (TreeViewer)v;
-// taskActivityManager = MylarTaskListPlugin.getTaskActivityManager();
-// taskActivityManager.addListener(this);
- }
-
- public void dispose() {
-// taskActivityManager.removeListener(this);
- }
-
- public Object[] getElements(Object parent) {
- return taskListManager.getDateRanges();
- }
-
- public Object getParent(Object child) {
- if (child instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate dateRangeTaskWrapper = (DateRangeActivityDelegate) child;
- return dateRangeTaskWrapper.getParent();
- } else {
- return new Object[0];
- }
- }
-
- public Object[] getChildren(Object parent) {
- if (parent instanceof DateRangeContainer) {
- DateRangeContainer taskContainer = (DateRangeContainer) parent;
- return taskContainer.getChildren().toArray();
- } else {
- return new Object[0];
- }
- }
-
- public boolean hasChildren(Object parent) {
- if (parent instanceof DateRangeContainer) {
- DateRangeContainer dateRangeTaskCategory = (DateRangeContainer) parent;
- return dateRangeTaskCategory.getChildren() != null && dateRangeTaskCategory.getChildren().size() > 0;
- } else {
- return false;
- }
- }
-
-// public void changed(Object o) {
-// if (o != null) {
-// treeViewer.refresh(o);
-// } else {
-// treeViewer.refresh();
-// }
-// }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java
deleted file mode 100644
index 441af1185..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.views;
-
-import java.text.DateFormat;
-
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.mylar.internal.core.util.DateUtil;
-import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasklist.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasklist.ui.TaskListUiUtil;
-import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate;
-import org.eclipse.mylar.provisional.tasklist.DateRangeContainer;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer;
-import org.eclipse.mylar.provisional.tasklist.Task.PriorityLevel;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Rob Elves
- */
-public class TaskActivityLabelProvider extends DecoratingLabelProvider implements ITableLabelProvider, IColorProvider,
- IFontProvider {
-
- private static final String UNITS_HOURS = " hours";
-
- private static final String NO_MINUTES = "0 minutes";
-
- private Color categoryBackgroundColor;
-
- public TaskActivityLabelProvider(ILabelProvider provider, ILabelDecorator decorator, Color parentBacground) {
- super(provider, decorator);
- this.categoryBackgroundColor = parentBacground;
- }
-
- public Image getColumnImage(Object element, int columnIndex) {
- if (columnIndex == 0) {
- if (element instanceof DateRangeContainer) {
- return TaskListImages.getImage(TaskListImages.CALENDAR);
- } else if (element instanceof DateRangeActivityDelegate) {
- return super.getImage(((DateRangeActivityDelegate) element).getCorrespondingTask());
- } else {
- return super.getImage(element);
- }
- } else if (columnIndex == 1) {
- if (element instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate taskElement = (DateRangeActivityDelegate) element;
- return TaskListUiUtil.getImageForPriority(PriorityLevel.fromString(taskElement.getPriority()));
- }
- }
- return null;
- }
-
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate activityDelegate = (DateRangeActivityDelegate) element;
- ITask task = activityDelegate.getCorrespondingTask();
- switch (columnIndex) {
- case 2:
- return task.getDescription();
- case 3:
- return DateUtil.getFormattedDurationShort(activityDelegate.getDateRangeContainer().getElapsed(activityDelegate));
- case 4:
- return task.getEstimateTimeHours() + UNITS_HOURS;
- case 5:
- if (task.getReminderDate() != null) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getReminderDate());
- } else {
- return "";
- }
- case 6:
- if (activityDelegate.getStart() > 0) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(activityDelegate.getStart());
- } else {
- return "";
- }
- }
- } else if (element instanceof DateRangeContainer) {
- DateRangeContainer taskCategory = (DateRangeContainer) element;
- switch (columnIndex) {
- case 2:
- return taskCategory.getDescription();
- case 3:
- String elapsedTimeString = NO_MINUTES;
- try {
- elapsedTimeString = DateUtil.getFormattedDurationShort(taskCategory.getTotalElapsed());
- if (elapsedTimeString.equals(""))
- elapsedTimeString = NO_MINUTES;
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not format elapsed time", true);
- }
- return elapsedTimeString;
- case 4:
- return taskCategory.getTotalEstimated() + UNITS_HOURS;
- }
- }
- return null;
- }
-
- @Override
- public Color getBackground(Object element) {
- if (element instanceof AbstractTaskContainer) {
- return categoryBackgroundColor;
- } else {
- return super.getBackground(element);
- }
- }
-
- public Font getFont(Object element) {
- if (element instanceof DateRangeContainer) {
- DateRangeContainer container = (DateRangeContainer) element;
- if (container.isPresent()) {
- return TaskListColorsAndFonts.BOLD;
- }
- } else if (element instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate durationDelegate = (DateRangeActivityDelegate) element;
- return super.getFont(durationDelegate.getCorrespondingTask());
- }
- return super.getFont(element);
- }
-
- public void setCategoryBackgroundColor(Color categoryBackgroundColor) {
- this.categoryBackgroundColor = categoryBackgroundColor;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java
deleted file mode 100644
index 50a0c1b0f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java
+++ /dev/null
@@ -1,580 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.views;
-
-import java.text.DateFormat;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.mylar.internal.core.dt.MylarWebRef;
-import org.eclipse.mylar.internal.tasklist.planner.ui.ReminderCellEditor;
-import org.eclipse.mylar.internal.tasklist.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasklist.ui.actions.OpenTaskListElementAction;
-import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
-import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer;
-import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate;
-import org.eclipse.mylar.provisional.tasklist.DateRangeContainer;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.mylar.provisional.tasklist.ITaskActivityListener;
-import org.eclipse.mylar.provisional.tasklist.ITaskListChangeListener;
-import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
-import org.eclipse.mylar.provisional.tasklist.TaskListManager;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @author Rob Elves
- */
-public class TaskActivityView extends ViewPart {
-
- private static final String MEMENTO_KEY_WIDTH = "colwidth";
-
- public static final String ID = "org.eclipse.mylar.tasklist.activity";
-
- public static final String columnWidthIdentifier = "org.eclipse.mylar.tasklist.ui.views.taskactivity.columnwidth";
-
- public static final String tableSortIdentifier = "org.eclipse.mylar.tasklist.ui.views.taskactivity.sortIndex";
-
- private static TaskActivityView INSTANCE;
-
- private IMemento taskActivityMemento;
-
- private OpenTaskListElementAction openTaskEditor;
-
- private String[] columnNames = new String[] { " ", " !", "Description", "Elapsed", "Estimated", "Reminder",
- "Last Active" };
-
- private int[] columnWidths = new int[] { 60, 12, 160, 60, 70, 100, 100 };
-
- private TreeColumn[] columns;
-
- private TaskActivityLabelProvider taskHistoryTreeLabelProvider;
-
- private TreeViewer treeViewer;
-
- private TaskActivityContentProvider taskActivityTableContentProvider;
-
- private IThemeManager themeManager;
-
- private final IPropertyChangeListener THEME_CHANGE_LISTENER = new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME)
- || event.getProperty().equals(TaskListColorsAndFonts.THEME_COLOR_ID_TASKLIST_CATEGORY)) {
- taskHistoryTreeLabelProvider.setCategoryBackgroundColor(themeManager.getCurrentTheme()
- .getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_ID_TASKLIST_CATEGORY));
- refresh();
- }
- }
- };
-
- /**
- * TODO: need lazier refresh policy.
- */
- private final ITaskActivityListener ACTIVITY_LISTENER = new ITaskActivityListener() {
-
- public void taskActivated(ITask task) {
- refresh();
- // TaskActivityView.this.treeViewer.refresh(task);
- }
-
- public void tasksActivated(List<ITask> tasks) {
- for (ITask task : tasks) {
- taskActivated(task);
- }
- }
-
- public void taskDeactivated(ITask task) {
- // don't need to refresh here
- // TaskActivityView.this.treeViewer.refresh(task);
- }
-
- public void activityChanged(DateRangeContainer week) {
- refresh();
- // TaskActivityView.this.treeViewer.refresh(week);
- }
-
- public void tasklistRead() {
- refresh();
- }
- };
-
- private ITaskListChangeListener TASK_CHANGE_LISTENER = new ITaskListChangeListener() {
-
- public void localInfoChanged(final ITask updateTask) {
- refresh();
- }
-
- public void repositoryInfoChanged(ITask task) {
- localInfoChanged(task);
- }
-
- public void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) {
- // ignore
- }
-
- public void taskDeleted(ITask task) {
- // ignore
- }
-
- public void containerAdded(AbstractTaskContainer container) {
- // ignore
- }
-
- public void containerDeleted(AbstractTaskContainer container) {
- // ignore
- }
-
- public void taskAdded(ITask task) {
- // ignore
- }
-
- public void containerInfoChanged(AbstractTaskContainer container) {
- // ignore
- }
- };
-
- private TaskActivityViewSorter sorter;
-
- public static TaskActivityView openInActivePerspective() {
- try {
- return (TaskActivityView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ID);
- } catch (Exception e) {
- return null;
- }
- }
-
- public TaskActivityView() {
- INSTANCE = this;
- MylarTaskListPlugin.getTaskListManager().addActivityListener(ACTIVITY_LISTENER);
- MylarTaskListPlugin.getTaskListManager().getTaskList().addChangeListener(TASK_CHANGE_LISTENER);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- MylarTaskListPlugin.getTaskListManager().removeActivityListener(ACTIVITY_LISTENER);
- MylarTaskListPlugin.getTaskListManager().getTaskList().removeChangeListener(TASK_CHANGE_LISTENER);
- }
-
- @Override
- public void createPartControl(Composite parent) {
- themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
- themeManager.addPropertyChangeListener(THEME_CHANGE_LISTENER);
-
- int treeStyle = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION;
- treeViewer = new TreeViewer(parent, treeStyle);
-
- getViewer().getTree().setHeaderVisible(true);
- getViewer().getTree().setLinesVisible(true);
- getViewer().setColumnProperties(columnNames);
- getViewer().setUseHashlookup(true);
-
- columns = new TreeColumn[columnNames.length];
- for (int i = 0; i < columnNames.length; i++) {
- columns[i] = new TreeColumn(getViewer().getTree(), SWT.LEFT);
- columns[i].setText(columnNames[i]);
- columns[i].setWidth(columnWidths[i]);
-
- final int index = i;
- columns[i].addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- int column = index - 1;
- if (column == sorter.getSortColumn()) {
- sorter.reverseDirection();
- } else {
- sorter.setSortColumn(column);
- }
- getViewer().refresh();
- // if(taskActivityMemento != null) {
- // sorter.saveState(taskActivityMemento);
- // }
-
- }
- });
-
- columns[i].addControlListener(new ControlListener() {
- public void controlResized(ControlEvent e) {
- for (int j = 0; j < columnWidths.length; j++) {
- if (columns[j].equals(e.getSource())) {
- columnWidths[j] = columns[j].getWidth();
- }
- }
- }
-
- public void controlMoved(ControlEvent e) {
- // don't care if the control is moved
- }
- });
- }
-
- IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
- Color categoryBackground = themeManager.getCurrentTheme().getColorRegistry().get(
- TaskListColorsAndFonts.THEME_COLOR_ID_TASKLIST_CATEGORY);
-
- taskHistoryTreeLabelProvider = new TaskActivityLabelProvider(new TaskElementLabelProvider(), PlatformUI
- .getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground);
-
- sorter = new TaskActivityViewSorter();
- getViewer().setSorter(sorter);
- taskActivityTableContentProvider = new TaskActivityContentProvider(MylarTaskListPlugin.getTaskListManager());
-
- getViewer().setContentProvider(taskActivityTableContentProvider);
- getViewer().setLabelProvider(taskHistoryTreeLabelProvider);
- getViewer().setInput(getViewSite());
- restoreState();
- createCellEditorListener();
- makeActions();
- initDrop();
- hookOpenAction();
-
- }
-
- @MylarWebRef(name = "Drag and drop article", url = "http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html")
- private void initDrop() {
- Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
-
- treeViewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(treeViewer) {
- {
- setFeedbackEnabled(false);
- }
-
- @Override
- public boolean performDrop(Object data) {
-
- IStructuredSelection selection = ((IStructuredSelection) TaskListView.getDefault().getViewer()
- .getSelection());
-
- Object target = getCurrentTarget();
- DateRangeContainer container;
- Calendar reminderCalendar;
- if (target instanceof DateRangeContainer) {
- container = (DateRangeContainer) target;
- reminderCalendar = container.getStart();
-
- } else if (target instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) target;
- reminderCalendar = dateRangeActivityDelegate.getDateRangeContainer().getStart();
- } else {
- return false;
- }
-
- for (Iterator iter = selection.iterator(); iter.hasNext();) {
- Object selectedObject = iter.next();
- ITask task = null;
- if (selectedObject instanceof ITask) {
- task = (ITask) selectedObject;
- } else if (selectedObject instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit) selectedObject).getOrCreateCorrespondingTask();
- }
- if (task != null) {
- MylarTaskListPlugin.getTaskListManager().setReminder(task, reminderCalendar.getTime());
- }
- }
- return true;
- }
-
- @Override
- public boolean validateDrop(Object targetObject, int operation, TransferData transferType) {
- Object selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection())
- .getFirstElement();
-
- if (selectedObject instanceof AbstractTaskContainer) {
- return false;
- }
-
- Object target = getCurrentTarget();
- DateRangeContainer dateRangeContainer = null;
- if (target instanceof DateRangeContainer) {
- dateRangeContainer = (DateRangeContainer) target;
- } else if (target instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) target;
- dateRangeContainer = dateRangeActivityDelegate.getDateRangeContainer();
- }
-
- if (dateRangeContainer != null && (dateRangeContainer.isPresent() || dateRangeContainer.isFuture())) {
- return true;
- }
- return false;
- }
- });
- }
-
- private void makeActions() {
- openTaskEditor = new OpenTaskListElementAction(this.getViewer());
- // openUrlInExternal = new OpenTaskInExternalBrowserAction();
- }
-
- private void hookOpenAction() {
- getViewer().addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- openTaskEditor.run();
- }
- });
- }
-
- public static TaskActivityView getDefault() {
- return INSTANCE;
- }
-
- private TreeViewer getViewer() {
- return treeViewer;
- }
-
- private void refresh() {
- if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().getDisplay().isDisposed()) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (getViewer().getControl() != null && !getViewer().getControl().isDisposed()) {
- TaskActivityView.this.treeViewer.refresh();
- }
- }
- });
- }
- }
-
- public ITask getSelectedTask() {
- ISelection selection = getViewer().getSelection();
- if (selection.isEmpty())
- return null;
- if (selection instanceof StructuredSelection) {
- StructuredSelection structuredSelection = (StructuredSelection) selection;
- Object element = structuredSelection.getFirstElement();
- if (element instanceof ITask) {
- return (ITask) structuredSelection.getFirstElement();
- }
- }
- return null;
- }
-
- @Override
- public void setFocus() {
- // ignore
- }
-
- private void createCellEditorListener() {
- CellEditor[] editors = new CellEditor[columnNames.length];
- final ComboBoxCellEditor estimateEditor = new ComboBoxCellEditor(treeViewer.getTree(),
- TaskListManager.ESTIMATE_TIMES, SWT.READ_ONLY);
- final ReminderCellEditor reminderEditor = new ReminderCellEditor(treeViewer.getTree());
- editors[0] = null; // not used
- editors[1] = null;// not used
- editors[2] = null;// not used
- editors[3] = null;// not used
- editors[4] = estimateEditor;
- editors[5] = reminderEditor;
- reminderEditor.addListener(new ICellEditorListener() {
- public void applyEditorValue() {
- Object selection = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
- if (selection instanceof DateRangeActivityDelegate) {
- // ((ITask)
- // selection).setReminderDate(reminderEditor.getReminderDate());
- // treeViewer.refresh();
- DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) selection;
- MylarTaskListPlugin.getTaskListManager().setReminder(
- dateRangeActivityDelegate.getCorrespondingTask(), reminderEditor.getReminderDate());
- // MylarTaskListPlugin.getTaskListManager().notifyLocalInfoChanged((ITask)
- // selection);
- }
- }
-
- public void cancelEditor() {
- }
-
- public void editorValueChanged(boolean oldValidState, boolean newValidState) {
- }
-
- });
- estimateEditor.addListener(new ICellEditorListener() {
- public void applyEditorValue() {
- Object selection = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();
- if (selection instanceof ITask) {
- ITask task = (ITask) selection;
- int estimate = (Integer) estimateEditor.getValue();
- if (estimate == -1) {
- estimate = 0;
- }
- task.setEstimatedTimeHours(estimate);
- // updateLabels();
- refresh();
- // treeViewer.refresh();
- }
- }
-
- public void cancelEditor() {
- }
-
- public void editorValueChanged(boolean oldValidState, boolean newValidState) {
- }
-
- });
- treeViewer.setCellEditors(editors);
- getViewer().setCellModifier(new TaskActivityCellModifier(treeViewer));
- }
-
- private class TaskActivityCellModifier implements ICellModifier {
-
- private TreeViewer treeViewer;
-
- public TaskActivityCellModifier(TreeViewer tableViewer) {
- this.treeViewer = tableViewer;
- }
-
- public boolean canModify(Object element, String property) {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- if (columnIndex == 4 || columnIndex == 5) {
- return true;
- }
- return false;
- }
-
- public Object getValue(Object element, String property) {
- if (element instanceof ITask) {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- if (element instanceof ITask) {
- if (columnIndex == 5) {
- if (((ITask) element).getReminderDate() != null) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(
- ((ITask) element).getReminderDate());
- } else {
- return null;
- }
- } else if (columnIndex == 4) {
- return new Integer(Arrays.asList(TaskListManager.ESTIMATE_TIMES).indexOf(
- ((ITask) element).getEstimateTimeHours()));
- }
- }
- }
- return null;
- }
-
- public void modify(Object element, String property, Object value) {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- if (columnIndex == 4) {
- if (value instanceof Integer) {
- task.setEstimatedTimeHours(((Integer) value).intValue() * 10);
- treeViewer.refresh();
- }
- }
- }
- }
- }
-
- // OLD SORTER
- // private class TaskActivityTableSorter extends ViewerSorter {
- //
- // public TaskActivityTableSorter() {
- // super();
- // }
- //
- // @Override
- // public int compare(Viewer compareViewer, Object o1, Object o2) {
- // if (o1 instanceof DateRangeContainer) {
- // if (o2 instanceof DateRangeContainer) {
- // DateRangeContainer dateRangeTaskContainer1 = (DateRangeContainer) o1;
- // DateRangeContainer dateRangeTaskContainer2 = (DateRangeContainer) o2;
- // return
- // dateRangeTaskContainer2.getStart().compareTo(dateRangeTaskContainer1.getStart());
- // } else {
- // return 1;
- // }
- // } else if (o1 instanceof ITask) {
- // if (o2 instanceof AbstractTaskContainer) {
- // return -1;
- // } else if (o2 instanceof DateRangeActivityDelegate) {
- // DateRangeActivityDelegate task1 = (DateRangeActivityDelegate) o1;
- // DateRangeActivityDelegate task2 = (DateRangeActivityDelegate) o2;
- // Calendar calendar1 = task1.getStart();//
- // MylarTaskListPlugin.getTaskActivityManager().getLastOccurrence(task1.getHandleIdentifier());
- // Calendar calendar2 = task2.getStart();//
- // MylarTaskListPlugin.getTaskActivityManager().getLastOccurrence(task2.getHandleIdentifier());
- // if (calendar1 != null && calendar2 != null) {
- // return calendar2.compareTo(calendar1);
- // }
- // }
- // }
- // return 0;
- // }
- // }
-
- @Override
- public void init(IViewSite site, IMemento memento) throws PartInitException {
- super.init(site, memento);
- this.taskActivityMemento = memento;
- }
-
- @Override
- public void saveState(IMemento memento) {
- IMemento colMemento = memento.createChild(columnWidthIdentifier);
- for (int i = 0; i < columnWidths.length; i++) {
- IMemento m = colMemento.createChild("col" + i);
- m.putInteger(MEMENTO_KEY_WIDTH, columnWidths[i]);
- }
-
- sorter.saveState(memento);
- }
-
- private void restoreState() {
-
- if (taskActivityMemento != null) {
- IMemento taskActivityWidth = taskActivityMemento.getChild(columnWidthIdentifier);
- if (taskActivityWidth != null) {
- for (int i = 0; i < columnWidths.length; i++) {
- IMemento m = taskActivityWidth.getChild("col" + i);
- if (m != null) {
- int width = m.getInteger(MEMENTO_KEY_WIDTH);
- columnWidths[i] = width;
- columns[i].setWidth(width);
- }
- }
- }
-
- sorter.restoreState(taskActivityMemento);
-
- }
- getViewer().refresh();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java
deleted file mode 100644
index e5a3a9ad5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.views;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer;
-import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate;
-import org.eclipse.mylar.provisional.tasklist.DateRangeContainer;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.mylar.provisional.tasklist.Task;
-import org.eclipse.mylar.provisional.tasklist.Task.PriorityLevel;
-import org.eclipse.ui.IMemento;
-
-/**
- * @author Rob Elves
- */
-public class TaskActivityViewSorter extends ViewerSorter {
-
- private static final String activitySortColumn = "org.eclipse.mylar.tasklist.ui.views.taskactivitysorter.sortcolumn";
-
- private static final String activityViewSorterSettings = "org.eclipse.mylar.tasklist.ui.views.taskactivitysorter.sortsettings";
-
- private int[] directions;
-
- private final static int ASCENDING = 1;
-
- private final static int DESCENDING = -1;
-
- private final static int PRIORITY = 0;
-
- private final static int DESCRIPTION = 1;
-
- private final static int ELAPSED = 2;
-
- private final static int ESTIMATED = 3;
-
- private final static int REMINDER = 4;
-
- private final static int LAST_ACTIVE = 5;
-
- private int sortColumn = LAST_ACTIVE;
-
- final static int[] DEFAULT_DIRECTIONS = { ASCENDING, ASCENDING, ASCENDING, DESCENDING, DESCENDING, DESCENDING,
- DESCENDING };
-
- public TaskActivityViewSorter() {
- resetState();
- }
-
- public void reverseDirection() {
- directions[sortColumn] *= -1;
- }
-
- public void setSortDirection(int direction) {
- if (direction == ASCENDING || direction == DESCENDING)
- directions[sortColumn] = direction;
- }
-
- public int getDirection() {
- return directions[sortColumn];
- }
-
- public int getSortColumn() {
- return sortColumn;
- }
-
- public void setSortColumn(int col) {
- if (col < 0 || col >= directions.length) {
- sortColumn = LAST_ACTIVE;
- } else {
- sortColumn = col;
- }
- }
-
- public void resetState() {
- directions = new int[DEFAULT_DIRECTIONS.length];
- System.arraycopy(DEFAULT_DIRECTIONS, 0, directions, 0, directions.length);
- }
-
- private int compare(DateRangeActivityDelegate task1, DateRangeActivityDelegate task2) {
- if (sortColumn >= directions.length)
- return 0;
-
- switch (sortColumn) {
- case PRIORITY: {
- PriorityLevel a = Task.PriorityLevel.fromString(task1.getPriority());
- PriorityLevel b = Task.PriorityLevel.fromString(task2.getPriority());
- int result = a.compareTo(b);
- return result * directions[sortColumn];
- }
- case DESCRIPTION: {
- String description1 = task1.getDescription();
- String description2 = task2.getDescription();
- int result = collator.compare(description1, description2);
- return result * directions[sortColumn];
- }
- case ELAPSED: {
- long elapsed1 = task1.getDateRangeContainer().getElapsed(task1);
- long elapsed2 = task2.getDateRangeContainer().getElapsed(task2);
- int result = new Long(elapsed1).compareTo(new Long(elapsed2));
- return result * directions[sortColumn];
- }
- case ESTIMATED: {
- int estimate1 = task1.getEstimateTimeHours();
- int estimate2 = task2.getEstimateTimeHours();
- int result = estimate1 - estimate2;
- return result * directions[sortColumn];
- }
- case REMINDER: {
- int result = 0;
- if (task1.getReminderDate() != null && task2.getReminderDate() != null) {
- long reminder1 = task1.getReminderDate().getTime();
- long reminder2 = task2.getReminderDate().getTime();
- result = new Long(reminder1).compareTo(new Long(reminder2));
- } else if (task1.getReminderDate() != null) {
- result = 1;
- } else if (task2.getReminderDate() != null) {
- result = -1;
- }
- return result * directions[sortColumn];
- }
- case LAST_ACTIVE: {
- long active1 = task1.getStart();
- long active2 = task2.getStart();
- int result = new Long(active1).compareTo(new Long(active2));
- return result * directions[sortColumn];
- }
- }
- return 0;
- }
-
- public int compare(Viewer viewer, Object o1, Object o2) {
- if (o1 instanceof DateRangeContainer) {
- if (o2 instanceof DateRangeContainer) {
- DateRangeContainer dateRangeTaskContainer1 = (DateRangeContainer) o1;
- DateRangeContainer dateRangeTaskContainer2 = (DateRangeContainer) o2;
- return dateRangeTaskContainer2.getStart().compareTo(dateRangeTaskContainer1.getStart());
- } else {
- return 1;
- }
- } else if (o1 instanceof ITask) {
- if (o2 instanceof AbstractTaskContainer) {
- return -1;
- } else if (o2 instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate task1 = (DateRangeActivityDelegate) o1;
- DateRangeActivityDelegate task2 = (DateRangeActivityDelegate) o2;
- return compare(task1, task2);
- }
- }
- return 0;
- }
-
- public void saveState(IMemento memento) {
- if (memento == null)
- return;
- IMemento sortingMemento = memento.createChild(activityViewSorterSettings);
- if (sortingMemento != null) {
-
- for (int i = 0; i < directions.length; i++) {
- sortingMemento.putInteger("direction" + i, directions[i]);
- }
- sortingMemento.putInteger(activitySortColumn, sortColumn);
- }
- }
-
- public void restoreState(IMemento memento) {
- if (memento == null)
- return;
-
- IMemento sortingMemento = memento.getChild(activityViewSorterSettings);
- if (sortingMemento != null) {
- try {
- for (int i = 0; i < directions.length; i++) {
- directions[i] = sortingMemento.getInteger("direction" + i);
- }
- sortColumn = sortingMemento.getInteger(activitySortColumn);
- } catch (NumberFormatException e) {
- resetState();
- }
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java
deleted file mode 100644
index 5025e4fc5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.mylar.internal.tasklist.ui.views;
-
-import java.util.Comparator;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * @author Eugene Kuleshov (https://bugs.eclipse.org/bugs/show_bug.cgi?id=129511)
- */
-public class TaskKeyComparator implements Comparator {
-
- public static final Pattern PATTERN = Pattern.compile("(?:([A-Za-z]*[:_\\-]?)(\\d+))?(.*)");
-
- public int compare(Object o1, Object o2) {
- String[] a1 = split((String) o1);
- String[] a2 = split((String) o2);
-
- String s1 = a1[0];
- String s2 = a2[0];
- if (s1 == null && s2 != null)
- return -1;
- if (s1 != null && s2 == null)
- return 1;
-
- if (s1 != null && s2 != null) {
- int n = s1.compareTo(s2);
- if (n != 0)
- return n;
-
- s1 = a1[1];
- s2 = a2[1];
- if (s1.length() == s2.length() || s1.length() == 0 || s2.length() == 0) {
- n = s1.compareTo(s2);
- } else {
- n = Integer.valueOf(s1).compareTo(Integer.valueOf(s2));
- }
- if (n != 0)
- return n;
- }
-
- return a1[2].compareTo(a2[2]);
- }
-
- public String[] split(String s) {
- Matcher matcher = PATTERN.matcher(s);
-
- if (!matcher.find()) {
- return new String[] { null, null, s };
- }
-
- int n = matcher.groupCount();
- String[] res = new String[n];
- for (int i = 1; i < n + 1; i++) {
- res[i - 1] = matcher.group(i);
- }
- return res;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java
index bd0ae641b..85f387a1e 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java
@@ -16,24 +16,34 @@ import java.lang.reflect.Field;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
import org.eclipse.mylar.provisional.tasklist.ITask;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.internal.dialogs.FilteredTree;
-import org.eclipse.ui.internal.dialogs.PatternFilter;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.forms.widgets.Hyperlink;
/**
* @author Mik Kersten
*/
public class TaskListFilteredTree extends FilteredTree {
-// private static final int LABEL_MAX_SIZE = 30;
+ private static final int LABEL_MAX_SIZE = 30;
private static final int DELAY_REFRESH = 700;
-// private static final String LABEL_NO_ACTIVE = " <no active task>";
+ private static final String LABEL_FIND = " Find:";
+
+ private static final String LABEL_NO_ACTIVE = " <no active task>";
private Job refreshJob;
-// private Hyperlink activeTaskLabel;
+ private Hyperlink activeTaskLabel;
public TaskListFilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
super(parent, treeStyle, filter);
@@ -47,9 +57,54 @@ public class TaskListFilteredTree extends FilteredTree {
MylarStatusHandler.fail(e, "Could not get refresh job", false);
}
}
+
+ @Override
+ protected Composite createFilterControls(Composite parent){
+ Composite container = new Composite(parent, SWT.NULL);
+ GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+ container.setLayoutData(gridData);
+ GridLayout gridLayout = new GridLayout(4, false);
+ gridLayout.marginHeight = 0;
+ gridLayout.marginWidth = 0;
+ container.setLayout(gridLayout);
+
+ Label label = new Label(container, SWT.LEFT);
+ label.setText(LABEL_FIND);
+
+ super.createFilterControls(container);
+// patternFilter.setSize(100, patternFilter.getSize().y);
+
+ activeTaskLabel = new Hyperlink(container, SWT.RIGHT);
+ activeTaskLabel.setText(LABEL_NO_ACTIVE);
+ ITask activeTask = MylarTaskListPlugin.getTaskListManager().getTaskList().getActiveTask();
+ if (activeTask != null) {
+ indicateActiveTask(activeTask);
+ }
+ activeTaskLabel.addMouseListener(new MouseListener() {
+
+ public void mouseDoubleClick(MouseEvent e) {
+ // ignore
+ }
+
+ public void mouseDown(MouseEvent e) {
+ TaskListFilteredTree.super.filterText.setText("");
+ TaskListFilteredTree.this.textChanged(0);
+ TaskListView.getDefault().selectedAndFocusTask(
+ MylarTaskListPlugin.getTaskListManager().getTaskList().getActiveTask()
+ );
+ }
+
+ public void mouseUp(MouseEvent e) {
+ // ignore
+ }
+ });
+
+ return container;
+ }
protected void textChanged() {
textChanged(DELAY_REFRESH);
+ //refreshJob.schedule(200);
}
public void textChanged(int delay) {
@@ -59,17 +114,17 @@ public class TaskListFilteredTree extends FilteredTree {
}
public void indicateActiveTask(ITask task) {
-// String text = task.getDescription();
-// if (text.length() > LABEL_MAX_SIZE) {
-// text = text.substring(0, LABEL_MAX_SIZE);
-// }
-// activeTaskLabel.setText(text);
-// activeTaskLabel.setUnderlined(true);
+ String text = task.getDescription();
+ if (text.length() > LABEL_MAX_SIZE) {
+ text = text.substring(0, LABEL_MAX_SIZE);
+ }
+ activeTaskLabel.setText(text);
+ activeTaskLabel.setUnderlined(true);
}
public void indicateNoActiveTask() {
-// activeTaskLabel.setText(LABEL_NO_ACTIVE);
-// activeTaskLabel.setUnderlined(false);
+ activeTaskLabel.setText(LABEL_NO_ACTIVE);
+ activeTaskLabel.setUnderlined(false);
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java
deleted file mode 100644
index 3f0a835ed..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.views;
-
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
-import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer;
-import org.eclipse.mylar.provisional.tasklist.ITaskListElement;
-import org.eclipse.mylar.provisional.tasklist.TaskArchive;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListTableSorter extends ViewerSorter {
-
- private final TaskListView view;
-
- private String column;
-
- private TaskKeyComparator taskKeyComparator = new TaskKeyComparator();
-
- public TaskListTableSorter(TaskListView view, String column) {
- super();
- this.view = view;
- this.column = column;
- }
-
- /**
- * compare - invoked when column is selected calls the actual comparison
- * method for particular criteria
- */
- @Override
- public int compare(Viewer compareViewer, Object o1, Object o2) {
- if (o1 instanceof AbstractTaskContainer && o2 instanceof TaskArchive) {
- return -1;
- } else if (o2 instanceof AbstractTaskContainer && o1 instanceof TaskArchive) {
- return 1;
- }
-
- if (o1 instanceof AbstractTaskContainer && o2 instanceof ITask) {
- return 1;
- }
- if (o1 instanceof AbstractTaskContainer || o1 instanceof AbstractRepositoryQuery) {
- if (o2 instanceof AbstractTaskContainer || o2 instanceof AbstractRepositoryQuery) {
- return this.view.sortDirection
- * ((ITaskListElement) o1).getDescription().compareTo(((ITaskListElement) o2).getDescription());
- } else {
- return -1;
- }
- } else if (o1 instanceof ITaskListElement) {
- if (o2 instanceof AbstractTaskContainer || o2 instanceof AbstractRepositoryQuery) {
- return -1;
- } else if (o2 instanceof ITaskListElement) {
- ITaskListElement element1 = (ITaskListElement) o1;
- ITaskListElement element2 = (ITaskListElement) o2;
-
- return compareElements(element1, element2);
- }
- } else {
- return 0;
- }
- return 0;
- }
-
- private int compareElements(ITaskListElement element1, ITaskListElement element2) {
- if (column != null && column.equals(this.view.columnNames[1])) {
- return 0;
- } else if (column == this.view.columnNames[2]) {
- return this.view.sortDirection * element1.getPriority().compareTo(element2.getPriority());
- } else if (column == this.view.columnNames[4]) {
- String c1 = element1.getDescription();
- String c2 = element2.getDescription();
- return this.view.sortDirection * taskKeyComparator.compare(c1, c2);
- } else {
- return 0;
- }
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java
index bcd96cd4e..048296716 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java
@@ -103,6 +103,7 @@ import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.part.DrillDownAdapter;
import org.eclipse.ui.part.PluginTransfer;
import org.eclipse.ui.part.ViewPart;
@@ -1325,7 +1326,7 @@ public class TaskListView extends ViewPart {
}
- public TaskListFilteredTree getFilteredTree() {
+ public FilteredTree getFilteredTree() {
return filteredTree;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java
index c0dcc2dea..b2037d68f 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java
@@ -14,7 +14,7 @@ package org.eclipse.mylar.internal.tasklist.ui.views;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskRepository;
import org.eclipse.swt.graphics.Image;
@@ -28,8 +28,8 @@ public class TaskRepositoryLabelProvider extends LabelProvider implements ITable
if (object instanceof TaskRepository) {
TaskRepository repository = (TaskRepository) object;
return repository.getKind() + ": " + repository.getUrl().toExternalForm();
- } else if (object instanceof AbstractRepositoryConnector) {
- return ((AbstractRepositoryConnector)object).getLabel();
+ } else if (object instanceof AbstractRepositoryClient) {
+ return ((AbstractRepositoryClient)object).getLabel();
} else {
return getText(object);
}
@@ -40,8 +40,8 @@ public class TaskRepositoryLabelProvider extends LabelProvider implements ITable
}
public Image getImage(Object object) {
- if (object instanceof AbstractRepositoryConnector) {
- AbstractRepositoryConnector repositoryClient = (AbstractRepositoryConnector)object;
+ if (object instanceof AbstractRepositoryClient) {
+ AbstractRepositoryClient repositoryClient = (AbstractRepositoryClient)object;
Image image = MylarTaskListPlugin.getDefault().getBrandingIcons().get(repositoryClient);
if (image != null) {
return image;
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java
index b562353eb..fd0c40d01 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java
@@ -15,7 +15,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.ITask;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskCategory;
@@ -36,9 +36,9 @@ public abstract class AbstractAddExistingTaskWizard extends Wizard {
@Override
public final boolean performFinish() {
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
this.repository.getKind());
- ITask newTask = connector.createTaskFromExistingId(repository, getTaskId());
+ ITask newTask = client.createTaskFromExistingId(repository, getTaskId());
if (newTask != null && TaskListView.getDefault() != null) {
Object selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection())
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java
index d32b6ed9d..af2c33a22 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java
@@ -12,7 +12,7 @@
package org.eclipse.mylar.internal.tasklist.ui.wizards;
import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.ui.INewWizard;
/**
@@ -24,13 +24,13 @@ public abstract class AbstractRepositoryClientWizard extends Wizard implements I
protected AbstractRepositorySettingsPage abstractRepositorySettingsPage;
- protected AbstractRepositoryConnector repositoryClient;
+ protected AbstractRepositoryClient repositoryClient;
- public void setRepositoryClient(AbstractRepositoryConnector repository) {
+ public void setRepositoryClient(AbstractRepositoryClient repository) {
this.repositoryClient = repository;
}
- public AbstractRepositoryConnector getRepositoryClient() {
+ public AbstractRepositoryClient getRepositoryClient() {
return repositoryClient;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java
index 4f9ef99fa..7202fe62d 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java
@@ -12,7 +12,7 @@
package org.eclipse.mylar.internal.tasklist.ui.wizards;
import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskRepository;
@@ -27,14 +27,11 @@ public class AddExistingTaskWizard extends MultiRepositoryAwareWizard {
@Override
protected IWizard createWizard(TaskRepository taskRepository) {
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
taskRepository.getKind());
- if (connector.canCreateTaskFromId()) {
- return connector.getAddExistingTaskWizard(taskRepository);
- } else {
- return null;
- }
+ return client.getAddExistingTaskWizard(taskRepository);
}
+
});
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java
index 9db45940e..1c4af901b 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java
@@ -32,7 +32,7 @@ public class AddRepositoryWizard extends AbstractRepositoryClientWizard {
@Override
public boolean performFinish() {
if (canFinish()) {
- TaskRepository repository = new TaskRepository(repositoryClient.getRepositoryType(),
+ TaskRepository repository = new TaskRepository(repositoryClient.getKind(),
super.abstractRepositorySettingsPage.getServerUrl());
if (repository != null) {
repository.setAuthenticationCredentials(abstractRepositorySettingsPage.getUserName(),
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java
index a14e56562..533cf4f1d 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java
@@ -13,7 +13,7 @@ package org.eclipse.mylar.internal.tasklist.ui.wizards;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskRepository;
import org.eclipse.ui.INewWizard;
@@ -32,9 +32,9 @@ public class EditRepositoryWizard extends Wizard implements INewWizard {
super();
oldRepository = repository;
// super.setForcePreviousAndNextButtons(true);
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
repository.getKind());
- abstractRepositorySettingsPage = connector.getSettingsPage();
+ abstractRepositorySettingsPage = client.getSettingsPage();
abstractRepositorySettingsPage.setRepository(repository);
abstractRepositorySettingsPage.setWizard(this);
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java
index 33a8b7593..c07cd29df 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java
@@ -12,7 +12,7 @@
package org.eclipse.mylar.internal.tasklist.ui.wizards;
import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskRepository;
@@ -26,9 +26,9 @@ public class NewQueryWizard extends MultiRepositoryAwareWizard {
@Override
protected IWizard createWizard(TaskRepository taskRepository) {
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
+ AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
taskRepository.getKind());
- return connector.getQueryWizard(taskRepository);
+ return client.getQueryWizard(taskRepository);
}
});
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java
deleted file mode 100644
index 3ed78aae2..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasklist.ui.wizards;
-
-import java.util.List;
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
-import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
-import org.eclipse.mylar.provisional.tasklist.TaskRepository;
-
-/**
- * @author Mik Kersten
- */
-public class NewRepositoryTaskPage extends SelectRepositoryPage {
-
- public NewRepositoryTaskPage(List<String> kinds) {
- super(kinds);
- }
-
- @Override
- protected IWizard createWizard(TaskRepository taskRepository) {
- AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(
- taskRepository.getKind());
- return connector.getNewTaskWizard(taskRepository);
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java
index 410dae054..d5e541c49 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java
@@ -20,7 +20,7 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.mylar.internal.tasklist.ui.views.TaskRepositoryLabelProvider;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
@@ -78,8 +78,8 @@ public class SelectRepositoryClientPage extends WizardPage {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
- if (selection.getFirstElement() instanceof AbstractRepositoryConnector) {
- wizard.setRepositoryClient((AbstractRepositoryConnector) selection.getFirstElement());
+ if (selection.getFirstElement() instanceof AbstractRepositoryClient) {
+ wizard.setRepositoryClient((AbstractRepositoryClient) selection.getFirstElement());
SelectRepositoryClientPage.this.setPageComplete(true);
wizard.getContainer().updateButtons();
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java
index 0b8a59902..7ad30b039 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java
@@ -11,15 +11,13 @@
package org.eclipse.mylar.internal.tasklist.ui.wizards;
-import java.util.ArrayList;
-import java.util.List;
-
import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.OpenEvent;
import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.IWizard;
@@ -47,7 +45,7 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage {
protected MultiRepositoryAwareWizard wizard;
- private List<String> repositoryKinds = null;
+ private String repositoryKind = null;
class RepositoryContentProvider implements IStructuredContentProvider {
@@ -58,12 +56,8 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage {
}
public Object[] getElements(Object parent) {
- if (repositoryKinds != null) {
- List<TaskRepository> repositories = new ArrayList<TaskRepository>();
- for (String repositoryKind : repositoryKinds) {
- repositories.addAll(MylarTaskListPlugin.getRepositoryManager().getRepositories(repositoryKind));
- }
- return repositories.toArray();
+ if (repositoryKind != null) {
+ return MylarTaskListPlugin.getRepositoryManager().getRepositories(repositoryKind).toArray();
} else {
return MylarTaskListPlugin.getRepositoryManager().getAllRepositories().toArray();
}
@@ -76,9 +70,9 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage {
setDescription(DESCRIPTION);
}
- public SelectRepositoryPage(List<String> repositoryKinds) {
+ public SelectRepositoryPage(String repositoryKind) {
this();
- this.repositoryKinds = repositoryKinds;
+ this.repositoryKind = repositoryKind;
}
public void createControl(Composite parent) {
@@ -110,11 +104,11 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage {
});
viewer.getTable().setFocus();
-// TaskRepository defaultRepository = MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(
-// repositoryKind);
-// if (defaultRepository != null) {
-// viewer.setSelection(new StructuredSelection(defaultRepository));
-// }
+ TaskRepository defaultRepository = MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(
+ repositoryKind);
+ if (defaultRepository != null) {
+ viewer.setSelection(new StructuredSelection(defaultRepository));
+ }
setControl(container);
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java
index ed927793a..73d1d0da9 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java
@@ -115,7 +115,6 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard {
if (!sourceZipFile.exists()) {
MessageDialog
.openError(getShell(), "File not found", sourceZipFile.toString() + " could not be found.");
- return false;
}
Enumeration entries;
@@ -171,8 +170,10 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard {
// Get file paths to check for existence
String sourceDir = importPage.getSourceDirectory();
sourceDirFile = new File(sourceDir);
- if (!sourceDirFile.exists() || !sourceDirFile.isDirectory()) {
- MessageDialog.openError(getShell(), "Location not found", sourceZipFile.toString() + " could not be found or is not a folder.");
+ if (!sourceDirFile.exists() || !sourceDirFile.isDirectory()) {
+ // This should never happen
+ MylarStatusHandler.fail(new Exception("File Import Exception"),
+ "Could not import data because specified location does not exist or is not a folder", true);
return false;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java
index fa946a14d..8b03b0f34 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java
@@ -24,7 +24,7 @@ import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
import org.eclipse.mylar.internal.tasklist.ui.IDynamicSubMenuContributor;
import org.eclipse.mylar.internal.tasklist.ui.ITaskEditorFactory;
import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector;
+import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient;
import org.eclipse.mylar.provisional.tasklist.ITaskListExternalizer;
import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -151,18 +151,16 @@ public class TaskListExtensionReader {
try {
Object type = element.getAttribute(ELMNT_TYPE);
Object repository = element.createExecutableExtension(ATTR_CLASS);
- if (repository instanceof AbstractRepositoryConnector && type != null) {
- MylarTaskListPlugin.getRepositoryManager().addRepositoryClient((AbstractRepositoryConnector) repository);
+ if (repository instanceof AbstractRepositoryClient && type != null) {
+ MylarTaskListPlugin.getRepositoryManager().addRepositoryClient((AbstractRepositoryClient) repository);
String iconPath = element.getAttribute(ATTR_BRANDING_ICON);
if (iconPath != null) {
-// ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getContributor().getName(),
-// iconPath);
- ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getNamespace(),
+ ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getContributor().getName(),
iconPath);
if (descriptor != null) {
- MylarTaskListPlugin.getDefault().getBrandingIcons().put((AbstractRepositoryConnector) repository, TaskListImages.getImage(descriptor));
+ MylarTaskListPlugin.getDefault().getBrandingIcons().put((AbstractRepositoryClient) repository, TaskListImages.getImage(descriptor));
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java
index fbf351eab..8cc1a7694 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java
@@ -40,8 +40,6 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen
private static final String FILE_SUFFIX_BACKUP = "-backup.xml";
private BackgroundSaveTimer saveTimer = null;
-
- private boolean initializationWarningDialogShow = false;
/**
* Fort testing.
@@ -51,13 +49,23 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen
public TaskListSaveManager() {
saveTimer = new BackgroundSaveTimer(this);
saveTimer.setSaveIntervalMillis(DEFAULT_SAVE_INTERVAL);
- saveTimer.start();
+ saveTimer.start();
}
/**
* Called periodically by the save timer
*/
public void saveRequested() {
+ if (!MylarTaskListPlugin.getDefault().isInitialized()) {
+ if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getDisplay() != null) {
+ MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), MylarTaskListPlugin.TITLE_DIALOG,
+ "If task list is blank, Mylar Task List may have failed to initialize.\n\n" +
+ "First, try restarting to see if that corrects the problem.\n\n" +
+ "Then, check the Error Log view for messages, and the FAQ for solutions.\n\n" +
+ MylarTaskListPlugin.URL_HOMEPAGE);
+ }
+ }
+
if (MylarTaskListPlugin.getDefault() != null && MylarTaskListPlugin.getDefault().isShellActive()
|| forceBackgroundSave) {
try {
@@ -68,33 +76,15 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen
}
}
- public void saveTaskListAndContexts() {
- if (MylarTaskListPlugin.getDefault() != null && MylarTaskListPlugin.getDefault().isInitialized()) {
+ public void saveTaskListAndContexts() {
+ if (MylarTaskListPlugin.getDefault() != null) {
MylarTaskListPlugin.getTaskListManager().saveTaskList();
- for (ITask task : new ArrayList<ITask>(MylarTaskListPlugin.getTaskListManager().getTaskList()
- .getActiveTasks())) {
+ for (ITask task : new ArrayList<ITask>(MylarTaskListPlugin.getTaskListManager().getTaskList().getActiveTasks())) {
MylarPlugin.getContextManager().saveContext(task.getHandleIdentifier());
}
- } else {
- MylarStatusHandler.log("Possible task list initialization failure, not saving list.", this);
- if (PlatformUI.getWorkbench() != null && !initializationWarningDialogShow) {
- initializationWarningDialogShow = true;
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getDisplay() != null) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(),
- MylarTaskListPlugin.TITLE_DIALOG,
- "If task list is blank, Mylar Task List may have failed to initialize.\n\n"
- + "First, try restarting to see if that corrects the problem.\n\n"
- + "Then, check the Error Log view for messages, and the FAQ for solutions.\n\n"
- + MylarTaskListPlugin.URL_HOMEPAGE);
- }
- }
- });
- }
}
}
-
+
/**
* Copies all files in the current data directory to the specified folder.
* Will overwrite.
@@ -173,9 +163,9 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen
}
public void repositoryInfoChanged(ITask task) {
- // ignore
+ // ignore
}
-
+
public void tasklistRead() {
// ignore
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java
index 94d9c6b65..5a2460d1b 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java
@@ -100,18 +100,13 @@ public class TaskListWriter {
for (AbstractRepositoryQuery query : taskList.getQueries()) {
Element element = null;
- try {
- for (ITaskListExternalizer externalizer : externalizers) {
- if (externalizer.canCreateElementFor(query))
- element = externalizer.createQueryElement(query, doc, root);
- }
- if (element == null && delagatingExternalizer.canCreateElementFor(query)) {
- delagatingExternalizer.createQueryElement(query, doc, root);
- }
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "Did not externalize: " + query.getDescription(), true);
- }
- if (element == null) {
+ for (ITaskListExternalizer externalizer : externalizers) {
+ if (externalizer.canCreateElementFor(query))
+ element = externalizer.createQueryElement(query, doc, root);
+ }
+ if (element == null && delagatingExternalizer.canCreateElementFor(query)) {
+ delagatingExternalizer.createQueryElement(query, doc, root);
+ } else if (element == null) {
MylarStatusHandler.log("Did not externalize: " + query, this);
}
}
@@ -120,6 +115,13 @@ public class TaskListWriter {
createTaskElement(doc, root, task);
}
+// for (ITask task : taskList.getArchiveTasks()) {
+// createTaskElement(doc, root, task);
+// }
+
+// for (ITask task : taskList.getRootTasks()) {
+// createTaskElement(doc, root, task);
+// }
doc.appendChild(root);
writeDOMtoFile(doc, outFile);
return;
@@ -305,13 +307,16 @@ public class TaskListWriter {
// A factory API that enables applications to obtain a parser
// that produces DOM object trees from XML documents
+ //
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Using DocumentBuilder, obtain a Document from XML file.
+ //
DocumentBuilder builder = null;
Document document = null;
try {
// create new instance of DocumentBuilder
+ //
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
inputFile.renameTo(new File(inputFile.getName() + FILE_SUFFIX_SAVE));
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryClient.java
index 17528b384..e7e65401e 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryClient.java
@@ -25,18 +25,16 @@ import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractRepositorySettings
/**
* @author Mik Kersten
*/
-public abstract class AbstractRepositoryConnector {
+public abstract class AbstractRepositoryClient {
private static final int MAX_REFRESH_JOBS = 5;
+// private TaskCategory archiveCategory = null;
+
private List<AbstractRepositoryTask> toBeRefreshed = new LinkedList<AbstractRepositoryTask>();
private Map<AbstractRepositoryTask, Job> currentlyRefreshing = new HashMap<AbstractRepositoryTask, Job>();
- public abstract boolean canCreateTaskFromId();
-
- public abstract boolean canCreateNewTask();
-
public void requestRefresh(AbstractRepositoryTask task) {
if (!currentlyRefreshing.containsKey(task) && !toBeRefreshed.contains(task)) {
toBeRefreshed.add(task);
@@ -86,7 +84,7 @@ public abstract class AbstractRepositoryConnector {
/**
* @return the unique type of the repository, e.g. "bugzilla"
*/
- public abstract String getRepositoryType();
+ public abstract String getKind();
/**
* @param id
@@ -116,6 +114,4 @@ public abstract class AbstractRepositoryConnector {
public abstract IWizard getAddExistingTaskWizard(TaskRepository repository);
- public abstract IWizard getNewTaskWizard(TaskRepository taskRepository);
-
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java
deleted file mode 100644
index 7a8050b8f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.mylar.provisional.tasklist;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Manipulate containers via TaskListManager
- *
- * @author Mik Kersten
- */
-public abstract class AbstractTaskContainer implements ITaskListElement {
-
- private String handle = "";
-
- private Set<String> childHandles = new HashSet<String>();
-
- private TaskList taskList;
-
-// public abstract boolean isArchive();
-//
-// public abstract void setIsArchive(boolean isArchive);
-
- public AbstractTaskContainer(String handleAndDescription, TaskList taskList) {
- assert handle != null;
- this.handle = handleAndDescription;
- this.taskList = taskList;
- }
-
- public abstract boolean isLocal();
-
- public Set<ITask> getChildren() {
- Set<ITask> children = new HashSet<ITask>();
- for (String childHandle : childHandles) {
- ITask task = taskList.getTask(childHandle);
- if (task != null) {
- children.add(task);
- }
- }
- return children;
- }
-
- public String getDescription() {
- return handle;
- }
-
- public String getHandleIdentifier() {
- return handle;
- }
-
- void setDescription(String description) {
- this.handle = description;
- }
-
- public void setHandleIdentifier(String handle) {
- this.handle = handle;
- }
-
- void add(ITask task) {
- childHandles.add(task.getHandleIdentifier());
- }
-
- void remove(ITask task) {
- childHandles.remove(task.getHandleIdentifier());
- }
-
- public boolean isCompleted() {
- return false;
- }
-
- public int hashCode() {
- return handle.hashCode();
- }
-
- @Override
- public boolean equals(Object object) {
- if (object == null)
- return false;
- if (object instanceof AbstractTaskContainer) {
- AbstractTaskContainer compare = (AbstractTaskContainer) object;
- return this.getHandleIdentifier().equals(compare.getHandleIdentifier());
- } else {
- return false;
- }
- }
-
- @Override
- public String toString() {
- return "container: " + handle;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java
deleted file mode 100644
index b09740dd5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.provisional.tasklist;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Set;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class DateRangeActivityDelegate implements ITask {
-
- private ITask task = null;
-
-// private Calendar start = null;
-//
-// private Calendar end = null;
-
- private DateRangeContainer parent;
-
- private long startMili = 0;
- private long endMili = 0;
- private long inactivity = 0;
-
- public DateRangeActivityDelegate(DateRangeContainer parent, ITask task, Calendar start, Calendar end) {
- this(parent, task, start, end, 0);
- }
-
- public DateRangeActivityDelegate(DateRangeContainer parent, ITask task, Calendar start, Calendar end, long inactivity) {
- if (task == null) {
- throw new RuntimeException("attempted to instantiated with null task: " + parent);
- }
- this.task = task;
- if(start != null) {
- this.startMili = start.getTimeInMillis();
- }
- if(end != null) {
- this.endMili = end.getTimeInMillis();
- }
-// this.start = start;
-// this.end = end;
- this.parent = parent;
- this.inactivity = inactivity;
- }
-
- public long getEnd() {
- return endMili;
- }
-
- public long getStart() {
- return startMili;
- }
-
- public long getInactivity() {
- return inactivity;
- }
-
- public long getActivity() {
- return (endMili - startMili) - inactivity;
- }
-
- public ITask getCorrespondingTask() {
- return task;
- }
-
- @Override
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + ((task == null) ? 0 : task.hashCode());
- result = PRIME * result + ((parent == null) ? 0 : parent.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- final DateRangeActivityDelegate other = (DateRangeActivityDelegate) obj;
- if (task == null) {
- if (other.task != null)
- return false;
- } else if (!task.equals(other.task))
- return false;
- if (parent == null) {
- if (other.parent != null)
- return false;
- } else if (!parent.equals(other.parent))
- return false;
- return true;
- }
-
- public DateRangeContainer getDateRangeContainer() {
- return parent;
- }
-
- public void addSubTask(ITask task) {
- task.addSubTask(task);
- }
-
- public AbstractTaskContainer getContainer() {
- return task.getContainer();
- }
-
- public Set<ITask> getChildren() {
- return task.getChildren();
- }
-
- public Date getCompletionDate() {
- return task.getCompletionDate();
- }
-
- public Date getCreationDate() {
- return task.getCreationDate();
- }
-
- public String getDescription() {
- return task.getDescription();
- }
-
- public long getElapsedTime() {
- return task.getElapsedTime();
- }
-
- public int getEstimateTimeHours() {
- return task.getEstimateTimeHours();
- }
-
- public String getHandleIdentifier() {
- return task.getHandleIdentifier();
- }
-
- public String getKind() {
- return task.getKind();
- }
-
- public String getNotes() {
- return task.getNotes();
- }
-
- public ITask getParent() {
- return task.getParent();
- }
-
- public String getPriority() {
- return task.getPriority();
- }
-
- public Date getReminderDate() {
- return task.getReminderDate();
- }
-
- public String getUrl() {
- return task.getUrl();
- }
-
- public boolean hasBeenReminded() {
- return task.hasBeenReminded();
- }
-
- public boolean hasValidUrl() {
- return task.hasValidUrl();
- }
-
- public boolean isActive() {
- return task.isActive();
- }
-
- public boolean isCompleted() {
- return task.isCompleted();
- }
-
- public boolean isPastReminder() {
- return task.isPastReminder();
- }
-
- public void removeSubTask(ITask task) {
- task.removeSubTask(task);
- }
-
- public void setActive(boolean active) {
- task.setActive(active);
- }
-
- public void setContainer(AbstractTaskContainer category) {
- task.setContainer(category);
- }
-
- public void setCompleted(boolean completed) {
- task.setCompleted(completed);
- }
-
- public void setCompletionDate(Date date) {
- task.setCompletionDate(date);
- }
-
- public void setCreationDate(Date date) {
- task.setCreationDate(date);
- }
-
-// public void setDescription(String description) {
-// task.setDescription(description);
-// }
-
- public void setElapsedTime(long elapsed) {
- task.setElapsedTime(elapsed);
- }
-
- public void setEstimatedTimeHours(int estimated) {
- task.setEstimatedTimeHours(estimated);
- }
-
- public void setHandleIdentifier(String id) {
- task.setHandleIdentifier(id);
- }
-
- public void setKind(String kind) {
- task.setKind(kind);
- }
-
- public void setNotes(String notes) {
- task.setNotes(notes);
- }
-
- public void setParent(ITask parent) {
- task.setParent(parent);
- }
-
- public void setPriority(String priority) {
- task.setPriority(priority);
- }
-
- public void setReminded(boolean reminded) {
- task.setReminded(reminded);
- }
-
- public void setReminderDate(Date date) {
- task.setReminderDate(date);
- }
-
- public void setUrl(String url) {
- task.setUrl(url);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java
deleted file mode 100644
index c985e9405..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.provisional.tasklist;
-
-import java.text.DateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class DateRangeContainer extends AbstractTaskContainer {
-
- private Set<ITask> children = new HashSet<ITask>();
-
- private Map<DateRangeActivityDelegate, Long> taskToDuration = new HashMap<DateRangeActivityDelegate, Long>();
-
- private Calendar startDate;
-
- private Calendar endDate;
-
- private long totalElapsed = 0;
-
- private long totalEstimated = 0;
-
-// private String description;
-
- public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, String description, TaskList taskList) {
- super(description, taskList);
- this.startDate = startDate;
- this.endDate = endDate;
- }
-
- public DateRangeContainer(Calendar startDate, Calendar endDate, String description, TaskList taskList) {
- super(description, taskList);
- this.startDate = startDate;
- this.endDate = endDate;
- }
-
- public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, TaskList taskList) {
- super(DateFormat.getDateInstance(DateFormat.FULL).format(startDate.getTime())
- + " to "
- + DateFormat.getDateInstance(DateFormat.FULL).format(endDate.getTime()),
- taskList);
- // super(startDate.hashCode() + endDate.hashCode() + "");
-// String start = DateFormat.getDateInstance(DateFormat.FULL).format(startDate.getTime());
-// String end = DateFormat.getDateInstance(DateFormat.FULL).format(endDate.getTime());
-// this.description = start + " to " + end;
- this.startDate = startDate;
- this.endDate = endDate;
- }
-
- public DateRangeContainer(Date time, Date time2, String description, TaskList taskList) {
- super(description, taskList);
- startDate = new GregorianCalendar();
- startDate.setTime(time);
- endDate = new GregorianCalendar();
- endDate.setTime(time2);
-// this.description = description;
- }
-
- public boolean includes(Calendar cal) {
- return (startDate.getTimeInMillis() <= cal.getTimeInMillis())
- && (endDate.getTimeInMillis() >= cal.getTimeInMillis());
- }
-
- public void clear() {
- children.clear();
- }
-
- public void addTask(DateRangeActivityDelegate taskWrapper) {
- long taskActivity = taskWrapper.getActivity();
- if(taskActivity < 0) taskActivity = 0;
- totalElapsed += taskActivity;
- children.remove(taskWrapper);
- children.add(taskWrapper);
- if (taskToDuration.containsKey(taskWrapper)) {
- long previous = taskToDuration.get(taskWrapper);
- long newDuration = previous + taskActivity;
- taskToDuration.put(taskWrapper, newDuration);
- } else {
- taskToDuration.put(taskWrapper, taskActivity);
- }
- }
-
- public Calendar getStart() {
- return startDate;
- }
-
- public Calendar getEnd() {
- return endDate;
- }
-
- public long getTotalElapsed() {
- return totalElapsed;
- }
-
- public long getElapsed(DateRangeActivityDelegate taskWrapper) {
- if (taskToDuration.containsKey(taskWrapper)) {
- return taskToDuration.get(taskWrapper);
- } else {
- return 0;
- }
- }
-
- public long getTotalEstimated() {
- totalEstimated = 0;
- for (ITask task : children) {
- totalEstimated += task.getEstimateTimeHours();
- }
- return totalEstimated;
- }
-
-// public Set<TaskActivityDurationDelegate> getElements() {
-// return tasks;
-// }
-
- public boolean isArchive() {
- return false;
- }
-
- public void setIsArchive(boolean isArchive) {
- // ignore
- }
-
- public String getPriority() {
- return "";
- }
-
-// public String getDescription() {
-// return description;
-// }
-
-// public void setDescription(String description) {
-// this.description = description;
-// }
-
-// public String getHandleIdentifier() {
-// return description;
-// }
-
- public void setHandleIdentifier(String id) {
- // ignore
- }
-
- public Set<ITask> getChildren() {
-// Set<ITask> taskSet = new HashSet<ITask>();
-// taskSet.addAll(tasks);
- return children;
-// Set<ITask> emptySet = Collections.emptySet();
-// return emptySet;
- }
-
- public boolean isFuture() {
- return !isPresent() && getStart().after(Calendar.getInstance());
- }
-
- public boolean isPresent() {
- return getStart().before(Calendar.getInstance()) && getEnd().after(Calendar.getInstance());
- }
-
- @Override
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + ((startDate == null) ? 0 : startDate.hashCode());
- result = PRIME * result + ((endDate == null) ? 0 : endDate.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- final DateRangeContainer other = (DateRangeContainer) obj;
- if (startDate == null) {
- if (other.startDate != null)
- return false;
- } else if (!startDate.equals(other.startDate))
- return false;
- if (endDate == null) {
- if (other.endDate != null)
- return false;
- } else if (!endDate.equals(other.endDate))
- return false;
- return true;
- }
-
- @Override
- public boolean isLocal() {
- return true;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java
deleted file mode 100644
index 9f4151b43..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.provisional.tasklist;
-
-/**
- * Listener for task list modifications and task content modifications.
- *
- * @author Mik Kersten
- */
-public interface ITaskListChangeListener {
-
- public abstract void localInfoChanged(ITask task);
-
- public abstract void repositoryInfoChanged(ITask task);
-
- public abstract void taskDeleted(ITask task);
-
- public abstract void containerAdded(AbstractTaskContainer container);
-
- public abstract void containerDeleted(AbstractTaskContainer container);
-
- public abstract void containerInfoChanged(AbstractTaskContainer container);
-
- /**
- * @param task
- * @param fromContainer can be null
- * @param toContainer can be null
- */
- public abstract void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer);
-
- public abstract void taskAdded(ITask task);
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java
index c6058b737..c8268eba4 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java
@@ -66,7 +66,7 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
private static TaskRepositoryManager taskRepositoryManager;
- private TaskListSaveManager taskListSaveManager;
+ private TaskListSaveManager taskListSaveManager = new TaskListSaveManager();
private TaskListRefreshManager taskListRefreshManager;
@@ -94,7 +94,7 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
private boolean initialized = false;
- private Map<AbstractRepositoryConnector, Image> brandingIcons = new HashMap<AbstractRepositoryConnector, Image>();
+ private Map<AbstractRepositoryClient, Image> brandingIcons = new HashMap<AbstractRepositoryClient, Image>();
public enum TaskListSaveMode {
ONE_HOUR, THREE_HOURS, DAY;
@@ -284,12 +284,14 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
taskRepositoryManager.readRepositories();
taskListManager.addListener(CONTEXT_TASK_ACTIVITY_LISTENER);
+ taskListManager.addListener(taskListSaveManager);
+
taskListManager.readExistingOrCreateNewList();
initialized = true;
migrateHandlesToRepositorySupport();
if (getPrefs().getBoolean(TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP)) {
- for (AbstractRepositoryConnector repositoryClient : taskRepositoryManager.getRepositoryClients()) {
+ for (AbstractRepositoryClient repositoryClient : taskRepositoryManager.getRepositoryClients()) {
repositoryClient.synchronize();
}
}
@@ -303,9 +305,6 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
taskListRefreshManager = new TaskListRefreshManager();
taskListRefreshManager.startRefreshJob();
- taskListSaveManager = new TaskListSaveManager();
- taskListManager.addListener(taskListSaveManager);
-
MylarPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(PREFERENCE_LISTENER);
getPrefs().addPropertyChangeListener(taskListRefreshManager);
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().addDisposeListener(
@@ -576,14 +575,14 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
return taskRepositoryManager;
}
- public Map<AbstractRepositoryConnector, Image> getBrandingIcons() {
+ public Map<AbstractRepositoryClient, Image> getBrandingIcons() {
return brandingIcons;
}
public boolean isInitialized() {
return initialized;
}
-}
+}
// /**
// * Sets the directory containing the task list file to use.
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java
deleted file mode 100644
index dabc7b95e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.provisional.tasklist;
-
-
-/**
- * @author Mik Kersten
- */
-public class TaskArchive extends AbstractTaskContainer {
-
- public static final String HANDLE = "archive";
-
- public static final String LABEL_ARCHIVE = "Archive (all tasks)";
-
- public TaskArchive(TaskList taskList) {
- super(HANDLE, taskList);
- }
-
- public String getPriority() {
- return Task.PriorityLevel.P1.toString();
- }
-
- @Override
- public String getHandleIdentifier() {
- return HANDLE;
- }
-
- public String getDescription() {
- return LABEL_ARCHIVE;
- }
-
- @Override
- public boolean isLocal() {
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java
index ffa6131ff..dfa49cd5d 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java
@@ -33,7 +33,7 @@ public class TaskRepositoryManager {
public static final String PREF_REPOSITORIES = "org.eclipse.mylar.tasklist.repositories.";
- private Map<String, AbstractRepositoryConnector> repositoryClients = new HashMap<String, AbstractRepositoryConnector>();
+ private Map<String, AbstractRepositoryClient> repositoryClients = new HashMap<String, AbstractRepositoryClient>();
private Map<String, Set<TaskRepository>> repositoryMap = new HashMap<String, Set<TaskRepository>>();
@@ -51,21 +51,21 @@ public class TaskRepositoryManager {
private static final String PREF_STORE_DELIM = ", ";
- public Collection<AbstractRepositoryConnector> getRepositoryClients() {
+ public Collection<AbstractRepositoryClient> getRepositoryClients() {
return Collections.unmodifiableCollection(repositoryClients.values());
}
- public AbstractRepositoryConnector getRepositoryClient(String kind) {
+ public AbstractRepositoryClient getRepositoryClient(String kind) {
return repositoryClients.get(kind);
}
- public void addRepositoryClient(AbstractRepositoryConnector repositoryClient) {
+ public void addRepositoryClient(AbstractRepositoryClient repositoryClient) {
if (!repositoryClients.values().contains(repositoryClient)) {
- repositoryClients.put(repositoryClient.getRepositoryType(), repositoryClient);
+ repositoryClients.put(repositoryClient.getKind(), repositoryClient);
}
}
- public void removeRepositoryClient(AbstractRepositoryConnector repositoryClient) {
+ public void removeRepositoryClient(AbstractRepositoryClient repositoryClient) {
repositoryClients.remove(repositoryClient);
}
@@ -118,9 +118,9 @@ public class TaskRepositoryManager {
public List<TaskRepository> getAllRepositories() {
List<TaskRepository> repositories = new ArrayList<TaskRepository>();
- for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) {
- if (repositoryMap.containsKey(repositoryClient.getRepositoryType())) {
- repositories.addAll(repositoryMap.get(repositoryClient.getRepositoryType()));
+ for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) {
+ if (repositoryMap.containsKey(repositoryClient.getKind())) {
+ repositories.addAll(repositoryMap.get(repositoryClient.getKind()));
}
}
return repositories;
@@ -162,8 +162,8 @@ public class TaskRepositoryManager {
}
public Map<String, Set<TaskRepository>> readRepositories() {
- for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) {
- String read = MylarTaskListPlugin.getPrefs().getString(PREF_REPOSITORIES + repositoryClient.getRepositoryType());
+ for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) {
+ String read = MylarTaskListPlugin.getPrefs().getString(PREF_REPOSITORIES + repositoryClient.getKind());
Set<TaskRepository> repositories = new HashSet<TaskRepository>();
if (read != null) {
StringTokenizer st = new StringTokenizer(read, PREF_STORE_DELIM);
@@ -171,8 +171,8 @@ public class TaskRepositoryManager {
String urlString = st.nextToken();
try {
URL url = new URL(urlString);
- repositoryMap.put(repositoryClient.getRepositoryType(), repositories);
- repositories.add(new TaskRepository(repositoryClient.getRepositoryType(), url));
+ repositoryMap.put(repositoryClient.getKind(), repositories);
+ repositories.add(new TaskRepository(repositoryClient.getKind(), url));
} catch (MalformedURLException e) {
MylarStatusHandler.fail(e, "could not restore URL: " + urlString, false);
}
@@ -186,13 +186,13 @@ public class TaskRepositoryManager {
}
private void saveRepositories() {
- for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) {
- if (repositoryMap.containsKey(repositoryClient.getRepositoryType())) {
+ for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) {
+ if (repositoryMap.containsKey(repositoryClient.getKind())) {
String repositoriesToStore = "";
- for (TaskRepository repository : repositoryMap.get(repositoryClient.getRepositoryType())) {
+ for (TaskRepository repository : repositoryMap.get(repositoryClient.getKind())) {
repositoriesToStore += repository.getUrl().toExternalForm() + PREF_STORE_DELIM;
}
- String prefId = PREF_REPOSITORIES + repositoryClient.getRepositoryType();
+ String prefId = PREF_REPOSITORIES + repositoryClient.getKind();
MylarTaskListPlugin.getPrefs().setValue(prefId, repositoriesToStore);
}
}
@@ -207,8 +207,8 @@ public class TaskRepositoryManager {
*/
public void clearRepositories() {
repositoryMap.clear();
- for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) {
- String prefId = PREF_REPOSITORIES + repositoryClient.getRepositoryType();
+ for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) {
+ String prefId = PREF_REPOSITORIES + repositoryClient.getKind();
MylarTaskListPlugin.getPrefs().setValue(prefId, "");
}
}

Back to the top