Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcvs2git2006-10-10 18:34:45 +0000
committercvs2git2006-10-10 18:34:45 +0000
commite2ba560778857295ec8e9e661d5beb8a21774430 (patch)
tree41042be0d1a47293a251df36efe00df1ca635d3e
parent81d5ee692be4b4814a957443cb93fbb6c09c830d (diff)
downloadorg.eclipse.mylyn.tasks-e2ba560778857295ec8e9e661d5beb8a21774430.tar.gz
org.eclipse.mylyn.tasks-e2ba560778857295ec8e9e661d5beb8a21774430.tar.xz
org.eclipse.mylyn.tasks-e2ba560778857295ec8e9e661d5beb8a21774430.zip
This commit was manufactured by cvs2svn to create branch 'e_3_2'.
Sprout from master 2006-09-30 04:03:57 UTC mkersten 'Version update' Cherrypick from master 2006-10-10 18:34:44 UTC relves 'Progress on: 160117: "Mark read" on bugzilla query does not mark query hits read': org.eclipse.mylyn.bugzilla.core/build.properties org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryTasksAction.java Delete: org.eclipse.mylyn.bugzilla.core/.classpath org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCorePlugin.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaException.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaOfflineTaskHandler.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaQueryHit.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryQuery.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaServerFacade.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTask.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/PossibleBugzillaFailureException.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryQueryResultsFactory.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugzillaQueryContentHandler.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/UnrecognizedReponseException.java org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchDialogTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskDataMigrationTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskListManagerTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTestUtil.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/DuplicateDetetionTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/EncodingTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/NewBugWizardTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryEditorWizardTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryReportFactoryTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryTaskHandleTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListNotificationManagerTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListStandaloneTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskReportGeneratorTest.java org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/headless/BugzillaQueryTest.java org.eclipse.mylyn.bugzilla.tests/testdata/configuration/rdfconfig218.txt org.eclipse.mylyn.bugzilla.ui/.classpath org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF org.eclipse.mylyn.bugzilla.ui/plugin.xml org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaAuthenticator.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaResultMatchAdapter.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUiPlugin.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugSubmissionHandler.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditor.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditorInput.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugzillaTaskEditor.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/IBugzillaResultEditorMatchAdapter.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaReportEditorFactory.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryUi.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditorInput.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java org.eclipse.mylyn.help.ui/.classpath org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.ui.prefs org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF org.eclipse.mylyn.help.ui/doc/context.html org.eclipse.mylyn.help.ui/doc/contributing.html org.eclipse.mylyn.help.ui/doc/dev/changes.html org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsd org.eclipse.mylyn.help.ui/doc/dev/index.html org.eclipse.mylyn.help.ui/doc/dev/model.vsd org.eclipse.mylyn.help.ui/doc/dev/plan.html org.eclipse.mylyn.help.ui/doc/faq.html org.eclipse.mylyn.help.ui/doc/images/0.3/active-hierarchy.gif org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-linked.gif org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-manipulation.gif org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-qualify.gif org.eclipse.mylyn.help.ui/doc/images/0.3/active-search.gif org.eclipse.mylyn.help.ui/doc/images/0.3/alt-click.gif org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-hyperlink.gif org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-internal-browser.gif org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-query-custom.gif org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-synch.gif org.eclipse.mylyn.help.ui/doc/images/0.3/filter-auto-toggle.gif org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-ant.gif org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-declarations.gif org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-exclusion.gif org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-navigator.gif org.eclipse.mylyn.help.ui/doc/images/0.3/folding-toggle.gif org.eclipse.mylyn.help.ui/doc/images/0.3/highlight.gif org.eclipse.mylyn.help.ui/doc/images/0.3/interest-content-assist.gif org.eclipse.mylyn.help.ui/doc/images/0.3/interest-error.gif org.eclipse.mylyn.help.ui/doc/images/0.3/interest-java-browsing.gif org.eclipse.mylyn.help.ui/doc/images/0.3/interest-manipulate.gif org.eclipse.mylyn.help.ui/doc/images/0.3/monitor-enable.gif org.eclipse.mylyn.help.ui/doc/images/0.3/open-type.gif org.eclipse.mylyn.help.ui/doc/images/0.3/overview.gif org.eclipse.mylyn.help.ui/doc/images/0.3/preference-error-interest.gif org.eclipse.mylyn.help.ui/doc/images/0.3/search-context.gif org.eclipse.mylyn.help.ui/doc/images/0.3/task-context-visible.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasklist-actions.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-archive.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-drilldown.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-go-navigation.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-history.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-offline.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-quick-filter.gif org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-reminders.gif org.eclipse.mylyn.help.ui/doc/images/0.3/test-context.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-editor-browser.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-220.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-open-reports.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/context-pause.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-context.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-export.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-popup.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink-editor.gif org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink.gif org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gif org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gif org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gif org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-change-set.gif org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-prefix.gif org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-wizard.gif org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit.gif org.eclipse.mylyn.help.ui/doc/images/0.4.2/problems-hierarchical.gif org.eclipse.mylyn.help.ui/doc/images/0.4.2/tasklist-editors-manage.gif org.eclipse.mylyn.help.ui/doc/images/0.4.3/bugzilla-outline.gif org.eclipse.mylyn.help.ui/doc/images/0.4.3/context-capture-pause-indicator.gif org.eclipse.mylyn.help.ui/doc/images/0.4.3/cvs-resource-history-open.gif org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage-pref.gif org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage.gif org.eclipse.mylyn.help.ui/doc/images/0.4.3/synchronize-change-sets.gif org.eclipse.mylyn.help.ui/doc/images/0.4.4/changeset-addto.gif org.eclipse.mylyn.help.ui/doc/images/0.4.5/taskist-planner.gif org.eclipse.mylyn.help.ui/doc/images/0.4.5/tasklist-drag.gif org.eclipse.mylyn.help.ui/doc/images/0.4.6/tasklist-pastreminder.gif org.eclipse.mylyn.help.ui/doc/images/0.4.7/bugzilla-encoding.gif org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-open-external.gif org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-repositories.gif org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-query.gif org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-select-type.gif org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-import.gif org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-indication-active.gif org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-notification.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gif org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gif org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gif org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gif org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gif org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gif org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gif org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gif org.eclipse.mylyn.help.ui/doc/images/0.5.3/bugzilla-attach.gif org.eclipse.mylyn.help.ui/doc/images/0.5.3/changeset-subclipse.gif org.eclipse.mylyn.help.ui/doc/images/0.5.3/repository-synch.gif org.eclipse.mylyn.help.ui/doc/images/0.5.3/resources-exclusion.gif org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-attachments.gif org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-notifications.gif org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-search.gif org.eclipse.mylyn.help.ui/doc/images/0.6.0/jira-new.gif org.eclipse.mylyn.help.ui/doc/images/0.6.0/perspective-management.gif org.eclipse.mylyn.help.ui/doc/images/0.6.0/task-editor-menu.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-debug.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-prefs-ui-management.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/jira-query.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-create-error-log.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-duplicate-detection.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-editor-hyperlinks.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-add-repository.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-editor-web.gif org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-query.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/attachments-open.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/open-task-dialog.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/package-explorer-hierarchical.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/spell-checking.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/tasklist-restore.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-editor.gif org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-search.gif org.eclipse.mylyn.help.ui/doc/images/0.7.0/bugzilla-attributes.gif org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-editor-improvements.gif org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-mark-unread.gif org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-repository-association.gif org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gif org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gif org.eclipse.mylyn.help.ui/doc/images/faq/changeset-subclipse.gif org.eclipse.mylyn.help.ui/doc/images/faq/changesets-model-based.gif org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gif org.eclipse.mylyn.help.ui/doc/images/faq/eclipse-manage-configuration.gif org.eclipse.mylyn.help.ui/doc/images/faq/filtering-declarations.gif org.eclipse.mylyn.help.ui/doc/images/faq/tasklist-backup.gif org.eclipse.mylyn.help.ui/doc/images/reference/book-allen-gettingThingsDone.gif org.eclipse.mylyn.help.ui/doc/images/reference/book-beck-xp.gif org.eclipse.mylyn.help.ui/doc/images/reference/book-bloch-effectiveJava.gif org.eclipse.mylyn.help.ui/doc/images/reference/book-gamma-eclipse.gif org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-completed.gif org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-notes.gif org.eclipse.mylyn.help.ui/doc/images/tips/icon-task.gif org.eclipse.mylyn.help.ui/doc/integrating.html org.eclipse.mylyn.help.ui/doc/new-0.3.html org.eclipse.mylyn.help.ui/doc/new-0.4.html org.eclipse.mylyn.help.ui/doc/new-0.5.html org.eclipse.mylyn.help.ui/doc/new.html org.eclipse.mylyn.help.ui/doc/overview.html org.eclipse.mylyn.help.ui/doc/tips.html org.eclipse.mylyn.help.ui/doc/toc.xml org.eclipse.mylyn.help.ui/plugin.xml org.eclipse.mylyn.help.ui/src/org/eclipse/mylyn/doc/internal/dialogs/UiLegendDialog.java org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.ui.prefs org.eclipse.mylyn.tasks.core/META-INF/MANIFEST.MF org.eclipse.mylyn.tasks.core/plugin.xml org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlStreamTokenizer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlTag.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryTrustManager.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesContentHandler.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesWriter.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SslProtocolSocketFactory.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebClientUtil.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebTask.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/.AbstractRepositoryTask.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractAttributeFactory.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryTask.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AttributeContainer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IAttachmentHandler.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IOfflineTaskHandler.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryConstants.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListElement.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryAttachment.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskAttribute.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskData.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTemplate.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskComment.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryFilter.java org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.ui.prefs org.eclipse.mylyn.tasks.tests/META-INF/MANIFEST.MF org.eclipse.mylyn.tasks.tests/plugin.xml org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/AllTasksTests.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/BackgroundSaveTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ProjectRepositoryAssociationTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositorySettingsPageTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositoryTaskSynchronizationTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RetrieveTitleFromUrlTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityViewTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataImportTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskKeyComparatorTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListBackupManagerTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDataMigrationTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDnDTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskPlanningEditorTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoriesExternalizerTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/UrlConnectionUtilTest.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockAttributeFactory.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockQueryHit.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryConnector.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryExternalizer.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryTask.java org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryUi.java org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.ui.prefs org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-repository-context.gif org.eclipse.mylyn.tasks.ui/icons/eview16/repositories.gif org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif org.eclipse.mylyn.tasks.ui/plugin.xml org.eclipse.mylyn.tasks.ui/schema/editors.exsd org.eclipse.mylyn.tasks.ui/schema/providers.exsd org.eclipse.mylyn.tasks.ui/schema/repositories.exsd org.eclipse.mylyn.tasks.ui/schema/templates.exsd org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ComboSelectionDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskEditorFactory.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotification.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/MoveToCategoryMenuContributor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OfflineTaskManager.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryAwareStatusHandler.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryTaskDecorator.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RetrieveTitleFromUrlJob.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduledTaskListSynchJob.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskArchiveFilter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskCompletionFilter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListColorsAndFonts.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListImages.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationPopup.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListPreferenceConstants.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskPriorityFilter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskReminderMenuContributor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskStatusMenuContributor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskUiUtil.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksReminderDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CollapseAllAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyDetailsAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyToClipboardAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/EditRepositoryPropertiesAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ExpandAllAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/GoIntoAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskCompleteAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskIncompleteAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskUnreadAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewCategoryAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewLocalTaskAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewRepositoryTaskAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskListElementAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenWithBrowserAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/RemoveFromCategoryAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SaveRemoteFileAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SynchronizeSelectedAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskActivateAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskDeactivateAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskListElementPropertiesAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractBugEditorInput.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ContentOutlineTools.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ExistingBugEditorInput.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/IRepositoryTaskSelection.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/MylarTaskEditor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryAttachmentEditorInput.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlineNode.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlinePage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskSelection.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewer.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SpellingDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorInput.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorUrlHyperlinkDetector.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskFormPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskSpellingReconcileStrategy.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActicityWizardPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/MylarPreferencePage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksPreferencePage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositoryQueryPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositorySearchQuery.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/OpenSearchResultAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResult.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultContentProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterDescription.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterId.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterPriority.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTableContentProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/BackgroundSaveTimer.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportJob.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractMylarFilteredTree.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/DatePicker.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/ResetRepositoryConfigurationAction.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityView.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityViewSorter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskInputDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskKeyComparator.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDragSourceListener.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableLabelProvider.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractEditQueryWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositoryClientWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositorySettingsPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizardPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/InputAttachmentSourcePage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizardDialog.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewLocalCategoryWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewQueryWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/PreviewAttachmentPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryClientPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizardPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizardPage.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListDataMigration.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskTransfer.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/properties/ProjectTaskRepositoryPage.java org.eclipse.mylyn.trac.core/.classpath org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.ui.prefs org.eclipse.mylyn.trac.core/META-INF/MANIFEST.MF org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/AbstractTracClient.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/Trac09Client.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttachmentHandler.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttributeFactory.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientFactory.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientManager.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracCorePlugin.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracException.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracOfflineTaskHandler.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracQueryHit.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryQuery.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTask.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearch.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearchFilter.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracTicket.java org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/util/TracHttpClientTransportFactory.java org.eclipse.mylyn.trac.tests/.classpath org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.ui.prefs org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientRepositoryTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientSearchTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Constants.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientSearchTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracClientFactoryTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracOfflineTaskHandlerTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryHitTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTestPlugin.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTicketTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientSearchTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcTest.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TestFixture.java org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/XmlRpcServer.java org.eclipse.mylyn.trac.ui/.classpath org.eclipse.mylyn.trac.ui/.settings/org.eclipse.jdt.core.prefs org.eclipse.mylyn.trac.ui/META-INF/MANIFEST.MF org.eclipse.mylyn.trac.ui/plugin.xml org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracRepositoryUi.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskExternalizer.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditor.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorInput.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/EditTracQueryWizard.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracCustomQueryPage.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryWizardPage.java org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java
-rw-r--r--org.eclipse.mylyn.bugzilla.core/.classpath16
-rw-r--r--org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF15
-rw-r--r--org.eclipse.mylyn.bugzilla.core/build.properties3
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java134
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java282
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java102
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCorePlugin.java235
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaException.java67
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaOfflineTaskHandler.java208
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaQueryHit.java97
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java125
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java639
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java217
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryQuery.java47
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaServerFacade.java709
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTask.java163
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java188
-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.java176
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/PossibleBugzillaFailureException.java66
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java388
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java63
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryQueryResultsFactory.java38
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java51
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java289
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugzillaQueryContentHandler.java145
-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/UnrecognizedReponseException.java24
-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/src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java147
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java224
-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/BugzillaRepositoryConnectorTest.java576
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchDialogTest.java72
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java110
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskDataMigrationTest.java34
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java133
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskListManagerTest.java237
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java78
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTestUtil.java88
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/DuplicateDetetionTest.java254
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/EncodingTest.java44
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/NewBugWizardTest.java73
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryEditorWizardTest.java156
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryReportFactoryTest.java515
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryTaskHandleTest.java69
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java76
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListNotificationManagerTest.java139
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListStandaloneTest.java151
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskReportGeneratorTest.java190
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/headless/BugzillaQueryTest.java144
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/testdata/configuration/rdfconfig218.txt442
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/.classpath15
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF34
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/plugin.xml153
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaAuthenticator.java58
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java74
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaResultMatchAdapter.java71
-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/BugzillaUiPlugin.java416
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugSubmissionHandler.java173
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java1108
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditor.java543
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditorInput.java42
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugzillaTaskEditor.java100
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java1785
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/IBugzillaResultEditorMatchAdapter.java30
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java135
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaReportEditorFactory.java89
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java239
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryUi.java84
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java58
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java275
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditorInput.java98
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java205
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java45
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java99
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java144
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java546
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java162
-rw-r--r--org.eclipse.mylyn.help.ui/.classpath7
-rw-r--r--org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.core.prefs303
-rw-r--r--org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.ui.prefs5
-rw-r--r--org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF14
-rw-r--r--org.eclipse.mylyn.help.ui/doc/context.html19
-rw-r--r--org.eclipse.mylyn.help.ui/doc/contributing.html216
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/changes.html12395
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsdbin42496 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/index.html20
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/model.vsdbin144384 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/dev/plan.html371
-rw-r--r--org.eclipse.mylyn.help.ui/doc/faq.html11
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/active-hierarchy.gifbin6216 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-linked.gifbin6141 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-manipulation.gifbin14447 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-qualify.gifbin5396 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/active-search.gifbin11276 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/alt-click.gifbin4851 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-hyperlink.gifbin4113 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-internal-browser.gifbin4234 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-query-custom.gifbin5553 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-synch.gifbin9183 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/filter-auto-toggle.gifbin1270 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-ant.gifbin7450 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-declarations.gifbin8520 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-exclusion.gifbin6921 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-navigator.gifbin8071 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/folding-toggle.gifbin5612 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/highlight.gifbin8366 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/interest-content-assist.gifbin5448 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/interest-error.gifbin4373 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/interest-java-browsing.gifbin5722 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/interest-manipulate.gifbin1438 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/monitor-enable.gifbin24782 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/open-type.gifbin14088 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/overview.gifbin75398 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/preference-error-interest.gifbin4798 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/search-context.gifbin3458 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/task-context-visible.gifbin8717 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasklist-actions.gifbin5741 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-archive.gifbin10002 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-drilldown.gifbin5729 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-go-navigation.gifbin2915 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-history.gifbin11482 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-offline.gifbin7069 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-quick-filter.gifbin6083 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-reminders.gifbin5668 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.3/test-context.gifbin18413 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-editor-browser.gifbin23500 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-220.gifbin6968 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-open-reports.gifbin2487 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/context-pause.gifbin8696 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-context.gifbin8729 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-export.gifbin15654 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-popup.gifbin7464 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink-editor.gifbin20089 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink.gifbin10246 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gifbin7895 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gifbin4141 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gifbin12445 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gifbin17872 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-change-set.gifbin11241 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-prefix.gifbin2670 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-wizard.gifbin19073 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit.gifbin3103 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.2/problems-hierarchical.gifbin11273 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.2/tasklist-editors-manage.gifbin6517 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.3/bugzilla-outline.gifbin7428 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.3/context-capture-pause-indicator.gifbin4723 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.3/cvs-resource-history-open.gifbin11207 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage-pref.gifbin1823 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage.gifbin7409 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.3/synchronize-change-sets.gifbin16816 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.4/changeset-addto.gifbin20450 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.5/taskist-planner.gifbin23336 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.5/tasklist-drag.gifbin7324 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.6/tasklist-pastreminder.gifbin18758 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.7/bugzilla-encoding.gifbin2517 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-open-external.gifbin3821 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-repositories.gifbin7517 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-query.gifbin7637 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-select-type.gifbin8775 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-import.gifbin9448 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-indication-active.gifbin5726 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-notification.gifbin3099 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gifbin8954 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gifbin8943 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gifbin11573 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gifbin6499 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gifbin13133 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gifbin3880 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gifbin10298 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gifbin12552 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gifbin13441 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gifbin4296 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gifbin10232 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gifbin8868 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gifbin15495 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gifbin4448 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gifbin9627 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gifbin3263 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gifbin12522 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gifbin10283 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gifbin15052 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gifbin13519 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gifbin7361 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gifbin19255 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.3/bugzilla-attach.gifbin5388 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.3/changeset-subclipse.gifbin6689 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.3/repository-synch.gifbin1341 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.5.3/resources-exclusion.gifbin3238 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-attachments.gifbin17075 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-notifications.gifbin3866 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-search.gifbin24171 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.0/jira-new.gifbin8054 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.0/perspective-management.gifbin4065 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.0/task-editor-menu.gifbin14253 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-debug.gifbin12258 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-prefs-ui-management.gifbin4819 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/jira-query.gifbin27051 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-create-error-log.gifbin12394 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-duplicate-detection.gifbin20215 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-editor-hyperlinks.gifbin12152 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-add-repository.gifbin12809 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-editor-web.gifbin22705 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-query.gifbin21068 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/attachments-open.gifbin7517 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/open-task-dialog.gifbin20360 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/package-explorer-hierarchical.gifbin18275 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/spell-checking.gifbin3608 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/tasklist-restore.gifbin18145 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-editor.gifbin21024 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-search.gifbin33880 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.7.0/bugzilla-attributes.gifbin5296 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-editor-improvements.gifbin6477 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-mark-unread.gifbin6135 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-repository-association.gifbin12132 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/dev/gray.gifbin35 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gifbin76 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gifbin76 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/changeset-subclipse.gifbin6689 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/changesets-model-based.gifbin15052 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gifbin23060 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/eclipse-manage-configuration.gifbin23781 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/filtering-declarations.gifbin8520 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/faq/tasklist-backup.gifbin15084 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/reference/book-allen-gettingThingsDone.gifbin12146 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/reference/book-beck-xp.gifbin11064 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/reference/book-bloch-effectiveJava.gifbin16028 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/reference/book-gamma-eclipse.gifbin17593 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-completed.gifbin333 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-notes.gifbin220 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.help.ui/doc/images/tips/icon-task.gifbin211 -> 0 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-0.5.html616
-rw-r--r--org.eclipse.mylyn.help.ui/doc/new.html443
-rw-r--r--org.eclipse.mylyn.help.ui/doc/overview.html23
-rw-r--r--org.eclipse.mylyn.help.ui/doc/tips.html110
-rw-r--r--org.eclipse.mylyn.help.ui/doc/toc.xml20
-rw-r--r--org.eclipse.mylyn.help.ui/plugin.xml53
-rw-r--r--org.eclipse.mylyn.help.ui/src/org/eclipse/mylyn/doc/internal/dialogs/UiLegendDialog.java139
-rw-r--r--org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.core.prefs303
-rw-r--r--org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.ui.prefs6
-rw-r--r--org.eclipse.mylyn.tasks.core/META-INF/MANIFEST.MF13
-rw-r--r--org.eclipse.mylyn.tasks.core/plugin.xml29
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlStreamTokenizer.java1116
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlTag.java364
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryTrustManager.java58
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesContentHandler.java62
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesWriter.java180
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SslProtocolSocketFactory.java67
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java107
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebClientUtil.java186
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebTask.java57
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/.AbstractRepositoryTask.java169
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractAttributeFactory.java36
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java131
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java225
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java161
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryTask.java169
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java109
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AttributeContainer.java149
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java247
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java197
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java561
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IAttachmentHandler.java40
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IOfflineTaskHandler.java43
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryConstants.java36
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java99
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java43
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListElement.java35
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java74
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java116
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryAttachment.java107
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskAttribute.java216
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskData.java368
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTemplate.java63
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java371
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java46
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskComment.java185
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java532
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java273
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryFilter.java42
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java319
-rw-r--r--org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.core.prefs303
-rw-r--r--org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.ui.prefs5
-rw-r--r--org.eclipse.mylyn.tasks.tests/META-INF/MANIFEST.MF26
-rw-r--r--org.eclipse.mylyn.tasks.tests/plugin.xml20
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/AllTasksTests.java52
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/BackgroundSaveTest.java61
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ProjectRepositoryAssociationTest.java69
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositorySettingsPageTest.java169
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositoryTaskSynchronizationTest.java381
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RetrieveTitleFromUrlTest.java42
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java35
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityViewTest.java535
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java161
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataImportTest.java165
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java256
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskKeyComparatorTest.java64
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListBackupManagerTest.java99
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDataMigrationTest.java108
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDnDTest.java77
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java649
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java300
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskPlanningEditorTest.java120
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoriesExternalizerTest.java90
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java202
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskTest.java48
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/UrlConnectionUtilTest.java34
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockAttributeFactory.java45
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockQueryHit.java45
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryConnector.java104
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryExternalizer.java60
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryTask.java44
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryUi.java56
-rw-r--r--org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.core.prefs303
-rw-r--r--org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.ui.prefs5
-rw-r--r--org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF35
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-repository-context.gifbin111 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/repositories.gifbin365 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gifbin337 -> 0 bytes
-rw-r--r--org.eclipse.mylyn.tasks.ui/plugin.xml617
-rw-r--r--org.eclipse.mylyn.tasks.ui/schema/editors.exsd135
-rw-r--r--org.eclipse.mylyn.tasks.ui/schema/providers.exsd122
-rw-r--r--org.eclipse.mylyn.tasks.ui/schema/repositories.exsd232
-rw-r--r--org.eclipse.mylyn.tasks.ui/schema/templates.exsd187
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ComboSelectionDialog.java109
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskEditorFactory.java37
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotification.java37
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/MoveToCategoryMenuContributor.java68
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OfflineTaskManager.java707
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryAwareStatusHandler.java46
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryTaskDecorator.java101
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RetrieveTitleFromUrlJob.java118
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduledTaskListSynchJob.java143
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskArchiveFilter.java26
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskCompletionFilter.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java211
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListColorsAndFonts.java113
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListImages.java236
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java115
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java215
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationPopup.java206
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java100
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java104
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListPreferenceConstants.java71
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskPriorityFilter.java61
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskReminderMenuContributor.java243
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java247
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskStatusMenuContributor.java43
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskUiUtil.java304
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksReminderDialog.java267
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java44
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryAction.java44
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryTasksAction.java16
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskAction.java72
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java52
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java68
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java49
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CollapseAllAction.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyDetailsAction.java86
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyToClipboardAction.java56
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteAction.java100
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java100
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/EditRepositoryPropertiesAction.java76
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ExpandAllAction.java42
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/GoIntoAction.java60
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskCompleteAction.java63
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskIncompleteAction.java62
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskUnreadAction.java50
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewCategoryAction.java51
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewLocalTaskAction.java104
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java49
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewRepositoryTaskAction.java65
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java87
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskListElementAction.java45
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenWithBrowserAction.java66
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.java64
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/RemoveFromCategoryAction.java82
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SaveRemoteFileAction.java68
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SynchronizeSelectedAction.java181
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskActivateAction.java62
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskDeactivateAction.java50
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskListElementPropertiesAction.java48
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java118
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java254
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractBugEditorInput.java93
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java2250
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditor.java132
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java73
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ContentOutlineTools.java68
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ExistingBugEditorInput.java137
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/IRepositoryTaskSelection.java86
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/MylarTaskEditor.java456
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryAttachmentEditorInput.java134
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlineNode.java333
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlinePage.java176
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskSelection.java171
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewer.java58
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java140
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SpellingDialog.java105
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java330
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorInput.java150
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorUrlHyperlinkDetector.java112
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskFormPage.java675
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java1000
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskSpellingReconcileStrategy.java185
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java92
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java72
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java53
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java95
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActicityWizardPage.java323
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java182
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java855
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java97
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java69
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java59
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java90
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java84
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java130
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/MylarPreferencePage.java41
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksPreferencePage.java597
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositoryQueryPage.java130
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositorySearchQuery.java44
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/OpenSearchResultAction.java75
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResult.java125
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java347
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java129
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultContentProvider.java64
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterDescription.java72
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterId.java75
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterPriority.java86
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTableContentProvider.java93
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/BackgroundSaveTimer.java103
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportJob.java258
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java215
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java585
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java320
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractMylarFilteredTree.java113
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/DatePicker.java281
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/ResetRepositoryConfigurationAction.java86
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java251
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java142
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityView.java636
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityViewSorter.java193
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java235
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskInputDialog.java291
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskKeyComparator.java58
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java258
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDragSourceListener.java86
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java240
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java83
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableLabelProvider.java185
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java94
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java404
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java1599
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java192
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java29
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractEditQueryWizard.java59
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositoryClientWizard.java72
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositorySettingsPage.java542
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java49
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java125
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizard.java87
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizardPage.java90
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizard.java92
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java154
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java93
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java81
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/InputAttachmentSourcePage.java600
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentPage.java270
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizard.java250
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizardDialog.java41
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewLocalCategoryWizard.java38
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewQueryWizard.java49
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskPage.java37
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java36
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java58
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskPage.java43
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskWizard.java61
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/PreviewAttachmentPage.java210
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryClientPage.java107
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryPage.java267
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java368
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizardPage.java296
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java490
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizardPage.java469
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java90
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java482
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java118
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java183
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListDataMigration.java260
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java816
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskTransfer.java105
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java962
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/properties/ProjectTaskRepositoryPage.java174
-rw-r--r--org.eclipse.mylyn.trac.core/.classpath7
-rw-r--r--org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.core.prefs256
-rw-r--r--org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.ui.prefs6
-rw-r--r--org.eclipse.mylyn.trac.core/META-INF/MANIFEST.MF16
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/AbstractTracClient.java132
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java161
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/Trac09Client.java478
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttachmentHandler.java118
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttributeFactory.java136
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientFactory.java65
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientManager.java141
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracCorePlugin.java117
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracException.java38
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracOfflineTaskHandler.java275
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracQueryHit.java81
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java239
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryQuery.java88
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTask.java183
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java449
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearch.java150
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearchFilter.java108
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracTicket.java225
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/util/TracHttpClientTransportFactory.java234
-rw-r--r--org.eclipse.mylyn.trac.tests/.classpath7
-rw-r--r--org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.core.prefs256
-rw-r--r--org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.ui.prefs5
-rw-r--r--org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF19
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientRepositoryTest.java72
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientSearchTest.java144
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientTest.java70
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java49
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Constants.java29
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java91
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientSearchTest.java25
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientTest.java67
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java153
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracClientFactoryTest.java90
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracOfflineTaskHandlerTest.java136
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryHitTest.java38
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java37
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java311
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java74
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTestPlugin.java52
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTicketTest.java69
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientSearchTest.java46
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientTest.java71
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcTest.java501
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TestFixture.java97
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/XmlRpcServer.java366
-rw-r--r--org.eclipse.mylyn.trac.ui/.classpath7
-rw-r--r--org.eclipse.mylyn.trac.ui/.settings/org.eclipse.jdt.core.prefs256
-rw-r--r--org.eclipse.mylyn.trac.ui/META-INF/MANIFEST.MF20
-rw-r--r--org.eclipse.mylyn.trac.ui/plugin.xml38
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracRepositoryUi.java70
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskExternalizer.java229
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java68
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditor.java219
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java74
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorInput.java34
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/EditTracQueryWizard.java61
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracCustomQueryPage.java599
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryWizardPage.java445
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java225
562 files changed, 10 insertions, 87961 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/.classpath b/org.eclipse.mylyn.bugzilla.core/.classpath
deleted file mode 100644
index 804790513..000000000
--- a/org.eclipse.mylyn.bugzilla.core/.classpath
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
- <accessrules>
- <accessrule kind="nonaccessible" pattern="com/sun/**"/>
- </accessrules>
- </classpathentry>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF
deleted file mode 100644
index 9c1e10c03..000000000
--- a/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Bugzilla Connector Core Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.bugzilla.core; singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Activator: org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.mylar.context.core,
- org.eclipse.mylar.tasks.core
-Eclipse-AutoStart: true
-Bundle-Vendor: Eclipse.org
-Bundle-ClassPath: .
-Export-Package: org.eclipse.mylar.internal.bugzilla.core
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.bugzilla.core/build.properties b/org.eclipse.mylyn.bugzilla.core/build.properties
index 1d9c8fb20..9875d8666 100644
--- a/org.eclipse.mylyn.bugzilla.core/build.properties
+++ b/org.eclipse.mylyn.bugzilla.core/build.properties
@@ -1,6 +1,7 @@
bin.includes = META-INF/,\
about.html,\
- .
+ .,\
+ plugin.xml
src.includes = src/,\
META-INF/,\
about.html
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
deleted file mode 100644
index 70ea6a5c8..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java
+++ /dev/null
@@ -1,134 +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.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.security.GeneralSecurityException;
-import java.util.zip.GZIPInputStream;
-
-import javax.security.auth.login.LoginException;
-
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-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 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;
-
- /** expects rdf returned from repository (ctype=rdf in url)
- * @throws GeneralSecurityException */
- protected void collectResults(URL url, Proxy proxySettings, String characterEncoding,
- DefaultHandler contentHandler, boolean clean) throws IOException, BugzillaException, GeneralSecurityException {
-
- HttpURLConnection connection = WebClientUtil.openUrlConnection(url, proxySettings, false);
- try {
- 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);
- }
-
- BufferedReader in = null;
-
- String contentEncoding = connection.getContentEncoding();
- boolean gzipped = contentEncoding != null && WebClientUtil.ENCODING_GZIP.equals(contentEncoding);
- if (characterEncoding != null) {
- if (gzipped) {
- in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connection.getInputStream()),
- characterEncoding));
- } else {
- in = new BufferedReader(new InputStreamReader(connection.getInputStream(), characterEncoding));
- }
- } else {
- if (gzipped) {
- in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connection.getInputStream())));
- } 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)) {
- BugzillaServerFacade.parseHtmlError(in);
- } else {
- throw new IOException("Unrecognized content type: " + connection.getContentType());
- }
- } finally {
- if (connection != null) {
- connection.disconnect();
- }
- }
- }
-}
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
deleted file mode 100644
index cb31acfc1..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java
+++ /dev/null
@@ -1,282 +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.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.Proxy;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.security.auth.login.LoginException;
-
-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.tasks.core.WebClientUtil;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.LocalAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class BugzillaAttachmentHandler implements IAttachmentHandler {
-
- private static final int CONNECT_TIMEOUT = 5000;
-
- private static final String CHANGES_SUBMITTED = "Changes Submitted";
-
- 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,
- RepositoryAttachment attachment, File file, Proxy proxySettings) throws CoreException {
- try {
- downloadAttachment(repository.getUrl(), repository.getUserName(), repository.getPassword(), proxySettings,
- attachment.getId(), file, true);
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.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 {
- int bugId = Integer.parseInt(AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()));
- uploadAttachment(repository.getUrl(), repository.getUserName(), repository.getPassword(), bugId, comment,
- description, file, contentType, isPatch, proxySettings);
- // } catch (Exception e) {
- // throw new CoreException(new Status(IStatus.ERROR,
- // BugzillaCorePlugin.PLUGIN_ID, 0, "could not upload", 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 CoreException {
-
- // 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;
-
- // Protocol.registerProtocol("https", new Protocol("https", new
- // TrustAllSslProtocolSocketFactory(), 443));
- HttpClient client = new HttpClient();
- WebClientUtil.setupHttpClient(client, proxySettings, repositoryUrl);
- PostMethod postMethod = new PostMethod(WebClientUtil.getRequestPath(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(CONNECT_TIMEOUT);
- int status = client.executeMethod(postMethod);
- if (status == HttpStatus.SC_OK) {
- InputStreamReader reader = new InputStreamReader(postMethod.getResponseBodyAsStream(), postMethod
- .getResponseCharSet());
- BufferedReader bufferedReader = new BufferedReader(reader);
-
- BugzillaServerFacade.parseHtmlError(bufferedReader);
-
- } else {
- uploadResult = false;
- throw new CoreException(new Status(Status.OK, BugzillaCorePlugin.PLUGIN_ID, Status.ERROR,
- "Communication error occurred during upload. \n\n" + HttpStatus.getStatusText(status), null));
- }
-
- } catch (LoginException e) {
- throw new CoreException(new Status(Status.OK, BugzillaCorePlugin.PLUGIN_ID, Status.ERROR,
- "Your login name or password is incorrect. Ensure proper repository configuration.", e));
- } catch (IOException e) {
- throw new CoreException(new Status(Status.OK, BugzillaCorePlugin.PLUGIN_ID, Status.ERROR,
- "Check repository credentials and connectivity.", e));
- } catch (UnrecognizedReponseException e) {
- if (e.getMessage().indexOf(CHANGES_SUBMITTED) > -1) {
- return true;
- }
- throw new CoreException(new Status(Status.OK, BugzillaCorePlugin.PLUGIN_ID, Status.INFO,
- "Response from server", e));
- } catch (BugzillaException e) {
- String message = e.getMessage();
- throw new CoreException(new Status(Status.OK, BugzillaCorePlugin.PLUGIN_ID, Status.ERROR,
- "Bugzilla could not post your bug. \n\n" + message, e));
- } finally {
- postMethod.releaseConnection();
- }
-
- return uploadResult;
- }
-
- public boolean uploadAttachment(LocalAttachment attachment, String uname, String password, Proxy proxySettings)
- throws CoreException {
-
- File file = new File(attachment.getFilePath());
- if (!file.exists() || file.length() <= 0) {
- return false;
- }
-
- return uploadAttachment(attachment.getReport().getRepositoryUrl(), uname, password, Integer.parseInt(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 = BugzillaServerFacade.addCredentials(url, userName, password);
- URL downloadUrl = new URL(url);
- URLConnection connection = WebClientUtil.openUrlConnection(downloadUrl, proxySettings, false);
- 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) {
- BugzillaCorePlugin.log(new Status(IStatus.ERROR, BugzillaCorePlugin.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();
- }
- }
-
- public boolean canDownloadAttachment(TaskRepository repository, AbstractRepositoryTask task) {
- return true;
- }
-
- public boolean canUploadAttachment(TaskRepository repository, AbstractRepositoryTask task) {
- return true;
- }
-
- public boolean canDeprecate(TaskRepository repository, RepositoryAttachment attachment) {
- return false;
- }
-
- public void updateAttachment(TaskRepository repository, RepositoryAttachment attachment) throws CoreException {
- // implement
- }
-}
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
deleted file mode 100644
index 45ad1161b..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java
+++ /dev/null
@@ -1,102 +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.bugzilla.core;
-
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-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();
- } else if (key.equals(RepositoryTaskAttribute.ADD_SELF_CC)) {
- return BugzillaReportElement.ADDSELFCC.getKeyString();
- } else if (key.equals(RepositoryTaskAttribute.PRIORITY)) {
- return BugzillaReportElement.PRIORITY.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/BugzillaCorePlugin.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCorePlugin.java
deleted file mode 100644
index 4824d516a..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCorePlugin.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*******************************************************************************
- * 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.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.net.Proxy;
-import java.security.GeneralSecurityException;
-import java.util.HashMap;
-import java.util.Map;
-
-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 plug-in class to be used in the desktop.
- *
- * @author Mik Kersten (added support for multiple repositories)
- */
-public class BugzillaCorePlugin extends Plugin {
-
- private static final String ERROR_DELETING_CONFIGURATION = "Error removing corrupt repository configuration file.";
-
- 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";
-
- private static BugzillaCorePlugin INSTANCE;
-
- private static boolean cacheFileRead = false;
-
- private static File repositoryConfigurationFile = null;
-
- /** Product configuration for the current server */
- private static Map<String, RepositoryConfiguration> repositoryConfigurations = new HashMap<String, RepositoryConfiguration>();
-
- public BugzillaCorePlugin() {
- super();
- }
-
- public static BugzillaCorePlugin getDefault() {
- return INSTANCE;
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- INSTANCE = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- if (!repositoryConfigurations.isEmpty()) {
- writeRepositoryConfigFile();
- }
- INSTANCE = null;
- super.stop(context);
- }
-
- /**
- * for testing purposes
- */
- public static RepositoryConfiguration getRepositoryConfiguration(String repositoryUrl) {
- return repositoryConfigurations.get(repositoryUrl);
- }
-
- public static void setConfigurationCacheFile(File file) {
- repositoryConfigurationFile = file;
- }
-
- /**
- * Retrieves the latest repository configuration from the server
- *
- * @throws BugzillaException
- * @throws GeneralSecurityException
- * @throws
- */
- public static RepositoryConfiguration getRepositoryConfiguration(boolean forceRefresh, String repositoryUrl,
- Proxy proxySettings, String userName, String password, String encoding) throws IOException,
- BugzillaException, GeneralSecurityException {
- if (!cacheFileRead) {
- readRepositoryConfigurationFile();
- cacheFileRead = true;
- }
- if (repositoryConfigurations.get(repositoryUrl) == null || forceRefresh) {
- RepositoryConfigurationFactory configFactory = new RepositoryConfigurationFactory();
- addRepositoryConfiguration(configFactory.getConfiguration(repositoryUrl, proxySettings, userName, password,
- encoding));
- }
- return repositoryConfigurations.get(repositoryUrl);
- }
-
- /** public for testing */
- public static void addRepositoryConfiguration(RepositoryConfiguration config) {
- repositoryConfigurations.remove(config.getRepositoryUrl());
- repositoryConfigurations.put(config.getRepositoryUrl(), config);
- }
-
- // /**
- // * Returns the path to the file cacheing the product configuration.
- // */
- // private static IPath getProductConfigurationCachePath() {
- // IPath stateLocation =
- // Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle());
- // IPath configFile = stateLocation.append("repositoryConfigurations");
- // return configFile;
- // }
-
- /** public for testing */
- public void removeConfiguration(RepositoryConfiguration config) {
- repositoryConfigurations.remove(config.getRepositoryUrl());
- }
-
- /** public for testing */
- public static void readRepositoryConfigurationFile() {
- // IPath configFile = getProductConfigurationCachePath();
- if (repositoryConfigurationFile == null || !repositoryConfigurationFile.exists())
- return;
- ObjectInputStream in = null;
- try {
- in = new ObjectInputStream(new FileInputStream(repositoryConfigurationFile));
- int size = in.readInt();
- for (int nX = 0; nX < size; nX++) {
- RepositoryConfiguration item = (RepositoryConfiguration) in.readObject();
- if (item != null) {
- repositoryConfigurations.put(item.getRepositoryUrl(), item);
- }
- }
- } catch (Exception e) {
- log(e);
- try {
- if (in != null) {
- in.close();
- }
- if (repositoryConfigurationFile != null && repositoryConfigurationFile.exists()) {
- if (repositoryConfigurationFile.delete()) {
- // successfully deleted
- } else {
- log(new Status(Status.ERROR, BugzillaCorePlugin.PLUGIN_ID, 0, ERROR_DELETING_CONFIGURATION, e));
- }
- }
-
- } catch (Exception ex) {
- log(new Status(Status.ERROR, BugzillaCorePlugin.PLUGIN_ID, 0, ERROR_DELETING_CONFIGURATION, e));
- }
- } finally {
- if (in != null) {
- try {
- in.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
-
- /** public for testing */
- public static void writeRepositoryConfigFile() {
- // IPath configFile = getProductConfigurationCachePath();
- if (repositoryConfigurationFile != null) {
- ObjectOutputStream out = null;
- try {
- out = new ObjectOutputStream(new FileOutputStream(repositoryConfigurationFile));
- out.writeInt(repositoryConfigurations.size());
- for (String key : repositoryConfigurations.keySet()) {
- RepositoryConfiguration item = repositoryConfigurations.get(key);
- if (item != null) {
- out.writeObject(item);
- }
- }
- } catch (IOException e) {
- log(e);
- } finally {
- if (out != null) {
- try {
- out.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
- }
-
- /**
- * 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) {
- String message = e.getMessage();
- if (e.getMessage() == null) {
- message = e.getClass().toString();
- }
- log(new Status(Status.ERROR, BugzillaCorePlugin.PLUGIN_ID, 0, message, e));
- }
-
- /**
- * Returns the path to the file caching bug reports created while offline.
- */
- protected IPath getCachedBugReportPath() {
- IPath stateLocation = Platform.getStateLocation(BugzillaCorePlugin.getDefault().getBundle());
- IPath bugFile = stateLocation.append("bugReports");
- return bugFile;
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaException.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaException.java
deleted file mode 100644
index d4806d814..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaException.java
+++ /dev/null
@@ -1,67 +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.bugzilla.core;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-public class BugzillaException extends Exception {
-
- /** Automatically generated serialVersionUID */
- private static final long serialVersionUID = 3257849887386449974L;
-
- private Throwable cause;
-
- /**
- * Constructor for BugzillaException.
- */
- public BugzillaException() {
- super();
- }
-
- /**
- * Constructor for BugzillaException.
- *
- * @param detailMessage
- */
- public BugzillaException(String detailMessage) {
- super(detailMessage);
- }
-
- public BugzillaException(String detailMessage, Throwable cause) {
- super(detailMessage);
- this.cause = cause;
- }
-
- public BugzillaException(Throwable cause) {
- this.cause = cause;
- }
-
- @Override
- public synchronized void printStackTrace(PrintStream err) {
- super.printStackTrace(err);
- if (cause != null) {
- err.println("\n--- Cause was:");
- cause.printStackTrace(err);
- }
- }
-
- @Override
- public synchronized void printStackTrace(PrintWriter err) {
- super.printStackTrace(err);
- if (cause != null) {
- err.println("\n--- Cause was:");
- cause.printStackTrace(err);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaOfflineTaskHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaOfflineTaskHandler.java
deleted file mode 100644
index de6fc7dd7..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaOfflineTaskHandler.java
+++ /dev/null
@@ -1,208 +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.bugzilla.core;
-
-import java.io.FileNotFoundException;
-import java.io.UnsupportedEncodingException;
-import java.net.Proxy;
-import java.net.URLEncoder;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class BugzillaOfflineTaskHandler implements IOfflineTaskHandler {
-
- private static final String BUG_ID = "&bug_id=";
-
- private static final int MAX_URL_LENGTH = 2000;
-
- private static final String CHANGED_BUGS_CGI_ENDDATE = "&chfieldto=Now";
-
- private static final String CHANGED_BUGS_CGI_QUERY = "/buglist.cgi?query_format=advanced&chfieldfrom=";
-
- private static final String DATE_FORMAT_1 = "yyyy-MM-dd HH:mm";
-
- private static final String DATE_FORMAT_2 = "yyyy-MM-dd HH:mm:ss";
-
- private static SimpleDateFormat delta_ts_format = new SimpleDateFormat(DATE_FORMAT_2);
-
- private static SimpleDateFormat creation_ts_format = new SimpleDateFormat(DATE_FORMAT_1);
-
- /**
- * public for testing Bugzilla 2.18 uses DATE_FORMAT_1 but later versions
- * use DATE_FORMAT_2 Using lowest common denominator DATE_FORMAT_1
- */
- public static SimpleDateFormat comment_creation_ts_format = new SimpleDateFormat(DATE_FORMAT_1);
-
- private static SimpleDateFormat attachment_creation_ts_format = new SimpleDateFormat(DATE_FORMAT_1);
-
- private AbstractAttributeFactory attributeFactory = new BugzillaAttributeFactory();
-
- private TaskList taskList;
-
- public BugzillaOfflineTaskHandler(TaskList taskList) {
- this.taskList = taskList;
- }
-
- public RepositoryTaskData downloadTaskData(final AbstractRepositoryTask bugzillaTask, TaskRepository repository,
- Proxy proxySettings) throws CoreException {
- try {
- int bugId = Integer.parseInt(AbstractRepositoryTask.getTaskId(bugzillaTask.getHandleIdentifier()));
-
- return BugzillaServerFacade.getBug(repository.getUrl(), repository.getUserName(), repository.getPassword(),
- proxySettings, repository.getCharacterEncoding(), bugId);
- } catch (final UnrecognizedReponseException e) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, 0,
- "Report download failed. Unrecognized response from " + bugzillaTask.getRepositoryUrl() + ".", e));
- } catch (final FileNotFoundException e) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, 0, "Report download from "
- + bugzillaTask.getRepositoryUrl() + " failed. File not found: " + e.getMessage(), e));
- } catch (final Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, 0, "Report download from "
- + bugzillaTask.getRepositoryUrl() + " failed, please see details.", e));
- }
- }
-
- public AbstractAttributeFactory getAttributeFactory() {
- return attributeFactory;
- }
-
- public Date getDateForAttributeType(String attributeKey, String dateString) {
- if (dateString == null || dateString.equals("")) {
- return null;
- }
- try {
- String mappedKey = attributeFactory.mapCommonAttributeKey(attributeKey);
- Date parsedDate = null;
- if (mappedKey.equals(BugzillaReportElement.DELTA_TS.getKeyString())) {
- parsedDate = delta_ts_format.parse(dateString);
- } else if (mappedKey.equals(BugzillaReportElement.CREATION_TS.getKeyString())) {
- parsedDate = creation_ts_format.parse(dateString);
- } else if (mappedKey.equals(BugzillaReportElement.BUG_WHEN.getKeyString())) {
- parsedDate = comment_creation_ts_format.parse(dateString);
- } else if (mappedKey.equals(BugzillaReportElement.DATE.getKeyString())) {
- parsedDate = attachment_creation_ts_format.parse(dateString);
- }
- return parsedDate;
- } catch (Exception e) {
- return null;
- // throw new CoreException(new Status(IStatus.ERROR,
- // BugzillaPlugin.PLUGIN_ID, 0,
- // "Error parsing date string: " + dateString, e));
- }
- }
-
- public Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository,
- Set<AbstractRepositoryTask> tasks, Proxy proxySettings) throws CoreException, UnsupportedEncodingException {
-
- Set<AbstractRepositoryTask> changedTasks = new HashSet<AbstractRepositoryTask>();
-
- if (repository.getSyncTimeStamp() == null) {
- return tasks;
- }
-
- String dateString = repository.getSyncTimeStamp();
- if (dateString == null) {
- dateString = "";
- }
- String urlQueryBase;
- String urlQueryString;
-
- urlQueryBase = repository.getUrl() + CHANGED_BUGS_CGI_QUERY
- + URLEncoder.encode(dateString, repository.getCharacterEncoding()) + CHANGED_BUGS_CGI_ENDDATE;
- // } catch (UnsupportedEncodingException e1) {
- // MylarStatusHandler.log(e1, "Mylar: Check encoding settings in " +
- // TaskRepositoriesView.NAME + ".");
- // urlQueryBase = repository.getUrl() + CHANGED_BUGS_CGI_QUERY +
- // dateString + CHANGED_BUGS_CGI_ENDDATE;
- // }
-
- urlQueryString = new String(urlQueryBase + BUG_ID);
-
- int queryCounter = -1;
- Iterator itr = tasks.iterator();
- while (itr.hasNext()) {
- queryCounter++;
- ITask task = (ITask) itr.next();
- String newurlQueryString = URLEncoder.encode(AbstractRepositoryTask.getTaskId(task.getHandleIdentifier())
- + ",", repository.getCharacterEncoding());
- if ((urlQueryString.length() + newurlQueryString.length() + IBugzillaConstants.CONTENT_TYPE_RDF.length()) > MAX_URL_LENGTH) {
- urlQueryString += IBugzillaConstants.CONTENT_TYPE_RDF;
- queryForChanged(repository, changedTasks, urlQueryString, proxySettings);
- queryCounter = 0;
- urlQueryString = new String(urlQueryBase + BUG_ID);
- urlQueryString += newurlQueryString;
- } else if (!itr.hasNext()) {
- urlQueryString += newurlQueryString;
- urlQueryString += IBugzillaConstants.CONTENT_TYPE_RDF;
- queryForChanged(repository, changedTasks, urlQueryString, proxySettings);
- } else {
- urlQueryString += newurlQueryString;
- }
- }
- return changedTasks;
- }
-
- private void queryForChanged(TaskRepository repository, Set<AbstractRepositoryTask> changedTasks,
- String urlQueryString, Proxy proxySettings) throws UnsupportedEncodingException, CoreException {
- RepositoryQueryResultsFactory queryFactory = new RepositoryQueryResultsFactory();
- QueryHitCollector collector = new QueryHitCollector(taskList);
- if (repository.hasCredentials()) {
- urlQueryString = BugzillaServerFacade.addCredentials(urlQueryString, repository.getUserName(), repository
- .getPassword());
- }
- try {
- queryFactory.performQuery(taskList, repository.getUrl(), collector, urlQueryString, proxySettings,
- AbstractReportFactory.RETURN_ALL_HITS, repository.getCharacterEncoding());
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, IStatus.OK, "failed to perform query", e));
- }
-
- for (AbstractQueryHit hit : collector.getHits()) {
- String handle = AbstractRepositoryTask.getHandle(repository.getUrl(), hit.getId());
- ITask correspondingTask = taskList.getTask(handle);
- if (correspondingTask != null && correspondingTask instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask)correspondingTask;
- // Hack to avoid re-syncing last task from previous synchronization
- // This can be removed once we are getting a query timestamp from the repository rather than
- // using the last modified stamp of the last task modified in the return hits.
- // (or the changeddate field in the hit rdf becomes consistent, currently it doesn't return a proper modified date string)
- if(repositoryTask.getTaskData() != null && repositoryTask.getTaskData().getLastModified().equals(repository.getSyncTimeStamp())) {
- RepositoryTaskData taskData = downloadTaskData(repositoryTask, repository, proxySettings);
- if(taskData != null && taskData.getLastModified().equals(repository.getSyncTimeStamp())) {
- continue;
- }
- }
- changedTasks.add(repositoryTask);
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaQueryHit.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaQueryHit.java
deleted file mode 100644
index ff09e82f7..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaQueryHit.java
+++ /dev/null
@@ -1,97 +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.bugzilla.core;
-
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten (hardening of prototype)
- */
-public class BugzillaQueryHit extends AbstractQueryHit {
-
- private BugzillaTask task;
-
- private String status;
-
- private TaskList taskList;
-
- public BugzillaQueryHit(TaskList tasklist, String description, String priority, String repositoryUrl, String id,
- BugzillaTask task, String status) {
- super(repositoryUrl, description, id);
- super.priority = priority;
- this.taskList = tasklist;
- this.task = task;
- this.status = status;
- }
-
- public BugzillaTask getCorrespondingTask() {
- return task;
- }
-
- public void setCorrespondingTask(AbstractRepositoryTask task) {
- if (task instanceof BugzillaTask) {
- this.task = (BugzillaTask) task;
- }
- }
-
- public String getPriority() {
- if (task != null) {
- return task.getPriority();
- } else {
- return priority;
- }
- }
-
- public String getDescription() {
- // return HtmlStreamTokenizer.unescape(description);
- if (task != null) {
- return task.getDescription();
- } else {
- return description;
- }
- }
-
- public String getUrl() {
- Integer idInt = new Integer(id);
- return BugzillaServerFacade.getBugUrlWithoutLogin(repositoryUrl, idInt);
- }
-
- public AbstractRepositoryTask getOrCreateCorrespondingTask() {
- if (taskList == null)
- return null;
-
- ITask existingTask = taskList.getTask(getHandleIdentifier());
-
- if (existingTask instanceof BugzillaTask) {
- this.task = (BugzillaTask) existingTask;
- } else {
- task = new BugzillaTask(this, true);
- // task.setSyncState(RepositoryTaskSyncState.INCOMING);
- taskList.addTask(task);
- }
- return task;
- }
-
- public boolean isCompleted() {
- if (status != null
- && (status.startsWith("RESO") || status.startsWith("CLO") || status.startsWith("VERI") || status
- .startsWith("FIXED"))) {
- return true;
- }
- return false;
- }
-
-}
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
deleted file mode 100644
index aa53580b2..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java
+++ /dev/null
@@ -1,125 +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.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
- ACTUAL_TIME ("Hours Worked:", "actual_time", true),
- ADD_COMMENT ("Additional Comments:", "comment", true, false),
- ASSIGNED_TO ("Assigned to:", "assigned_to", true, true),
- ATTACHID ("attachid", "attachid"),
- ATTACHMENT ("attachment", "attachment"),
- BLOCKED ("Bug blocks:", "blocked", true, false),
- 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", true, 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"),
- DEADLINE ("Deadline:", "deadline", true, true),
- DELTA_TS ("Last Modification", "delta_ts", true),
- DEPENDSON ("Bug depends on:", "dependson", true, false),
- DESC ("desc", "desc", false, true),
- EVERCONFIRMED ("everconfirmed", "everconfirmed", true),
- ESTIMATED_TIME ("Estimated Time:", "estimated_time", true),
- FILENAME ("filename", "filename"),
- IS_OBSOLETE ("Obsolete", "isobsolete", true),
- IS_PATCH("Patch", "ispatch", 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, false),
- PRODUCT ("Product:", "product", false),
- REP_PLATFORM ("Platform:", "rep_platform", false),
- REPORTER ("Reporter:", "reporter", true, true),
- REPORTER_ACCESSIBLE ("reporter_accessible", "reporter_accessible", true),
- RESOLUTION ("Resolution:", "resolution", false, true), // Exiting bug field, new cc
- REMAINING_TIME( "Hours Left:", "remaining_time", true),
- SHORT_DESC ("Summary:", "short_desc", true),
- TARGET_MILESTONE ("Target milestone:", "target_milestone", false),
- THETEXT ("thetext", "thetext", false, true),
- TYPE ("type", "type"),
- UNKNOWN ("UNKNOWN", "UNKNOWN"),
- VERSION ("Version:", "version", false),
- VOTES ("Votes:", "votes", true, true),
- WORK_TIME("Add Time:", "work_time", true, false),
- 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
deleted file mode 100644
index 1f02a2775..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/*******************************************************************************
- * 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.URLEncoder;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.text.ParseException;
-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.Status;
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.internal.tasks.core.HtmlTag;
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer.Token;
-import org.eclipse.mylar.tasks.core.RepositoryOperation;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-
-/**
- *
- * @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";
-
- // TODO change to BugzillaReportElement.ADD_COMMENT
- 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 ";
-
- /** 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;
-
- private RepositoryTaskData taskData = null;
-
- private boolean isNewBugPost = false;
-
- public BugzillaReportSubmitForm(String charEncoding) {
- charset = charEncoding;
- }
-
- public static BugzillaReportSubmitForm makeNewBugPost(String repositoryUrl, String userName, String password,
- Proxy proxySettings, String characterEncoding, RepositoryTaskData model, boolean wrapDescription)
- throws UnsupportedEncodingException {
-
- BugzillaReportSubmitForm form;
-
- if (characterEncoding != null) {
- form = new BugzillaReportSubmitForm(characterEncoding);
- } else {
- form = new BugzillaReportSubmitForm(BugzillaCorePlugin.ENCODING_UTF_8);
- }
-
- form.setTaskData(model);
-
- 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());
- }
-
- form.setNewBugPost(true);
-
- return form;
- }
-
- /**
- * TODO: refactor common stuff with new bug post
- *
- * @param removeCC
- * @param characterEncoding
- * TODO
- *
- * @throws UnsupportedEncodingException
- */
- public static BugzillaReportSubmitForm makeExistingBugPost(RepositoryTaskData model, String repositoryUrl,
- String userName, String password, Proxy proxySettings, Set<String> removeCC, String characterEncoding)
- throws UnsupportedEncodingException {
-
- BugzillaReportSubmitForm form;
-
- if (characterEncoding != null) {
- form = new BugzillaReportSubmitForm(characterEncoding);
- } else {
- form = new BugzillaReportSubmitForm(BugzillaCorePlugin.ENCODING_UTF_8);
- }
-
- form.setTaskData(model);
-
- // setDefaultCCValue(bug, userName);
- setConnectionsSettings(form, repositoryUrl, userName, password, proxySettings, PROCESS_BUG_CGI);
-
- // go through all of the attributes and add them to the bug post
- for (Iterator<RepositoryTaskAttribute> it = model.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
- form.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());
- String value = a.getValue();
-
- // Strip off timezone information
- // 149513: Constant bugzilla mid-air collisions
- if (a.getID().equals(BugzillaReportElement.DELTA_TS.getKeyString()) && value != null) {
- value = stripTimeZone(value);
- }
- form.add(a.getID(), value);
- }
- }
-
- form.add("cc", "somewhere@nowhere.com");
-
- // when posting the bug id is encoded in a hidden field named 'id'
- form.add(KEY_ID, model.getAttributeValue(BugzillaReportElement.BUG_ID.getKeyString()));
-
- // add the operation to the bug post
- RepositoryOperation o = model.getSelectedOperation();
- if (o == null)
- form.add(KEY_KNOB, VAL_NONE);
- else {
- form.add(KEY_KNOB, o.getKnobName());
- if (o.hasOptions()) {
- String sel = o.getOptionValue(o.getOptionSelection());
- form.add(o.getOptionName(), sel);
- } else if (o.isInput()) {
- String sel = o.getInputValue();
- form.add(o.getInputName(), sel);
- }
- }
- form.add(KEY_FORM_NAME, VAL_PROCESS_BUG);
-
- if (model.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString()) != null) {
- form.add(KEY_SHORT_DESC, model.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- .getValue());
- }
-
- if (model.getNewComment().length() != 0) {
- form.add(KEY_COMMENT, model.getNewComment());
- }
-
- if (removeCC != null && removeCC.size() > 0) {
- String[] s = new String[removeCC.size()];
- form.add(KEY_CC, toCommaSeparatedList(removeCC.toArray(s)));
- form.add(KEY_REMOVECC, VAL_TRUE);
- }
-
- return form;
- }
-
-
- public static String stripTimeZone(String longTime) {
- String result = longTime;
- if (longTime != null) {
- String[] values = longTime.split(" ");
- if (values != null && values.length > 2) {
- result = values[0] + " " + values[1];
- }
- }
- return result;
- }
-
- 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 GeneralSecurityException
- */
- public String submitReportToRepository() throws IOException, BugzillaException, PossibleBugzillaFailureException, GeneralSecurityException {
- BufferedOutputStream out = null;
- BufferedReader in = null;
- String result = null;
- try {
- // connect to the bugzilla server
- HttpURLConnection postConnection = WebClientUtil.getUrlConnection(postUrl, proxySettings, false);
-
- // 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
-
- // System.err.println(">>> "+getPostBody());
- 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()));
- in.mark(10);
- HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(in, null);
-
- boolean existingBugPosted = false;
- boolean isTitle = false;
- String title = "";
- 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 (!isNewBugPost
- && (title.toLowerCase().matches(".*bug\\s+processed.*") || title.toLowerCase().matches(
- ".*defect\\s+processed.*"))) {
- existingBugPosted = true;
- } else if (isNewBugPost && prefix != null && prefix2 != null && postfix != null
- && postfix2 != null && result == null) {
- int startIndex = -1;
- int startIndexPrefix = title.toLowerCase().indexOf(prefix.toLowerCase());
- int startIndexPrefix2 = title.toLowerCase().indexOf(prefix2.toLowerCase());
-
- if (startIndexPrefix != -1 || startIndexPrefix2 != -1) {
- if (startIndexPrefix != -1) {
- startIndex = startIndexPrefix + prefix.length();
- } else {
- startIndex = startIndexPrefix2 + prefix2.length();
- }
- int stopIndex = title.toLowerCase().indexOf(postfix.toLowerCase(), startIndex);
- if (stopIndex == -1)
- stopIndex = title.toLowerCase().indexOf(postfix2.toLowerCase(), startIndex);
- if (stopIndex > -1) {
- result = (title.substring(startIndex, stopIndex)).trim();
- }
- }
- }
- break;
- }
- }
- }
-
- if ((!isNewBugPost && existingBugPosted != true) || (isNewBugPost && result == null)) {
- in.reset();
- BugzillaServerFacade.parseHtmlError(in);
- }
- } 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);
- } catch (ParseException e) {
- throw new IOException("Could not parse response from server.");
- } finally {
- try {
- if (in != null)
- in.close();
- if (out != null)
- out.close();
-
- } catch (IOException e) {
- BugzillaCorePlugin.log(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, IStatus.ERROR,
- "Problem posting the bug", 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;
- }
- }
-
- public boolean isNewBugPost() {
- return isNewBugPost;
- }
-
- public void setNewBugPost(boolean isNewBugPost) {
- this.isNewBugPost = isNewBugPost;
- }
-
- public RepositoryTaskData getTaskData() {
- return taskData;
- }
-
- public void setTaskData(RepositoryTaskData taskData) {
- this.taskData = taskData;
- }
-
-
- public void setProxySettings(Proxy proxySettings) {
- this.proxySettings = proxySettings;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java
deleted file mode 100644
index 55b59c82c..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryConnector.java
+++ /dev/null
@@ -1,217 +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.bugzilla.core;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.Proxy;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BugzillaServerVersion;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class BugzillaRepositoryConnector extends AbstractRepositoryConnector {
-
- private static final String CLIENT_LABEL = "Bugzilla (supports uncustomized 2.18-2.22)";
-
- private BugzillaAttachmentHandler attachmentHandler = new BugzillaAttachmentHandler();
-
- private BugzillaOfflineTaskHandler offlineHandler;
-
- private boolean forceSynchExecForTesting = false;
-
- public void init(TaskList taskList) {
- super.init(taskList);
- this.offlineHandler = new BugzillaOfflineTaskHandler(taskList);
- }
-
- public String getLabel() {
- return CLIENT_LABEL;
- }
-
- @Override
- public IAttachmentHandler getAttachmentHandler() {
- return attachmentHandler;
- }
-
- @Override
- public IOfflineTaskHandler getOfflineTaskHandler() {
- return offlineHandler;
- }
-
- public String getRepositoryType() {
- return BugzillaCorePlugin.REPOSITORY_KIND;
- }
-
- public ITask createTaskFromExistingKey(TaskRepository repository, String id, Proxy proxySettings)
- throws CoreException {
- int bugId = -1;
- try {
- if (id != null) {
- bugId = Integer.parseInt(id);
- } else {
- return null;
- }
- } catch (NumberFormatException nfe) {
- if (!forceSynchExecForTesting) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, IStatus.OK,
- "invalid report id: " + id, nfe));
- // MessageDialog.openInformation(null,
- // TasksUiPlugin.TITLE_DIALOG, "Invalid report id: " + id);
- }
- return null;
- }
-
- String handle = AbstractRepositoryTask.getHandle(repository.getUrl(), bugId);
- ITask task = taskList.getTask(handle);
-
- if (task == null) {
- RepositoryTaskData taskData = null;
- try {
- taskData = BugzillaServerFacade.getBug(repository.getUrl(), repository.getUserName(), repository
- .getPassword(), proxySettings, repository.getCharacterEncoding(), bugId);
- } catch (Throwable e) {
- return null;
- }
- if (taskData != null) {
- task = new BugzillaTask(handle, taskData.getId() + ": " + taskData.getDescription(), true);
- ((BugzillaTask) task).setTaskData(taskData);
- taskList.addTask(task);
- }
- }
- return task;
- }
-
- @Override
- public boolean canCreateTaskFromKey(TaskRepository repository) {
- return true;
- }
-
- @Override
- public boolean canCreateNewTask(TaskRepository repository) {
- return true;
- }
-
- public List<String> getSupportedVersions() {
- if (supportedVersions == null) {
- supportedVersions = new ArrayList<String>();
- for (BugzillaServerVersion version : BugzillaServerVersion.values()) {
- supportedVersions.add(version.toString());
- }
- }
- return supportedVersions;
- }
-
- @Override
- public IStatus performQuery(final AbstractRepositoryQuery query, TaskRepository repository, Proxy proxySettings,
- IProgressMonitor monitor, QueryHitCollector resultCollector) {
-
- IStatus queryStatus = Status.OK_STATUS;
- RepositoryQueryResultsFactory queryFactory = new RepositoryQueryResultsFactory();
- try {
- String queryUrl = query.getUrl();
- queryUrl = queryUrl.concat(IBugzillaConstants.CONTENT_TYPE_RDF);
- if (repository.hasCredentials()) {
- try {
- queryUrl = BugzillaServerFacade.addCredentials(queryUrl, repository.getUserName(), repository
- .getPassword());
- } catch (UnsupportedEncodingException e) {
- // ignore
- }
- }
- queryFactory.performQuery(taskList, repository.getUrl(), resultCollector, queryUrl, proxySettings, query
- .getMaxHits(), repository.getCharacterEncoding());
- } catch (IOException e) {
- queryStatus = new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, Status.ERROR,
- "Check repository credentials and connectivity.", e);
- } catch (BugzillaException e) {
- if (e instanceof UnrecognizedReponseException) {
- queryStatus = new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, Status.INFO,
- "Unrecognized response from server", e);
- } else {
- queryStatus = new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, IStatus.OK,
- "Unable to perform query due to Bugzilla error", e);
- }
- } catch (GeneralSecurityException e) {
- queryStatus = new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, IStatus.OK,
- "Unable to perform query due to repository configuration error", e);
- }
- return queryStatus;
-
- }
-
- public String getRepositoryUrlFromTaskUrl(String url) {
- if (url == null) {
- return null;
- } else {
- int index = url.indexOf(IBugzillaConstants.POST_ARGS_SHOW_BUG);
- if (index != -1) {
- return url.substring(0, index);
- } else {
- return null;
- }
- }
- }
-
- @Override
- public void updateAttributes(final TaskRepository repository, Proxy proxySettings, IProgressMonitor monitor)
- throws CoreException {
- try {
- BugzillaCorePlugin.getRepositoryConfiguration(true, repository.getUrl(), proxySettings, repository
- .getUserName(), repository.getPassword(), repository.getCharacterEncoding());
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.PLUGIN_ID, IStatus.OK,
- "could not update repository configuration", e));
- }
- }
-
- @Override
- public void updateTaskState(AbstractRepositoryTask repositoryTask) {
- // TODO: implement once this is consistent with offline task data
- }
-
- // @Override
- // public boolean validate(TaskRepository repository) {
- // return repository != null;
- // if (!repository.hasCredentials()) {
- // MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- // TasksUiPlugin.TITLE_DIALOG, "Repository missing or does not have
- // credentials set, verify via "
- // + TaskRepositoriesView.NAME + ".");
- // return false;
- // }
- // return true;
- // }
-
- public void setForceSynchExecForTesting(boolean forceSynchExecForTesting) {
- this.forceSynchExecForTesting = forceSynchExecForTesting;
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryQuery.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryQuery.java
deleted file mode 100644
index cc5dd2b26..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryQuery.java
+++ /dev/null
@@ -1,47 +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.bugzilla.core;
-
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-/**
- * @author Shawn Minto
- * @author Mik Kersten
- */
-public class BugzillaRepositoryQuery extends AbstractRepositoryQuery {
-
- private boolean customQuery = false;
-
- public BugzillaRepositoryQuery(String repositoryUrl, String queryUrl, String description, String maxHits, TaskList taskList) {
- super(description, taskList);
- this.url = queryUrl;
- this.repositoryUrl = repositoryUrl;
- try {
- this.maxHits = Integer.parseInt(maxHits);
- } catch (Exception e) {
- this.maxHits = -1;
- }
- }
-
- public String getRepositoryKind() {
- return BugzillaCorePlugin.REPOSITORY_KIND;
- }
-
- public boolean isCustomQuery() {
- return customQuery;
- }
-
- public void setCustomQuery(boolean customQuery) {
- this.customQuery = customQuery;
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaServerFacade.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaServerFacade.java
deleted file mode 100644
index 6084cb444..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaServerFacade.java
+++ /dev/null
@@ -1,709 +0,0 @@
-/*******************************************************************************
- * 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.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.Proxy;
-import java.net.URL;
-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.core.runtime.CoreException;
-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.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.internal.tasks.core.HtmlTag;
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer.Token;
-import org.eclipse.mylar.tasks.core.RepositoryOperation;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class BugzillaServerFacade {
-
- 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 as CLOSED";
-
- private static final String OPERATION_LABEL_VERIFY = "Mark as VERIFIED";
-
- private static final String OPERATION_LABEL_REOPEN = "Reopen bug";
-
- private static final String OPERATION_LABEL_REASSIGN_DEFAULT = "Reassign to default assignee";
-
- private static final String OPERATION_LABEL_REASSIGN = "Reassign to";
-
- private static final String OPERATION_LABEL_DUPLICATE = "Mark as duplicate of #";
-
- private static final String OPERATION_LABEL_RESOLVE = "Resolve as";
-
- private static final String OPERATION_LABEL_ACCEPT = "Accept (change status to ASSIGNED)";
-
- 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, BugzillaException {
-
- // >>> bug 154729
- // MylarStatusHandler.log("Retrieving task data from: " + repositoryUrl,
- // BugzillaServerFacade.class);
-
- RepositoryTaskData bugReport = new RepositoryTaskData(new BugzillaAttributeFactory(),
- BugzillaCorePlugin.REPOSITORY_KIND, repositoryUrl, "" + id);
- setupExistingBugAttributes(repositoryUrl, bugReport);
-
- RepositoryReportFactory reportFactory = new RepositoryReportFactory();
- 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 && userName.length() > 0) && (password != null && password.length() > 0)) {
- url += "&" + IBugzillaConstants.POST_ARGS_LOGIN
- + URLEncoder.encode(userName, BugzillaCorePlugin.ENCODING_UTF_8)
- + IBugzillaConstants.POST_ARGS_PASSWORD
- + URLEncoder.encode(password, BugzillaCorePlugin.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 BugzillaCorePlugin.getRepositoryConfiguration(true, 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: improve and move to repository connector?
- public static void validateCredentials(Proxy proxySettings, String repositoryUrl, String userid, String password)
- throws IOException, BugzillaException, KeyManagementException, GeneralSecurityException {
-
- proxySettings = proxySettings == null ? Proxy.NO_PROXY : proxySettings;
-
- String url = repositoryUrl + "/index.cgi?" + IBugzillaConstants.POST_ARGS_LOGIN
- + URLEncoder.encode(userid, BugzillaCorePlugin.ENCODING_UTF_8) + IBugzillaConstants.POST_ARGS_PASSWORD
- + URLEncoder.encode(password, BugzillaCorePlugin.ENCODING_UTF_8);
-
- URL serverURL = new URL(url);
- HttpURLConnection serverConnection = WebClientUtil.openUrlConnection(serverURL, proxySettings, false);
- BufferedReader in = new BufferedReader(new InputStreamReader(serverConnection.getInputStream()));
- try {
- parseHtmlError(in);
- } catch (UnrecognizedReponseException e) {
- return;
- }
- }
-
- /**
- * Utility method for determining what potential error has occurred from a
- * bugzilla html reponse page
- *
- * @throws CoreException
- */
- public static void parseHtmlError(BufferedReader in) throws IOException, LoginException, BugzillaException {
- HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(in, null);
-
- boolean isTitle = false;
- String title = "";
- String body = "";
-
- try {
-
- for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
- body += token.toString();
- 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("log in") != -1
- || (title.indexOf("invalid") != -1 && title.indexOf("password") != -1)
- || title.indexOf("check e-mail") != -1) {
- throw new LoginException(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD);
- } else if (title.indexOf(IBugzillaConstants.ERROR_MIDAIR_COLLISION) != -1) {
- throw new BugzillaException(IBugzillaConstants.ERROR_MSG_MIDAIR_COLLISION);
- } else if (title.indexOf(IBugzillaConstants.ERROR_COMMENT_REQUIRED) != -1) {
- throw new BugzillaException(IBugzillaConstants.ERROR_MSG_COMMENT_REQUIRED);
- }
- }
- }
- }
-
- throw new UnrecognizedReponseException(body);
-
- } 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
- * @throws BugzillaException
- */
- public static void setupNewBugAttributes(String repositoryUrl, Proxy proxySettings, String userName,
- String password, NewBugzillaReport newReport, String characterEncoding) throws IOException,
- KeyManagementException, GeneralSecurityException, NoSuchAlgorithmException, BugzillaException {
-
- newReport.removeAllAttributes();
-
- RepositoryConfiguration repositoryConfiguration = BugzillaCorePlugin.getRepositoryConfiguration(false,
- repositoryUrl, proxySettings, userName, password, characterEncoding);
-
- RepositoryTaskAttribute a = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.PRODUCT);
- List<String> optionValues = repositoryConfiguration.getProducts();
- Collections.sort(optionValues);
- // for (String option : optionValues) {
- // a.addOptionValue(option, option);
- // }
- a.setValue(newReport.getProduct());
- a.setReadOnly(true);
- newReport.addAttribute(BugzillaReportElement.PRODUCT.getKeyString(), a);
- // attributes.put(a.getName(), a);
-
- a = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.BUG_STATUS);
- optionValues = repositoryConfiguration.getStatusValues();
- for (String option : optionValues) {
- a.addOptionValue(option, option);
- }
- a.setValue(IBugzillaConstants.VALUE_STATUS_NEW);
- newReport.addAttribute(BugzillaReportElement.BUG_STATUS.getKeyString(), a);
- // attributes.put(a.getName(), a);
-
- a = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.VERSION);
- optionValues = repositoryConfiguration.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 = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.COMPONENT);
- optionValues = repositoryConfiguration.getComponents(newReport.getProduct());
- Collections.sort(optionValues);
- for (String option : optionValues) {
- a.addOptionValue(option, option);
- }
- if (optionValues != null && optionValues.size() > 0) {
- a.setValue(optionValues.get(0));
- }
- newReport.addAttribute(BugzillaReportElement.COMPONENT.getKeyString(), a);
-
- a = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.REP_PLATFORM);
- optionValues = repositoryConfiguration.getPlatforms();
- Collections.sort(optionValues);
- for (String option : optionValues) {
- a.addOptionValue(option, option);
- }
- if (optionValues != null && optionValues.size() > 0) {
- a.setValue(optionValues.get(0));
- }
- newReport.addAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString(), a);
- // attributes.put(a.getName(), a);
-
- a = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.OP_SYS);
- optionValues = repositoryConfiguration.getOSs();
- for (String option : optionValues) {
- a.addOptionValue(option, option);
- }
- if (optionValues != null && optionValues.size() > 0) {
- a.setValue(optionValues.get(optionValues.size() - 1));
- }
- newReport.addAttribute(BugzillaReportElement.OP_SYS.getKeyString(), a);
- // attributes.put(a.getName(), a);
-
- a = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.PRIORITY);
- optionValues = repositoryConfiguration.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 = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.BUG_SEVERITY);
- optionValues = repositoryConfiguration.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 = BugzillaServerFacade.makeNewAttribute(BugzillaReportElement.ASSIGNED_TO);
- a.setValue("");
- a.setReadOnly(false);
- newReport.addAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString(), a);
- // attributes.put(a.getName(), a);
-
- a = BugzillaServerFacade.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 }; // BugzillaReportElement.VOTES,
-
- for (BugzillaReportElement element : reportElements) {
- RepositoryTaskAttribute reportAttribute = BugzillaServerFacade.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, GeneralSecurityException, BugzillaException {
- 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 = BugzillaCorePlugin.getRepositoryConfiguration(false, 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 + IBugzillaConstants.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 + IBugzillaConstants.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;
-// }
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTask.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTask.java
deleted file mode 100644
index d1a8afeb7..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTask.java
+++ /dev/null
@@ -1,163 +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
- *******************************************************************************/
-/*
- * Created on 14-Jan-2005
- */
-package org.eclipse.mylar.internal.bugzilla.core;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.TaskComment;
-
-/**
- * @author Mik Kersten
- */
-public class BugzillaTask extends AbstractRepositoryTask {
-
- private static final String COMMENT_FORMAT = "yyyy-MM-dd HH:mm";
-
- private static SimpleDateFormat comment_creation_ts_format = new SimpleDateFormat(COMMENT_FORMAT);
-
- public BugzillaTask(String handle, String label, boolean newTask) {
- super(handle, label, newTask);
- if (newTask) {
- setSyncState(RepositoryTaskSyncState.INCOMING);
- }
- isDirty = false;
- initFromHandle();
- }
-
- public BugzillaTask(BugzillaQueryHit hit, boolean newTask) {
- this(hit.getHandleIdentifier(), hit.getDescription(), newTask);
- setPriority(hit.getPriority());
- initFromHandle();
- }
-
- private void initFromHandle() {
- String id = AbstractRepositoryTask.getTaskId(getHandleIdentifier());
- String repositoryUrl = getRepositoryUrl();
- try {
- String url = BugzillaServerFacade.getBugUrlWithoutLogin(repositoryUrl, Integer.parseInt(id));
- if (url != null) {
- super.setUrl(url);
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Task initialization failed due to malformed id or URL: "
- + getHandleIdentifier(), false);
- }
- }
-
- @Override
- public String getDescription() {
- if (this.isDownloaded() || !super.getDescription().startsWith("<")) {
- return super.getDescription();
- } else {
- if (isSynchronizing()) {
- //return AbstractRepositoryTask.getTaskId(getHandleIdentifier()) + ": <synchronizing>";
- return "<synchronizing>";
- } else {
- //return AbstractRepositoryTask.getTaskId(getHandleIdentifier()) + ": ";
- return "";
- }
- }
- }
-
- public String getTaskType() {
- if (taskData != null && taskData.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()) != null) {
- return taskData.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()).getValue();
- } else {
- return null;
- }
- }
-
- @Override
- public String toString() {
- return "bugzilla report id: " + getHandleIdentifier();
- }
-
- @Override
- public String getUrl() {
- // fix for bug 103537 - should login automatically, but dont want to
- // show the login info in the query string
- try {
- return BugzillaServerFacade.getBugUrlWithoutLogin(getRepositoryUrl(), Integer
- .parseInt(AbstractRepositoryTask.getTaskId(handle)));
- } catch (NumberFormatException nfe) {
- return super.getUrl();
- }
- }
-
- @Override
- public boolean isCompleted() {
- if (taskData != null) {
- if (taskData.getStatus() != null) {
- return taskData.getStatus().equals(IBugzillaConstants.VALUE_STATUS_RESOLVED)
- || taskData.getStatus().equals(IBugzillaConstants.VALUE_STATUS_CLOSED)
- || taskData.getStatus().equals(IBugzillaConstants.VALUE_STATUS_VERIFIED);
- } else {
- return false;
- }
- } else {
- return super.isCompleted();
- }
- }
-
- @Override
- public Date getCompletionDate() {
- try {
- if (taskData != null) {
- if (isCompleted()) {
- // if (taskData.isResolved()) {
- List<TaskComment> taskComments = taskData.getComments();
- if (taskComments != null && !taskComments.isEmpty()) {
- // TODO: fix not to be based on comment
- return comment_creation_ts_format.parse(taskComments.get(taskComments.size() - 1).getCreated());
- // return
- // offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.COMMENT_DATE,
- // (taskComments.get(taskComments.size() -
- // 1).getCreated()));
- }
- }
- }
- } catch (Exception e) {
- //MylarStatusHandler.log(e, "BugzillaTask.getCompletionDate()");
- return null;
- }
- return super.getCompletionDate();
- }
-
- public String getRepositoryKind() {
- return BugzillaCorePlugin.REPOSITORY_KIND;
- }
-
- @Override
- public String getPriority() {
- if (taskData != null && taskData.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()) != null) {
- return taskData.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()).getValue();
- } else {
- return super.getPriority();
- }
- }
-
- @Override
- public String getOwner() {
- if (taskData != null && taskData.getAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString()) != null) {
- return taskData.getAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString()).getValue();
- } else {
- return super.getOwner();
- }
- }
-
-}
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
deleted file mode 100644
index 5349ec131..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * 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
- */
-public interface IBugzillaConstants {
-
- static final String ERROR_MIDAIR_COLLISION = "collision";
-
- static final String ERROR_MSG_MIDAIR_COLLISION = "A mid-air collision has occurred. Please synchronize by selecting Synchronize in the task's context menu.";
-
- static final String ERROR_COMMENT_REQUIRED = "comment required";
-
- static final String ERROR_MSG_COMMENT_REQUIRED = "You have to specify a new comment when making this change. Please comment on the reason for this change.";
-
- 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";
-
- public static final int RETURN_ALL_HITS = -1;
-
- public static final String CONTENT_TYPE_RDF = "&ctype=rdf";
-
- public static final String ATTACHMENT_URL_SUFFIX = "/attachment.cgi?id=";
-
- public static final String BUG_ACTIVITY_URL = "/show_activity.cgi?id=";
-
- public static final String SHOW_VOTES_URL = "/votes.cgi?action=show_bug&bug_id=";
-
- public static final String VOTE_URL = "/votes.cgi?action=show_user&bug_id=";
-
- public static final String DEPENDENCY_TREE_URL = "/showdependencytree.cgi?id=";
-
- public static final String DEPENDENCY_GRAPH_URL = "/showdependencygraph.cgi?id=";
-
- public static final String POST_ARGS_SHOW_BUG = "/show_bug.cgi?id=";
-
- public static final String POST_ARGS_PASSWORD = "&Bugzilla_password=";
-
- public static final String POST_ARGS_LOGIN = "GoAheadAndLogIn=1&Bugzilla_login=";
-
- /** 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 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 REPORT_SUBMIT_ERROR = "Report Submission Error";
-
- 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_STATUS_VERIFIED = "VERIFIED";
-
- 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_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
deleted file mode 100644
index 3abe0f225..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * 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.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.internal.tasks.core.HtmlTag;
-import org.eclipse.mylar.internal.tasks.core.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
deleted file mode 100644
index 009cdd0df..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * 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 org.eclipse.mylar.tasks.core.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, String offlineId) {
- super(new BugzillaAttributeFactory(), BugzillaCorePlugin.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 hasLocalChanges() {
- return true;
- }
-
- /** returns null */
- public String getCreated() {
- return null;
- }
-
- public String getLastModified() {
- return null;
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/PossibleBugzillaFailureException.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/PossibleBugzillaFailureException.java
deleted file mode 100644
index 85aa861e7..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/PossibleBugzillaFailureException.java
+++ /dev/null
@@ -1,66 +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.bugzilla.core;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-public class PossibleBugzillaFailureException extends Exception {
- /** Automatically generated serialVersionUID */
- private static final long serialVersionUID = 3257849887386449974L;
-
- private Throwable cause;
-
- /**
- * Constructor for BugzillaException.
- */
- public PossibleBugzillaFailureException() {
- super();
- }
-
- /**
- * Constructor for BugzillaException.
- *
- * @param detailMessage
- */
- public PossibleBugzillaFailureException(String detailMessage) {
- super(detailMessage);
- }
-
- public PossibleBugzillaFailureException(String detailMessage, Throwable cause) {
- super(detailMessage);
- this.cause = cause;
- }
-
- public PossibleBugzillaFailureException(Throwable cause) {
- this.cause = cause;
- }
-
- @Override
- public synchronized void printStackTrace(PrintStream err) {
- super.printStackTrace(err);
- if (cause != null) {
- err.println("\n--- Cause was:");
- cause.printStackTrace(err);
- }
- }
-
- @Override
- public synchronized void printStackTrace(PrintWriter err) {
- super.printStackTrace(err);
- if (cause != null) {
- err.println("\n--- Cause was:");
- cause.printStackTrace(err);
- }
- }
-
-}
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
deleted file mode 100644
index 8fca72914..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java
+++ /dev/null
@@ -1,388 +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.bugzilla.core;
-
-import java.io.Serializable;
-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 implements Serializable {
-
- private static final long serialVersionUID = -3623617786905114255L;
-
- private static final String VERSION_UNKNOWN = "unknown";
-
- private String repositoryUrl = "<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();
- // ignore
- }
-
- 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 implements Serializable {
-
- private static final long serialVersionUID = 4120139521246741120L;
-
- 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;
- }
-
- public String getRepositoryUrl() {
- return repositoryUrl;
- }
-
- public void setRepositoryUrl(String repositoryUrl) {
- this.repositoryUrl = repositoryUrl;
- }
-
- /*
- * 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
deleted file mode 100644
index f0411a636..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java
+++ /dev/null
@@ -1,63 +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.bugzilla.core;
-
-import java.io.IOException;
-import java.net.Proxy;
-import java.net.URL;
-import java.security.GeneralSecurityException;
-
-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";
-
- public RepositoryConfiguration getConfiguration(String repositoryUrl, Proxy proxySettings, String userName,
- String password, String encoding) throws IOException, BugzillaException, GeneralSecurityException {
- String configUrlStr = repositoryUrl + CONFIG_RDF_URL;
- configUrlStr = BugzillaServerFacade.addCredentials(configUrlStr, userName, password);
- URL url = new URL(configUrlStr);
- SaxConfigurationContentHandler contentHandler = new SaxConfigurationContentHandler();
- collectResults(url, proxySettings, encoding, contentHandler, true);
- RepositoryConfiguration config = contentHandler.getConfiguration();
- if (config != null) {
- config.setRepositoryUrl(repositoryUrl);
- }
- return config;
- }
-
- class SaxErrorHandler implements 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 {
- // ignore
- }
-
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryQueryResultsFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryQueryResultsFactory.java
deleted file mode 100644
index b3015a601..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryQueryResultsFactory.java
+++ /dev/null
@@ -1,38 +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.bugzilla.core;
-
-import java.io.IOException;
-import java.net.Proxy;
-import java.net.URL;
-import java.security.GeneralSecurityException;
-
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-
-/**
- * @author Rob Elves
- */
-public class RepositoryQueryResultsFactory extends AbstractReportFactory {
-
- /** expects rdf returned from repository (ctype=rdf in url)
- * @throws GeneralSecurityException */
- public void performQuery(TaskList taskList, String repositoryUrl, QueryHitCollector collector, String queryUrlString,
- Proxy proxySettings, int maxHits, String characterEncoding) throws IOException, BugzillaException, GeneralSecurityException {
-
- SaxBugzillaQueryContentHandler contentHandler = new SaxBugzillaQueryContentHandler(taskList, repositoryUrl,
- collector, maxHits);
- URL url = new URL(queryUrlString);
- collectResults(url, proxySettings, characterEncoding, contentHandler, false);
- }
-}
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
deleted file mode 100644
index 31cf91a03..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java
+++ /dev/null
@@ -1,51 +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.bugzilla.core;
-
-import java.io.IOException;
-import java.net.Proxy;
-import java.net.URL;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-
-/**
- * Reads bug reports from repository.
- *
- * @author Rob Elves
- */
-public class RepositoryReportFactory extends AbstractReportFactory {
-
- private static BugzillaAttributeFactory bugzillaAttributeFactory = new BugzillaAttributeFactory();
-
- private static final String SHOW_BUG_CGI_XML = "/show_bug.cgi?ctype=xml&id=";
-
- public void populateReport(RepositoryTaskData bugReport, String repositoryUrl, Proxy proxySettings,
- String userName, String password, String characterEncoding) throws GeneralSecurityException, KeyManagementException,
- NoSuchAlgorithmException, IOException, BugzillaException {
-
- SaxBugReportContentHandler contentHandler = new SaxBugReportContentHandler(bugzillaAttributeFactory, bugReport);
-
- String xmlBugReportUrl = repositoryUrl + SHOW_BUG_CGI_XML + bugReport.getId();
- xmlBugReportUrl = BugzillaServerFacade.addCredentials(xmlBugReportUrl, userName, password);
- URL serverURL = new URL(xmlBugReportUrl);
-
- collectResults(serverURL, proxySettings, characterEncoding, contentHandler, false);
-
- if (contentHandler.errorOccurred()) {
- throw new IOException(contentHandler.getErrorMessage());
- }
-
- }
-} \ 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
deleted file mode 100644
index 5497ac5e7..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java
+++ /dev/null
@@ -1,289 +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.bugzilla.core;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-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 TaskComment taskComment;
-
- private final Map<Integer, TaskComment> attachIdToComment = new HashMap<Integer, TaskComment>();
-
- 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:
- taskComment = new TaskComment(attributeFactory, report, commentNum++);
- break;
- case ATTACHMENT:
- attachment = new RepositoryAttachment(attributeFactory);
- if (attributes != null) {
- if ("1".equals(attributes.getValue(BugzillaReportElement.IS_OBSOLETE.getKeyString()))) {
- attachment.addAttribute(BugzillaReportElement.IS_OBSOLETE.getKeyString(), attributeFactory
- .createAttribute(BugzillaReportElement.IS_OBSOLETE.getKeyString()));
- attachment.setObsolete(true);
- }
- if ("1".equals(attributes.getValue(BugzillaReportElement.IS_PATCH.getKeyString()))) {
- attachment.setPatch(true);
- }
- }
- 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().equals(parsedText)) {
- errorMessage = "Requested report number does not match returned report number.";
- }
- } catch (Exception 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 (taskComment != null) {
- RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString());
- attr.setValue(parsedText);
- taskComment.addAttribute(tag.getKeyString(), attr);
- }
- break;
- case THETEXT:
- if (taskComment != null) {
- RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString());
- attr.setValue(parsedText);
- taskComment.addAttribute(tag.getKeyString(), attr);
-
- // Check for attachment
- parseAttachment(taskComment, parsedText);
- }
- break;
- case LONG_DESC:
- if (taskComment != null) {
- report.addComment(taskComment);
- }
- 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.
- // jpound - if data gets stored here, the attachment actions in the
- // task editor
- // should be updated to use this data instead of retrieving from
- // server.
- 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()) {
- TaskComment taskComment = (TaskComment) attachIdToComment.get(attachment.getId());
- if (taskComment != null) {
- attachment.setCreator(taskComment.getAuthor());
- }
- attachment.setAttributeValue(RepositoryTaskAttribute.ATTACHMENT_URL, report.getRepositoryUrl()+IBugzillaConstants.ATTACHMENT_URL_SUFFIX+attachment.getId());
- }
- break;
-
- case BLOCKED:
- case DEPENDSON:
- RepositoryTaskAttribute dependancyAttribute = report.getAttribute(tag.getKeyString());
- if (dependancyAttribute == null) {
- dependancyAttribute = attributeFactory.createAttribute(tag.getKeyString());
- dependancyAttribute.setValue(parsedText);
- report.addAttribute(tag.getKeyString(), dependancyAttribute);
- } else {
- if(dependancyAttribute.getValue().equals("")) {
- dependancyAttribute.setValue(parsedText);
- } else {
- dependancyAttribute.setValue(dependancyAttribute.getValue()+", "+parsedText);
- }
- }
- 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(TaskComment taskComment, 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));
- taskComment.setHasAttachment(true);
- taskComment.setAttachmentId(attachmentID);
- attachIdToComment.put(attachmentID, taskComment);
- }
- } catch (NumberFormatException e) {
- return;
- }
- }
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugzillaQueryContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugzillaQueryContentHandler.java
deleted file mode 100644
index fe70f764b..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugzillaQueryContentHandler.java
+++ /dev/null
@@ -1,145 +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.bugzilla.core;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Parser for RDF bugzilla query results.
- *
- * @author Rob Elves
- */
-public class SaxBugzillaQueryContentHandler extends DefaultHandler {
-
- /** The bug id */
- private String id;
-
- /** The description of the bug */
- private String description;
-
- /** The priority of the bug */
- private String priority;
-
- /** The state of the bug */
- private String state;
-
- private StringBuffer characters;
-
- private QueryHitCollector collector;
-
- private String repositoryUrl;
-
- private BugzillaQueryHit hit;
-
- private TaskList taskList;
-
- private int maxHits = 100;
-
- private int numCollected = 0;
-
- public SaxBugzillaQueryContentHandler(TaskList tasklist, String repositoryUrl, QueryHitCollector col, int maxHits) {
- this.taskList = tasklist;
- this.repositoryUrl = repositoryUrl;
- collector = col;
- this.maxHits = maxHits;
- }
-
- @Override
- public void characters(char[] ch, int start, int length) throws SAXException {
- characters.append(ch, start, length);
- }
-
- @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());
- switch (tag) {
- case LI:
-// hit = new BugzillaQueryHit();
-// hit.setRepository(repositoryUrl);
-// break;
- }
- } catch (RuntimeException e) {
- if (e instanceof IllegalArgumentException) {
- // ignore unrecognized tags
- return;
- }
- throw e;
- }
-
- }
-
- @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());
- switch (tag) {
- case ID:
- id = parsedText;
- break;
-// case BUG_SEVERITY:
-// severity = parsedText;
-// break;
- case PRIORITY:
- priority = parsedText;
- break;
-// case REP_PLATFORM:
-// platform = parsedText;
-// break;
- case ASSIGNED_TO:
- //hit.setOwner(parsedText);
- break;
- case BUG_STATUS:
- state = parsedText;
- break;
-// case RESOLUTION:
-// resolution = parsedText;
-// break;
- case SHORT_SHORT_DESC:
- description = parsedText;
- break;
- case LI:
- try {
- if (numCollected < maxHits || maxHits == IBugzillaConstants.RETURN_ALL_HITS) {
- hit = new BugzillaQueryHit(taskList, description, priority, repositoryUrl, id, null, state);
- collector.accept(hit);
- numCollected++;
- } else {
- break;
- }
- } catch (CoreException e) {
- MylarStatusHandler.fail(e, "Problem recording Bugzilla search hit information", false);
- }
- }
- } catch (RuntimeException e) {
- if (e instanceof IllegalArgumentException) {
- // ignore unrecognized tags
- return;
- }
- throw e;
- }
-
- }
-}
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
deleted file mode 100644
index 7729a5af5..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java
+++ /dev/null
@@ -1,399 +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.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/UnrecognizedReponseException.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/UnrecognizedReponseException.java
deleted file mode 100644
index a99baa931..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/UnrecognizedReponseException.java
+++ /dev/null
@@ -1,24 +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.bugzilla.core;
-
-
-/**
- * @author Rob Elves
- */
-public class UnrecognizedReponseException extends BugzillaException {
- private static final long serialVersionUID = 8419167415822022988L;
-
- public UnrecognizedReponseException(String message) {
- super(message);
- }
-}
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
deleted file mode 100644
index 20e3d531b..000000000
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java
+++ /dev/null
@@ -1,65 +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.bugzilla.core;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.text.ParseException;
-
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.internal.tasks.core.HtmlTag;
-import org.eclipse.mylar.internal.tasks.core.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/src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java
deleted file mode 100644
index 4897c1451..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java
+++ /dev/null
@@ -1,147 +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.bugzilla.tests;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Set;
-
-import javax.security.auth.login.LoginException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryConnector;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- * @author Nathan Hapke
- */
-public abstract class AbstractBugzillaTest extends TestCase {
-
- static final String DEFAULT_KIND = BugzillaCorePlugin.REPOSITORY_KIND;
-
- protected BugzillaRepositoryConnector connector;
-
- protected TaskRepositoryManager manager;
-
- protected TaskRepository repository;
-
- protected TaskList taskList;
-
- public AbstractBugzillaTest() {
- super();
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- TasksUiPlugin.getTaskListManager().resetTaskList();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- protected void init222() {
- init(IBugzillaConstants.TEST_BUGZILLA_222_URL);
- }
-
- protected void init2201() {
- init(IBugzillaConstants.TEST_BUGZILLA_2201_URL);
- }
-
- protected void init220() {
- init(IBugzillaConstants.TEST_BUGZILLA_220_URL);
- }
-
- protected void init218() {
- init(IBugzillaConstants.TEST_BUGZILLA_218_URL);
- }
-
- protected void init(String url) {
- repository = new TaskRepository(DEFAULT_KIND, url);
- Credentials credentials = MylarTestUtils.readCredentials();
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
-
- repository.setTimeZoneId("Canada/Eastern");
- assertNotNull(manager);
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- taskList = TasksUiPlugin.getTaskListManager().getTaskList();
-
- AbstractRepositoryConnector abstractRepositoryClient = manager.getRepositoryConnector(DEFAULT_KIND);
-
- assertEquals(abstractRepositoryClient.getRepositoryType(), DEFAULT_KIND);
-
- connector = (BugzillaRepositoryConnector) abstractRepositoryClient;
- connector.setForceSynchExecForTesting(true);
- TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
- }
-
- protected BugzillaTask generateLocalTaskAndDownload(String taskNumber) throws CoreException {
- BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingKey(repository, taskNumber, null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- assertNotNull(task);
- TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(task);
- assertTrue(task.isDownloaded());
- return task;
- }
-
- protected BugzillaReportSubmitForm makeExistingBugPost(RepositoryTaskData taskData)
- throws UnsupportedEncodingException {
- return BugzillaReportSubmitForm.makeExistingBugPost(taskData, repository.getUrl(), repository.getUserName(),
- repository.getPassword(), null, null, repository.getCharacterEncoding());
- }
-
- protected void synchAndAssertState(Set<AbstractRepositoryTask> tasks, RepositoryTaskSyncState state) {
- for (AbstractRepositoryTask task : tasks) {
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- assertEquals(task.getSyncState(), state);
- }
- }
-
- class MockBugzillaReportSubmitForm extends BugzillaReportSubmitForm {
-
- public MockBugzillaReportSubmitForm(String encoding_utf_8) {
- super(encoding_utf_8);
- }
-
- @Override
- public String submitReportToRepository() throws BugzillaException, LoginException,
- PossibleBugzillaFailureException {
- return "test-submit";
- }
-
- }
-} \ No newline at end of file
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
deleted file mode 100644
index 7a864dfff..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java
+++ /dev/null
@@ -1,224 +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.bugzilla.tests;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.net.URL;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.RepositoryConfiguration;
-import org.eclipse.mylar.internal.bugzilla.core.RepositoryConfigurationFactory;
-import org.eclipse.mylar.internal.bugzilla.core.SaxConfigurationContentHandler;
-import org.eclipse.mylar.internal.bugzilla.core.XmlCleaner;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-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.XMLReaderFactory;
-
-public class BugzillaConfigurationTest extends TestCase {
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void test222RDFProductConfig() throws Exception {
- RepositoryConfigurationFactory factory = new RepositoryConfigurationFactory();
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
- RepositoryConfiguration config = factory.getConfiguration(repository.getUrl(), null, repository.getUserName(),
- repository.getPassword(), null);
- assertNotNull(config);
- assertEquals("2.22", 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(3, config.getProducts().size());
- assertEquals(4, config.getOpenStatusValues().size());
- assertEquals(1, config.getComponents("TestProduct").size());
- assertEquals(1, config.getVersions("TestProduct").size());
- assertEquals(0, config.getTargetMilestones("TestProduct").size());
- }
-
- public void test2201RDFProductConfig() throws Exception {
- RepositoryConfigurationFactory factory = new RepositoryConfigurationFactory();
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_2201_URL);
- RepositoryConfiguration config = factory.getConfiguration(repository.getUrl(), null, repository.getUserName(),
- repository.getPassword(), null);
- 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 Exception {
- RepositoryConfigurationFactory factory = new RepositoryConfigurationFactory();
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_220_URL);
- RepositoryConfiguration config = factory.getConfiguration(repository.getUrl(), null, repository.getUserName(),
- repository.getPassword(), null);
- 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 Exception {
- RepositoryConfigurationFactory factory = new RepositoryConfigurationFactory();
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_218_URL);
- RepositoryConfiguration config = factory.getConfiguration(repository.getUrl(), null, repository.getUserName(),
- repository.getPassword(), null);
- assertNotNull(config);
- assertEquals("2.18.5", config.getInstallVersion());
- assertEquals(7, config.getStatusValues().size());
- assertEquals(8, config.getResolutions().size());
- assertEquals(8, config.getPlatforms().size());
- assertEquals(36, 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 Exception {
- RepositoryConfigurationFactory factory = new RepositoryConfigurationFactory();
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.ECLIPSE_BUGZILLA_URL);
- RepositoryConfiguration config = factory.getConfiguration(repository.getUrl(), null, repository.getUserName(),
- repository.getPassword(), null);
- assertNotNull(config);
- assertEquals("2.20.1", config.getInstallVersion());
- assertEquals(7, config.getStatusValues().size());
- assertEquals(8, config.getResolutions().size());
- assertEquals(6, config.getPlatforms().size());
- assertEquals(28, config.getOSs().size());
- assertEquals(5, config.getPriorities().size());
- assertEquals(7, config.getSeverities().size());
- assertTrue(config.getProducts().size() > 50);
- assertEquals(4, config.getOpenStatusValues().size());
- assertEquals(11, config.getComponents("Mylar").size());
- assertEquals(22, config.getKeywords().size());
- // assertEquals(10, config.getComponents("Hyades").size());
- // assertEquals(1, config.getTargetMilestones("TestProduct").size());
- }
-
- public void testRepositoryConfigurationCachePersistance() throws Exception {
- RepositoryConfiguration configuration1 = new RepositoryConfiguration();
- configuration1.setRepositoryUrl("url1");
- configuration1.addProduct("Test Product 1");
- assertEquals(1, configuration1.getProducts().size());
-
- RepositoryConfiguration configuration2 = new RepositoryConfiguration();
- configuration1.setRepositoryUrl("url2");
- configuration2.addProduct("Test Product 2");
- assertEquals(1, configuration2.getProducts().size());
-
- BugzillaCorePlugin.addRepositoryConfiguration(configuration1);
- BugzillaCorePlugin.addRepositoryConfiguration(configuration2);
- BugzillaCorePlugin.writeRepositoryConfigFile();
- BugzillaCorePlugin.getDefault().removeConfiguration(configuration1);
- BugzillaCorePlugin.getDefault().removeConfiguration(configuration2);
- assertNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration1.getRepositoryUrl()));
- assertNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration2.getRepositoryUrl()));
- BugzillaCorePlugin.readRepositoryConfigurationFile();
- assertNotNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration1.getRepositoryUrl()));
- assertNotNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration2.getRepositoryUrl()));
- RepositoryConfiguration testLoadedConfig = BugzillaCorePlugin.getRepositoryConfiguration(configuration1
- .getRepositoryUrl());
- assertEquals(1, testLoadedConfig.getProducts().size());
- assertEquals(configuration1.getProducts().get(0), testLoadedConfig.getProducts().get(0));
- }
-
- /**
- * Can use this to test config data submitted by users. Be sure not to commit user's config file though.
- * The file included (rdfconfig218.txt) is from mylar.eclipse.org/bugs218
- */
- public void testRepositoryConfigurationFromFile() throws Exception {
-
- URL entryURL = BugzillaTestPlugin.getDefault().getBundle().getEntry("testdata/configuration/rdfconfig218.txt");
- assertNotNull(entryURL);
- URL fileURL = FileLocator.toFileURL(entryURL);
- assertNotNull(fileURL);
-
- BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileURL.getFile())));
-
- if (true) {
- StringBuffer result = XmlCleaner.clean(in);
- StringReader strReader = new StringReader(result.toString());
- in = new BufferedReader(strReader);
- }
-
- SaxConfigurationContentHandler contentHandler = new SaxConfigurationContentHandler();
- 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));
-
- RepositoryConfiguration config = contentHandler.getConfiguration();
- assertNotNull(config);
-
- // Add your additional checking for valid data here if necessary
- }
-
-}
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
deleted file mode 100644
index 66c66c42e..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * 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.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.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(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL,
- IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
-
- List<String> productList = BugzillaServerFacade.getProductList(repository.getUrl(), null, repository.getUserName(), repository.getPassword(), BugzillaCorePlugin.ENCODING_UTF_8);
- Iterator<String> itr = productList.iterator();
- assertTrue(itr.hasNext());
- assertEquals("Read Only Test Cases", itr.next());
-
- }
-
- public void test2201Products() throws Exception {
-
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_2201_URL,
- IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
-
- List<String> productList = BugzillaServerFacade.getProductList(repository.getUrl(), null, repository.getUserName(), repository.getPassword(), BugzillaCorePlugin.ENCODING_UTF_8);
- Iterator<String> itr = productList.iterator();
- assertTrue(itr.hasNext());
- assertEquals("TestProduct", "TestProduct", itr.next());
-
- }
-
- public void test220Products() throws Exception {
-
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_220_URL,
- IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
-
- List<String> productList = BugzillaServerFacade.getProductList(repository.getUrl(), null, repository.getUserName(), repository.getPassword(), BugzillaCorePlugin.ENCODING_UTF_8);
- assertEquals(2, productList.size());
- assertTrue(productList.contains("TestProduct"));
- assertTrue(productList.contains("Widget"));
-
- }
-
- public void test218Products() throws Exception {
-
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_218_URL,
- IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString());
-
- List<String> productList = BugzillaServerFacade.getProductList(repository.getUrl(), null, repository.getUserName(), repository.getPassword(), BugzillaCorePlugin.ENCODING_UTF_8);
- 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/BugzillaRepositoryConnectorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java
deleted file mode 100644
index 908b77572..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java
+++ /dev/null
@@ -1,576 +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.bugzilla.tests;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.net.InetAddress;
-import java.net.Proxy;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import javax.security.auth.login.LoginException;
-
-import org.apache.commons.httpclient.params.HttpConnectionParams;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaAttachmentHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaQueryHit;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException;
-import org.eclipse.mylar.internal.bugzilla.core.RepositoryConfiguration;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.BugSubmissionHandler;
-import org.eclipse.mylar.internal.tasks.core.SslProtocolSocketFactory;
-import org.eclipse.mylar.internal.tasks.ui.search.SearchHitCollector;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.LocalAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- * @author Nathan Hapke
- */
-public class BugzillaRepositoryConnectorTest extends AbstractBugzillaTest {
-
- private BugzillaAttachmentHandler attachmentHandler = new BugzillaAttachmentHandler();
-
- public void testCreateTaskFromExistingId() throws Exception {
- init222();
- BugzillaTask badId = (BugzillaTask) connector.createTaskFromExistingKey(repository, "bad-id", null);
- assertNull(badId);
-
- BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingKey(repository, "1", null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- assertNotNull(task);
- // assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- // connector.synchronize(task, true, null);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
-
- BugzillaTask retrievedTask = (BugzillaTask) taskList.getTask(task.getHandleIdentifier());
- assertNotNull(retrievedTask);
- assertEquals(task.getHandleIdentifier(), retrievedTask.getHandleIdentifier());
-
- assertTrue(task.isDownloaded());
- assertEquals(1, Integer.parseInt(task.getTaskData().getId()));
- }
-
- public void testAnonymousRepositoryAccess() throws Exception {
- init218();
- assertNotNull(repository);
- repository.setAuthenticationCredentials("", "");
- // test anonymous task retrieval
- BugzillaTask task = this.generateLocalTaskAndDownload("2");
- assertNotNull(task);
-
-// // test anonymous query (note that this demonstrates query via eclipse search (ui)
-// SearchHitCollector collector = new SearchHitCollector(taskList);
-// collector.setProgressMonitor(new NullProgressMonitor());
-// BugzillaSearchOperation operation = new BugzillaSearchOperation(
-// repository,
-// "http://mylar.eclipse.org/bugs218/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=search-match-test&product=TestProduct&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&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=",
-// null, collector, "-1");
-//
- String queryUrl = "http://mylar.eclipse.org/bugs218/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=search-match-test&product=TestProduct&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&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=";
- BugzillaRepositoryQuery bugzillaQuery = new BugzillaRepositoryQuery(repository.getUrl(), queryUrl, "search", "-1", taskList);
-
-
-
-
- SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskListManager()
- .getTaskList(), repository, bugzillaQuery, null);
-
-
-
- //operation.run(new NullProgressMonitor());
- //BugzillaSearchQuery searchQuery = new BugzillaSearchQuery(collector);
- collector.run(new NullProgressMonitor());
- assertEquals(2, collector.getHits().size());
-
- for (AbstractQueryHit hit : collector.getHits()) {
- assertTrue(hit.getDescription().contains("search-match-test"));
- }
-
- //test anonymous update of configuration
- RepositoryConfiguration config = BugzillaCorePlugin.getRepositoryConfiguration(true, repository.getUrl(), TasksUiPlugin.getDefault().getProxySettings(), repository.getUserName(), repository.getPassword(), repository.getCharacterEncoding());
- assertNotNull(config);
- assertTrue(config.getComponents().size() > 0);
- }
-
- public void testContextAttachFailure() throws Exception {
- init218();
- BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingKey(repository, "3", null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- assertNotNull(task.getTaskData());
- TasksUiPlugin.getTaskListManager().activateTask(task);
- File sourceContextFile = ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
- sourceContextFile.createNewFile();
- sourceContextFile.deleteOnExit();
- repository.setAuthenticationCredentials("wrong", "wrong");
- try {
- connector.attachContext(repository, task, "", TasksUiPlugin.getDefault().getProxySettings());
- } catch (CoreException e) {
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertNotNull(task.getTaskData());
- return;
- }
- fail("Should have failed due to invalid userid and password.");
- }
-
- public void testSynchronize() throws InterruptedException, LoginException, BugzillaException,
- PossibleBugzillaFailureException, CoreException {
- init222();
-
- // Get the task
- BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingKey(repository, "1", null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(task);
- assertTrue(task.isDownloaded());
- // (The initial local copy from server)
- // assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- // connector.synchronize(task, true, null);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- // Modify it
- String newCommentText = "BugzillaRepositoryClientTest.testSynchronize(): " + (new Date()).toString();
- task.getTaskData().setNewComment(newCommentText);
- // overwrites old fields/attributes with new content (ususually done by
- // BugEditor)
- task.getTaskData().setHasLocalChanges(true);
- task.setSyncState(RepositoryTaskSyncState.OUTGOING);
- TasksUiPlugin.getSynchronizationManager().saveOffline(task.getTaskData());
- assertEquals(RepositoryTaskSyncState.OUTGOING, task.getSyncState());
-
- // Submit changes
- MockBugzillaReportSubmitForm form = new MockBugzillaReportSubmitForm(BugzillaCorePlugin.ENCODING_UTF_8);
- form.setTaskData(task.getTaskData());
- new BugSubmissionHandler(connector).submitBugReport(form, null, true, true);
- // submit casuses a synch which should result in
- // a synchronized state (not incoming)
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
-
- // TODO: Test that comment was appended
- // ArrayList<Comment> comments = task.getTaskData().getComments();
- // assertNotNull(comments);
- // assertTrue(comments.size() > 0);
- // Comment lastComment = comments.get(comments.size() - 1);
- // assertEquals(newCommentText, lastComment.getText());
-
- // OUTGOING with forceddSynch=false
- task.setSyncState(RepositoryTaskSyncState.OUTGOING);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, false, null);
- assertEquals(RepositoryTaskSyncState.OUTGOING, task.getSyncState());
-
- // OUTGOING with forcedSynch=true --> Update Local Copy dialog
- // Choosing to override local changes results in SYNCHRONIZED
- // Choosing not to override results in CONFLICT
-
- task.setSyncState(RepositoryTaskSyncState.CONFLICT);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, false, null);
- assertEquals(RepositoryTaskSyncState.CONFLICT, task.getSyncState());
-
- // CONFLICT with forcedSynch=true --> Update Local Copy dialog
-
- // Has no outgoing changes or conflicts yet needs synch
- // because task doesn't have bug report (new query hit)
- // Result: retrieved with no incoming status
- task.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
- RepositoryTaskData bugReport = task.getTaskData();
- task.setTaskData(null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, false, null);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertNotNull(task.getTaskData());
- assertEquals(task.getTaskData().getId(), bugReport.getId());
- }
-
- public void testUniqueTaskObjects() {
- init222();
- String repositoryURL = "repositoryURL";
- BugzillaQueryHit hit1 = new BugzillaQueryHit(taskList, "description", "P1", repositoryURL, "1", null, "status");
- ITask task1 = hit1.getOrCreateCorrespondingTask();
- assertNotNull(task1);
- // taskList.renameTask(task1, "testing");
- // task1.setDescription("testing");
-
- BugzillaQueryHit hit1Twin = new BugzillaQueryHit(taskList, "description", "P1", repositoryURL, "1", null, "status");
- ITask task2 = hit1Twin.getOrCreateCorrespondingTask();
- assertEquals(task1.getDescription(), task2.getDescription());
- }
-
- public void testAttachToExistingReport() throws Exception {
- init222();
- int bugId = 31;
- String taskNumber = "" + bugId;
- BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingKey(repository, taskNumber, null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- assertNotNull(task);
- assertTrue(task.isDownloaded());
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(bugId, Integer.parseInt(task.getTaskData().getId()));
- int numAttached = task.getTaskData().getAttachments().size();
- String fileName = "test-attach-" + System.currentTimeMillis() + ".txt";
-
- assertNotNull(repository.getUserName());
- assertNotNull(repository.getPassword());
-
- /* Initialize a local attachment */
- LocalAttachment attachment = new LocalAttachment();
- attachment.setDescription("Test attachment " + new Date());
- attachment.setContentType("text/plain");
- attachment.setPatch(false);
- attachment.setReport(task.getTaskData());
- attachment.setComment("Automated JUnit attachment test"); // optional
-
- /* Test attempt to upload a non-existent file */
- attachment.setFilePath("/this/is/not/a/real-file");
- assertFalse(attachmentHandler.uploadAttachment(attachment, repository.getUserName(), repository.getPassword(),
- Proxy.NO_PROXY));
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- task = (BugzillaTask) connector.createTaskFromExistingKey(repository, taskNumber, null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- assertEquals(numAttached, task.getTaskData().getAttachments().size());
-
- /* Test attempt to upload an empty file */
- File attachFile = new File(fileName);
- attachment.setFilePath(attachFile.getAbsolutePath());
- BufferedWriter write = new BufferedWriter(new FileWriter(attachFile));
- assertFalse(attachmentHandler.uploadAttachment(attachment, repository.getUserName(), repository.getPassword(),
- Proxy.NO_PROXY));
- task = (BugzillaTask) connector.createTaskFromExistingKey(repository, taskNumber, null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- assertEquals(numAttached, task.getTaskData().getAttachments().size());
-
- /* Test uploading a proper file */
- write.write("test file");
- write.close();
- attachment.setFilePath(attachFile.getAbsolutePath());
- assertTrue(attachmentHandler.uploadAttachment(attachment, repository.getUserName(), repository.getPassword(),
- Proxy.NO_PROXY));
- task = (BugzillaTask) connector.createTaskFromExistingKey(repository, taskNumber, null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- assertEquals(numAttached + 1, task.getTaskData().getAttachments().size());
-
- // use assertion to track clean-up
- assertTrue(attachFile.delete());
- }
-
- public void testSynchChangedReports() throws Exception {
-
- init222();
- BugzillaTask task4 = generateLocalTaskAndDownload("4");
- assertNotNull(task4.getTaskData());
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task4.getSyncState());
- assertEquals(4, Integer.parseInt(task4.getTaskData().getId()));
-
- BugzillaTask task5 = generateLocalTaskAndDownload("5");
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task5.getSyncState());
- assertEquals(5, Integer.parseInt(task5.getTaskData().getId()));
-
- Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
- tasks.add(task4);
- tasks.add(task5);
-
- TasksUiPlugin.getRepositoryManager().setSyncTime(repository, task5.getLastSyncDateStamp(), TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- Set<AbstractRepositoryTask> changedTasks = connector.getOfflineTaskHandler().getChangedSinceLastSync(repository,
- tasks, null);
- assertEquals(0, changedTasks.size());
-
- String priority4 = null;
- if (task4.getPriority().equals("P1")) {
- priority4 = "P2";
- task4.getTaskData().setAttributeValue(BugzillaReportElement.PRIORITY.getKeyString(), priority4);
- } else {
- priority4 = "P1";
- task4.getTaskData().setAttributeValue(BugzillaReportElement.PRIORITY.getKeyString(), priority4);
- }
-
- String priority5 = null;
- if (task5.getPriority().equals("P1")) {
- priority5 = "P2";
- task5.getTaskData().setAttributeValue(BugzillaReportElement.PRIORITY.getKeyString(), priority5);
- } else {
- priority5 = "P1";
- task5.getTaskData().setAttributeValue(BugzillaReportElement.PRIORITY.getKeyString(), priority5);
- }
-
- assertNotNull(repository.getUserName());
- assertNotNull(repository.getPassword());
-
- BugzillaReportSubmitForm bugzillaReportSubmitForm;
-
-
- bugzillaReportSubmitForm = makeExistingBugPost(task4.getTaskData());
- bugzillaReportSubmitForm.submitReportToRepository();
- bugzillaReportSubmitForm = makeExistingBugPost(task5.getTaskData());
- bugzillaReportSubmitForm.submitReportToRepository();
-
-
- changedTasks = connector.getOfflineTaskHandler().getChangedSinceLastSync(repository, tasks, null);
- assertEquals("Changed reports expected ", 2, changedTasks.size());
- assertTrue(tasks.containsAll(changedTasks));
- for (AbstractRepositoryTask task : changedTasks) {
- if (task.getTaskData().getId() == "4") {
- assertEquals(priority4, task4.getPriority());
- }
- if (task.getTaskData().getId() == "5") {
- assertEquals(priority5, task5.getPriority());
- }
- }
- // synchAndAssertState(tasks, RepositoryTaskSyncState.INCOMING);
- // synchAndAssertState(tasks, RepositoryTaskSyncState.SYNCHRONIZED);
- }
-
- public void testIncomingWhenOfflineDeleted() throws Exception {
-
- init222();
- BugzillaTask task7 = generateLocalTaskAndDownload("7");
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task7.getSyncState());
- assertEquals(7, Integer.parseInt(task7.getTaskData().getId()));
-
- Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
- tasks.add(task7);
-
- RepositoryTaskData recentTaskData = task7.getTaskData();
- assertNotNull(recentTaskData);
-
- TasksUiPlugin.getRepositoryManager().setSyncTime(repository, task7.getLastSyncDateStamp(), TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- assertFalse(TasksUiPlugin.getDefault().getOfflineReportsFile().find(IBugzillaConstants.TEST_BUGZILLA_222_URL,
- "7") == -1);
- ArrayList<RepositoryTaskData> taskDataList = new ArrayList<RepositoryTaskData>();
- taskDataList.add(task7.getTaskData());
- TasksUiPlugin.getDefault().getOfflineReportsFile().remove(taskDataList);
- assertTrue(TasksUiPlugin.getDefault().getOfflineReportsFile().find(IBugzillaConstants.TEST_BUGZILLA_222_URL,
- "7") == -1);
-
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task7.getSyncState());
- assertNotNull(task7.getLastSyncDateStamp());
- // Task no longer stored offline
- // make an external change
- assertNotNull(repository.getUserName());
- assertNotNull(repository.getPassword());
-
- String priority = null;
- if (task7.getPriority().equals("P1")) {
- priority = "P2";
- recentTaskData.setAttributeValue(BugzillaReportElement.PRIORITY.getKeyString(), priority);
- } else {
- priority = "P1";
- recentTaskData.setAttributeValue(BugzillaReportElement.PRIORITY.getKeyString(), priority);
- }
-
- BugzillaReportSubmitForm bugzillaReportSubmitForm;
- bugzillaReportSubmitForm = makeExistingBugPost(recentTaskData);
- bugzillaReportSubmitForm.submitReportToRepository();
- TasksUiPlugin.getSynchronizationManager().synchronizeChanged(connector, repository);
- assertEquals(RepositoryTaskSyncState.INCOMING, task7.getSyncState());
- }
-
- public void testTimeTracker222() throws Exception {
- init222();
- timeTracker(14, true);
- }
-
- // We'll skip these two for now and just test 222 and 218 since
- // they are the most common. If problems arise we can re-enable.
- // public void testTimeTracker2201() throws Exception {
- // init2201();
- // timeTracker(22, true);
- // }
- //
- // public void testTimeTracker220() throws Exception {
- // init220();
- // timeTracker(8, true);
- // }
-
- public void testTimeTracker218() throws Exception {
- init218();
- timeTracker(18, false);
- }
-
- /**
- * @param enableDeadline
- * bugzilla 218 doesn't support deadlines
- */
- protected void timeTracker(int taskid, boolean enableDeadline) throws Exception {
- BugzillaTask bugtask = generateLocalTaskAndDownload("" + taskid);
- assertEquals(taskid, Integer.parseInt(bugtask.getTaskData().getId()));
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, bugtask.getSyncState());
-
- Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
- tasks.add(bugtask);
-
- // synchAndAssertState(tasks, RepositoryTaskSyncState.SYNCHRONIZED);
-
- TasksUiPlugin.getRepositoryManager().setSyncTime(repository, bugtask.getLastSyncDateStamp(), TasksUiPlugin.getDefault().getRepositoriesFilePath());
- // connector.synchronizeChanged(repository);
-
- // Set<AbstractRepositoryTask> changedTasks =
- // connector.getOfflineTaskHandler().getChangedSinceLastSync(repository,
- // tasks);
- // assertEquals(1, changedTasks.size());
-
- assertNotNull(repository.getUserName());
- assertNotNull(repository.getPassword());
-
- float estimatedTime, remainingTime, actualTime, addTime;
- String deadline = null;
-
- RepositoryTaskData bugtaskdata = bugtask.getTaskData();
- estimatedTime = Float.parseFloat(bugtaskdata.getAttributeValue(BugzillaReportElement.ESTIMATED_TIME
- .getKeyString()));
- remainingTime = Float.parseFloat(bugtaskdata.getAttributeValue(BugzillaReportElement.REMAINING_TIME
- .getKeyString()));
- actualTime = Float.parseFloat(bugtaskdata.getAttributeValue(BugzillaReportElement.ACTUAL_TIME.getKeyString()));
- if (enableDeadline)
- deadline = bugtaskdata.getAttributeValue(BugzillaReportElement.DEADLINE.getKeyString());
-
- estimatedTime += 2;
- remainingTime += 1.5;
- addTime = 0.75f;
- if (enableDeadline)
- deadline = generateNewDay();
-
- bugtaskdata.setAttributeValue(BugzillaReportElement.ESTIMATED_TIME.getKeyString(), "" + estimatedTime);
- bugtaskdata.setAttributeValue(BugzillaReportElement.REMAINING_TIME.getKeyString(), "" + remainingTime);
- bugtaskdata.setAttributeValue(BugzillaReportElement.WORK_TIME.getKeyString(), "" + addTime);
- if (enableDeadline)
- bugtaskdata.setAttributeValue(BugzillaReportElement.DEADLINE.getKeyString(), deadline);
-
- BugzillaReportSubmitForm bugzillaReportSubmitForm;
-
- for (AbstractRepositoryTask task : tasks) {
- task.getTaskData().setAttributeValue(BugzillaReportElement.ADD_COMMENT.getKeyString(),
- "New Estimate: " + estimatedTime + "\nNew Remaining: " + remainingTime + "\nAdd: " + addTime);
- bugzillaReportSubmitForm = makeExistingBugPost(task.getTaskData());
- bugzillaReportSubmitForm.submitReportToRepository();
- }
-
- // assertEquals("Changed reports expected ", 1,
- // connector.getOfflineTaskHandler().getChangedSinceLastSync(repository,
- // tasks).size());
-
- synchAndAssertState(tasks, RepositoryTaskSyncState.INCOMING);
- // synchAndAssertState(tasks, RepositoryTaskSyncState.SYNCHRONIZED);
-
- bugtaskdata = bugtask.getTaskData();
-
- assertEquals(estimatedTime, Float.parseFloat(bugtaskdata.getAttributeValue(BugzillaReportElement.ESTIMATED_TIME
- .getKeyString())));
- assertEquals(remainingTime, Float.parseFloat(bugtaskdata.getAttributeValue(BugzillaReportElement.REMAINING_TIME
- .getKeyString())));
- assertEquals(actualTime + addTime, Float.parseFloat(bugtaskdata
- .getAttributeValue(BugzillaReportElement.ACTUAL_TIME.getKeyString())));
- if (enableDeadline)
- assertEquals(deadline, bugtaskdata.getAttributeValue(BugzillaReportElement.DEADLINE.getKeyString()));
-
- }
-
- public void testTrustAllSslProtocolSocketFactory() throws Exception {
- SslProtocolSocketFactory factory = new SslProtocolSocketFactory();
- Socket s;
-
- s = factory.createSocket("mylar.eclipse.org", 80);
- assertNotNull(s);
- assertTrue(s.isConnected());
- s.close();
-
- InetAddress anyHost = new Socket().getLocalAddress();
-
- s = factory.createSocket("mylar.eclipse.org", 80, anyHost, 0);
- assertNotNull(s);
- assertTrue(s.isConnected());
- s.close();
-
- HttpConnectionParams params = new HttpConnectionParams();
- s = factory.createSocket("mylar.eclipse.org", 80, anyHost, 0, null);
- assertNotNull(s);
- assertTrue(s.isConnected());
- s.close();
-
- params.setConnectionTimeout(1000);
- s = factory.createSocket("mylar.eclipse.org", 80, anyHost, 0, params);
- assertNotNull(s);
- assertTrue(s.isConnected());
- s.close();
- }
-
- private String generateNewDay() {
- int year = 2006;
- int month = (int) (Math.random() * 12 + 1);
- int day = (int) (Math.random() * 28 + 1);
- return "" + year + "-" + ((month <= 9) ? "0" : "") + month + "-" + ((day <= 9) ? "0" : "") + day;
- }
-
- /**
- * Ensure obsoletes and patches are marked as such by the parser.
- */
- public void testAttachmentAttributes() throws Exception {
- init222();
- int bugId = 19;
- String taskNumber = "" + bugId;
- BugzillaTask task = (BugzillaTask) connector.createTaskFromExistingKey(repository, taskNumber, null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- assertNotNull(task);
-
- boolean isPatch[] = { false, true, false, false, false, false, false, true, false, false };
- boolean isObsolete[] = { false, true, false, true, false, false, false, false, false, false };
-
- Iterator<RepositoryAttachment> iter = task.getTaskData().getAttachments().iterator();
- int index = 0;
- while (iter.hasNext()) {
- assertTrue(validateAttachmentAttributes(iter.next(), isPatch[index], isObsolete[index]));
- index++;
- }
- }
-
- private boolean validateAttachmentAttributes(RepositoryAttachment att, boolean isPatch, boolean isObsolete) {
- return (att.isPatch() == isPatch) && (att.isObsolete() == isObsolete);
- }
-
-// class MockBugzillaReportSubmitForm extends BugzillaReportSubmitForm {
-//
-// public MockBugzillaReportSubmitForm(String encoding_utf_8) {
-// super(encoding_utf_8);
-// }
-//
-// @Override
-// public String submitReportToRepository() throws BugzillaException, LoginException,
-// PossibleBugzillaFailureException {
-// return "test-submit";
-// }
-//
-// }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchDialogTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchDialogTest.java
deleted file mode 100644
index d6e7825ef..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchDialogTest.java
+++ /dev/null
@@ -1,72 +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.bugzilla.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Test the bugzilla search dialog.
- *
- * @author Jeff Pound
- */
-public class BugzillaSearchDialogTest extends TestCase {
-
- private TaskRepositoryManager manager;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getRepositoryManager();
- assertNotNull(manager);
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- if (manager != null) {
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
- }
-
- /**
- * Test that the search dialog is initialized properly with the given
- * repository.
- *
- * @throws Exception
- */
- public void testSearchDialogInit() throws Exception {
- TaskRepository repo = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_222
- .toString());
- manager.addRepository(repo, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- BugzillaSearchPage page = new BugzillaSearchPage(repo);
- Shell shell = BugzillaTestPlugin.getDefault().getWorkbench().getDisplay().getShells()[0];
- page.createControl(shell);
- page.setVisible(true);
-
- /*
- * This assertion will fail with a 0 product count if the options are
- * not retrieved properly, throw an exception if the page is not
- * initialized properly, or pass otherwise.
- */
- assertFalse(page.getProductCount() == 0);
- }
-}
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
deleted file mode 100644
index 651419792..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java
+++ /dev/null
@@ -1,110 +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.bugzilla.tests;
-
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @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();
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(NUM_REPOSITORIES, TasksUiPlugin.getRepositoryManager().getRepositories(BugzillaCorePlugin.REPOSITORY_KIND).size());
- }
-
- protected void tearDown() throws Exception {
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- super.tearDown();
- }
-
-// public void testSearching216() throws Exception {
-// 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 Exception {
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_218_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString());
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_218_URL, SEARCH_DESCRIPTION).size());
- }
-
- public void testSearching220() throws Exception {
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_220_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_220_URL, SEARCH_DESCRIPTION).size());
- }
-
- public void testSearching2201() throws Exception {
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_2201_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString());
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_2201_URL, SEARCH_DESCRIPTION).size());
- }
-
- public void testSearching222() throws Exception {
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_222.toString());
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- 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) throws Exception {
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(BugzillaCorePlugin.REPOSITORY_KIND, repositoryURL);
- assertNotNull(repository);
-
- final BugzillaRepositoryQuery repositoryQuery = new BugzillaRepositoryQuery(
- repository.getUrl(),
- repository.getUrl() + BUG_DESC_SUBSTRING_SEARCH+SearchString,
- QUERY_NAME,
- MAX_HITS, TasksUiPlugin.getTaskListManager().getTaskList());
-
- AbstractRepositoryConnector connector = (AbstractRepositoryConnector) TasksUiPlugin.getRepositoryManager().getRepositoryConnector(BugzillaCorePlugin.REPOSITORY_KIND);
-
- QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList());
-
- connector.performQuery(repositoryQuery, repository, TasksUiPlugin.getDefault().getProxySettings(), new NullProgressMonitor(), collector);
-
- //results.addAll(connector.performQuery(repositoryQuery, new NullProgressMonitor(), new MultiStatus(TasksUiPlugin.PLUGIN_ID, IStatus.OK, "Query result", null)));
- return collector.getHits();
- }
-
-
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskDataMigrationTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskDataMigrationTest.java
deleted file mode 100644
index 97fb8b558..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskDataMigrationTest.java
+++ /dev/null
@@ -1,34 +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.bugzilla.tests;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskEditorInput;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-
-/**
- * @author Rob Elves
- */
-public class BugzillaTaskDataMigrationTest extends AbstractBugzillaTest {
-
- public void testMigrateDescriptionToReadOnly() throws Exception {
- init222();
- BugzillaTask task = generateLocalTaskAndDownload("1");
- assertNotNull(task);
- assertNotNull(task.getTaskData());
- RepositoryTaskAttribute attrib = task.getTaskData().getDescriptionAttribute();
- assertNotNull(attrib);
- attrib.setReadOnly(false);
- BugzillaTaskEditorInput editorInput = new BugzillaTaskEditorInput(repository, task, false);
- assertTrue(editorInput.getBugTask().getTaskData().getDescriptionAttribute().isReadOnly());
- }
-}
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
deleted file mode 100644
index 1168fe7ae..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java
+++ /dev/null
@@ -1,133 +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.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.tasks.ui.editors.RepositoryTextViewer;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author Rob Elves
- */
-public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
-
- private static final String DUPLICATE_NUMBER = "112233";
-
- private static final String DUPLICATE = "duplicate of "+DUPLICATE_NUMBER;
-
- private String TASK_FORMAT_1 = "task#1";
-
- private String TASK_FORMAT_2 = "task# 1";
-
- private String TASK_FORMAT_3 = "task1";
-
- private String TASK_FORMAT_4 = "task #1";
-
- private String BUG_FORMAT_1 = "bug# 1";
-
- private String BUG_FORMAT_2 = "bug # 1";
-
- private String BUG_FORMAT_3 = "bug1";
-
- private String BUG_FORMAT_4 = "bug #1";
-
- private String BUG_FORMAT_1_2 = "bug# 2";
-
- private BugzillaTaskHyperlinkDetector detector = new BugzillaTaskHyperlinkDetector();
-
- private TaskRepository dummyRepository = new TaskRepository("repository_kind", "repository_url");
-
- private RepositoryTextViewer viewer = new RepositoryTextViewer(dummyRepository, new Shell(), SWT.NONE);
-
- private String[] formats = { TASK_FORMAT_1, TASK_FORMAT_2, TASK_FORMAT_3, TASK_FORMAT_4, BUG_FORMAT_1, BUG_FORMAT_2, BUG_FORMAT_3, BUG_FORMAT_4 };
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testBeginning() {
- for (String format : formats) {
- String testString = format + " 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(format), links[0].getHyperlinkRegion().getOffset());
- }
- }
-
- public void testEnd() {
- for (String format : formats) {
- String testString = "is ends with " + format;
- viewer.setDocument(new Document(testString));
- Region region = new Region(testString.indexOf(format), testString.length());
- IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
- assertNotNull(links);
- assertEquals(1, links.length);
- assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
- }
- }
-
- public void testMiddle() {
- for (String format : formats) {
- String testString = "is a " + format + " in the middle";
- viewer.setDocument(new Document(testString));
- Region region = new Region(testString.indexOf(format), testString.length());
- IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
- assertNotNull(links);
- assertEquals(1, links.length);
- assertEquals(testString.indexOf(format), 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 testDuplicate() {
- String testString = "*** This bug has been marked as a "+DUPLICATE+" ***";
- viewer.setDocument(new Document(testString));
- Region region = new Region(testString.indexOf(DUPLICATE), testString.length());
- IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
- assertNotNull(links);
- assertEquals(1, links.length);
- assertEquals(testString.indexOf(DUPLICATE_NUMBER), links[0].getHyperlinkRegion().getOffset());
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskListManagerTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskListManagerTest.java
deleted file mode 100644
index c7fd07133..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskListManagerTest.java
+++ /dev/null
@@ -1,237 +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.bugzilla.tests;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class BugzillaTaskListManagerTest extends TestCase {
-
- private TaskListManager manager;
-
- private TaskRepository repository;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getTaskListManager();
- manager.readExistingOrCreateNewList();
- manager.resetTaskList();
- manager.saveTaskList();
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.ECLIPSE_BUGZILLA_URL);
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- manager.resetTaskList();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- TasksUiPlugin.getRepositoryManager().removeRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- // TODO: move
- public void testRemindedPersistance() {
-
- String repositoryUrl = "https://bugs.eclipse.org/bugs";
-
- String bugNumber = "106939";
-
- BugzillaTask task1 = new BugzillaTask(repositoryUrl + "-" + bugNumber, "label", false);
- manager.getTaskList().addTask(task1);
-
- task1.setReminded(true);
-
- TasksUiPlugin.getTaskListManager().saveTaskList();
- TasksUiPlugin.getTaskListManager().resetTaskList();
- TasksUiPlugin.getTaskListManager().readExistingOrCreateNewList();
-
- TaskList taskList = manager.getTaskList();
- assertEquals(1, taskList.getAllTasks().size());
- Set<AbstractRepositoryTask> tasksReturned = taskList.getRepositoryTasks(repositoryUrl);
- assertNotNull(tasksReturned);
- assertEquals(1, tasksReturned.size());
- for (AbstractRepositoryTask task : tasksReturned) {
- assertTrue(task.hasBeenReminded());
- }
- }
-
- public void testRepositoryTaskExternalization() {
- BugzillaTask repositoryTask = new BugzillaTask("bug-1", "label", true);
- repositoryTask.setKind("kind");
- manager.getTaskList().moveToRoot(repositoryTask);
- manager.saveTaskList();
-
- manager.resetTaskList();
- // manager.getTaskList().clear();
- // TaskList list = new TaskList();
- // manager.setTaskList(list);
- manager.readExistingOrCreateNewList();
- assertEquals(1, manager.getTaskList().getRootTasks().size());
- AbstractRepositoryTask readTask = (AbstractRepositoryTask) manager.getTaskList().getRootTasks().iterator()
- .next();
-
- assertEquals(repositoryTask.getHandleIdentifier(), readTask.getHandleIdentifier());
- assertEquals(repositoryTask.getDescription(), readTask.getDescription());
- assertEquals(repositoryTask.getTaskType(), readTask.getTaskType());
- }
-
- public void testQueryExternalization() {
- AbstractRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1", manager
- .getTaskList());
- // long time = 1234;
- // Date oldDate = new Date(time);
- // query.setLastRefresh(oldDate);
- assertEquals("repositoryUrl", query.getRepositoryUrl());
- assertEquals("queryUrl", query.getUrl());
- assertEquals("<never>", query.getLastRefreshTimeStamp());
- query.setLastRefreshTimeStamp("today");
- // assertEquals(time, query.getLastSynchronized().getTime());
- manager.getTaskList().addQuery(query);
- manager.saveTaskList();
- assertNotNull(manager.getTaskList());
-
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals(1, manager.getTaskList().getQueries().size());
- AbstractRepositoryQuery readQuery = manager.getTaskList().getQueries().iterator().next();
- assertEquals(query.getUrl(), readQuery.getUrl());
- assertEquals(query.getRepositoryUrl(), readQuery.getRepositoryUrl());
- assertEquals("today", query.getLastRefreshTimeStamp());
- assertEquals("repositoryUrl", readQuery.getRepositoryUrl());
- // assertEquals(time, readQuery.getLastSynchronized().getTime());
- }
-
- public void testBugzillaCustomQueryExternalization() {
- BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1", manager
- .getTaskList());
- query.setCustomQuery(true);
- manager.getTaskList().addQuery(query);
- manager.saveTaskList();
-
- manager.resetTaskList();
- // manager.getTaskList().clear();
- // TaskList list = new TaskList();
- // manager.setTaskList(list);
- manager.readExistingOrCreateNewList();
- assertEquals(1, manager.getTaskList().getQueries().size());
- BugzillaRepositoryQuery readQuery = (BugzillaRepositoryQuery) manager.getTaskList().getQueries().iterator()
- .next();
- assertTrue(readQuery.isCustomQuery());
- }
-
- public void testLegacyTaskListReading() throws IOException {
- File originalFile = manager.getTaskListFile();
- File legacyListFile = new File("temptasklist.xml");
- legacyListFile.deleteOnExit();
- BugzillaTestUtil.copy(BugzillaTestUtil.getLocalFile("testdata/legacy/tasklist_0_4_8.xml"), legacyListFile);
-
- assertEquals(362451, legacyListFile.length());
- assertTrue(legacyListFile.exists());
-
- manager.setTaskListFile(legacyListFile);
- manager.readExistingOrCreateNewList();
- manager.setTaskListFile(originalFile);
-
- Collection<ITask> allTasks = manager.getTaskList().getAllTasks();
- Set<ITask> allRootTasks = manager.getTaskList().getRootTasks();
- Set<AbstractTaskContainer> allCategories = manager.getTaskList().getCategories();
- Set<ITaskListElement> allRoots = manager.getTaskList().getRootElements();
- assertEquals(0, allRootTasks.size());
-
- manager.saveTaskList();
- // manager.getTaskList().clear();
- manager.resetTaskList();
- // 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());
- assertEquals(allTasks.size(), manager.getTaskList().getAllTasks().size());
-
- // rewrite and test again
- manager.saveTaskList();
- // manager.getTaskList().clear();
- manager.resetTaskList();
- // 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 testDeleteQuery() {
- AbstractRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1", manager
- .getTaskList());
- manager.getTaskList().addQuery(query);
-
- AbstractRepositoryQuery readQuery = manager.getTaskList().getQueries().iterator().next();
- assertEquals(query, readQuery);
-
- manager.getTaskList().deleteQuery(query);
- assertEquals(0, manager.getTaskList().getQueries().size());
- }
-
- public void testDeleteQueryAfterRename() {
- AbstractRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1", manager
- .getTaskList());
- manager.getTaskList().addQuery(query);
-
- AbstractRepositoryQuery readQuery = manager.getTaskList().getQueries().iterator().next();
- assertEquals(query, readQuery);
- manager.getTaskList().renameContainer(query, "newName");
- manager.getTaskList().deleteQuery(query);
- assertEquals(0, manager.getTaskList().getQueries().size());
- }
-
- public void testCreateQueryWithSameName() {
- AbstractRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1", manager
- .getTaskList());
- manager.getTaskList().addQuery(query);
- assertEquals(1, manager.getTaskList().getQueries().size());
- AbstractRepositoryQuery readQuery = manager.getTaskList().getQueries().iterator().next();
- assertEquals(query, readQuery);
-
- manager.getTaskList().addQuery(
- new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1", manager.getTaskList()));
- assertEquals(1, manager.getTaskList().getQueries().size());
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java
deleted file mode 100644
index a7b95ea9c..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskTest.java
+++ /dev/null
@@ -1,78 +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.bugzilla.tests;
-
-import java.util.Date;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaAttributeFactory;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaOfflineTaskHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-/**
- * @author Mik Kersten
- */
-public class BugzillaTaskTest extends TestCase {
-
- private BugzillaAttributeFactory attributeFactory = new BugzillaAttributeFactory();
-
- private BugzillaOfflineTaskHandler offlineHandler;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- offlineHandler = new BugzillaOfflineTaskHandler(new TaskList());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testCompletionDate() throws Exception {
- BugzillaTask task = new BugzillaTask("bug-1", "description", true);
- RepositoryTaskData report = new RepositoryTaskData(new BugzillaAttributeFactory(),
- BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.ECLIPSE_BUGZILLA_URL, "1");
- task.setTaskData(report);
- assertNull(task.getCompletionDate());
-
- Date now = new Date();
- String nowTimeStamp = BugzillaOfflineTaskHandler.comment_creation_ts_format.format(now);
-
- TaskComment taskComment = new TaskComment(new BugzillaAttributeFactory(), report, 1);
- RepositoryTaskAttribute attribute = attributeFactory.createAttribute(BugzillaReportElement.BUG_WHEN
- .getKeyString());
- attribute.setValue(nowTimeStamp);
- taskComment.addAttribute(BugzillaReportElement.BUG_WHEN.getKeyString(), attribute);
- report.addComment(taskComment);
- assertNull(task.getCompletionDate());
-
- RepositoryTaskAttribute resolvedAttribute = attributeFactory.createAttribute(BugzillaReportElement.BUG_STATUS
- .getKeyString());
- resolvedAttribute.setValue(IBugzillaConstants.VALUE_STATUS_RESOLVED);
- report.addAttribute(BugzillaReportElement.BUG_STATUS.getKeyString(), resolvedAttribute);
- assertNotNull(task.getCompletionDate());
- assertEquals(offlineHandler
- .getDateForAttributeType(BugzillaReportElement.BUG_WHEN.getKeyString(), nowTimeStamp), task
- .getCompletionDate());
-
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTestUtil.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTestUtil.java
deleted file mode 100644
index da7299f1c..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTestUtil.java
+++ /dev/null
@@ -1,88 +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.bugzilla.tests;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.util.Date;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaAttributeFactory;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaOfflineTaskHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.tests.MylarTasksTestsPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class BugzillaTestUtil {
-
- private static BugzillaAttributeFactory attributeFactory = new BugzillaAttributeFactory();
-
- public static File getLocalFile(String path) {
- try {
- URL installURL = MylarTasksTestsPlugin.getDefault().getBundle().getEntry(path);
- URL localURL = FileLocator.toFileURL(installURL);
- return new File(localURL.getFile());
- } catch (IOException e) {
- return null;
- }
- }
-
- /**
- * Adaptred from Java Developers' almanac
- */
- public static void copy(File source, File dest) throws IOException {
- InputStream in = new FileInputStream(source);
- OutputStream out = new FileOutputStream(dest);
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- }
-
- public static void setBugTaskCompleted(BugzillaTask bugzillaTask, boolean completed) {
- RepositoryTaskData report = new RepositoryTaskData(new BugzillaAttributeFactory(),
- BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.ECLIPSE_BUGZILLA_URL, "1");
- bugzillaTask.setTaskData(report);
- RepositoryTaskAttribute resolvedAttribute = attributeFactory.createAttribute(BugzillaReportElement.BUG_STATUS
- .getKeyString());
- if (completed) {
- resolvedAttribute.setValue(IBugzillaConstants.VALUE_STATUS_RESOLVED);
- TaskComment taskComment = new TaskComment(new BugzillaAttributeFactory(), report, 1);
- RepositoryTaskAttribute attribute = attributeFactory.createAttribute(BugzillaReportElement.BUG_WHEN
- .getKeyString());
- attribute.setValue(BugzillaOfflineTaskHandler.comment_creation_ts_format.format(new Date()));
- taskComment.addAttribute(BugzillaReportElement.BUG_WHEN.getKeyString(), attribute);
- report.addComment(taskComment);
- } else {
- resolvedAttribute.setValue(RepositoryTaskData.VAL_STATUS_NEW);
- }
-
- report.addAttribute(BugzillaReportElement.BUG_STATUS.getKeyString(), resolvedAttribute);
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/DuplicateDetetionTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/DuplicateDetetionTest.java
deleted file mode 100644
index d6b064ace..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/DuplicateDetetionTest.java
+++ /dev/null
@@ -1,254 +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.bugzilla.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.NewBugzillaReport;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditor;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Jeff Pound
- */
-public class DuplicateDetetionTest extends TestCase {
-
- private TaskRepository repository;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL);
-
- }
-
- public void testDuplicateDetection() throws Exception {
-
- String stackTrace = "java.lang.NullPointerException\nat jeff.testing.stack.trace.functionality(jeff.java:481)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertTrue(editor.searchForDuplicates());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testNoStackTrace() throws Exception {
- String fakeStackTrace = "this is not really a stacktrace";
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(fakeStackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertNull(editor.getStackTraceFromDescription());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceWithAppendedText() throws Exception {
-
- String stackTrace = "java.lang.NullPointerException\nat jeff.testing.stack.trace.functionality(jeff.java:481)";
- String extraText = "\nExtra text that isnt' part of the stack trace java:";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(extraText + "\n" + stackTrace + "\n");
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceMisaligned() throws Exception {
-
- String stackTrace = "java.lang.IllegalStateException: zip file closed\n" +
- " at java.util.zip.ZipFile.ensureOpen (ZipFile.java:518)\n" +
- "at java.util.zip.ZipFile.getEntry (ZipFile.java:251)\n" +
- " at java.util.jar.JarFile.getEntry(JarFile.java:200)\n" +
- "at sun.net.www.protocol.jar.URLJarFile.getEntry\n" +
- " (URLJarFile.java:90)\n" +
- "at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:112)\n" +
- "at sun.net.www.protocol.jar.JarURLConnection.getInputStream\n" +
- "(JarURLConnection.java:124)\n" +
- "at org.eclipse.jdt.internal.core.JavaElement\n.getURLContents(JavaElement.java:734)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceSUN() throws Exception {
-
- // SUN, IBM (no space before brackets, one set of brackets)
- String stackTrace = "java.lang.IllegalStateException: zip file closed\n" +
- " at java.util.zip.ZipFile.ensureOpen(ZipFile.java:518)\n" +
- " at java.util.zip.ZipFile.getEntry(ZipFile.java:251)\n" +
- " at java.util.jar.JarFile.getEntry(JarFile.java:200)\n" +
- " at sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:90)\n" +
- " at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:112)\n" +
- " at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:124)\n" +
- " at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:734)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceGCJ() throws Exception {
-
- // gcj/gij (path and lib names in additional brackets)
- String stackTrace = "java.lang.Error: Something bad happened\n" +
- " at testcase.main(java.lang.String[]) (Unknown Source)\n" +
- " at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0)\n" +
- " at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceNoLineNums() throws Exception {
-
- // ikvm (no line numbers)
- String stackTrace = "java.lang.Error: Something bad happened\n" +
- " at testcase.main (testcase.java)\n" +
- " at java.lang.reflect.Method.Invoke (Method.java)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceJRockit() throws Exception {
-
- // jrockit (slash delimiters)
- String stackTrace = "java.lang.Error: Something bad happened\n" +
- " at java/io/BufferedReader.readLine(BufferedReader.java:331)\n" +
- " at java/io/BufferedReader.readLine(BufferedReader.java:362)\n" +
- " at java/util/Properties.load(Properties.java:192)\n" +
- " at java/util/logging/LogManager.readConfiguration(L:555)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-
- public void testStackTraceOther() throws Exception {
-
- // jamvm, sablevm, kaffe, cacao (space before brackets, one set of brackets)
- String stackTrace = "java.lang.Error: Something bad happened\n" +
- " at testcase.main (testcase.java:3)\n" +
- " at java.lang.VirtualMachine.invokeMain (VirtualMachine.java)\n" +
- " at java.lang.VirtualMachine.main (VirtualMachine.java:108)";
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- model.setNewComment(stackTrace);
- model.setHasLocalChanges(true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- NewBugEditorInput input = new NewBugEditorInput(repository, model);
- TaskUiUtil.openEditor(input, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
-
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- NewBugEditor editor = (NewBugEditor) taskEditor.getActivePageInstance();
- assertEquals(stackTrace, editor.getStackTraceFromDescription().trim());
-
- editor.markDirty(false);
- editor.close();
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/EncodingTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/EncodingTest.java
deleted file mode 100644
index 3ad21d456..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/EncodingTest.java
+++ /dev/null
@@ -1,44 +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.bugzilla.tests;
-
-import java.io.IOException;
-import java.text.ParseException;
-
-import javax.security.auth.login.LoginException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-
-/**
- * @author Mik Kersten
- */
-public class EncodingTest extends TestCase {
-
- public void testEncodingSetting() throws LoginException, IOException, ParseException {
-
- String charset = BugzillaServerFacade.getCharsetFromString("text/html; charset=UTF-8");
- assertEquals("UTF-8", charset);
-
- charset = BugzillaServerFacade.getCharsetFromString("text/html");
- assertEquals(null, charset);
-
- charset = BugzillaServerFacade
- .getCharsetFromString("<<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">>");
- assertEquals("iso-8859-2", charset);
-
- charset = BugzillaServerFacade.getCharsetFromString("<<meta http-equiv=\"Content-Type\" content=\"text/html\">>");
- assertEquals(null, charset);
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/NewBugWizardTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/NewBugWizardTest.java
deleted file mode 100644
index 102ef7e5d..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/NewBugWizardTest.java
+++ /dev/null
@@ -1,73 +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.bugzilla.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.NewBugzillaReport;
-import org.eclipse.mylar.internal.bugzilla.ui.wizard.BugzillaProductPage;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Ian Bull
- */
-public class NewBugWizardTest extends TestCase {
-
- public void testPlatformOptions() throws Exception {
-
- NewBugzillaReport newReport = new NewBugzillaReport(IBugzillaConstants.TEST_BUGZILLA_220_URL, "1");
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_220_URL);
- BugzillaServerFacade.setupNewBugAttributes(repository.getUrl(), null, repository.getUserName(), repository.getPassword(), newReport, null);
- BugzillaProductPage page = new BugzillaProductPage(PlatformUI.getWorkbench(), null, repository, null);
- page.setPlatformOptions(newReport);
-
- String os = Platform.getOS();
- if (os.equals("win32"))
- assertEquals("Windows", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- else if (os.equals("solaris"))
- assertEquals("Solaris", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- else if (os.equals("qnx"))
- assertEquals("QNX-Photon", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- else if (os.equals("macosx"))
- assertEquals("Mac OS", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- else if (os.equals("linux"))
- assertEquals("Linux", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- else if (os.equals("hpux"))
- assertEquals("HP-UX", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- else if (os.equals("aix"))
- assertEquals("AIX", newReport.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
-
- String platform = Platform.getOSArch();
- if (platform.equals("x86"))
- assertEquals("PC", newReport.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- else if (platform.equals("x86_64"))
- assertEquals("PC", newReport.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- else if (platform.equals("ia64"))
- assertEquals("PC", newReport.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- else if (platform.equals("ia64_32"))
- assertEquals("PC", newReport.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- else if (platform.equals("sparc"))
- assertEquals("Sun", newReport.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- else if (platform.equals("ppc"))
- assertEquals("Power", newReport.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
-
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryEditorWizardTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryEditorWizardTest.java
deleted file mode 100644
index 8ec722fa0..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryEditorWizardTest.java
+++ /dev/null
@@ -1,156 +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.bugzilla.tests;
-
-import java.net.UnknownHostException;
-
-import javax.security.auth.login.LoginException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositorySettingsPage;
-import org.eclipse.mylar.internal.tasks.ui.wizards.EditRepositoryWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- */
-public class RepositoryEditorWizardTest extends TestCase {
-
- TaskRepositoryManager manager;
-
- TaskRepository repository;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL);
- Credentials credentials = MylarTestUtils.readCredentials();
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
-
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- public void testValidationInvalidPassword() throws Exception {
-
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- BugzillaRepositorySettingsPage page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- page.setPassword("bogus");
- try {
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- } catch (LoginException e) {
- return;
- }
- fail("LoginException didn't occur!");
- }
-
- public void testValidationInvalidUserid() throws Exception {
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- BugzillaRepositorySettingsPage page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- page.setUserId("bogus");
- try {
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- } catch (LoginException e) {
- return;
- }
- fail("LoginException didn't occur!");
- }
-
- public void testValidationInvalidUrl() throws Exception {
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- BugzillaRepositorySettingsPage page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- page.setUrl("http://invalid");
- try {
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- } catch (UnknownHostException e) {
- return;
- }
- fail("UnknownHostException didn't occur!");
- }
-
- public void testPersistChangeOfUrl() throws Exception {
- assertEquals(1, manager.getAllRepositories().size());
- String tempUid = repository.getUserName();
- String tempPass = repository.getPassword();
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- BugzillaRepositorySettingsPage page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- page.setUrl(IBugzillaConstants.TEST_BUGZILLA_218_URL);
- wizard.performFinish();
- assertEquals(1, manager.getAllRepositories().size());
- TaskRepository repositoryTest = manager.getRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_218_URL);
- assertNotNull(repositoryTest);
- assertEquals(tempUid, repositoryTest.getUserName());
- assertEquals(tempPass, repositoryTest.getPassword());
- }
-
- public void testPersistChangeUserId() throws Exception {
- assertEquals(1, manager.getAllRepositories().size());
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- BugzillaRepositorySettingsPage page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- page.setUserId("bogus");
- wizard.performFinish();
- assertEquals(1, manager.getAllRepositories().size());
- TaskRepository repositoryTest = manager.getRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
- assertNotNull(repositoryTest);
- wizard = new EditRepositoryWizard(repositoryTest);
- dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- try {
- BugzillaServerFacade.validateCredentials(null, page.getServerUrl(), page.getUserName(), page.getPassword());
- } catch (LoginException e) {
- return;
- }
- fail("LoginException didn't occur!");
- }
-
- public void testAutoVersion() throws Exception {
- repository.setVersion(BugzillaRepositorySettingsPage.LABEL_AUTOMATIC_VERSION);
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
- dialog.create();
- BugzillaRepositorySettingsPage page = (BugzillaRepositorySettingsPage) wizard.getSettingsPage();
- page.setTesting(true);
- assertEquals(BugzillaRepositorySettingsPage.LABEL_AUTOMATIC_VERSION, page.getVersion());
- page.validateSettings();
- assertEquals("2.22", page.getVersion());
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryReportFactoryTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryReportFactoryTest.java
deleted file mode 100644
index 2c7e837ba..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryReportFactoryTest.java
+++ /dev/null
@@ -1,515 +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.bugzilla.tests;
-
-import java.io.IOException;
-
-import javax.security.auth.login.LoginException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaAttributeFactory;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.RepositoryReportFactory;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class RepositoryReportFactoryTest extends TestCase {
-
- RepositoryReportFactory factory = new RepositoryReportFactory();
-
- BugzillaAttributeFactory attributeFactory = new BugzillaAttributeFactory();
-
- private RepositoryTaskData init(String URL, int bugid) throws Exception {
- TaskRepository repository = getRepository(BugzillaCorePlugin.REPOSITORY_KIND, URL);
-
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), "" + bugid);
- BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(), report);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository.getPassword(),
- null);
-
- return report;
- }
-
- private TaskRepository getRepository(String kind, String url) {
- TaskRepository repository = new TaskRepository(kind, url);
- Credentials credentials = MylarTestUtils.readCredentials();
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
- return repository;
- }
-
- public void testBugNotFound222() throws Exception {
- String bugid = "-1";
- String errorMessage = "";
- TaskRepository repository = getRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
- try {
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, repository.getKind(), repository
- .getUrl(), bugid);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository
- .getPassword(), null);
- } catch (LoginException e) {
- //
- } catch (IOException e) {
- errorMessage = e.getMessage();
- }
- assertEquals(IBugzillaConstants.ERROR_INVALID_BUG_ID, errorMessage);
- }
-
- public void testInvalidCredentials222() throws Exception {
- String bugid = "1";
- String errorMessage = "";
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
- repository.setAuthenticationCredentials("invalid", "invalid");
- try {
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), bugid);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository
- .getPassword(), null);
- } catch (LoginException e) {
- errorMessage = e.getMessage();
- } catch (IOException e) {
- errorMessage = e.getMessage();
- }
- assertEquals(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD, errorMessage);
- repository.flushAuthenticationCredentials();
- }
-
- public void testReadingReport() throws Exception {
- String bugid = "2";
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
-
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), bugid);
- BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(), report);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository.getPassword(),
- null);
-
- assertNotNull(report);
- assertEquals("search-match-test 1", report.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- .getValue());
- assertEquals("TestProduct", report.getAttribute(BugzillaReportElement.PRODUCT.getKeyString()).getValue());
- assertEquals("PC", report.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- assertEquals("Windows", report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- // first comment (#0) is the description so this value is always 1
- // greater
- // than what is shown on the report ui
- assertEquals(3, report.getComments().size());
- assertEquals("search-match-test 1", report.getComments().get(0).getAttribute(
- BugzillaReportElement.THETEXT.getKeyString()).getValue());
- // assertEquals(15, report.getAttachments().size());
- // assertEquals("1",
- // report.getAttachments().get(0).getAttribute(BugzillaReportElement.ATTACHID).getValue());
- // assertEquals("2006-03-10 14:11",
- // report.getAttachments().get(0).getAttribute(BugzillaReportElement.DATE)
- // .getValue());
- // assertEquals("Testing upload",
- // report.getAttachments().get(0).getAttribute(BugzillaReportElement.DESC)
- // .getValue());
- // assertEquals("patch130217.txt",
- // report.getAttachments().get(0).getAttribute(BugzillaReportElement.FILENAME)
- // .getValue());
- // assertEquals("text/plain",
- // report.getAttachments().get(0).getAttribute(BugzillaReportElement.TYPE).getValue());
- }
-
- public void testReadingReport222() throws Exception {
- int bugid = 2;
- // TaskRepository repository = new
- // TaskRepository(BugzillaPlugin.REPOSITORY_KIND,
- // IBugzillaConstants.TEST_BUGZILLA_222_URL);
- //
- // RepositoryTaskData report = new RepositoryTaskData(attributeFactory,
- // BugzillaPlugin.REPOSITORY_KIND, repository.getUrl(), bugid);
- // BugzillaRepositoryUtil.setupExistingBugAttributes(repository.getUrl(),
- // report);
- // factory.populateReport(report, repository.getUrl(), null,
- // repository.getUserName(), repository.getPassword(), null);
- RepositoryTaskData report = init(IBugzillaConstants.TEST_BUGZILLA_222_URL, bugid);
-
- assertNotNull(report);
- assertEquals("search-match-test 1", report.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- .getValue());
- assertEquals("search-match-test 1", report.getSummary());
- assertEquals("search-match-test 1", report.getDescription());
- assertEquals("TestProduct", report.getAttribute(BugzillaReportElement.PRODUCT.getKeyString()).getValue());
- assertEquals("TestProduct", report.getProduct());
- assertEquals("TestComponent", report.getAttribute(BugzillaReportElement.COMPONENT.getKeyString()).getValue());
- assertEquals("PC", report.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- assertEquals("Windows", report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- assertEquals("other", report.getAttribute(BugzillaReportElement.VERSION.getKeyString()).getValue());
- assertEquals("P1", report.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()).getValue());
- assertEquals("normal", report.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()).getValue());
- assertEquals("" + bugid, report.getAttribute(BugzillaReportElement.BUG_ID.getKeyString()).getValue());
- assertEquals("NEW", report.getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString()).getValue());
- assertEquals("2006-05-23 17:46", report.getAttribute(BugzillaReportElement.CREATION_TS.getKeyString())
- .getValue());
- assertEquals("2006-06-15 12:55:43", report.getAttribute(BugzillaReportElement.DELTA_TS.getKeyString())
- .getValue());
- assertEquals("---", report.getAttribute(BugzillaReportElement.TARGET_MILESTONE.getKeyString()).getValue());
- assertEquals("relves@cs.ubc.ca", report.getAttribute(BugzillaReportElement.REPORTER.getKeyString()).getValue());
- assertEquals("nhapke@cs.ubc.ca", report.getAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString())
- .getValue());
- assertEquals(3, report.getComments().size());
- assertEquals("relves@cs.ubc.ca", report.getComments().get(0).getAttribute(
- BugzillaReportElement.WHO.getKeyString()).getValue());
- assertEquals("2006-05-23 17:46:24", report.getComments().get(0).getAttribute(
- BugzillaReportElement.BUG_WHEN.getKeyString()).getValue());
- assertEquals("search-match-test 1", report.getComments().get(0).getAttribute(
- BugzillaReportElement.THETEXT.getKeyString()).getValue());
- assertEquals(0, report.getAttachments().size());
- }
-
- public void testReadingReport2201() throws Exception {
- String bugid = "1";
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_2201_URL);
-
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), bugid);
- BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(), report);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository.getPassword(),
- null);
-
- assertNotNull(report);
- assertEquals("1", report.getAttribute(BugzillaReportElement.BUG_ID.getKeyString()).getValue());
- assertEquals("search-match-test 1", report.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- .getValue());
- assertEquals("TestProduct", report.getAttribute(BugzillaReportElement.PRODUCT.getKeyString()).getValue());
- assertEquals("TestComponent", report.getAttribute(BugzillaReportElement.COMPONENT.getKeyString()).getValue());
- assertEquals("PC", report.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- assertEquals("Windows", report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- assertEquals("other", report.getAttribute(BugzillaReportElement.VERSION.getKeyString()).getValue());
- assertEquals("P2", report.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()).getValue());
- assertEquals("normal", report.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()).getValue());
- assertEquals("NEW", report.getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString()).getValue());
- assertEquals("2006-03-02 18:13", report.getAttribute(BugzillaReportElement.CREATION_TS.getKeyString())
- .getValue());
- assertEquals("2006-05-03 13:06:11", report.getAttribute(BugzillaReportElement.DELTA_TS.getKeyString())
- .getValue());
- assertEquals("---", report.getAttribute(BugzillaReportElement.TARGET_MILESTONE.getKeyString()).getValue());
- RepositoryTaskAttribute attribute = report.getAttribute(BugzillaReportElement.BLOCKED.getKeyString());
- assertEquals("2, 9", attribute.getValue());
- attribute = report.getAttribute(BugzillaReportElement.CC.getKeyString());
- assertEquals(2, attribute.getValues().size());
- assertEquals("relves@cs.ubc.ca", attribute.getValues().get(0));
- assertEquals("relves@gmail.com", attribute.getValues().get(1));
- assertEquals("relves@cs.ubc.ca", report.getAttribute(BugzillaReportElement.REPORTER.getKeyString()).getValue());
- assertEquals("relves@cs.ubc.ca", report.getAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString())
- .getValue());
- assertEquals(1, report.getComments().size());
- assertEquals("relves@cs.ubc.ca", report.getComments().get(0).getAttribute(
- BugzillaReportElement.WHO.getKeyString()).getValue());
- assertEquals("2006-03-02 18:13", report.getComments().get(0).getAttribute(
- BugzillaReportElement.BUG_WHEN.getKeyString()).getValue());
- assertEquals("search-match-test 1", report.getComments().get(0).getAttribute(
- BugzillaReportElement.THETEXT.getKeyString()).getValue());
- assertEquals(0, report.getAttachments().size());
- }
-
- // public void testReadingReport2201Eclipse() throws Exception {
- // String bugid = "24448";
- // TaskRepository repository = new
- // TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- // IBugzillaConstants.ECLIPSE_BUGZILLA_URL);
- //
- // RepositoryTaskData report = new RepositoryTaskData(attributeFactory,
- // BugzillaCorePlugin.REPOSITORY_KIND, repository
- // .getUrl(), bugid);
- // BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(),
- // report);
- // factory.populateReport(report, repository.getUrl(), null,
- // repository.getUserName(), repository.getPassword(),
- // null);
- //
- // assertNotNull(report);
- // assertEquals("24448",
- // report.getAttribute(BugzillaReportElement.BUG_ID.getKeyString()).getValue());
- // assertEquals("Ant causing Out of Memory",
- // report.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- // .getValue());
- // assertEquals("Platform",
- // report.getAttribute(BugzillaReportElement.PRODUCT.getKeyString()).getValue());
- // assertEquals("Ant",
- // report.getAttribute(BugzillaReportElement.COMPONENT.getKeyString()).getValue());
- // assertEquals("PC",
- // report.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- // assertEquals("other",
- // report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- // assertEquals("2.0",
- // report.getAttribute(BugzillaReportElement.VERSION.getKeyString()).getValue());
- // assertEquals("P2",
- // report.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()).getValue());
- // assertEquals("normal",
- // report.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()).getValue());
- // assertEquals("RESOLVED",
- // report.getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString()).getValue());
- // assertEquals("WONTFIX",
- // report.getAttribute(BugzillaReportElement.RESOLUTION.getKeyString()).getValue());
- // assertEquals("2002-10-07 09:32",
- // report.getAttribute(BugzillaReportElement.CREATION_TS.getKeyString())
- // .getValue());
- // assertEquals("2006-02-03 12:03:57",
- // report.getAttribute(BugzillaReportElement.DELTA_TS.getKeyString())
- // .getValue());
- // assertEquals("core, performance, ui",
- // report.getAttribute(BugzillaReportElement.KEYWORDS.getKeyString())
- // .getValue());
- // // RepositoryTaskAttribute attribute =
- // // report.getAttribute(BugzillaReportElement.CC);
- // // assertEquals(30, attribute.getValues().size());
- // // assertEquals("relves@cs.ubc.ca", attribute.getValues().get(0));
- // // assertEquals("relves@gmail.com", attribute.getValues().get(1));
- // // assertEquals("relves@cs.ubc.ca",
- // // report.getAttribute(BugzillaReportElement.REPORTER).getValue());
- // // assertEquals("relves@cs.ubc.ca",
- // // report.getAttribute(BugzillaReportElement.ASSIGNED_TO).getValue());
- // // assertEquals(1, report.getComments().size());
- // // assertEquals("relves@cs.ubc.ca",
- // //
- // report.getComments().get(0).getAttribute(BugzillaReportElement.WHO).getValue());
- // // assertEquals("2006-03-02 18:13",
- // //
- // report.getComments().get(0).getAttribute(BugzillaReportElement.BUG_WHEN)
- // // .getValue());
- // // assertEquals("search-match-test 1",
- // //
- // report.getComments().get(0).getAttribute(BugzillaReportElement.THETEXT)
- // // .getValue());
- // // assertEquals(0, report.getAttachments().size());
- // }
-
- // public void testReadingReport220() throws Exception {
- // String bugid = "1";
- // TaskRepository repository = new
- // TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- // IBugzillaConstants.TEST_BUGZILLA_220_URL);
- //
- // RepositoryTaskData report = new RepositoryTaskData(attributeFactory,
- // BugzillaCorePlugin.REPOSITORY_KIND,
- // repository.getUrl(), bugid);
- // BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(),
- // report);
- // factory.populateReport(report, repository.getUrl(), null,
- // repository.getUserName(), repository.getPassword(),
- // null);
- //
- // assertNotNull(report);
- // assertEquals("1",
- // report.getAttribute(BugzillaReportElement.BUG_ID.getKeyString()).getValue());
- // assertEquals("search-match-test",
- // report.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- // .getValue());
- // assertEquals("TestProduct",
- // report.getAttribute(BugzillaReportElement.PRODUCT.getKeyString()).getValue());
- // assertEquals("TestComponent",
- // report.getAttribute(BugzillaReportElement.COMPONENT.getKeyString()).getValue());
- // assertEquals("PC",
- // report.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- // assertEquals("Windows",
- // report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- // assertEquals("other",
- // report.getAttribute(BugzillaReportElement.VERSION.getKeyString()).getValue());
- // assertEquals("P2",
- // report.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()).getValue());
- // assertEquals("normal",
- // report.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()).getValue());
- // assertEquals("NEW",
- // report.getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString()).getValue());
- // assertEquals("2006-03-02 17:30",
- // report.getAttribute(BugzillaReportElement.CREATION_TS.getKeyString())
- // .getValue());
- // assertEquals("2006-04-20 15:13:43",
- // report.getAttribute(BugzillaReportElement.DELTA_TS.getKeyString())
- // .getValue());
- // assertEquals("---",
- // report.getAttribute(BugzillaReportElement.TARGET_MILESTONE.getKeyString()).getValue());
- // assertEquals("relves@cs.ubc.ca",
- // report.getAttribute(BugzillaReportElement.REPORTER.getKeyString()).getValue());
- // assertEquals("relves@cs.ubc.ca",
- // report.getAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString())
- // .getValue());
- // assertEquals("relves@cs.ubc.ca",
- // report.getAttribute(BugzillaReportElement.CC.getKeyString()).getValue());
- // assertEquals(3, report.getComments().size());
- // assertEquals("relves@cs.ubc.ca",
- // report.getComments().get(0).getAttribute(
- // BugzillaReportElement.WHO.getKeyString()).getValue());
- // assertEquals("2006-03-02 17:30",
- // report.getComments().get(0).getAttribute(
- // BugzillaReportElement.BUG_WHEN.getKeyString()).getValue());
- // assertEquals("search-match-test",
- // report.getComments().get(0).getAttribute(
- // BugzillaReportElement.THETEXT.getKeyString()).getValue());
- // assertEquals(0, report.getAttachments().size());
- // }
-
- public void testReadingReport218() throws Exception {
- String bugid = "1";
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_218_URL);
-
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), bugid);
- BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(), report);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository.getPassword(),
- null);
-
- assertNotNull(report);
- assertEquals("1", report.getAttribute(BugzillaReportElement.BUG_ID.getKeyString()).getValue());
- assertEquals("search-match-test 1", report.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString())
- .getValue());
- assertEquals("TestProduct", report.getAttribute(BugzillaReportElement.PRODUCT.getKeyString()).getValue());
- assertEquals("TestComponent", report.getAttribute(BugzillaReportElement.COMPONENT.getKeyString()).getValue());
- assertEquals("PC", report.getAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString()).getValue());
- assertEquals("Windows XP", report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- assertEquals("other", report.getAttribute(BugzillaReportElement.VERSION.getKeyString()).getValue());
- assertEquals("P2", report.getAttribute(BugzillaReportElement.PRIORITY.getKeyString()).getValue());
- assertEquals("normal", report.getAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString()).getValue());
- assertEquals("NEW", report.getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString()).getValue());
- assertEquals("2006-03-02 18:09", report.getAttribute(BugzillaReportElement.CREATION_TS.getKeyString())
- .getValue());
- assertEquals("2006-05-05 17:45:24", report.getAttribute(BugzillaReportElement.DELTA_TS.getKeyString())
- .getValue());
- assertEquals("---", report.getAttribute(BugzillaReportElement.TARGET_MILESTONE.getKeyString()).getValue());
- assertEquals("relves@cs.ubc.ca", report.getAttribute(BugzillaReportElement.REPORTER.getKeyString()).getValue());
- assertEquals("relves@cs.ubc.ca", report.getAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString())
- .getValue());
- assertEquals(1, report.getComments().size());
- assertEquals("relves@cs.ubc.ca", report.getComments().get(0).getAttribute(
- BugzillaReportElement.WHO.getKeyString()).getValue());
- assertEquals("2006-03-02 18:09", report.getComments().get(0).getAttribute(
- BugzillaReportElement.BUG_WHEN.getKeyString()).getValue());
- assertEquals("search-match-test 1", report.getComments().get(0).getAttribute(
- BugzillaReportElement.THETEXT.getKeyString()).getValue());
- assertEquals(0, report.getAttachments().size());
- }
-
- public void testTimeTracking222() throws Exception {
- RepositoryTaskData report = init(IBugzillaConstants.TEST_BUGZILLA_222_URL, 11);
-
- assertEquals("7.50", report.getAttribute(BugzillaReportElement.ESTIMATED_TIME.getKeyString()).getValue());
- assertEquals("4.00", report.getAttribute(BugzillaReportElement.ACTUAL_TIME.getKeyString()).getValue());
- assertEquals("3.00", report.getAttribute(BugzillaReportElement.REMAINING_TIME.getKeyString()).getValue());
- assertEquals("2005-03-04", report.getAttribute(BugzillaReportElement.DEADLINE.getKeyString()).getValue());
- }
-
- // public void testTimeTracking2201() throws Exception {
- // RepositoryTaskData report =
- // init(IBugzillaConstants.TEST_BUGZILLA_2201_URL, 23);
- //
- // assertEquals("7.50",
- // report.getAttribute(BugzillaReportElement.ESTIMATED_TIME.getKeyString()).getValue());
- // assertEquals("1.00",
- // report.getAttribute(BugzillaReportElement.ACTUAL_TIME.getKeyString()).getValue());
- // assertEquals("3.00",
- // report.getAttribute(BugzillaReportElement.REMAINING_TIME.getKeyString()).getValue());
- // assertEquals("2005-03-04",
- // report.getAttribute(BugzillaReportElement.DEADLINE.getKeyString()).getValue());
- // }
- //
- // public void testTimeTracking220() throws Exception {
- // RepositoryTaskData report =
- // init(IBugzillaConstants.TEST_BUGZILLA_220_URL, 9);
- //
- // assertEquals("7.50",
- // report.getAttribute(BugzillaReportElement.ESTIMATED_TIME.getKeyString()).getValue());
- // assertEquals("1.00",
- // report.getAttribute(BugzillaReportElement.ACTUAL_TIME.getKeyString()).getValue());
- // assertEquals("3.00",
- // report.getAttribute(BugzillaReportElement.REMAINING_TIME.getKeyString()).getValue());
- // assertEquals("2005-03-04",
- // report.getAttribute(BugzillaReportElement.DEADLINE.getKeyString()).getValue());
- // }
-
- public void testTimeTracking218() throws Exception {
- RepositoryTaskData report = init(IBugzillaConstants.TEST_BUGZILLA_218_URL, 19);
-
- assertEquals("7.50", report.getAttribute(BugzillaReportElement.ESTIMATED_TIME.getKeyString()).getValue());
- assertEquals("1.00", report.getAttribute(BugzillaReportElement.ACTUAL_TIME.getKeyString()).getValue());
- assertEquals("3.00", report.getAttribute(BugzillaReportElement.REMAINING_TIME.getKeyString()).getValue());
- }
-
- public void testMultipleDepensOn() throws Exception {
- String bugid = "5";
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_218_URL);
-
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), bugid);
- BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(), report);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository.getPassword(),
- null);
-
- assertNotNull(report);
- assertEquals("5", report.getAttribute(BugzillaReportElement.BUG_ID.getKeyString()).getValue());
- assertEquals("6, 7", report.getAttribute(BugzillaReportElement.DEPENDSON.getKeyString()).getValue());
- assertEquals("13, 14", report.getAttribute(BugzillaReportElement.BLOCKED.getKeyString()).getValue());
- }
-
- public void testBugReportAPI() throws Exception {
- String bugid = "3";
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
-
- RepositoryTaskData report = new RepositoryTaskData(attributeFactory, BugzillaCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), bugid);
- BugzillaServerFacade.setupExistingBugAttributes(repository.getUrl(), report);
- factory.populateReport(report, repository.getUrl(), null, repository.getUserName(), repository.getPassword(),
- null);
-
- assertNotNull(report);
- assertTrue(report instanceof RepositoryTaskData);
- RepositoryTaskData bugReport = (RepositoryTaskData) report;
- assertEquals("search-match-test 2", bugReport.getSummary());
- assertEquals("search-match-test 2", bugReport.getDescription());
- assertEquals("TestProduct", bugReport.getProduct());
- assertEquals("nhapke@cs.ubc.ca", bugReport.getAssignedTo());
- // assertEquals("Other",
- // report.getAttribute(BugzillaReportElement.OP_SYS.getKeyString()).getValue());
- // assertEquals(37, report.getComments().size());
- // assertEquals("Testing new 2.22 version capability",
- // report.getComments().get(0).getAttribute(BugzillaReportElement.THETEXT.getKeyString()).getValue());
- // assertEquals(15, report.getAttachments().size());
- // assertEquals("1",
- // report.getAttachments().get(0).getAttribute(BugzillaReportElement.ATTACHID.getKeyString()).getValue());
- }
-
- public void testDeltaTsTruncation() {
- String ts1 = "2006-07-06 03:22:08 0900";
- String ts1_truncated = "2006-07-06 03:22:08";
- assertEquals(ts1_truncated, BugzillaReportSubmitForm.stripTimeZone(ts1));
-
- String ts2 = "2006-07-06 03:22:08";
- String ts2_truncated = "2006-07-06 03:22:08";
- assertEquals(ts2_truncated, BugzillaReportSubmitForm.stripTimeZone(ts2));
-
- String ts3 = "2006-07-06 03:22:08 PST";
- String ts3_truncated = "2006-07-06 03:22:08";
- assertEquals(ts3_truncated, BugzillaReportSubmitForm.stripTimeZone(ts3));
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryTaskHandleTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryTaskHandleTest.java
deleted file mode 100644
index 4a50490fd..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/RepositoryTaskHandleTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.bugzilla.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class RepositoryTaskHandleTest extends TestCase {
-
- private TaskListManager manager = TasksUiPlugin.getTaskListManager();
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getTaskListManager();
- manager.resetTaskList();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- manager.resetTaskList();
- }
-
- public void testInvalidHandle() {
-// MockRepositoryTask task = new MockRepositoryTask()
- String url = "http://foo";
- assertEquals(url + "-" + "abc", AbstractRepositoryTask.getHandle(url, "abc"));
- Exception caught = null;
- try {
- AbstractRepositoryTask.getHandle(url, "a-23");
- } catch (Exception e) {
- caught = e;
- }
- assertNotNull(caught);
- }
-
- public void testRepositoryUrlHandles() {
-
- String repository = IBugzillaConstants.ECLIPSE_BUGZILLA_URL;
- String id = "123";
- String handle = AbstractRepositoryTask.getHandle(repository, id);
- BugzillaTask bugTask = new BugzillaTask(handle, "label 124", true);
- assertEquals(repository, bugTask.getRepositoryUrl());
-
- manager.getTaskList().moveToRoot(bugTask);
- manager.saveTaskList();
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
-
- BugzillaTask readReport = (BugzillaTask) manager.getTaskList().getRootTasks().iterator().next();
- assertEquals(readReport.getDescription(), readReport.getDescription());
- assertEquals(readReport.getRepositoryUrl(), readReport.getRepositoryUrl());
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java
deleted file mode 100644
index f1b105f21..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskEditorTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.bugzilla.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.NewBugzillaReport;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractRepositoryTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Jeff Pound
- */
-public class TaskEditorTest extends TestCase {
-
- private static final String DESCRIPTION = "description";
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TasksUiPlugin.getTaskListManager().resetTaskList();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- super.tearDown();
- }
-
- /**
- * Automated task creation needs to access newly created task editors. This
- * test tests that the access is available.
- *
- * @throws Exception
- */
- public void testAccessNewEditor() throws Exception {
- TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- IBugzillaConstants.TEST_BUGZILLA_222_URL);
-
- NewBugzillaReport model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault()
- .getOfflineReportsFile().getNextOfflineBugId());
- NewBugEditorInput editorInput = new NewBugEditorInput(repository, model);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- TaskUiUtil.openEditor(editorInput, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
- assertTrue(page.getActiveEditor() instanceof MylarTaskEditor);
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- assertTrue(taskEditor.getActivePageInstance() instanceof AbstractRepositoryTaskEditor);
- AbstractRepositoryTaskEditor editor = (AbstractRepositoryTaskEditor) taskEditor.getActivePageInstance();
-
- String desc = DESCRIPTION;
- String summary = "summary";
- // ensure we have access without exceptions
- editor.setDescriptionText(desc);
- editor.setSummaryText(summary);
- editor.doSave(new NullProgressMonitor());
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListNotificationManagerTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListNotificationManagerTest.java
deleted file mode 100644
index 4b50abbe2..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListNotificationManagerTest.java
+++ /dev/null
@@ -1,139 +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.bugzilla.tests;
-
-import java.util.Date;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaQueryHit;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationIncoming;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationManager;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationQueryIncoming;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- */
-public class TaskListNotificationManagerTest extends TestCase {
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testTaskListNotificationReminder() throws InterruptedException {
-
- Date now = new Date();
-
- ITask task0 = new Task("t0", "t0 - test 0", true);
- ITask task1 = new Task("t1", "t1 - test 1", true);
- ITask task2 = new Task("t2", "t2 - test 2", true);
-
- task0.setReminderDate(new Date(now.getTime() - 2000));
- task1.setReminderDate(new Date(now.getTime() - 2000));
- task2.setReminderDate(new Date(now.getTime() - 2000));
-
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task0);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task2);
-
- TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
- .getTaskListNotificationManager();
- notificationManager.collectNotifications();
-
- task0 = TasksUiPlugin.getTaskListManager().getTaskList().getTask("t0");
- assertNotNull(task0);
- assertTrue(task0.hasBeenReminded());
- task1 = TasksUiPlugin.getTaskListManager().getTaskList().getTask("t1");
- assertNotNull(task1);
- assertTrue(task1.hasBeenReminded());
- task2 = TasksUiPlugin.getTaskListManager().getTaskList().getTask("t2");
- assertNotNull(task2);
- assertTrue(task2.hasBeenReminded());
-
- }
-
- public void testTaskListNotificationIncoming() {
-
- TaskRepository repository = new TaskRepository("bugzilla", "https://bugs.eclipse.org/bugs");
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- AbstractRepositoryTask task = new BugzillaTask("https://bugs.eclipse.org/bugs-142891", "label", true);
- assertTrue(task.getSyncState() == RepositoryTaskSyncState.INCOMING);
- assertTrue(task.isNotified());
- task.setNotified(false);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
- TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
- .getTaskListNotificationManager();
- notificationManager.collectNotifications();
- assertTrue(notificationManager.getNotifications().contains(new TaskListNotificationIncoming(task)));
- task = (AbstractRepositoryTask) TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- "https://bugs.eclipse.org/bugs-142891");
- assertNotNull(task);
- assertTrue(task.isNotified());
- }
-
- public void testTaskListNotificationQueryIncoming() {
- BugzillaQueryHit hit = new BugzillaQueryHit(null, "description", "priority", "https://bugs.eclipse.org/bugs", "1",
- null, "status");
- assertFalse(hit.isNotified());
- BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("https://bugs.eclipse.org/bugs", "queryUrl",
- "description", "10", TasksUiPlugin.getTaskListManager().getTaskList());
- query.addHit(hit, TasksUiPlugin.getTaskListManager().getTaskList());
- TasksUiPlugin.getTaskListManager().getTaskList().addQuery(query);
- TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
- .getTaskListNotificationManager();
- notificationManager.collectNotifications();
- assertTrue(notificationManager.getNotifications().contains(new TaskListNotificationQueryIncoming(hit)));
- assertTrue(hit.isNotified());
- }
-
- public void testTaskListNotificationQueryIncomingRepeats() {
- TasksUiPlugin.getTaskListManager().resetTaskList();
- BugzillaQueryHit hit = new BugzillaQueryHit(null, "description", "priority", "https://bugs.eclipse.org/bugs", "1",
- null, "status");
- String hitHandle = hit.getHandleIdentifier();
- assertFalse(hit.isNotified());
- BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("https://bugs.eclipse.org/bugs", "queryUrl",
- "description", "10", TasksUiPlugin.getTaskListManager().getTaskList());
- query.addHit(hit, TasksUiPlugin.getTaskListManager().getTaskList());
- TasksUiPlugin.getTaskListManager().getTaskList().addQuery(query);
- TaskListNotificationManager notificationManager = TasksUiPlugin.getDefault()
- .getTaskListNotificationManager();
- notificationManager.collectNotifications();
- assertTrue(notificationManager.getNotifications().contains(new TaskListNotificationQueryIncoming(hit)));
- assertTrue(hit.isNotified());
-
- TasksUiPlugin.getTaskListManager().saveTaskList();
- TasksUiPlugin.getTaskListManager().resetTaskList();
- assertEquals(0, TasksUiPlugin.getTaskListManager().getTaskList().getQueries().size());
- assertTrue(TasksUiPlugin.getTaskListManager().readExistingOrCreateNewList());
- assertEquals(1, TasksUiPlugin.getTaskListManager().getTaskList().getQueries().size());
- BugzillaQueryHit hitLoaded = (BugzillaQueryHit)TasksUiPlugin.getTaskListManager().getTaskList().getQueryHitForHandle(hitHandle);
- assertNotNull(hitLoaded);
- assertTrue(hitLoaded.isNotified());
-
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListStandaloneTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListStandaloneTest.java
deleted file mode 100644
index e16599139..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskListStandaloneTest.java
+++ /dev/null
@@ -1,151 +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.bugzilla.tests;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskExternalizer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListExternalizer;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskListStandaloneTest extends TestCase {
-
- private TaskListManager manager;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- manager = TasksUiPlugin.getTaskListManager();
-
- // file = new File("tasklist" + TasksUiPlugin.FILE_EXTENSION);
- // file.deleteOnExit();
- // new TaskListManager(writer, file);
- manager.resetTaskList();
- assertEquals("should be empty: " + manager.getTaskList().getRootTasks(), 0, manager.getTaskList()
- .getRootTasks().size());
- }
-
- @Override
- protected void tearDown() throws Exception {
- manager.resetTaskList();
- manager.saveTaskList();
- super.tearDown();
- }
-
- public void testPastReminder() {
- ITask task = new Task("1", "1", true);
- long now = new Date().getTime();
- task.setReminderDate(new Date(now - 1000));
- assertTrue(task.isPastReminder());
-
- task.setReminderDate(new Date(now + 1000));
- assertFalse(task.isPastReminder());
-
- task.setReminderDate(new Date(now - 1000));
- task.setCompleted(true);
- assertTrue(task.isPastReminder());
- }
-
- public void testDates() {
- Date start = Calendar.getInstance().getTime();
- Date creation = new Date();
- Task task = new Task("1", "task 1", true);
-
- manager.getTaskList().moveToRoot(task);
- assertDatesCloseEnough(task.getCreationDate(), start);
-
- task.setCompleted(true);
- assertDatesCloseEnough(task.getCompletionDate(), start);
-
- task.setReminderDate(start);
- assertDatesCloseEnough(task.getReminderDate(), start);
-
- assertEquals(2, manager.getTaskList().getRootElements().size());
- manager.saveTaskList();
-
- assertNotNull(manager.getTaskList());
- // TaskList list = new TaskList();
- // manager.setTaskList(list);
- // assertEquals(0, manager.getTaskList().getRootTasks().size());
- // manager.readOrCreateTaskList();
- // assertNotNull(manager.getTaskList());
- assertEquals(1, manager.getTaskList().getRootTasks().size());
-
- Set<ITask> readList = manager.getTaskList().getRootTasks();
- ITask readTask = readList.iterator().next();
- assertTrue(readTask.getDescription().equals("task 1"));
-
- assertEquals("should be: " + creation, task.getCreationDate(), readTask.getCreationDate());
- assertEquals(task.getCompletionDate(), readTask.getCompletionDate());
- assertEquals(task.getReminderDate(), readTask.getReminderDate());
- }
-
- public void testTaskRetentionWhenConnectorMissing() {
- List<ITaskListExternalizer> originalExternalizers = manager.getTaskListWriter().getExternalizers();
- List<ITaskListExternalizer> externalizers;
- externalizers = new ArrayList<ITaskListExternalizer>();
- externalizers.add(new BugzillaTaskExternalizer());
- // make some tasks
- // save them
- BugzillaTask task = new BugzillaTask("http://bugs-1", "1", true);
- manager.getTaskList().addTask(task);
- manager.saveTaskList();
-
- // reload tasklist and check that they persist
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals(1, manager.getTaskList().getAllTasks().size());
-
- // removed/disable externalizers
- externalizers.clear();
- manager.getTaskListWriter().setDelegateExternalizers(externalizers);
-
- // reload tasklist ensure task didn't load
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- // Save the task list (tasks with missing connectors should get
- // persisted)
- manager.saveTaskList();
-
- // re-enable connector
- externalizers.add(new BugzillaTaskExternalizer());
- manager.getTaskListWriter().setDelegateExternalizers(externalizers);
-
- // re-load tasklist
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
-
- // ensure that task now gets loaded
- assertEquals(1, manager.getTaskList().getAllTasks().size());
- manager.getTaskListWriter().setDelegateExternalizers(originalExternalizers);
- }
-
- public void assertDatesCloseEnough(Date first, Date second) {
- assertTrue(second.getTime() - first.getTime() < 100);
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskReportGeneratorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskReportGeneratorTest.java
deleted file mode 100644
index 661f3daac..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/TaskReportGeneratorTest.java
+++ /dev/null
@@ -1,190 +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.bugzilla.tests;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaQueryHit;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.tasks.ui.planner.CompletedTaskCollector;
-import org.eclipse.mylar.internal.tasks.ui.planner.TaskReportGenerator;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskReportGeneratorTest extends TestCase {
-
- private TaskListManager manager;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getTaskListManager();
- manager.resetTaskList();
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- manager.resetTaskList();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- }
-
- public void testCompletedTasksRetrieved() throws InvocationTargetException, InterruptedException {
- Task task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- manager.getTaskList().moveToRoot(task1);
-
- CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0));
- TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- task1.setCompleted(true);
- generator.run(new NullProgressMonitor());
- assertEquals(1, generator.getAllCollectedTasks().size());
- assertEquals(task1, generator.getAllCollectedTasks().get(0));
- }
-
- public void testCompletedTasksDateBoundsRetrieved() throws InvocationTargetException, InterruptedException {
- Task task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- manager.getTaskList().moveToRoot(task1);
- task1.setCompleted(true);
- Thread.sleep(1000);
- long now = new Date().getTime();
-
- CompletedTaskCollector collector = new CompletedTaskCollector(new Date(now));
- TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- generator = new TaskReportGenerator(manager.getTaskList());
- collector = new CompletedTaskCollector(new Date(now - 8000));
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(1, generator.getAllCollectedTasks().size());
- assertEquals(task1, generator.getAllCollectedTasks().get(0));
- }
-
- public void testCompletedBugzillaTasksRetrieved() throws InvocationTargetException, InterruptedException {
- BugzillaTask task1 = new BugzillaTask(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(),
- "bugzillatask 1", true);
- manager.getTaskList().moveToRoot(task1);
-
- CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0));
- TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- BugzillaTestUtil.setBugTaskCompleted(task1, true);
- generator.run(new NullProgressMonitor());
- assertEquals(1, generator.getAllCollectedTasks().size());
- assertEquals(task1, generator.getAllCollectedTasks().get(0));
- }
-
- public void testCompletedTasksInCategoryRetrieved() throws InvocationTargetException, InterruptedException {
- Task task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- manager.getTaskList().moveToRoot(task1);
- task1.setCompleted(true);
- TaskCategory cat1 = new TaskCategory("TaskReportGeneratorTest Category", manager.getTaskList());
- manager.getTaskList().addCategory(cat1);
-
- Set<ITaskListElement> catagories = new HashSet<ITaskListElement>();
- catagories.add(cat1);
-
- CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0));
- TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList(), catagories);
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- manager.getTaskList().moveToContainer(cat1, task1);
-
- generator.run(new NullProgressMonitor());
- assertEquals(1, generator.getAllCollectedTasks().size());
- assertEquals(task1, generator.getAllCollectedTasks().get(0));
- }
-
- public void testCompletedBugzillaTasksInCategoryRetrieved() throws InvocationTargetException, InterruptedException {
- BugzillaTask task1 = new BugzillaTask(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1",
- true);
- manager.getTaskList().moveToRoot(task1);
- BugzillaTestUtil.setBugTaskCompleted(task1, true);
- TaskCategory cat1 = new TaskCategory("TaskReportGeneratorTest Category", manager.getTaskList());
- manager.getTaskList().addCategory(cat1);
-
- Set<ITaskListElement> catagories = new HashSet<ITaskListElement>();
- catagories.add(cat1);
-
- CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0));
- TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList(), catagories);
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- manager.getTaskList().moveToContainer(cat1, task1);
-
- generator.run(new NullProgressMonitor());
- assertEquals(1, generator.getAllCollectedTasks().size());
- assertEquals(task1, generator.getAllCollectedTasks().get(0));
- }
-
- public void testCompletedBugzillaTasksInQueryRetrieved() throws InvocationTargetException, InterruptedException {
- BugzillaTask task1 = new BugzillaTask(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1",
- true);
- manager.getTaskList().moveToRoot(task1);
- BugzillaTestUtil.setBugTaskCompleted(task1, false);
-
- BugzillaRepositoryQuery bugQuery = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl",
- "TaskReportGeneratorBugzillaQueryCategory", "maxHits", manager.getTaskList());
-
- manager.getTaskList().addQuery(bugQuery);
-
- Set<ITaskListElement> catagories = new HashSet<ITaskListElement>();
- catagories.add(bugQuery);
-
- CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0));
- TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList(), catagories);
- generator.addCollector(collector);
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- bugQuery.addHit(new BugzillaQueryHit(null, "task1description", "low", "repositoryURL", "1", task1, "FIXED"), manager.getTaskList());
-
- generator.run(new NullProgressMonitor());
- assertEquals(0, generator.getAllCollectedTasks().size());
-
- BugzillaTestUtil.setBugTaskCompleted(task1, true);
-
- generator.run(new NullProgressMonitor());
- assertEquals(1, generator.getAllCollectedTasks().size());
- assertEquals(task1, generator.getAllCollectedTasks().get(0));
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/headless/BugzillaQueryTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/headless/BugzillaQueryTest.java
deleted file mode 100644
index cad12b43b..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/headless/BugzillaQueryTest.java
+++ /dev/null
@@ -1,144 +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.bugzilla.tests.headless;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryConnector;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- *
- * Runs headless (can be run as regular junit test without platform plugin
- * support).
- *
- * @author Rob Elves
- * @author Nathan Hapke
- */
-public class BugzillaQueryTest extends TestCase {
-
- private TaskRepository repository;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL);
- }
-
- /**
- * This is the first test so that the repository credentials are correctly
- * set for the other tests
- */
- public void testAddCredentials() {
- if (!repository.hasCredentials()) {
- Credentials credentials = MylarTestUtils.readCredentials();
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
-
- assertTrue(repository.hasCredentials());
- }
- }
-
- public void testValidateCredentials() throws IOException, BugzillaException, KeyManagementException,
- GeneralSecurityException {
- BugzillaServerFacade.validateCredentials(null, repository.getUrl(), repository.getUserName(), repository
- .getPassword());
- }
-
- public void testValidateCredentialsInvalidProxy() throws IOException, BugzillaException, KeyManagementException,
- GeneralSecurityException {
- BugzillaServerFacade.validateCredentials(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("localhost", 12356)),
- repository.getUrl(), repository.getUserName(), repository.getPassword());
- }
-
- public void testGetBug() throws Exception {
- RepositoryTaskData taskData = BugzillaServerFacade.getBug(repository.getUrl(), repository.getUserName(),
- repository.getPassword(), null, repository.getCharacterEncoding(), 1);
- assertNotNull(taskData);
- assertEquals("user@mylar.eclipse.org", taskData.getAssignedTo());
-
- // Notice that comment 0 is the Bug Description
- assertEquals("foo", taskData.getComments().get(0).getText());
- assertEquals("nhapke@cs.ubc.ca", taskData.getComments().get(0).getAuthor());
-
- // You can use the getAttributeValue to pull up the information on any
- // part of the bug
- assertEquals("P1", taskData.getAttributeValue(BugzillaReportElement.PRIORITY.getKeyString()));
- }
-
- public void testGetProductList() throws Exception {
- List<String> products = BugzillaServerFacade.getProductList(repository.getUrl(), null,
- repository.getUserName(), repository.getPassword(), repository.getCharacterEncoding());
-
- assertEquals(3, products.size());
- assertTrue(products.contains("Read Only Test Cases"));
- assertTrue(products.contains("Read Write Test Cases"));
- assertTrue(products.contains("TestProduct"));
- }
-
- public void testQueryViaConnector() throws Exception {
- String queryUrlString = repository.getUrl()
- + "/buglist.cgi?ctype=rdf&query_format=advanced&short_desc_type=allwordssubstr&short_desc=search-match-test&product=TestProduct&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&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=";
- TaskList taskList = new TaskList();
- QueryHitCollector collector = new QueryHitCollector(new TaskList());
- BugzillaRepositoryConnector connector = new BugzillaRepositoryConnector();
- connector.init(taskList);
- BugzillaRepositoryQuery query = new BugzillaRepositoryQuery(repository.getUrl(), queryUrlString, "description",
- "-1", taskList);
- connector.performQuery(query, repository, null, new NullProgressMonitor(), collector);
- assertEquals(2, collector.getHits().size());
- for (AbstractQueryHit hit : collector.getHits()) {
- assertTrue(hit.getDescription().contains("search-match-test"));
- }
- }
-}
-
-// public void testQueryBugs() throws Exception {
-//
-// QueryHitCollector collector = new QueryHitCollector(new TaskList());
-//
-// // Note need for ctype=rdf in query url
-// String urlString =
-// "http://mylar.eclipse.org/bugs222/buglist.cgi?ctype=rdf&query_format=advanced&short_desc_type=allwordssubstr&short_desc=search-match-test&product=TestProduct&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&deadlinefrom=&deadlineto=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&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=";
-// RepositoryQueryResultsFactory queryFactory = new
-// RepositoryQueryResultsFactory();
-//
-// // Tasklist can be null but calls to hit.getOrCreateCorrespondingTask() will
-// return null.
-// queryFactory.performQuery(null, repository.getUrl(), collector, urlString,
-// null, -1, repository
-// .getCharacterEncoding());
-//
-// assertEquals(2, collector.getHits().size());
-// for (AbstractQueryHit hit : collector.getHits()) {
-// assertTrue(hit.getDescription().contains("search-match-test"));
-// }
-// }
diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/configuration/rdfconfig218.txt b/org.eclipse.mylyn.bugzilla.tests/testdata/configuration/rdfconfig218.txt
deleted file mode 100644
index f6b897fb6..000000000
--- a/org.eclipse.mylyn.bugzilla.tests/testdata/configuration/rdfconfig218.txt
+++ /dev/null
@@ -1,442 +0,0 @@
-<?xml version="1.0"?>
-<!-- Note: this interface is experimental and under development.
- - We may and probably will make breaking changes to it in the future. -->
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:bz="http://www.bugzilla.org/rdf#">
-
-<bz:installation rdf:about="">
-<!-- NOTE: rdf:about="http://mylar.eclipse.org/bugs218/"
- changed to "" for testing -->
- <bz:install_version>2.18.5</bz:install_version>
- <bz:maintainer>relves&#64;cs.ubc.ca</bz:maintainer>
-
- <bz:status>
- <Seq>
- <li>UNCONFIRMED</li>
- <li>NEW</li>
- <li>ASSIGNED</li>
- <li>REOPENED</li>
- <li>RESOLVED</li>
- <li>VERIFIED</li>
- <li>CLOSED</li>
- </Seq>
- </bz:status>
-
- <bz:status_open>
- <Seq>
- <li>UNCONFIRMED</li>
- <li>NEW</li>
- <li>ASSIGNED</li>
- <li>REOPENED</li>
- </Seq>
- </bz:status_open>
-
- <bz:status_closed>
- <Seq>
- <li>RESOLVED</li>
- <li>VERIFIED</li>
- <li>CLOSED</li>
- </Seq>
- </bz:status_closed>
-
- <bz:resolution>
- <Seq>
- <li></li>
- <li>FIXED</li>
- <li>INVALID</li>
- <li>WONTFIX</li>
- <li>LATER</li>
- <li>REMIND</li>
- <li>DUPLICATE</li>
- <li>WORKSFORME</li>
- <li>MOVED</li>
- </Seq>
- </bz:resolution>
-
- <bz:keyword>
- <Seq>
- </Seq>
- </bz:keyword>
-
- <bz:platform>
- <Seq>
- <li>All</li>
- <li>DEC</li>
- <li>HP</li>
- <li>Macintosh</li>
- <li>PC</li>
- <li>SGI</li>
- <li>Sun</li>
- <li>Other</li>
- </Seq>
- </bz:platform>
-
- <bz:op_sys>
- <Seq>
- <li>All</li>
- <li>Windows 3.1</li>
- <li>Windows 95</li>
- <li>Windows 98</li>
- <li>Windows ME</li>
- <li>Windows 2000</li>
- <li>Windows NT</li>
- <li>Windows XP</li>
- <li>Windows Server 2003</li>
- <li>Mac System 7</li>
- <li>Mac System 7.5</li>
- <li>Mac System 7.6.1</li>
- <li>Mac System 8.0</li>
- <li>Mac System 8.5</li>
- <li>Mac System 8.6</li>
- <li>Mac System 9.x</li>
- <li>Mac OS X 10.0</li>
- <li>Mac OS X 10.1</li>
- <li>Mac OS X 10.2</li>
- <li>Mac OS X 10.3</li>
- <li>Linux</li>
- <li>BSD/OS</li>
- <li>FreeBSD</li>
- <li>NetBSD</li>
- <li>OpenBSD</li>
- <li>AIX</li>
- <li>BeOS</li>
- <li>HP-UX</li>
- <li>IRIX</li>
- <li>Neutrino</li>
- <li>OpenVMS</li>
- <li>OS/2</li>
- <li>OSF/1</li>
- <li>Solaris</li>
- <li>SunOS</li>
- <li>other</li>
- </Seq>
- </bz:op_sys>
-
- <bz:priority>
- <Seq>
- <li>P1</li>
- <li>P2</li>
- <li>P3</li>
- <li>P4</li>
- <li>P5</li>
- </Seq>
- </bz:priority>
-
- <bz:severity>
- <Seq>
- <li>blocker</li>
- <li>critical</li>
- <li>major</li>
- <li>normal</li>
- <li>minor</li>
- <li>trivial</li>
- <li>enhancement</li>
- </Seq>
- </bz:severity>
-
- <bz:products>
- <Seq>
- <li>
- <bz:product rdf:about="http://mylar.eclipse.org/bugs218/product.cgi?name=TestProduct">
- <bz:name>TestProduct</bz:name>
-
- <bz:components>
- <Seq>
- <li resource="http://mylar.eclipse.org/bugs218/component.cgi?name=TestComponent"/>
- </Seq>
- </bz:components>
-
- <bz:versions>
- <Seq>
- <li resource="http://mylar.eclipse.org/bugs218/version.cgi?name=other"/>
- </Seq>
- </bz:versions>
-
-
- </bz:product>
- </li>
- </Seq>
- </bz:products>
-
- <bz:components>
- <Seq>
- <li>
- <bz:component rdf:about="http://mylar.eclipse.org/bugs218/component.cgi?name=TestComponent">
- <bz:name>TestComponent</bz:name>
- </bz:component>
- </li>
- </Seq>
- </bz:components>
-
- <bz:versions>
- <Seq>
- <li>
- <bz:version rdf:about="http://mylar.eclipse.org/bugs218/version.cgi?name=other">
- <bz:name>other</bz:name>
- </bz:version>
- </li>
- </Seq>
- </bz:versions>
-
-
- <bz:fields>
- <Seq>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=bug_id">
- <bz:name>bug_id</bz:name>
- <bz:description>Bug ID</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=short_desc">
- <bz:name>short_desc</bz:name>
- <bz:description>Summary</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=product">
- <bz:name>product</bz:name>
- <bz:description>Product</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=version">
- <bz:name>version</bz:name>
- <bz:description>Version</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=rep_platform">
- <bz:name>rep_platform</bz:name>
- <bz:description>Hardware</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=bug_file_loc">
- <bz:name>bug_file_loc</bz:name>
- <bz:description>URL</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=op_sys">
- <bz:name>op_sys</bz:name>
- <bz:description>OS</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=bug_status">
- <bz:name>bug_status</bz:name>
- <bz:description>Status</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=status_whiteboard">
- <bz:name>status_whiteboard</bz:name>
- <bz:description>Whiteboard</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=keywords">
- <bz:name>keywords</bz:name>
- <bz:description>Keywords</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=resolution">
- <bz:name>resolution</bz:name>
- <bz:description>Resolution</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=bug_severity">
- <bz:name>bug_severity</bz:name>
- <bz:description>Severity</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=priority">
- <bz:name>priority</bz:name>
- <bz:description>Priority</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=component">
- <bz:name>component</bz:name>
- <bz:description>Component</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=assigned_to">
- <bz:name>assigned_to</bz:name>
- <bz:description>Assignee</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=reporter">
- <bz:name>reporter</bz:name>
- <bz:description>Reporter</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=votes">
- <bz:name>votes</bz:name>
- <bz:description>Votes</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=qa_contact">
- <bz:name>qa_contact</bz:name>
- <bz:description>QA Contact</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=cc">
- <bz:name>cc</bz:name>
- <bz:description>CC</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=dependson">
- <bz:name>dependson</bz:name>
- <bz:description>Depends on</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=blocked">
- <bz:name>blocked</bz:name>
- <bz:description>Blocks</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.description">
- <bz:name>attachments.description</bz:name>
- <bz:description>Attachment description</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.thedata">
- <bz:name>attachments.thedata</bz:name>
- <bz:description>Attachment data</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.filename">
- <bz:name>attachments.filename</bz:name>
- <bz:description>Attachment filename</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.mimetype">
- <bz:name>attachments.mimetype</bz:name>
- <bz:description>Attachment mime type</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.ispatch">
- <bz:name>attachments.ispatch</bz:name>
- <bz:description>Attachment is patch</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.isobsolete">
- <bz:name>attachments.isobsolete</bz:name>
- <bz:description>Attachment is obsolete</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=attachments.isprivate">
- <bz:name>attachments.isprivate</bz:name>
- <bz:description>Attachment is private</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=target_milestone">
- <bz:name>target_milestone</bz:name>
- <bz:description>Target Milestone</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=delta_ts">
- <bz:name>delta_ts</bz:name>
- <bz:description>Last Changed time</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=(to_days(now())%20-%20to_days(bugs.delta_ts))">
- <bz:name>(to_days(now()) - to_days(bugs.delta_ts))</bz:name>
- <bz:description>Days since bug changed</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=longdesc">
- <bz:name>longdesc</bz:name>
- <bz:description>Comment</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=alias">
- <bz:name>alias</bz:name>
- <bz:description>Alias</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=everconfirmed">
- <bz:name>everconfirmed</bz:name>
- <bz:description>Ever confirmed?</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=reporter_accessible">
- <bz:name>reporter_accessible</bz:name>
- <bz:description>Reporter accessible?</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=cclist_accessible">
- <bz:name>cclist_accessible</bz:name>
- <bz:description>CC list accessible?</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=bug_group">
- <bz:name>bug_group</bz:name>
- <bz:description>Group</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=flagtypes.name">
- <bz:name>flagtypes.name</bz:name>
- <bz:description>Flag</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=requestees.login_name">
- <bz:name>requestees.login_name</bz:name>
- <bz:description>Flag Requestee</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=setters.login_name">
- <bz:name>setters.login_name</bz:name>
- <bz:description>Flag Setter</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=content">
- <bz:name>content</bz:name>
- <bz:description>Content</bz:description>
- </bz:field>
- </li>
- <li>
- <bz:field rdf:about="http://mylar.eclipse.org/bugs218/field.cgi?name=owner_idle_time">
- <bz:name>owner_idle_time</bz:name>
- <bz:description>Time Since Owner Touched</bz:description>
- </bz:field>
- </li>
- </Seq>
- </bz:fields>
-</bz:installation>
-
-</RDF> \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.ui/.classpath b/org.eclipse.mylyn.bugzilla.ui/.classpath
deleted file mode 100644
index c9c6503f7..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/.classpath
+++ /dev/null
@@ -1,15 +0,0 @@
-<?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">
- <accessrules>
- <accessrule kind="nonaccessible" pattern="com/sun/**"/>
- </accessrules>
- </classpathentry>
- <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
deleted file mode 100644
index 215a18fea..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,34 +0,0 @@
-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.7.0
-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.ui.forms,
- org.eclipse.jface.text,
- org.eclipse.team.ui,
- org.eclipse.team.cvs.ui,
- org.eclipse.ui.editors,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.update.ui,
- org.eclipse.mylar.bugzilla.core,
- org.eclipse.mylar.context.core,
- org.eclipse.mylar.tasks.ui,
- org.eclipse.mylar.tasks.core
-Eclipse-AutoStart: true
-Export-Package: org.eclipse.mylar.internal.bugzilla.ui,
- 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-RequiredExecutionEnvironment: J2SE-1.5
-Bundle-ClassPath: .
diff --git a/org.eclipse.mylyn.bugzilla.ui/plugin.xml b/org.eclipse.mylyn.bugzilla.ui/plugin.xml
deleted file mode 100644
index 97b9a8136..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/plugin.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<?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.tasks.ui.repositories">
-
- <connectorCore
- class="org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryConnector"
- id="org.eclipse.mylar.bugzilla.tasklist.repositories"
- name="Bugzilla Repository Connector"
- type="bugzilla"/>
-
- <connectorUi
- brandingIcon="icons/eview16/bugzilla-logo.gif"
- class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryUi"
- name="Bugzilla Repository Ui"
- overlayIcon="icons/eview16/overlay-bugzilla.gif"/>
-
- <externalizer
- class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskExternalizer"
- id="org.eclipse.mylar.bugzilla.tasklist.externalizer"/>
- </extension>
-
- <extension
- point="org.eclipse.mylar.tasks.ui.editors">
- <editorFactory class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaReportEditorFactory"/>
- <hyperlinkDetector
- class="org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector"
- id="org.eclipse.mylar.tasks.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.tasks.core.ITaskListElement"
- state="true">
- <description>
- Mylar Bugzilla Task Decorator
- </description>
- </decorator>
- </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.NewBugzillaTaskEditor"
- contributorClass="org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorActionContributor"
- 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.tasks.ui.search.RepositorySearchResultView"
- searchResultClass="org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchResult"
- id="org.eclipse.mylar.bugzilla.BugzillaSearchResultPage"/>
- </extension>-->
- <extension
- point="org.eclipse.mylar.tasks.ui.templates">
- <repository
- addAutomatically="true"
- label="Eclipse.org"
- repositoryKind="bugzilla"
- urlRepository="https://bugs.eclipse.org/bugs"
- version="2.20"/>
- </extension>
-<!-- <extension
- id="org.eclipse.mylar.bugzilla.core.search.repositorySearchPage"
- name="Repository Search Page"
- point="org.eclipse.search.searchPages">
- <page
- class="org.eclipse.mylar.internal.tasks.ui.TaskSearchPage"
- enabled="true"
- icon="icons/elcl16/bug-search.gif"
- id="org.eclipse.mylar.bugzilla.core.search.repositorySearchPage"
- label="Repository Search"
- tabPosition="999"/>
- </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>
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaAuthenticator.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaAuthenticator.java
deleted file mode 100644
index 33682ca51..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaAuthenticator.java
+++ /dev/null
@@ -1,58 +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.bugzilla.ui;
-
-import java.net.Authenticator;
-import java.net.InetAddress;
-import java.net.PasswordAuthentication;
-
-import org.eclipse.update.internal.ui.security.Authentication;
-import org.eclipse.update.internal.ui.security.UserValidationDialog;
-
-/**
- * Update Manager Authenticator Sadly there can only be one registered per VM
- */
-public class BugzillaAuthenticator extends Authenticator {
- // private Authentication savedPasswordAuthentication;
-
- /*
- * @see Authenticator#getPasswordAuthentication()
- */
- protected PasswordAuthentication getPasswordAuthentication() {
- // String protocol = getRequestingProtocol();
- String host = getRequestingHost(); // can be null;
- InetAddress address = getRequestingSite(); // can be null;
- // int port = getRequestingPort();
- String prompt = getRequestingPrompt(); // realm or message, not
- // documented that can be null
- // String scheme = getRequestingScheme(); // not documented that can be
- // null
-
- String hostString = host;
- if (hostString == null && address != null) {
- address.getHostName();
- }
- if (hostString == null) {
- hostString = ""; //$NON-NLS-1$
- }
- String promptString = prompt;
- if (prompt == null) {
- promptString = ""; //$NON-NLS-1$
- }
-
- Authentication auth = UserValidationDialog.getAuthentication(hostString, promptString);
- if (auth != null)
- return new PasswordAuthentication(auth.getUser(), auth.getPassword().toCharArray());
- else
- return null;
- }
-}
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
deleted file mode 100644
index 14a0dd91d..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java
+++ /dev/null
@@ -1,74 +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.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.IBugzillaConstants;
-import org.eclipse.mylar.internal.tasks.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 + IBugzillaConstants.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/BugzillaResultMatchAdapter.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaResultMatchAdapter.java
deleted file mode 100644
index 6c93d8774..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaResultMatchAdapter.java
+++ /dev/null
@@ -1,71 +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.bugzilla.ui;
-
-import org.eclipse.mylar.internal.bugzilla.ui.search.IBugzillaResultEditorMatchAdapter;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.search.RepositorySearchResult;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-
-/**
- * @author Mik Kersten (clean-up)
- */
-public class BugzillaResultMatchAdapter implements IBugzillaResultEditorMatchAdapter {
-
- /** An empty array of matches */
- private final Match[] EMPTY_ARR = new Match[0];
-
- private RepositorySearchResult result;
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.search.ui.text.IEditorMatchAdapter#isShownInEditor(org.eclipse.search.ui.text.Match,
- * org.eclipse.ui.IEditorPart)
- */
- public boolean isShownInEditor(Match match, IEditorPart editor) {
- if (result == null)
- return false;
- IEditorInput ei = editor.getEditorInput();
- if (ei instanceof ExistingBugEditorInput) {
- AbstractBugEditorInput bi = (AbstractBugEditorInput) ei;
- return match.getElement().equals(bi.getRepositoryTaskData());
- }
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.search.ui.text.IEditorMatchAdapter#computeContainedMatches(org.eclipse.search.ui.text.AbstractTextSearchResult,
- * org.eclipse.ui.IEditorPart)
- */
- public Match[] computeContainedMatches(AbstractTextSearchResult result, IEditorPart editor) {
- if (result == null)
- return EMPTY_ARR;
- IEditorInput ei = editor.getEditorInput();
- if (ei instanceof ExistingBugEditorInput) {
- AbstractBugEditorInput bi = (AbstractBugEditorInput) ei;
- return result.getMatches(bi.getRepositoryTaskData());
- }
- return EMPTY_ARR;
- }
-
- public void setResult(RepositorySearchResult result) {
- this.result = result;
- }
-
-}
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
deleted file mode 100644
index 5e59cb9f0..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java
+++ /dev/null
@@ -1,69 +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.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.tasks.ui.editors.RepositoryTextViewer;
-import org.eclipse.mylar.tasks.core.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 = BugzillaHyperlinkUtil.findBugHyperlinks(repository.getUrl(), offsetInLine, line, lineInfo
- .getOffset());
-
- return links;
-
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUiPlugin.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUiPlugin.java
deleted file mode 100644
index a96aab42c..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUiPlugin.java
+++ /dev/null
@@ -1,416 +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.bugzilla.ui;
-
-import java.io.IOException;
-import java.net.Authenticator;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.RepositoryConfiguration;
-import org.eclipse.mylar.internal.bugzilla.ui.search.IBugzillaResultEditorMatchAdapter;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.update.internal.ui.UpdateUI;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- *
- * @author Mik Kersten
- */
-public class BugzillaUiPlugin extends AbstractUIPlugin {
-
- public static final String PLUGIN_ID = "org.eclipse.mylar.bugzilla.ui";
-
- // The id's of other bugzilla packages
- public static final String EXISTING_BUG_EDITOR_ID = BugzillaUiPlugin.PLUGIN_ID + ".existingBugEditor";
-
- public static final String NEW_BUG_EDITOR_ID = BugzillaUiPlugin.PLUGIN_ID + ".newBugEditor";
-
- public static final String SEARCH_PAGE_ID = BugzillaUiPlugin.PLUGIN_ID + ".search.bugzillaSearchPage";
-
- public static final String SEARCH_PAGE_CONTEXT = BugzillaUiPlugin.PLUGIN_ID + ".bugzillaSearchContext";
-
- public static final String EDITOR_PAGE_CONTEXT = BugzillaUiPlugin.PLUGIN_ID + ".bugzillaEditorContext";
-
- // The is's for hit markers used in the label provider and sorters
- public static final String HIT_MARKER_ATTR_ID = "id";
-
- public static final String HIT_MARKER_ATTR_REPOSITORY = "repository";
-
- public static final String HIT_MARKER_ATTR_HREF = "href";
-
- public static final String HIT_MARKER_ATTR_DESC = "description";
-
- public static final String HIT_MARKER_ATTR_LABEL = "label";
-
- public static final String HIT_MARKER_ATTR_SEVERITY = "severity";
-
- public static final String HIT_MARKER_ATTR_PRIORITY = "priority";
-
- public static final String HIT_MARKER_ATTR_PLATFORM = "platform";
-
- public static final String HIT_MARKER_ATTR_STATE = "state";
-
- public static final String HIT_MARKER_ATTR_RESULT = "result";
-
- public static final String HIT_MARKER_ATTR_OWNER = "owner";
-
- public static final String HIT_MARKER_ATTR_QUERY = "query";
-
- /**
- * XXX: remove?
- */
- public static final String HIT_MARKER_ID = BugzillaUiPlugin.PLUGIN_ID + ".searchHit";
-
- private static BugzillaUiPlugin plugin;
-
- private Authenticator authenticator = null;
-
- private static IBugzillaResultEditorMatchAdapter resultEditorMatchAdapter = null;
-
- public static final char PREF_DELIM_REPOSITORY = ':';
-
- public BugzillaUiPlugin() {
- plugin = this;
- }
-
- public void start(BundleContext context) throws Exception {
- super.start(context);
- getPreferenceStore().setDefault(IBugzillaConstants.MAX_RESULTS, 100);
-
- IPath repConfigCacheFile = getProductConfigurationCachePath();
- if(repConfigCacheFile != null) {
- BugzillaCorePlugin.setConfigurationCacheFile(repConfigCacheFile.toFile());
- }
-
- BugzillaUiPlugin.setResultEditorMatchAdapter(new BugzillaResultMatchAdapter());
-
- // TODO: consider removing
- authenticator = UpdateUI.getDefault().getAuthenticator();
- if (authenticator == null) {
- authenticator = new BugzillaAuthenticator();
- }
- Authenticator.setDefault(authenticator);
-
- // migrateOldAuthenticationData();
- }
-
- /**
- * Returns the path to the file cacheing the product configuration.
- */
- private static IPath getProductConfigurationCachePath() {
- IPath stateLocation = Platform.getStateLocation(BugzillaCorePlugin.getDefault().getBundle());
- IPath configFile = stateLocation.append("repositoryConfigurations");
- return configFile;
- }
-
- public int getMaxResults() {
- return getPreferenceStore().getInt(IBugzillaConstants.MAX_RESULTS);
- }
-
- /**
- * This method is called when the plug-in is stopped
- */
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- plugin = null;
- }
-
- public static IBugzillaResultEditorMatchAdapter getResultEditorMatchAdapter() {
- return resultEditorMatchAdapter;
- }
-
- public static void setResultEditorMatchAdapter(IBugzillaResultEditorMatchAdapter resultEditorMatchAdapter) {
- BugzillaUiPlugin.resultEditorMatchAdapter = resultEditorMatchAdapter;
- }
-
- /**
- * Returns the shared instance.
- */
- public static BugzillaUiPlugin getDefault() {
- return plugin;
- }
-
- /**
- * Returns an image descriptor for the image file at the given plug-in
- * relative path.
- *
- * @param path
- * the path
- * @return the image descriptor
- */
- public static ImageDescriptor getImageDescriptor(String path) {
- return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
- }
-
- public static String[] getQueryOptions(String prefId, String[] selectedProducts, String repositoryUrl) {
- IPreferenceStore prefs = BugzillaUiPlugin.getDefault().getPreferenceStore();
- if ((prefId.equals(IBugzillaConstants.VALUES_COMPONENT) || prefId.equals(IBugzillaConstants.VALUES_VERSION) || prefId
- .equals(IBugzillaConstants.VALUES_TARGET))
- && selectedProducts != null) {
- List<String> options = new ArrayList<String>();
- for (String product : selectedProducts) {
- for (String option : convertQueryOptionsToArray(prefs.getString(prefId + PREF_DELIM_REPOSITORY
- + repositoryUrl + PREF_DELIM_REPOSITORY + product))) {
- if(!options.contains(option)) options.add(option);
- }
- }
- return options.toArray(new String[options.size()]);
- } else {
- return convertQueryOptionsToArray(prefs.getString(prefId + PREF_DELIM_REPOSITORY + repositoryUrl));
- }
- }
-
- private static String queryOptionsToString(List<String> array) {
-
- StringBuffer buffer = new StringBuffer();
- for (String string : array) {
- buffer.append(string);
- buffer.append("!");
- }
-
- return buffer.toString();
- }
-
- private static String[] convertQueryOptionsToArray(String values) {
- // create a new string buffer and array list
- StringBuffer buffer = new StringBuffer();
- List<String> options = new ArrayList<String>();
-
- char[] chars = values.toCharArray();
- for (int i = 0; i < chars.length; i++) {
- if (chars[i] == '!') {
- options.add(buffer.toString());
- buffer = new StringBuffer();
- } else {
- buffer.append(chars[i]);
- }
- }
-
- // create a new string array with the same size as the array list
- String[] array = new String[options.size()];
-
- // put each element from the list into the array
- for (int j = 0; j < options.size(); j++)
- array[j] = options.get(j);
- return array;
- }
-
- public static String getMostRecentQuery() {
- return plugin.getPreferenceStore().getString(IBugzillaConstants.MOST_RECENT_QUERY);
- }
-
- /**
- * Update all of the query options for the bugzilla search page
- *
- * @param monitor
- * A reference to a progress monitor
- * @throws IOException
- * @throws NoSuchAlgorithmException
- * @throws KeyManagementException
- * @throws BugzillaException
- */
- public static void updateQueryOptions(TaskRepository repository, IProgressMonitor monitor) {
-
- String repositoryUrl = repository.getUrl();
-
- if(monitor.isCanceled())
- throw new OperationCanceledException();
-
- // TODO: pass monitor along since it is this call that does the work and can hang due to network IO
- RepositoryConfiguration config = null;
- try {
- config = BugzillaCorePlugin.getRepositoryConfiguration(false, repository.getUrl(), TasksUiPlugin.getDefault().getProxySettings(), repository.getUserName(), repository.getPassword(), repository.getCharacterEncoding());
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not retrieve repository configuration for: " + repository, true);
- return;
- }
-
- if(monitor.isCanceled())
- throw new OperationCanceledException();
-
- // get the preferences store so that we can change the data in it
- IPreferenceStore prefs = BugzillaUiPlugin.getDefault().getPreferenceStore();
-
- prefs.setValue(IBugzillaConstants.VALUES_STATUS + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getStatusValues()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUSE_STATUS_PRESELECTED + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getOpenStatusValues()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_RESOLUTION + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getResolutions()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_SEVERITY + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getSeverities()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_PRIORITY + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getPriorities()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_HARDWARE + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getPlatforms()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_OS + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getOSs()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_PRODUCT + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getProducts()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_COMPONENT + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getComponents()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_VERSION + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getVersions()));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_TARGET + PREF_DELIM_REPOSITORY + repositoryUrl,
- queryOptionsToString(config.getTargetMilestones()));
- monitor.worked(1);
-
- for (String product : config.getProducts()) {
- prefs.setValue(IBugzillaConstants.VALUES_COMPONENT + PREF_DELIM_REPOSITORY + repositoryUrl
- + PREF_DELIM_REPOSITORY + product, queryOptionsToString(config.getComponents(product)));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_VERSION + PREF_DELIM_REPOSITORY + repositoryUrl
- + PREF_DELIM_REPOSITORY + product, queryOptionsToString(config.getVersions(product)));
- monitor.worked(1);
-
- prefs.setValue(IBugzillaConstants.VALUES_TARGET + PREF_DELIM_REPOSITORY + repositoryUrl
- + PREF_DELIM_REPOSITORY + product, queryOptionsToString(config.getTargetMilestones(product)));
- monitor.worked(1);
- }
- }
-}
-
-// @SuppressWarnings("unchecked")
-// private void migrateOldAuthenticationData() {
-// String OLD_PREF_SERVER = "BUGZILLA_SERVER";
-// String serverUrl =
-// BugzillaPlugin.getDefault().getPreferenceStore().getString(OLD_PREF_SERVER);
-// if (serverUrl != null && serverUrl.trim() != "") {
-// URL oldFakeUrl = null;
-// try {
-// oldFakeUrl = new URL("http://org.eclipse.mylar.bugzilla");
-// } catch (MalformedURLException e) {
-// BugzillaPlugin.log(new Status(IStatus.WARNING, BugzillaPlugin.PLUGIN_ID,
-// IStatus.OK,
-// "Bad temp server url: BugzillaPreferencePage", e));
-// }
-//
-// String user = "";
-// String password = "";
-// Map<String, String> map = Platform.getAuthorizationInfo(oldFakeUrl,
-// "Bugzilla",
-// BugzillaPreferencePage.AUTH_SCHEME);
-//
-// // get the information from the map and save it
-// if (map != null && !map.isEmpty()) {
-// String username = map.get(BugzillaPreferencePage.INFO_USERNAME);
-// if (username != null)
-// user = username;
-//
-// String pwd = map.get(BugzillaPreferencePage.INFO_PASSWORD);
-// if (pwd != null)
-// password = pwd;
-// }
-// TaskRepository repository;
-// // try {
-// repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, serverUrl);
-// repository.setAuthenticationCredentials(user, password);
-// MylarTaskListPlugin.getRepositoryManager().addRepository(repository);
-// BugzillaPlugin.getDefault().getPreferenceStore().setValue(OLD_PREF_SERVER,
-// "");
-// // } catch (MalformedURLException e) {
-// // MylarStatusHandler.fail(e, "could not create default repository",
-// // true);
-// // }
-// try {
-// // reset the authorization
-// Platform.addAuthorizationInfo(oldFakeUrl, "Bugzilla",
-// BugzillaPreferencePage.AUTH_SCHEME, new HashMap<String, String>());
-// } catch (CoreException e) {
-// // ignore
-// }
-// }
-// }
-
-// private void readOfflineReportsFile() {
-// IPath offlineReportsPath = getOfflineReportsFilePath();
-//
-// try {
-// offlineReportsFile = new OfflineTaskManager(offlineReportsPath.toFile(),
-// true);
-// } catch (Exception e) {
-// MylarStatusHandler.log(e,
-// "Could not restore offline Bugzilla reports file, creating new one
-// (possible version incompatibility)");
-// offlineReportsPath.toFile().delete();
-// // if (offlineReportsPath.toFile().delete()) {
-// try {
-// offlineReportsFile = new OfflineTaskManager(offlineReportsPath.toFile(),
-// false);
-// } catch (Exception e1) {
-// MylarStatusHandler.fail(e, "could not reset offline Bugzilla reports
-// file", true);
-// }
-// // } else {
-// // MylarStatusHandler.fail(null, "reset of Bugzilla offline reports file
-// failed", true);
-// // }
-// }
-// }
-//
-// /**
-// * Returns the path to the file cacheing the offline bug reports.
-// */
-// private IPath getOfflineReportsFilePath() {
-// IPath stateLocation =
-// Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle());
-// IPath configFile = stateLocation.append("offlineReports");
-// return configFile;
-// }
-//
-// public OfflineTaskManager getOfflineReportsFile() {
-// if (offlineReportsFile == null) {
-// MylarStatusHandler.fail(null, "Offline reports file not created, try
-// restarting.", true);
-// }
-// return offlineReportsFile;
-// }
-
-// public List<BugzillaReport> getSavedBugReports() {
-// return offlineReportsFile.elements();
-// } \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugSubmissionHandler.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugSubmissionHandler.java
deleted file mode 100644
index df614100a..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugSubmissionHandler.java
+++ /dev/null
@@ -1,173 +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.bugzilla.ui.editor;
-
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.Proxy;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException;
-import org.eclipse.mylar.internal.bugzilla.core.UnrecognizedReponseException;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class BugSubmissionHandler {
-
- private static final String LABEL_JOB_SUBMIT = "Submitting to Bugzilla repository";
-
- private AbstractRepositoryConnector connector;
-
- public BugSubmissionHandler(AbstractRepositoryConnector connector) {
- this.connector = connector;
- }
-
- public void submitBugReport(final BugzillaReportSubmitForm form, IJobChangeListener listener, boolean synchExec, final boolean addToTaskListRoot) {
- if (synchExec) {
- try {
- String submittedBugId = form.submitReportToRepository();
- if (form.isNewBugPost()) {
- handleNewBugPost(form.getTaskData(), submittedBugId, addToTaskListRoot);
- } else {
- handleExistingBugPost(form.getTaskData(), submittedBugId);
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- } else {
- Job submitJob = new Job(LABEL_JOB_SUBMIT) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- String submittedBugId = "";
- try {
- submittedBugId = form.submitReportToRepository();
- } catch (ConnectException e) {
- form.setProxySettings(Proxy.NO_PROXY);
- submittedBugId = form.submitReportToRepository();
- }
-
- if (form.isNewBugPost()) {
- handleNewBugPost(form.getTaskData(), submittedBugId, addToTaskListRoot);
- return new Status(Status.OK, BugzillaUiPlugin.PLUGIN_ID, Status.OK, submittedBugId, null);
- } else {
- handleExistingBugPost(form.getTaskData(), submittedBugId);
- return Status.OK_STATUS;
- }
- } catch (GeneralSecurityException e) {
- return new Status(
- Status.OK,
- BugzillaUiPlugin.PLUGIN_ID,
- Status.ERROR,
- "Bugzilla could not post your bug, probably because your credentials are incorrect. Ensure proper repository configuration in "
- + TaskRepositoriesView.NAME + ".", e);
- } catch (IOException e) {
- return new Status(Status.OK, BugzillaUiPlugin.PLUGIN_ID, Status.ERROR,
- "Check repository credentials and connectivity.", e);
- } catch (UnrecognizedReponseException e) {
- return new Status(Status.OK, BugzillaUiPlugin.PLUGIN_ID, Status.INFO,
- "Unrecognized response from server", e);
- } catch (BugzillaException e) {
- // MylarStatusHandler.fail(e, "Failed to submit",
- // false);
- String message = e.getMessage();
- return new Status(Status.OK, BugzillaUiPlugin.PLUGIN_ID, Status.ERROR,
- "Bugzilla could not post your bug. \n\n" + message, e);
- } catch (PossibleBugzillaFailureException e) {
- return new Status(Status.OK, BugzillaUiPlugin.PLUGIN_ID, Status.INFO,
- "Possible bugzilla failure", e);
- }
- }
- };
-
- submitJob.addJobChangeListener(listener);
- submitJob.schedule();
- }
- }
-
- private void handleNewBugPost(RepositoryTaskData taskData, String resultId, boolean addToRoot) throws BugzillaException {
- int bugId = -1;
- try {
- bugId = Integer.parseInt(resultId);
- } catch (NumberFormatException e) {
- throw new BugzillaException("Invalid bug id returned by repository.");
- }
-
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(taskData.getRepositoryKind(),
- taskData.getRepositoryUrl());
-
- BugzillaTask newTask = new BugzillaTask(AbstractRepositoryTask.getHandle(repository.getUrl(), bugId),
- "<bugzilla info>", true);
-
- if (addToRoot) {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
- TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory());
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask);
- }
-
- java.util.List<TaskRepository> repositoriesToSync = new ArrayList<TaskRepository>();
- repositoriesToSync.add(repository);
- TasksUiPlugin.getSynchronizationScheduler().synchNow(0, repositoriesToSync);
-
- }
-
- private void handleExistingBugPost(RepositoryTaskData repositoryTaskData, String resultId) {
- try {
- String handle = AbstractRepositoryTask.getHandle(repositoryTaskData.getRepositoryUrl(), repositoryTaskData
- .getId());
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(handle);
- if (task != null) {
- Set<AbstractRepositoryQuery> queriesWithHandle = TasksUiPlugin.getTaskListManager().getTaskList()
- .getQueriesForHandle(task.getHandleIdentifier());
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, queriesWithHandle, null, Job.SHORT, 0,
- false);
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- repositoryTaskData.getRepositoryKind(), repositoryTaskData.getRepositoryUrl());
- TasksUiPlugin.getSynchronizationManager().synchronizeChanged(connector, repository);
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- // TODO: This is set to null in order for update to bypass
- // ui override check with user
- // Need to change how this is achieved.
- repositoryTask.setTaskData(null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, repositoryTask, true, null);
- }
- }
-
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
-}
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
deleted file mode 100644
index 40550956a..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java
+++ /dev/null
@@ -1,1108 +0,0 @@
-/*******************************************************************************
- * 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.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryConnector;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractRepositoryTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.RepositoryTaskOutlineNode;
-import org.eclipse.mylar.internal.tasks.ui.editors.RepositoryTaskSelection;
-import org.eclipse.mylar.internal.tasks.ui.util.WebBrowserDialog;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePicker;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-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.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-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.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-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)
- * @authos Jeff Pound (Attachment work)
- */
-public class ExistingBugEditor extends AbstractRepositoryTaskEditor {
-
- private static final String SECTION_TITLE_PEOPLE = "People";
-
- private static final String LABEL_TIME_TRACKING = "Bugzilla Time Tracking";
-
- private BugSubmissionHandler submissionHandler;
-
- protected Set<String> removeCC = new HashSet<String>();
-
- // protected BugzillaCompareInput compareInput;
-
- // protected Button compareButton;
-
- protected List keyWordsList;
-
- protected Text keywordsText;
-
- protected List ccList;
-
- protected Text ccText;
-
- protected Text urlText;
-
- protected RepositoryTaskData taskData;
-
- protected AbstractRepositoryConnector connector;
-
- protected Text estimateText;
-
- protected Text actualText;
-
- protected Text remainingText;
-
- protected Text addTimeText;
-
- protected Text deadlineText;
-
- protected DatePicker deadlinePicker;
-
- protected Text votesText;
-
- /**
- * Creates a new <code>ExistingBugEditor</code>.
- */
- public ExistingBugEditor(FormEditor editor) {
- super(editor);
-
- // 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);
- }
-
- @Override
- public void init(IEditorSite site, IEditorInput input) {
- if (!(input instanceof ExistingBugEditorInput))
- return;// MylarStatusHandler.log("Invalid Input: Must be
- // ExistingBugEditorInput", this);
-
- editorInput = (AbstractBugEditorInput) input;
- taskData = editorInput.getRepositoryTaskData();
- repository = editorInput.getRepository();
- connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(repository.getKind());
- submissionHandler = new BugSubmissionHandler(connector);
-
- setSite(site);
- setInput(input);
-
- taskOutlineModel = RepositoryTaskOutlineNode.parseBugReport(editorInput.getRepositoryTaskData());
-
- // restoreBug();
- isDirty = false;
- updateEditorTitle();
- }
-
- @Override
- protected String getTitleString() {
- return taskData.getLabel();// + ": " + checkText(summaryVal);
- }
-
- @Override
- public void submitBug() {
- submitButton.setEnabled(false);
- showBusy(true);
- updateBug();
-
- final AbstractRepositoryTask modifiedTask = (AbstractRepositoryTask) TasksUiPlugin.getTaskListManager()
- .getTaskList().getTask(AbstractRepositoryTask.getHandle(repository.getUrl(), taskData.getId()));
-
- if (modifiedTask != null) {
- modifiedTask.setSyncState(RepositoryTaskSyncState.OUTGOING);
- }
-
- BugzillaReportSubmitForm bugzillaReportSubmitForm;
-
- try {
- if (taskData.isLocallyCreated()) {
- boolean wrap = IBugzillaConstants.BugzillaServerVersion.SERVER_218.equals(repository.getVersion());
- bugzillaReportSubmitForm = BugzillaReportSubmitForm.makeNewBugPost(repository.getUrl(), repository
- .getUserName(), repository.getPassword(), editorInput.getProxySettings(), repository
- .getCharacterEncoding(), taskData, wrap);
- } else {
- bugzillaReportSubmitForm = BugzillaReportSubmitForm.makeExistingBugPost(taskData, repository.getUrl(),
- repository.getUserName(), repository.getPassword(), editorInput.getProxySettings(), removeCC,
- repository.getCharacterEncoding());
- }
- } catch (UnsupportedEncodingException e) {
- // should never get here but just in case...
- MessageDialog.openError(null, "Posting Error", "Ensure proper encoding selected in "
- + TaskRepositoriesView.NAME + ".");
- return;
- }
-
- final BugzillaRepositoryConnector bugzillaRepositoryClient = (BugzillaRepositoryConnector) TasksUiPlugin
- .getRepositoryManager().getRepositoryConnector(BugzillaCorePlugin.REPOSITORY_KIND);
-
- JobChangeAdapter submitJobListener = new JobChangeAdapter() {
-
- public void done(final IJobChangeEvent event) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (event.getJob().getResult().getCode() == Status.OK
- && event.getJob().getResult().getMessage() != null) {//
- // Attach context
- if (getAttachContext()) {
- // ITask task =
- // TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- // AbstractRepositoryTask.getHandle(repository.getUrl(),
- // taskData.getId()));
- try {
- bugzillaRepositoryClient.attachContext(repository, modifiedTask, "", TasksUiPlugin
- .getDefault().getProxySettings());
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Failed to attach task context.", true);
- }
- }
- close();
- return;
- } else if (event.getJob().getResult().getCode() == Status.INFO) {
- WebBrowserDialog.openAcceptAgreement(null, IBugzillaConstants.REPORT_SUBMIT_ERROR, event
- .getJob().getResult().getMessage(), event.getJob().getResult().getException()
- .getMessage());
- submitButton.setEnabled(true);
- ExistingBugEditor.this.showBusy(false);
- } else if (event.getJob().getResult().getCode() == Status.ERROR) {
- MessageDialog.openError(null, IBugzillaConstants.REPORT_SUBMIT_ERROR, event.getResult()
- .getMessage());
- submitButton.setEnabled(true);
- ExistingBugEditor.this.showBusy(false);
- }
- }
- });
- }
- };
- submissionHandler.submitBugReport(bugzillaReportSubmitForm, submitJobListener, false, false);
- }
-
- @Override
- protected void createPeopleLayout(Composite composite) {
- FormToolkit toolkit = getManagedForm().getToolkit();
- Section peopleSection = createSection(composite, SECTION_TITLE_PEOPLE);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(peopleSection);
- Composite peopleComposite = toolkit.createComposite(peopleSection);
- GridLayout layout = new GridLayout(2, false);
- layout.marginRight = 5;
- peopleComposite.setLayout(layout);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(peopleComposite);
- addSelfToCC(peopleComposite);
- Label label = toolkit.createLabel(peopleComposite, BugzillaReportElement.ASSIGNED_TO.toString());
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.DEFAULT).applyTo(label);
- Composite textFieldComposite = toolkit.createComposite(peopleComposite);
- GridLayout textLayout = new GridLayout();
- textLayout.marginWidth = 1;
- textLayout.verticalSpacing = 0;
- textLayout.marginHeight = 0;
- textLayout.marginRight = 5;
- textFieldComposite.setLayout(textLayout);
- String assignedToString = getRepositoryTaskData().getAttributeValue(
- BugzillaReportElement.ASSIGNED_TO.getKeyString());
- toolkit.createText(textFieldComposite, assignedToString, SWT.FLAT | SWT.READ_ONLY);
-
- label = toolkit.createLabel(peopleComposite, BugzillaReportElement.REPORTER.toString());
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.DEFAULT).applyTo(label);
- textFieldComposite = toolkit.createComposite(peopleComposite);
- textLayout = new GridLayout();
- textLayout.marginWidth = 1;
- textLayout.verticalSpacing = 0;
- textLayout.marginHeight = 0;
- textFieldComposite.setLayout(textLayout);
- String reporterString = getRepositoryTaskData()
- .getAttributeValue(BugzillaReportElement.REPORTER.getKeyString());
- toolkit.createText(textFieldComposite, reporterString, SWT.FLAT | SWT.READ_ONLY);
- addCCList("", peopleComposite);
- getManagedForm().getToolkit().paintBordersFor(peopleComposite);
- peopleSection.setClient(peopleComposite);
- }
-
- @Override
- protected void createCustomAttributeLayout(Composite composite) {
- FormToolkit toolkit = getManagedForm().getToolkit();
-
- toolkit.createLabel(composite, BugzillaReportElement.DEPENDSON.toString());
- Composite textFieldComposite = toolkit.createComposite(composite);
- GridLayout textLayout = new GridLayout();
- textLayout.marginWidth = 1;
- textLayout.marginHeight = 3;
- textLayout.verticalSpacing = 3;
- textFieldComposite.setLayout(textLayout);
- GridData textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- textData.horizontalSpan = 1;
- textData.widthHint = 135;
- RepositoryTaskAttribute attribute = this.getRepositoryTaskData().getAttribute(
- BugzillaReportElement.DEPENDSON.getKeyString());
- if (!attribute.isReadOnly()) {
- final Text text = toolkit.createText(textFieldComposite, attribute.getValue(), SWT.FLAT);
- text.setLayoutData(textData);
- toolkit.paintBordersFor(textFieldComposite);
- text.setData(attribute);
- text.addListener(SWT.KeyUp, new Listener() {
- public void handleEvent(Event event) {
- String sel = text.getText();
- RepositoryTaskAttribute a = (RepositoryTaskAttribute) text.getData();
- if (!(a.getValue().equals(sel))) {
- a.setValue(sel);
- markDirty(true);
- }
- }
- });
- text.addListener(SWT.FocusIn, new GenericListener());
- }
-
- toolkit.createLabel(composite, BugzillaReportElement.BLOCKED.toString());
- textFieldComposite = toolkit.createComposite(composite);
- textLayout = new GridLayout();
- textLayout.marginWidth = 1;
- textLayout.marginHeight = 3;
- textLayout.verticalSpacing = 3;
- textFieldComposite.setLayout(textLayout);
- textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- textData.horizontalSpan = 1;
- textData.widthHint = 135;
- attribute = this.getRepositoryTaskData().getAttribute(BugzillaReportElement.BLOCKED.getKeyString());
- if (!attribute.isReadOnly()) {
- final Text text = toolkit.createText(textFieldComposite, attribute.getValue(), SWT.FLAT);
- text.setLayoutData(textData);
- toolkit.paintBordersFor(textFieldComposite);
- text.setData(attribute);
- text.addListener(SWT.KeyUp, new Listener() {
- public void handleEvent(Event event) {
- String sel = text.getText();
- RepositoryTaskAttribute a = (RepositoryTaskAttribute) text.getData();
- if (!(a.getValue().equals(sel))) {
- a.setValue(sel);
- markDirty(true);
- }
- }
- });
- text.addListener(SWT.FocusIn, new GenericListener());
- }
-
-
-
- String dependson = getRepositoryTaskData().getAttributeValue(BugzillaReportElement.DEPENDSON.getKeyString());
- String blocked = getRepositoryTaskData().getAttributeValue(BugzillaReportElement.BLOCKED.getKeyString());
- boolean addHyperlinks = (dependson != null && dependson.length() > 0)
- || (blocked != null && blocked.length() > 0);
-
- // Hyperlink showDependencyTree = toolkit.createHyperlink(composite,
- // "Show dependency tree", SWT.NONE);
- // showDependencyTree.addHyperlinkListener(new HyperlinkAdapter() {
- // public void linkActivated(HyperlinkEvent e) {
- // if (ExistingBugEditor.this.getEditor() instanceof MylarTaskEditor) {
- // MylarTaskEditor mylarTaskEditor = (MylarTaskEditor)
- // ExistingBugEditor.this.getEditor();
- // mylarTaskEditor.displayInBrowser(repository.getUrl() +
- // IBugzillaConstants.DEPENDENCY_TREE_URL
- // + getRepositoryTaskData().getId());
- // }
- // }
- // });
-
- if (addHyperlinks) {
- toolkit.createLabel(composite, "");
- addBugHyperlinks(composite, BugzillaReportElement.DEPENDSON.getKeyString());
- }
-
- // Hyperlink showDependencyGraph = toolkit.createHyperlink(composite,
- // "Show dependency graph", SWT.NONE);
- // showDependencyGraph.addHyperlinkListener(new HyperlinkAdapter() {
- // public void linkActivated(HyperlinkEvent e) {
- // if (ExistingBugEditor.this.getEditor() instanceof MylarTaskEditor) {
- // MylarTaskEditor mylarTaskEditor = (MylarTaskEditor)
- // ExistingBugEditor.this.getEditor();
- // mylarTaskEditor.displayInBrowser(repository.getUrl() +
- // IBugzillaConstants.DEPENDENCY_GRAPH_URL
- // + getRepositoryTaskData().getId());
- // }
- // }
- // });
-
- if (addHyperlinks) {
- toolkit.createLabel(composite, "");
- addBugHyperlinks(composite, BugzillaReportElement.BLOCKED.getKeyString());
- }
-
- try {
- addKeywordsList(getRepositoryTaskData().getAttributeValue(RepositoryTaskAttribute.KEYWORDS), composite);
- } catch (IOException e) {
- MessageDialog.openInformation(null, "Attribute Display Error",
- "Could not retrieve keyword list, ensure proper configuration in " + TaskRepositoriesView.NAME
- + "\n\nError reported: " + e.getMessage());
- }
-
- addVoting(composite);
-
- Hyperlink viewActivity = toolkit.createHyperlink(composite, "Show Bug Activity", SWT.NONE);
- viewActivity.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- if (ExistingBugEditor.this.getEditor() instanceof MylarTaskEditor) {
- MylarTaskEditor mylarTaskEditor = (MylarTaskEditor) ExistingBugEditor.this.getEditor();
- mylarTaskEditor.displayInBrowser(repository.getUrl() + IBugzillaConstants.BUG_ACTIVITY_URL
- + getRepositoryTaskData().getId());
- }
- }
- });
-
- if (getRepositoryTaskData().getAttribute(BugzillaReportElement.ESTIMATED_TIME.getKeyString()) != null)
- addBugzillaTimeTracker(toolkit, composite);
-
- }
-
-// protected void createDependencyLayout(Composite composite) {
-// FormToolkit toolkit = getManagedForm().getToolkit();
-// final Section section = createSection(composite, "Dependencies");
-// boolean expand = false;
-// final Composite sectionComposite = toolkit.createComposite(section);
-// section.setClient(sectionComposite);
-// GridLayout sectionLayout = new GridLayout(7, false);
-// sectionComposite.setLayout(sectionLayout);
-//
-// toolkit.createLabel(sectionComposite, BugzillaReportElement.DEPENDSON.toString());
-// Composite textFieldComposite = toolkit.createComposite(sectionComposite);
-// GridLayout textLayout = new GridLayout();
-// textLayout.marginWidth = 1;
-// textLayout.marginHeight = 3;
-// textLayout.verticalSpacing = 3;
-// textFieldComposite.setLayout(textLayout);
-// GridData textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-// textData.horizontalSpan = 1;
-// textData.widthHint = 135;
-// RepositoryTaskAttribute attribute = this.getRepositoryTaskData().getAttribute(
-// BugzillaReportElement.DEPENDSON.getKeyString());
-// expand = attribute.getValue() != null && attribute.getValue().length() > 0;
-// if (!attribute.isReadOnly()) {
-// final Text text = toolkit.createText(textFieldComposite, attribute.getValue(), SWT.FLAT);
-// text.setLayoutData(textData);
-// toolkit.paintBordersFor(textFieldComposite);
-// text.setData(attribute);
-// text.addListener(SWT.KeyUp, new Listener() {
-// public void handleEvent(Event event) {
-// String sel = text.getText();
-// RepositoryTaskAttribute a = (RepositoryTaskAttribute) text.getData();
-// if (!(a.getValue().equals(sel))) {
-// a.setValue(sel);
-// markDirty(true);
-// }
-// }
-// });
-// text.addListener(SWT.FocusIn, new GenericListener());
-// }
-//
-// addBugHyperlinks(sectionComposite, BugzillaReportElement.DEPENDSON.getKeyString());
-//
-// // spacer
-// GridDataFactory.fillDefaults().hint(20, SWT.DEFAULT).applyTo(toolkit.createLabel(sectionComposite, ""));
-//
-// toolkit.createLabel(sectionComposite, BugzillaReportElement.BLOCKED.toString());
-// textFieldComposite = toolkit.createComposite(sectionComposite);
-// textLayout = new GridLayout();
-// textLayout.marginWidth = 1;
-// textLayout.marginHeight = 3;
-// textLayout.verticalSpacing = 3;
-// textFieldComposite.setLayout(textLayout);
-// textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-// textData.horizontalSpan = 1;
-// textData.widthHint = 135;
-// attribute = this.getRepositoryTaskData().getAttribute(BugzillaReportElement.BLOCKED.getKeyString());
-// if (!expand) {
-// expand = attribute.getValue() != null && attribute.getValue().length() > 0;
-// }
-// if (!attribute.isReadOnly()) {
-// final Text text = toolkit.createText(textFieldComposite, attribute.getValue(), SWT.FLAT);
-// text.setLayoutData(textData);
-// toolkit.paintBordersFor(textFieldComposite);
-// text.setData(attribute);
-// text.addListener(SWT.KeyUp, new Listener() {
-// public void handleEvent(Event event) {
-// String sel = text.getText();
-// RepositoryTaskAttribute a = (RepositoryTaskAttribute) text.getData();
-// if (!(a.getValue().equals(sel))) {
-// a.setValue(sel);
-// markDirty(true);
-// }
-// }
-// });
-// text.addListener(SWT.FocusIn, new GenericListener());
-// }
-//
-// addBugHyperlinks(sectionComposite, BugzillaReportElement.BLOCKED.getKeyString());
-//
-// section.setExpanded(expand);
-//
-// }
-
- private void addBugHyperlinks(Composite composite, String key) {
- FormToolkit toolkit = getManagedForm().getToolkit();
- Composite hyperlinksComposite = toolkit.createComposite(composite);
- RowLayout rowLayout = new RowLayout();
- rowLayout.marginBottom = 0;
- rowLayout.marginLeft = 0;
- rowLayout.marginRight = 0;
- rowLayout.marginTop = 0;
- rowLayout.spacing = 0;
- hyperlinksComposite.setLayout(new RowLayout());
- String values = getRepositoryTaskData().getAttributeValue(key);
-
- if (values != null && values.length() > 0) {
- for (String bugNumber : values.split(",")) {
- final String bugId = bugNumber.trim();
- Hyperlink hyperlink = toolkit.createHyperlink(hyperlinksComposite, bugId, SWT.NONE);
- final ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- AbstractRepositoryTask.getHandle(repository.getUrl(), bugId));
- if (task != null) {
- hyperlink.setToolTipText(task.getDescription());
- }
- hyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- if (task != null) {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- } else {
- TaskUiUtil.openRepositoryTask(repository.getUrl(), bugId, repository.getUrl()
- + IBugzillaConstants.POST_ARGS_SHOW_BUG + bugId);
- }
- }
- });
- }
- }
- }
-
- protected void addBugzillaTimeTracker(FormToolkit toolkit, Composite parent) {
-
- Section timeSection = toolkit.createSection(parent, ExpandableComposite.TREE_NODE);
- timeSection.setText(LABEL_TIME_TRACKING);
- GridLayout gl = new GridLayout();
- GridData gd = new GridData(SWT.FILL, SWT.NONE, true, false);
- gd.horizontalSpan = 4;
- timeSection.setLayout(gl);
- timeSection.setLayoutData(gd);
-
- Composite timeComposite = toolkit.createComposite(timeSection);
- gl = new GridLayout(4, true);
- timeComposite.setLayout(gl);
- gd = new GridData();
- gd.horizontalSpan = 5;
- timeComposite.setLayoutData(gd);
-
- RepositoryTaskData data = getRepositoryTaskData();
-
- toolkit.createLabel(timeComposite, BugzillaReportElement.ESTIMATED_TIME.toString());
- estimateText = toolkit.createText(timeComposite, data.getAttributeValue(BugzillaReportElement.ESTIMATED_TIME
- .getKeyString()), SWT.BORDER);
- estimateText.setFont(TEXT_FONT);
- estimateText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
- estimateText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- taskData.setAttributeValue(BugzillaReportElement.ESTIMATED_TIME.getKeyString(), estimateText.getText());
- }
- });
-
- toolkit.createLabel(timeComposite, "Current Estimate:");
- Text currentEstimate = toolkit.createText(timeComposite, ""
- + (Float.parseFloat(data.getAttributeValue(BugzillaReportElement.ACTUAL_TIME.getKeyString())) + Float
- .parseFloat(data.getAttributeValue(BugzillaReportElement.REMAINING_TIME.getKeyString()))));
- currentEstimate.setFont(TEXT_FONT);
- currentEstimate.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
- currentEstimate.setEditable(false);
-
- toolkit.createLabel(timeComposite, BugzillaReportElement.ACTUAL_TIME.toString());
- actualText = toolkit.createText(timeComposite, data.getAttributeValue(BugzillaReportElement.ACTUAL_TIME
- .getKeyString()));
- actualText.setFont(TEXT_FONT);
- actualText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
- actualText.setEditable(false);
-
- data.setAttributeValue(BugzillaReportElement.WORK_TIME.getKeyString(), "0");
- toolkit.createLabel(timeComposite, BugzillaReportElement.WORK_TIME.toString());
- addTimeText = toolkit.createText(timeComposite, data.getAttributeValue(BugzillaReportElement.WORK_TIME
- .getKeyString()), SWT.BORDER);
- addTimeText.setFont(TEXT_FONT);
- addTimeText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
- addTimeText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- taskData.setAttributeValue(BugzillaReportElement.WORK_TIME.getKeyString(), addTimeText.getText());
- }
- });
-
- toolkit.createLabel(timeComposite, BugzillaReportElement.REMAINING_TIME.toString());
- remainingText = toolkit.createText(timeComposite, data.getAttributeValue(BugzillaReportElement.REMAINING_TIME
- .getKeyString()), SWT.BORDER);
- remainingText.setFont(TEXT_FONT);
- remainingText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
- remainingText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- taskData
- .setAttributeValue(BugzillaReportElement.REMAINING_TIME.getKeyString(), remainingText.getText());
- }
- });
-
- toolkit.createLabel(timeComposite, BugzillaReportElement.DEADLINE.toString());
-
- deadlinePicker = new DatePicker(timeComposite, /* SWT.NONE */SWT.BORDER, data
- .getAttributeValue(BugzillaReportElement.DEADLINE.getKeyString()));
- deadlinePicker.setFont(TEXT_FONT);
- deadlinePicker.setDatePattern("yyyy-MM-dd");
- deadlinePicker.addPickerSelectionListener(new SelectionListener() {
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
- }
-
- public void widgetSelected(SelectionEvent e) {
- Calendar cal = deadlinePicker.getDate();
- if (cal != null) {
- Date d = cal.getTime();
- SimpleDateFormat f = (SimpleDateFormat) SimpleDateFormat.getDateInstance();
- f.applyPattern("yyyy-MM-dd");
-
- taskData.setAttributeValue(BugzillaReportElement.DEADLINE.getKeyString(), f.format(d));
- markDirty(true); // TODO goes dirty even if user
- // presses cancel
- }
- }
- });
-
- timeSection.setClient(timeComposite);
- }
-
- protected void addKeywordsList(String keywords, Composite attributesComposite) throws IOException {
- // newLayout(attributesComposite, 1, "Keywords:", PROPERTY);
- FormToolkit toolkit = getManagedForm().getToolkit();
- Label label = toolkit.createLabel(attributesComposite, "Keywords:");
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo(label);
-
- 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> validKeywords = new ArrayList<String>();
- try {
- validKeywords = BugzillaCorePlugin.getRepositoryConfiguration(false, repository.getUrl(),
- TasksUiPlugin.getDefault().getProxySettings(), repository.getUserName(), repository.getPassword(),
- repository.getCharacterEncoding()).getKeywords();
- } catch (Exception e) {
- // ignore
- }
-
- if (validKeywords != null) {
- for (Iterator<String> it = validKeywords.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());
- }
-
- protected void addVoting(Composite attributesComposite) {
- FormToolkit toolkit = getManagedForm().getToolkit();
- Label label = toolkit.createLabel(attributesComposite, "Votes:");
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo(label);
- Composite votingComposite = toolkit.createComposite(attributesComposite);
- GridLayout layout = new GridLayout(3, false);
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- votingComposite.setLayout(layout);
- GridDataFactory.fillDefaults().span(2, 1).applyTo(votingComposite);
- RepositoryTaskAttribute votesAttribute = taskData.getAttribute(BugzillaReportElement.VOTES.getKeyString());
- String voteValue = votesAttribute != null ? votesAttribute.getValue() : "0";
- votesText = toolkit.createText(votingComposite, voteValue);
- votesText.setFont(TEXT_FONT);
- votesText.setEditable(false);
-
- Hyperlink showVotesHyperlink = toolkit.createHyperlink(votingComposite, "Show votes for this bug", SWT.NONE);
- showVotesHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- if (ExistingBugEditor.this.getEditor() instanceof MylarTaskEditor) {
- MylarTaskEditor mylarTaskEditor = (MylarTaskEditor) ExistingBugEditor.this.getEditor();
- mylarTaskEditor.displayInBrowser(repository.getUrl() + IBugzillaConstants.SHOW_VOTES_URL
- + getRepositoryTaskData().getId());
- }
- }
- });
-
- Hyperlink voteHyperlink = toolkit.createHyperlink(votingComposite, "Vote for this bug", SWT.NONE);
- voteHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- if (ExistingBugEditor.this.getEditor() instanceof MylarTaskEditor) {
- MylarTaskEditor mylarTaskEditor = (MylarTaskEditor) ExistingBugEditor.this.getEditor();
- mylarTaskEditor.displayInBrowser(repository.getUrl() + IBugzillaConstants.VOTE_URL
- + getRepositoryTaskData().getId());
- }
- }
- });
- }
-
- protected void addCCList(String ccValue, Composite attributesComposite) {
- // newLayout(attributesComposite, 1, "Add CC:", PROPERTY);
- FormToolkit toolkit = getManagedForm().getToolkit();
- Label label = toolkit.createLabel(attributesComposite, "Add CC:");
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.DEFAULT).applyTo(label);
- 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 = 150;
- ccText.setLayoutData(ccData);
- // ccText.setText(ccValue);
- ccText.addListener(SWT.FocusIn, new GenericListener());
- ccText.addModifyListener(new ModifyListener() {
-
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- taskData.setAttributeValue(BugzillaReportElement.NEWCC.getKeyString(), ccText.getText());
- }
-
- });
-
- // newLayout(attributesComposite, 1, "CC: (Select to remove)",
- // PROPERTY);
- Label ccListLabel = toolkit.createLabel(attributesComposite, "CC:");
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.TOP).applyTo(ccListLabel);
- 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 = 150;
- ccListData.heightHint = 95;
- ccList.setLayoutData(ccListData);
-
- java.util.List<String> ccs = taskData.getCC();
- if (ccs != null) {
- for (Iterator<String> it = ccs.iterator(); it.hasNext();) {
- String cc = it.next();
- ccList.add(cc);
- }
- }
-
- ccList.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- markDirty(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());
- toolkit.createLabel(attributesComposite, "");
- label = toolkit.createLabel(attributesComposite, "(Select to remove)");
- GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.DEFAULT).applyTo(label);
-
- }
-
- @Override
- protected void updateBug() {
- taskData.setHasLocalChanges(true);
- // go through all of the attributes and update the main values to the
- // new ones
- // for (Iterator<RepositoryTaskAttribute> it =
- // bug.getAttributes().iterator(); it.hasNext();) {
- // RepositoryTaskAttribute 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) {
- // // TODO: Ask offline reports if this is true?
- // bug.setHasChanged(true);
- // }
-
- // Update some other fields as well.
- // bug.setNewComment(bug.getNewNewComment());
-
- }
-
- // @Override
- // protected void restoreBug() {
- //
- // if (taskData == null)
- // return;
- //
- // // go through all of the attributes and restore the new values to the
- // // main ones
- // // for (Iterator<RepositoryTaskAttribute> it =
- // // bug.getAttributes().iterator(); it.hasNext();) {
- // // RepositoryTaskAttribute 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 RepositoryTaskData serverBug;
- // try {
- // TaskRepository repository =
- // TasksUiPlugin.getRepositoryManager().getRepository(
- // BugzillaPlugin.REPOSITORY_KIND, taskData.getRepositoryUrl());
- // serverBug = BugzillaServerFacade.getBug(repository.getUrl(),
- // repository.getUserName(), repository
- // .getPassword(), editorInput.getProxySettings(),
- // repository.getCharacterEncoding(), Integer
- // .parseInt(taskData.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 #" + taskData.getId()
- // + " could not be read from the server.");
- // }
- // });
- // return new Status(IStatus.OK, BugzillaUiPlugin.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 #" + taskData.getId());
- // compareInput.setLeft(taskData);
- // compareInput.setRight(serverBug);
- // CompareUI.openCompareEditor(compareInput);
- // }
- // });
- // return new Status(IStatus.OK, BugzillaUiPlugin.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) {
- markDirty(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 (getRepositoryTaskData().getAttributeValue(BugzillaReportElement.KEYWORDS.getKeyString()).equals(
- keyword))
- keyWordsList.deselectAll();
- }
-
- for (int i = 0; i < keyWordsList.getSelectionCount(); i++) {
- keywords.append(sel[i]);
- if (i != keyWordsList.getSelectionCount() - 1) {
- keywords.append(",");
- }
- }
-
- taskData.setAttributeValue(BugzillaReportElement.KEYWORDS.getKeyString(), 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 a comment.
- */
- protected class CommentListener implements Listener {
-
- /** The comment that this listener is for. */
- private TaskComment taskComment;
-
- /**
- * Creates a new <code>CommentListener</code>.
- *
- * @param taskComment
- * The comment that this listener is for.
- */
- public CommentListener(TaskComment taskComment) {
- this.taskComment = taskComment;
- }
-
- public void handleEvent(Event event) {
- fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
- new RepositoryTaskSelection(taskData.getId(), taskData.getRepositoryUrl(),
- taskComment.getCreated(), taskComment, taskData.getSummary()))));
- }
- }
-
- @Override
- protected void validateInput() {
- // RepositoryOperation o = taskData.getSelectedOperation();
- // if (o != null && o.getKnobName().compareTo("resolve") == 0
- // && (addCommentsTextBox.getText() == null ||
- // addCommentsTextBox.getText().equals(""))) {
- // // TODO: Highlight (change to light red?) New Comment area to
- // // indicate need for message
- // submitButton.setEnabled(false);
- // } else {
- // submitButton.setEnabled(true);
- // }
- }
-
- /**
- * 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) {
- FormToolkit toolkit = new FormToolkit(attributesComposite.getDisplay());
- 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();
- RepositoryTaskAttribute a = getRepositoryTaskData().getAttribute(
- BugzillaReportElement.BUG_FILE_LOC.getKeyString());
- if (!(a.getValue().equals(sel))) {
- a.setValue(sel);
- markDirty(true);
- }
- }
- });
- urlText.addListener(SWT.FocusIn, new GenericListener());
- }
-
- @Override
- public RepositoryTaskData getRepositoryTaskData() {
- return editorInput.getRepositoryTaskData();
- }
-
- // protected void createDescriptionLayout(Composite composite) {
- // // This is migration code from 0.6.1 -> 0.6.2
- // // Changes to the abstract editor causes the description
- // // field of the bugzilla editor to be editable if the offline
- // // task data hasn't been saved yet. Upon being saved it works fine but
- // // the initial load of the page would have an editable description
- // // area if this was not present. TODO: Remove post 0.6.1.
- // super.createDescriptionLayout(composite);
- // descriptionTextViewer.setEditable(false);
- // }
-
- // 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");
- // }
- // }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditor.java
deleted file mode 100644
index 00956fdc2..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditor.java
+++ /dev/null
@@ -1,543 +0,0 @@
-/*******************************************************************************
- * 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.io.UnsupportedEncodingException;
-import java.net.Proxy;
-import java.net.URLEncoder;
-import java.util.Calendar;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractRepositoryTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.RepositoryTaskOutlineNode;
-import org.eclipse.mylar.internal.tasks.ui.editors.RepositoryTaskSelection;
-import org.eclipse.mylar.internal.tasks.ui.search.SearchHitCollector;
-import org.eclipse.mylar.internal.tasks.ui.util.WebBrowserDialog;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePicker;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Spinner;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.FormColors;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-
-/**
- * An editor used to view a locally created bug that does not yet exist on a
- * server.
- *
- * @author Rob Elves (modifications)
- */
-public class NewBugEditor extends AbstractRepositoryTaskEditor {
-
- private static final int DEFAULT_ESTIMATED_TIME = 1;
-
- private static final String LABEL_SEARCH_DUPS = "Search for Duplicates";
-
- private static final String LABEL_CREATE = "Create New";
-
- private static final String NO_STACK_MESSAGE = "Unable to locate a stack trace in the description text.\nDuplicate search currently only supports stack trace matching.";
-
- private static final String ERROR_CREATING_BUG_REPORT = "Error creating bug report";
-
- protected RepositoryTaskData taskData;
-
- DatePicker datePicker;
-
- protected String newSummary = "";
-
- private Button searchDuplicatesButton;
-
- private BugSubmissionHandler submissionHandler;
-
- private Spinner estimated;
-
- public NewBugEditor(FormEditor editor) {
- super(editor);
- }
-
- @Override
- public void init(IEditorSite site, IEditorInput input) {
- NewBugEditorInput ei = (NewBugEditorInput) input;
- setSite(site);
- setInput(input);
- editorInput = ei;
- taskOutlineModel = RepositoryTaskOutlineNode.parseBugReport(editorInput.getRepositoryTaskData(), false);
- taskData = ei.getRepositoryTaskData();
- newSummary = taskData.getSummary();
- repository = editorInput.getRepository();
- isDirty = false;
-
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repository.getKind());
- submissionHandler = new BugSubmissionHandler(connector);
- }
-
- @Override
- public RepositoryTaskData getRepositoryTaskData() {
- return taskData;
- }
-
- @Override
- protected void createDescriptionLayout(Composite composite) {
- FormToolkit toolkit = this.getManagedForm().getToolkit();
- Section section = toolkit.createSection(composite, ExpandableComposite.TITLE_BAR);
- section.setText(LABEL_SECTION_DESCRIPTION);
- section.setExpanded(true);
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Composite descriptionComposite = toolkit.createComposite(section);
- GridLayout descriptionLayout = new GridLayout();
-
- descriptionComposite.setLayout(descriptionLayout);
- GridData descriptionData = new GridData(GridData.FILL_BOTH);
- descriptionData.grabExcessVerticalSpace = true;
- descriptionComposite.setLayoutData(descriptionData);
- section.setClient(descriptionComposite);
-
- descriptionTextViewer = addTextEditor(repository, descriptionComposite,
- getRepositoryTaskData().getNewComment(), true, SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
- descriptionTextViewer.setEditable(true);
-
- GridData descriptionTextData = new GridData(GridData.FILL_BOTH);
- descriptionTextViewer.getControl().setLayoutData(descriptionTextData);
- descriptionTextViewer.getControl().setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
-
- toolkit.paintBordersFor(descriptionComposite);
-
- }
-
- @Override
- protected void createReportHeaderLayout(Composite comp) {
- addSummaryText(comp);
- }
-
- // @Override
- // protected void createReportHeaderLayout(Composite comp) {
- // FormToolkit toolkit = new FormToolkit(comp.getDisplay());
- // Composite headerComposite = toolkit.createComposite(editorComposite);
- // headerComposite.setLayout(new GridLayout(2, false));
- // GridDataFactory.fillDefaults().grab(true,
- // false).applyTo(headerComposite);
- // toolkit.createLabel(headerComposite, "Posting To:").setFont(TITLE_FONT);
- // Text target = toolkit.createText(headerComposite, repository.getUrl(),
- // SWT.FLAT);
- // target.setFont(TITLE_FONT);
- // target.setEditable(false);
- // addSummaryText(headerComposite);
- // toolkit.paintBordersFor(headerComposite);
- // }
-
- @Override
- protected void createAttachmentLayout(Composite comp) {
- // currently can't attach while creating new bug
- }
-
- @Override
- protected void createCommentLayout(Composite comp) {
- // Since NewBugModels have no comments, there is no
- // GUI for them.
- }
-
- @Override
- protected void createNewCommentLayout(Composite comp) {
- createPlanningLayout(comp);
- }
-
- protected void createPlanningLayout(Composite comp) {
- FormToolkit toolkit = this.getManagedForm().getToolkit();
-
- Section section = toolkit.createSection(comp, ExpandableComposite.TITLE_BAR | Section.TWISTIE);
- section.setText("Personal Planning");
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- section.setExpanded(true);
-
- Composite sectionClient = toolkit.createComposite(section);
- section.setClient(sectionClient);
- GridLayout layout = new GridLayout();
- layout.numColumns = 7;
- layout.makeColumnsEqualWidth = false;
- sectionClient.setLayout(layout);
- GridData clientDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- sectionClient.setLayoutData(clientDataLayout);
-
- // Reminder
- Label label = toolkit.createLabel(sectionClient, "Scheduled for:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- datePicker = new DatePicker(sectionClient, SWT.NONE, DatePicker.LABEL_CHOOSE);
- datePicker.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
- datePicker.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- Calendar today = Calendar.getInstance();
- TasksUiPlugin.getTaskListManager().setScheduledToday(today);
- datePicker.setDate(today);
- Button removeReminder = toolkit.createButton(sectionClient, "Clear", SWT.PUSH | SWT.CENTER);
- removeReminder.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- datePicker.setDate(null);
- }
- });
-
- // 1 Blank column after Reminder clear button
- Label dummy = toolkit.createLabel(sectionClient, "");
- GridData dummyLabelDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
- dummyLabelDataLayout.horizontalSpan = 1;
- dummyLabelDataLayout.widthHint = 30;
- dummy.setLayoutData(dummyLabelDataLayout);
-
- // Estimated time
- label = toolkit.createLabel(sectionClient, "Estimated time:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- estimated = new Spinner(sectionClient, SWT.NONE);
- estimated.setDigits(0);
- estimated.setMaximum(100);
- estimated.setMinimum(0);
- estimated.setIncrement(1);
- estimated.setSelection(DEFAULT_ESTIMATED_TIME);
- estimated.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- GridData estimatedDataLayout = new GridData();
- estimatedDataLayout.widthHint = 110;
- estimated.setLayoutData(estimatedDataLayout);
- label = toolkit.createLabel(sectionClient, "hours ");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- // 1 Blank column
- Label blankLabel2 = toolkit.createLabel(sectionClient, "");
- GridData blankLabl2Layout = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
- blankLabl2Layout.horizontalSpan = 1;
- blankLabl2Layout.widthHint = 25;
- blankLabel2.setLayoutData(blankLabl2Layout);
-
- toolkit.paintBordersFor(sectionClient);
-
- }
-
- @Override
- protected void addRadioButtons(Composite buttonComposite) {
- // Since NewBugModels have no special submitting actions,
- // no radio buttons are required.
- }
-
- @Override
- protected void createCustomAttributeLayout(Composite composite) {
- // ignore
- }
-
- @Override
- protected String getTitleString() {
- return taskData.getLabel();
- }
-
- public boolean searchForDuplicates() {
-
- String stackTrace = getStackTraceFromDescription();
- if (stackTrace == null) {
- MessageDialog.openWarning(null, "No Stack Trace Found", NO_STACK_MESSAGE);
- return false;
- }
-
- String queryUrl = "";
- try {
- queryUrl = repository.getUrl() + "/buglist.cgi?long_desc_type=allwordssubstr&long_desc="
- + URLEncoder.encode(stackTrace, BugzillaCorePlugin.ENCODING_UTF_8);
- } catch (UnsupportedEncodingException e) {
- // This should never happen
- }
-
- queryUrl += "&product=" + getRepositoryTaskData().getProduct();
-
- BugzillaRepositoryQuery bugzillaQuery = new BugzillaRepositoryQuery(repository.getUrl(), queryUrl, "search",
- "100", TasksUiPlugin.getTaskListManager().getTaskList());
- Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
- SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskListManager().getTaskList(),
- repository, bugzillaQuery, proxySettings);
-
- NewSearchUI.runQueryInBackground(collector);
- return true;
- }
-
- public String getStackTraceFromDescription() {
- String description = descriptionTextViewer.getTextWidget().getText().trim();
- String stackTrace = null;
-
- if (description == null) {
- return null;
- }
-
- String punct = "!\"#$%&'\\(\\)*+,-./:;\\<=\\>?@\\[\\]^_`\\{|\\}~\n";
- String lineRegex = " *at\\s+[\\w" + punct + "]+ ?\\(.*\\) *\n?";
- Pattern tracePattern = Pattern.compile(lineRegex);
- Matcher match = tracePattern.matcher(description);
-
- if (match.find()) {
- // record the index of the first stack trace line
- int start = match.start();
- int lastEnd = match.end();
-
- // find the last stack trace line
- while (match.find()) {
- lastEnd = match.end();
- }
-
- // make sure there's still room to find the exception
- if (start <= 0) {
- return null;
- }
-
- // count back to the line before the stack trace to find the
- // exception
- int stackStart = 0;
- int index = start - 1;
- while (index > 1 && description.charAt(index) == ' ') {
- index--;
- }
-
- // locate the exception line index
- stackStart = description.substring(0, index - 1).lastIndexOf("\n");
- stackStart = (stackStart == -1) ? 0 : stackStart + 1;
-
- stackTrace = description.substring(stackStart, lastEnd);
- }
-
- return stackTrace;
- }
-
- @Override
- protected void submitBug() {
- submitButton.setEnabled(false);
- showBusy(true);
- if (summaryText != null && summaryText.getText().trim().equals("")) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- MessageDialog.openInformation(NewBugEditor.this.getSite().getShell(), ERROR_CREATING_BUG_REPORT,
- "A summary must be provided with new bug reports.");
- summaryText.setFocus();
- submitButton.setEnabled(true);
- showBusy(false);
- }
- });
- return;
- }
- if (descriptionTextViewer != null && descriptionTextViewer.getTextWidget().getText().trim().equals("")) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- MessageDialog.openInformation(NewBugEditor.this.getSite().getShell(), ERROR_CREATING_BUG_REPORT,
- "A description must be provided with new reports.");
- descriptionTextViewer.getTextWidget().setFocus();
- submitButton.setEnabled(true);
- showBusy(false);
- }
- });
- return;
- }
-
- updateBug();
- Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
- boolean wrap = IBugzillaConstants.BugzillaServerVersion.SERVER_218.equals(repository.getVersion());
-
- try {
- final BugzillaReportSubmitForm bugzillaReportSubmitForm = BugzillaReportSubmitForm.makeNewBugPost(
- repository.getUrl(), repository.getUserName(), repository.getPassword(), proxySettings, repository
- .getCharacterEncoding(), taskData, wrap);
-
- JobChangeAdapter submitJobListener = new JobChangeAdapter() {
-
- public void done(final IJobChangeEvent event) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (event.getJob().getResult().getCode() == Status.OK
- && event.getJob().getResult().getMessage() != null) {
- close();
- String newTaskHandle = AbstractRepositoryTask.getHandle(repository.getUrl(), event
- .getJob().getResult().getMessage());
- ITask newTask = TasksUiPlugin.getTaskListManager().getTaskList().getTask(newTaskHandle);
- if (newTask != null) {
- Calendar selectedDate = datePicker.getDate();
- if(selectedDate != null) {
- //NewLocalTaskAction.scheduleNewTask(newTask);
- TasksUiPlugin.getTaskListManager().setReminder(newTask, selectedDate.getTime());
- }
-
- newTask.setEstimatedTimeHours(estimated.getSelection());
-
- Object selectedObject = null;
- if (TaskListView.getFromActivePerspective() != null)
- selectedObject = ((IStructuredSelection) TaskListView
- .getFromActivePerspective().getViewer().getSelection())
- .getFirstElement();
-
- if (selectedObject instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(
- ((TaskCategory) selectedObject), newTask);
- }
- TaskUiUtil.refreshAndOpenTaskListElement(newTask);
- }
- return;
- } else if (event.getJob().getResult().getCode() == Status.INFO) {
- WebBrowserDialog.openAcceptAgreement(NewBugEditor.this.getSite().getShell(),
- IBugzillaConstants.REPORT_SUBMIT_ERROR,
- event.getJob().getResult().getMessage(), event.getJob().getResult()
- .getException().getMessage());
- submitButton.setEnabled(true);
- NewBugEditor.this.showBusy(false);
- } else if (event.getJob().getResult().getCode() == Status.ERROR) {
- MessageDialog.openError(NewBugEditor.this.getSite().getShell(),
- IBugzillaConstants.REPORT_SUBMIT_ERROR, event.getResult().getMessage());
- submitButton.setEnabled(true);
- NewBugEditor.this.showBusy(false);
- }
- }
- });
- }
- };
-
- submissionHandler.submitBugReport(bugzillaReportSubmitForm, submitJobListener, false, addToTaskListRoot
- .getSelection());
-
- } catch (UnsupportedEncodingException e) {
- MessageDialog.openError(null, "Posting Error", "Ensure proper encoding selected in "
- + TaskRepositoriesView.NAME + ".");
- return;
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Posting Error. Ensure proper configuration in "+ TaskRepositoriesView.NAME + ".", true);
- return;
- }
-
- }
-
- @Override
- protected void updateBug() {
- taskData.setSummary(newSummary);
- taskData.setDescription(descriptionTextViewer.getTextWidget().getText());
- }
-
- /**
- * A listener for selection of the description textbox.
- */
- protected class DescriptionListener implements Listener {
- public void handleEvent(Event event) {
- fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
- new RepositoryTaskSelection(taskData.getId(), taskData.getRepositoryUrl(), "New Description",
- false, taskData.getSummary()))));
- }
- }
-
- @Override
- public void handleSummaryEvent() {
- String sel = summaryText.getText();
- if (!(newSummary.equals(sel))) {
- newSummary = sel;
- markDirty(true);
- }
- }
-
- @Override
- protected void validateInput() {
- // ignore
- }
-
- @Override
- public boolean isDirty() {
- return true;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- /**
- * 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 createActionsLayout(Composite formComposite) {
- FormToolkit toolkit = new FormToolkit(formComposite.getDisplay());
- Section section = toolkit.createSection(formComposite, ExpandableComposite.TITLE_BAR);
- section.setText(LABEL_SECTION_ACTIONS);
- section.setExpanded(true);
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Composite buttonComposite = toolkit.createComposite(section);
- GridLayout buttonLayout = new GridLayout();
- buttonLayout.numColumns = 3;
- buttonComposite.setLayout(buttonLayout);
- GridData buttonData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- buttonData.horizontalSpan = 1;
- buttonData.grabExcessVerticalSpace = false;
- buttonComposite.setLayoutData(buttonData);
- section.setClient(buttonComposite);
-
- addActionButtons(buttonComposite);
- addToTaskListRoot = toolkit.createButton(buttonComposite, "Add to Task List root", SWT.CHECK);
- }
-
- protected void addActionButtons(Composite buttonComposite) {
- FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay());
- searchDuplicatesButton = toolkit.createButton(buttonComposite, LABEL_SEARCH_DUPS, SWT.NONE);
- GridData searchDuplicatesButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- searchDuplicatesButton.setLayoutData(searchDuplicatesButtonData);
- searchDuplicatesButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- searchForDuplicates();
- }
- });
-
- submitButton = toolkit.createButton(buttonComposite, LABEL_CREATE, SWT.NONE);
- GridData submitButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- submitButton.setLayoutData(submitButtonData);
- submitButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- submitBug();
- }
- });
- submitButton.addListener(SWT.FocusIn, new GenericListener());
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditorInput.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditorInput.java
deleted file mode 100644
index 8845b2069..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugEditorInput.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.bugzilla.ui.editor;
-
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractBugEditorInput;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * The <code>IEditorInput</code> implementation for <code>NewBugEditor</code>.
- * @author Rob Elves (modifications)
- */
-public class NewBugEditorInput extends AbstractBugEditorInput {
-
-
- public NewBugEditorInput(TaskRepository repository, RepositoryTaskData taskData) {
- super(repository, taskData);
- }
-
- public String getName() {
- return "NEW ["+repository.getUrl()+"]";
- }
-
- @Override
- public boolean equals(Object o) {
- if (o instanceof NewBugEditorInput) {
- NewBugEditorInput input = (NewBugEditorInput) o;
- return input.getRepositoryTaskData().equals(this.getRepositoryTaskData());
- }
- return false;
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugzillaTaskEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugzillaTaskEditor.java
deleted file mode 100644
index c7d80d7ad..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/NewBugzillaTaskEditor.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.internal.bugzilla.ui.editor;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-
-/**
- * @author Rob Elves
- *
- * TODO: Get rid of this wrapper.
- * Before this can be done a factory must be added to handle new bug editor input in MylarTaskEditor.addPages()
- * then all occurrences of BugzillaUiPlugin.NEW_BUG_EDITOR_ID can be replaced with TaskListPreferenceConstants.TASK_EDITOR_ID
- * so that MylarTaskEditor is opened rather than this.
- */
-public class NewBugzillaTaskEditor extends MylarTaskEditor {
-
- private Menu contextMenu;
-
- private NewBugEditor newBugEditor;
-
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- setSite(site);
- setInput(input);
- }
-
- @Override
- protected void addPages() {
- MenuManager manager = new MenuManager();
- IMenuListener listener = new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- contextMenuAboutToShow(manager);
- }
- };
- manager.setRemoveAllWhenShown(true);
- manager.addMenuListener(listener);
- contextMenu = manager.createContextMenu(getContainer());
- getContainer().setMenu(contextMenu);
- try {
- newBugEditor = new NewBugEditor(this);
- int index = addPage(newBugEditor);
- String label = "<unsubmitted> "+((NewBugEditorInput)getEditorInput()).getRepository().getUrl();
- setPageText(index, "Bugzilla");
- setPartName(label);
- } catch (PartInitException e) {
- MylarStatusHandler.fail(e, "Could not add new bug form", true);
- }
- }
-
- @Override
- public Object getAdapter(Class adapter) {
- return newBugEditor.getAdapter(adapter);
- }
-
- public NewBugEditor getPage() {
- return newBugEditor;
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- // ignore
-
- }
-
- @Override
- public void doSaveAs() {
- // ignore
-
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- // ignore
- return false;
- }
-
- @Override
- public boolean isDirty() {
- return true;
- }
-
-}
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
deleted file mode 100644
index f76ba397f..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java
+++ /dev/null
@@ -1,1785 +0,0 @@
-/*******************************************************************************
- * 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.lang.reflect.InvocationTargetException;
-import java.net.Proxy;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.internal.tasks.ui.search.SearchHitCollector;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-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.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.PlatformUI;
-import org.eclipse.ui.internal.help.WorkbenchHelpSystem;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * Bugzilla search page
- *
- * @author Mik Kersten (hardening of prototype)
- */
-public class BugzillaSearchPage extends AbstractRepositoryQueryPage implements 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_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);
-
- 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 = BugzillaUiPlugin.getDefault().getPreferenceStore();
-
- protected String maxHits;
-
- private BugzillaRepositoryQuery originalQuery = null;
-
- protected boolean restoring = false;
-
- private boolean restoreQueryOptions = true;
-
- // 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);
- this.repository = repository;
- // setTitle(TITLE);
- // setDescription(DESCRIPTION);
- // setImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- // setPageComplete(false);
- }
-
- public BugzillaSearchPage(TaskRepository repository, BugzillaRepositoryQuery origQuery) {
- super(TITLE_BUGZILLA_QUERY, origQuery.getDescription());
- originalQuery = origQuery;
- this.repository = repository;
- setDescription("Select the Bugzilla query parameters. Use the Update Attributes button to retrieve "
- + "updated values from the 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 | GridData.GRAB_HORIZONTAL);
- control.setLayoutData(gd);
-
- if (scontainer == null) {
- // Not presenting in search pane so want query title
- 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, BugzillaUiPlugin.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 =
- // TasksUiPlugin.getRepositoryManager().getRepository(BugzillaCorePlugin.REPOSITORY_KIND,
- // repositoryUrl);
- // updateAttributesFromRepository(repositoryUrl, null, false);
- // restoring = true;
- // restoreWidgetValues();
- // }
- // });
- // 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);
- product.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (product.getSelectionIndex() != -1) {
- String[] selectedProducts = product.getSelection();
- updateAttributesFromRepository(repository.getUrl(), selectedProducts, false);
- } else {
- updateAttributesFromRepository(repository.getUrl(), null, false);
- }
- if (restoring) {
- restoring = false;
- restoreWidgetValues();
- }
- if (scontainer != null) {
- scontainer.setPerformActionEnabled(canQuery());
- }
- }
- });
-
- 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. (-1 returns all)");
-
- 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);
- gd.widthHint = 110;
- 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.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (repository != null) {
- updateAttributesFromRepository(repository.getUrl(), null, 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;
- }
-
- if (restoreQueryOptions) {
- saveWidgetValues();
- }
-
- getPatternData(summaryPattern, summaryOperation, previousSummaryPatterns);
- getPatternData(commentPattern, commentOperation, previousCommentPatterns);
- getPatternData(this.emailPattern, emailOperation, previousEmailPatterns);
-
- // 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();
-
- String summaryText = summaryPattern.getText();
- BugzillaUiPlugin.getDefault().getPreferenceStore().setValue(IBugzillaConstants.MOST_RECENT_QUERY, summaryText);
-
- Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
- SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskListManager().getTaskList(),
- repository, getQuery(), proxySettings);
- NewSearchUI.runQueryInBackground(collector);
-
- return true;
- }
-
- @Override
- public void setVisible(boolean visible) {
- if (visible && summaryPattern != null) {
- if (firstTime) {
- if (repository == null) {
- repository = TasksUiPlugin.getRepositoryManager().getDefaultRepository(
- BugzillaCorePlugin.REPOSITORY_KIND);
- }
- // Set<TaskRepository> repositories =
- // TasksUiPlugin.getRepositoryManager().getRepositories(
- // BugzillaCorePlugin.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++;
- // }
-
- // IDialogSettings settings = getDialogSettings();
- // if (repositoryCombo != null) {
- // repositoryCombo.setItems(repositoryUrls);
- // if (repositoryUrls.length == 0) {
- // MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
- // IBugzillaConstants.TITLE_MESSAGE_DIALOG,
- // TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
- // } else {
- // String selectRepo = settings.get(STORE_REPO_ID);
- // if (selectRepo != null && repositoryCombo.indexOf(selectRepo)
- // > -1) {
- // repositoryCombo.setText(selectRepo);
- // repository =
- // TasksUiPlugin.getRepositoryManager().getRepository(
- // BugzillaCorePlugin.REPOSITORY_KIND,
- // repositoryCombo.getText());
- // if (repository == null) {
- // repository =
- // TasksUiPlugin.getRepositoryManager().getDefaultRepository(
- // BugzillaCorePlugin.REPOSITORY_KIND);
- // }
- // } else {
- // repositoryCombo.select(indexToSelect);
- // }
- // updateAttributesFromRepository(repositoryCombo.getText(),
- // null, false);
- // }
- // }
-
- 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) {
- updateAttributesFromRepository(repository.getUrl(), null, false);
- if (product.getItemCount() == 0) {
- updateAttributesFromRepository(repository.getUrl(), null, true);
- }
- }
- if (originalQuery != null) {
- try {
- updateDefaults(originalQuery.getUrl(), String.valueOf(originalQuery.getMaxHits()));
- } catch (UnsupportedEncodingException e) {
- // ignore
- }
- }
- }
-
- /*
- * hack: we have to select the correct product, then update the
- * attributes so the component/version/milestone lists have the
- * proper values, then we can restore all the widget selections.
- */
- if (repository != null) {
- IDialogSettings settings = getDialogSettings();
- String repoId = "." + repository.getUrl();
- if (getWizard() == null && restoreQueryOptions && settings.getArray(STORE_PRODUCT_ID + repoId) != null
- && product != null) {
- product.setSelection(nonNullArray(settings, STORE_PRODUCT_ID + repoId));
- if (product.getSelection().length > 0) {
- updateAttributesFromRepository(repository.getUrl(), product.getSelection(), false);
- }
- restoreWidgetValues();
- }
- }
-
- if (scontainer != null) {
- scontainer.setPerformActionEnabled(canQuery());
- }
- if (getWizard() == null) {
- // TODO: wierd check
- 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 option though
- url.append("&order=Importance");
- // url.append(BugzillaRepositoryUtil.contentTypeRDF);
- 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?");
-
- // NOTE: authentication now added in BugzillaSsearchEngine constructor
- // // 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; ... TODO: The
- * encoding here should match TaskRepository.getCharacterEncoding()
- *
- * @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(), repository.getCharacterEncoding()));
-
- int[] selected = product.getSelectionIndices();
- for (int i = 0; i < selected.length; i++) {
- sb.append("&product=");
- sb.append(URLEncoder.encode(product.getItem(selected[i]), repository.getCharacterEncoding()));
- }
-
- selected = component.getSelectionIndices();
- for (int i = 0; i < selected.length; i++) {
- sb.append("&component=");
- sb.append(URLEncoder.encode(component.getItem(selected[i]), repository.getCharacterEncoding()));
- }
-
- selected = version.getSelectionIndices();
- for (int i = 0; i < selected.length; i++) {
- sb.append("&version=");
- sb.append(URLEncoder.encode(version.getItem(selected[i]), repository.getCharacterEncoding()));
- }
-
- selected = target.getSelectionIndices();
- for (int i = 0; i < selected.length; i++) {
- sb.append("&target_milestone=");
- sb.append(URLEncoder.encode(target.getItem(selected[i]), repository.getCharacterEncoding()));
- }
-
- sb.append("&long_desc_type=");
- sb.append(patternOperationValues[commentOperation.getSelectionIndex()]);
- sb.append("&long_desc=");
- sb.append(URLEncoder.encode(commentPattern.getText(), repository.getCharacterEncoding()));
-
- 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]), repository.getCharacterEncoding()));
- }
-
- selected = os.getSelectionIndices();
- for (int i = 0; i < selected.length; i++) {
- sb.append("&op_sys=");
- sb.append(URLEncoder.encode(os.getItem(selected[i]), repository.getCharacterEncoding()));
- }
-
- 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(), repository.getCharacterEncoding()));
- }
-
- if (daysText.getText() != null && !daysText.getText().equals("")) {
- try {
- Integer.parseInt(daysText.getText());
- sb.append("&changedin=");
- sb.append(URLEncoder.encode(daysText.getText(), repository.getCharacterEncoding()));
- } 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$
-
- private static final String STORE_PRODUCT_ID = PAGE_NAME + ".PRODUCT";
-
- private static final String STORE_COMPONENT_ID = PAGE_NAME + ".COMPONENT";
-
- private static final String STORE_VERSION_ID = PAGE_NAME + ".VERSION";
-
- private static final String STORE_MSTONE_ID = PAGE_NAME + ".MILESTONE";
-
- private static final String STORE_STATUS_ID = PAGE_NAME + ".STATUS";
-
- private static final String STORE_RESOLUTION_ID = PAGE_NAME + ".RESOLUTION";
-
- private static final String STORE_SEVERITY_ID = PAGE_NAME + ".SEVERITY";
-
- private static final String STORE_PRIORITY_ID = PAGE_NAME + ".PRIORITY";
-
- private static final String STORE_HARDWARE_ID = PAGE_NAME + ".HARDWARE";
-
- private static final String STORE_OS_ID = PAGE_NAME + ".OS";
-
- private static final String STORE_SUMMARYMATCH_ID = PAGE_NAME + ".SUMMARYMATCH";
-
- private static final String STORE_COMMENTMATCH_ID = PAGE_NAME + ".COMMENTMATCH";
-
- private static final String STORE_EMAILMATCH_ID = PAGE_NAME + ".EMAILMATCH";
-
- private static final String STORE_MAXHITS_ID = PAGE_NAME + ".MAXHITS";
-
- private static final String STORE_EMAILBUTTON_ID = PAGE_NAME + ".EMAILATTR";
-
- private static final String STORE_SUMMARYTEXT_ID = PAGE_NAME + ".SUMMARYTEXT";
-
- private static final String STORE_COMMENTTEXT_ID = PAGE_NAME + ".COMMENTTEXT";
-
- private static final String STORE_EMAILADDRESS_ID = PAGE_NAME + ".EMAILADDRESS";
-
- // private static final String STORE_REPO_ID = PAGE_NAME + ".REPO";
-
- 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;
-
- public IDialogSettings getDialogSettings() {
- IDialogSettings settings = BugzillaUiPlugin.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, String[] selectedProducts, boolean connect) {
-
- if (connect) {
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repository.getKind());
-
- IRunnableWithProgress updateRunnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("Updating search options...", IProgressMonitor.UNKNOWN);
-
- try {
- connector.updateAttributes(repository, TasksUiPlugin.getDefault().getProxySettings(), monitor);
- } catch (CoreException ce) {
- if (ce.getStatus().getException() instanceof GeneralSecurityException) {
- MylarStatusHandler.fail(ce,
- "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\n"
- + "Please ensure proper configuration in " + TaskRepositoriesView.NAME
- + ". ", true);
- } else if (ce.getStatus().getException() instanceof IOException) {
- MylarStatusHandler.fail(ce, "Connection Error, please ensure proper configuration in "
- + TaskRepositoriesView.NAME + ".", true);
- } else {
- MylarStatusHandler.fail(ce, "Error updating repository attributes for "
- + repository.getUrl(), true);
- }
- return;
- }
- BugzillaUiPlugin.updateQueryOptions(repository, monitor);
- }
- };
-
- try {
- // TODO: make cancelable (bug 143011)
- if (getContainer() != null) {
- getContainer().run(true, false, updateRunnable);
- } else {
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
- service.run(true, false, updateRunnable);
- }
-
- } catch (InvocationTargetException e) {
- MessageDialog.openError(null, "Error updating search options", "Error was : "
- + e.getCause().getMessage());
- } catch (InterruptedException e) {
- // Was cancelled...
- }
- }
-
- if (selectedProducts == null) {
- String[] productsList = BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT, null,
- repositoryUrl);
- Arrays.sort(productsList, String.CASE_INSENSITIVE_ORDER);
- product.setItems(productsList);
- }
-
- String[] componentsList = BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_COMPONENT,
- selectedProducts, repositoryUrl);
- Arrays.sort(componentsList, String.CASE_INSENSITIVE_ORDER);
- component.setItems(componentsList);
-
- version.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_VERSION, selectedProducts,
- repositoryUrl));
-
- target.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_TARGET, selectedProducts,
- repositoryUrl));
-
- if (selectedProducts == null) {
- status.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_STATUS, selectedProducts,
- repositoryUrl));
-
- // status.setSelection(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUSE_STATUS_PRESELECTED,
- // repositoryUrl));
-
- resolution.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_RESOLUTION,
- selectedProducts, repositoryUrl));
-
- severity.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_SEVERITY, selectedProducts,
- repositoryUrl));
-
- priority.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_PRIORITY, selectedProducts,
- repositoryUrl));
-
- hardware.setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_HARDWARE, selectedProducts,
- repositoryUrl));
-
- os
- .setItems(BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_OS, selectedProducts,
- repositoryUrl));
- }
- }
-
- 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), repository
- .getCharacterEncoding());
- 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));
- updateAttributesFromRepository(repository.getUrl(), selList.toArray(sel), false);
- } 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(), TasksUiPlugin.getTaskListManager()
- .getTaskList());
- } catch (UnsupportedEncodingException e) {
- return null;
- }
-
- } else {
- try {
- originalQuery.setUrl(getQueryURL(repository, getQueryParameters()));
- originalQuery.setMaxHits(Integer.parseInt(getMaxHits()));
-
- } catch (UnsupportedEncodingException e) {
- return null;
- }
- }
- return originalQuery;
- }
-
- // @Override
- // public boolean isPageComplete() {
- // return super.canFlipToNextPage();
- // }
-
- private String[] nonNullArray(IDialogSettings settings, String id) {
- String[] value = settings.getArray(id);
- if (value == null) {
- return new String[] {};
- }
- return value;
- }
-
- private void restoreWidgetValues() {
- IDialogSettings settings = getDialogSettings();
- String repoId = "." + repository.getUrl();
- if (!restoreQueryOptions || settings.getArray(STORE_PRODUCT_ID + repoId) == null || product == null) {
- return;
- }
-
- // set widgets to stored values
- product.setSelection(nonNullArray(settings, STORE_PRODUCT_ID + repoId));
- component.setSelection(nonNullArray(settings, STORE_COMPONENT_ID + repoId));
- version.setSelection(nonNullArray(settings, STORE_VERSION_ID + repoId));
- target.setSelection(nonNullArray(settings, STORE_MSTONE_ID + repoId));
- status.setSelection(nonNullArray(settings, STORE_STATUS_ID + repoId));
- resolution.setSelection(nonNullArray(settings, STORE_RESOLUTION_ID + repoId));
- severity.setSelection(nonNullArray(settings, STORE_SEVERITY_ID + repoId));
- priority.setSelection(nonNullArray(settings, STORE_PRIORITY_ID + repoId));
- hardware.setSelection(nonNullArray(settings, STORE_HARDWARE_ID + repoId));
- os.setSelection(nonNullArray(settings, STORE_OS_ID + repoId));
- summaryOperation.select(settings.getInt(STORE_SUMMARYMATCH_ID + repoId));
- commentOperation.select(settings.getInt(STORE_COMMENTMATCH_ID + repoId));
- emailOperation.select(settings.getInt(STORE_EMAILMATCH_ID + repoId));
- maxHitsText.setText(settings.get(STORE_MAXHITS_ID + repoId));
- for (int i = 0; i < emailButton.length; i++) {
- emailButton[i].setSelection(settings.getBoolean(STORE_EMAILBUTTON_ID + i + repoId));
- }
- summaryPattern.setText(settings.get(STORE_SUMMARYTEXT_ID + repoId));
- commentPattern.setText(settings.get(STORE_COMMENTTEXT_ID + repoId));
- emailPattern.setText(settings.get(STORE_EMAILADDRESS_ID + repoId));
- }
-
- public void saveWidgetValues() {
- String repoId = "." + repository.getUrl();
- IDialogSettings settings = getDialogSettings();
- settings.put(STORE_PRODUCT_ID + repoId, product.getSelection());
- settings.put(STORE_COMPONENT_ID + repoId, component.getSelection());
- settings.put(STORE_VERSION_ID + repoId, version.getSelection());
- settings.put(STORE_MSTONE_ID + repoId, target.getSelection());
- settings.put(STORE_STATUS_ID + repoId, status.getSelection());
- settings.put(STORE_RESOLUTION_ID + repoId, resolution.getSelection());
- settings.put(STORE_SEVERITY_ID + repoId, severity.getSelection());
- settings.put(STORE_PRIORITY_ID + repoId, priority.getSelection());
- settings.put(STORE_HARDWARE_ID + repoId, hardware.getSelection());
- settings.put(STORE_OS_ID + repoId, os.getSelection());
- settings.put(STORE_SUMMARYMATCH_ID + repoId, summaryOperation.getSelectionIndex());
- settings.put(STORE_COMMENTMATCH_ID + repoId, commentOperation.getSelectionIndex());
- settings.put(STORE_EMAILMATCH_ID + repoId, emailOperation.getSelectionIndex());
- settings.put(STORE_MAXHITS_ID + repoId, maxHitsText.getText());
- for (int i = 0; i < emailButton.length; i++) {
- settings.put(STORE_EMAILBUTTON_ID + i + repoId, emailButton[i].getSelection());
- }
- settings.put(STORE_SUMMARYTEXT_ID + repoId, summaryPattern.getText());
- settings.put(STORE_COMMENTTEXT_ID + repoId, commentPattern.getText());
- settings.put(STORE_EMAILADDRESS_ID + repoId, emailPattern.getText());
- // settings.put(STORE_REPO_ID, repositoryCombo.getText());
- }
-
- /* Testing hook to see if any products are present */
- public int getProductCount() throws Exception {
- return product.getItemCount();
- }
-
- public boolean isRestoreQueryOptions() {
- return restoreQueryOptions;
- }
-
- public void setRestoreQueryOptions(boolean restoreQueryOptions) {
- this.restoreQueryOptions = restoreQueryOptions;
- }
-}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/IBugzillaResultEditorMatchAdapter.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/IBugzillaResultEditorMatchAdapter.java
deleted file mode 100644
index eba25edf1..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/IBugzillaResultEditorMatchAdapter.java
+++ /dev/null
@@ -1,30 +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.bugzilla.ui.search;
-
-import org.eclipse.mylar.internal.tasks.ui.search.RepositorySearchResult;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-import org.eclipse.search.ui.text.IEditorMatchAdapter;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.ui.IEditorPart;
-
-/**
- * @author Mik Kersten (clean-up)
- */
-public interface IBugzillaResultEditorMatchAdapter extends IEditorMatchAdapter {
-
- public boolean isShownInEditor(Match match, IEditorPart editor);
-
- public Match[] computeContainedMatches(AbstractTextSearchResult result, IEditorPart editor);
-
- public void setResult(RepositorySearchResult result);
-}
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
deleted file mode 100644
index 62d7cde35..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java
+++ /dev/null
@@ -1,135 +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.bugzilla.ui.tasklist;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-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
- * @author Mik Kersten
- */
-public class BugzillaCustomQueryWizardPage extends AbstractRepositoryQueryPage {
-
- private static final String LABEL_CUSTOM_QUERY = "Enter query URL";
-
- 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);
- setImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- }
-
- public BugzillaCustomQueryWizardPage(TaskRepository repository) {
- super(TITLE);
- this.repository = repository;
- setTitle(LABEL_CUSTOM_QUERY);
-// setDescription(DESCRIPTION);
- setImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- }
-
- 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.getUrl());
- }
-
- 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",
- TasksUiPlugin.getTaskListManager().getTaskList());
- query.setCustomQuery(true);
- } else {
- query.setUrl(queryText.getText());
- }
- return query;
- }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaReportEditorFactory.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaReportEditorFactory.java
deleted file mode 100644
index 6f32d0757..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaReportEditorFactory.java
+++ /dev/null
@@ -1,89 +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.bugzilla.ui.tasklist;
-
-import javax.security.auth.login.LoginException;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor;
-import org.eclipse.mylar.internal.tasks.ui.ITaskEditorFactory;
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.EditorPart;
-
-/**
- * @author Mik Kersten
- */
-public class BugzillaReportEditorFactory implements ITaskEditorFactory {
-
- private static final String REPOSITORY_INFO = "Bugzilla";
-
- public void notifyEditorActivationChange(IEditorPart editor) {
- // ignore
- }
-
- public EditorPart createEditor(MylarTaskEditor parentEditor) {
- ExistingBugEditor editor = new ExistingBugEditor(parentEditor);
- return editor;
- }
-
- public IEditorInput createEditorInput(ITask task) {
- if (task instanceof BugzillaTask) {
- BugzillaTask bugzillaTask = (BugzillaTask) task;
- final TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- BugzillaCorePlugin.REPOSITORY_KIND, bugzillaTask.getRepositoryUrl());
- try {
- BugzillaTaskEditorInput input = new BugzillaTaskEditorInput(repository, bugzillaTask, true);
- //input.setOfflineBug(bugzillaTask.getTaskData());
- return input;
- } 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 + ".\n"
- + "Repository set to: " + repository.getUrl() + ", username: " + repository.getUserName());
- }
- });
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not create Bugzilla editor input", true);
- }
- }
- return null;
- }
-
- public String getTitle() {
- return REPOSITORY_INFO;
- }
-
- public boolean canCreateEditorFor(ITask task) {
- return task instanceof BugzillaTask;
- }
-
- public boolean providesOutline() {
- return true;
- }
-
- public boolean canCreateEditorFor(IEditorInput input) {
- return input instanceof ExistingBugEditorInput;
- }
-}
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
deleted file mode 100644
index 1a724c058..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java
+++ /dev/null
@@ -1,239 +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.bugzilla.ui.tasklist;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.Proxy;
-import java.net.URL;
-
-import javax.security.auth.login.LoginException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.RepositoryConfiguration;
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.tasks.core.RepositoryTemplate;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-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 {
-
- public static final String LABEL_AUTOMATIC_VERSION = "Automatic (Use Validate Settings)";
-
- private static final String MESSAGE_FAILURE_UNKNOWN = "Unknown error occured. Check that server url and credentials are valid.";
-
- private static final String TITLE = "Bugzilla Repository Settings";
-
- private static final String DESCRIPTION = "Example: https://bugs.eclipse.org/bugs (do not include index.cgi)";
-
- protected Combo repositoryVersionCombo;
-
- private boolean testing = false;
-
- public BugzillaRepositorySettingsPage(AbstractRepositoryConnectorUi repositoryUi) {
- super(TITLE, DESCRIPTION, repositoryUi);
- setNeedsAnonymousLogin(true);
- setNeedsEncoding(true);
- setNeedsTimeZone(false);
- }
-
- protected void createAdditionalControls(Composite parent) {
-
- for (RepositoryTemplate template : connector.getTemplates()) {
- serverUrlCombo.add(template.label);
- }
- serverUrlCombo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- String text = serverUrlCombo.getText();
- RepositoryTemplate template = connector.getTemplate(text);
- if (template != null) {
- repositoryLabelEditor.setStringValue(template.label);
- setUrl(template.repositoryUrl);
- // setAnonymous(info.anonymous);
- setBugzillaVersion(template.version);
- getContainer().updateButtons();
- return;
- }
- }
- });
-
- Label repositoryVersionLabel = new Label(parent, SWT.NONE);
- repositoryVersionLabel.setText("Repository Version: ");
- repositoryVersionCombo = new Combo(parent, SWT.READ_ONLY);
-
- repositoryVersionCombo.add(LABEL_AUTOMATIC_VERSION);
-
- for (String version : getConnector().getSupportedVersions()) {
- repositoryVersionCombo.add(version);
- }
- if (repository != null && repositoryVersionCombo.indexOf(repository.getVersion()) >= 0) {
- repositoryVersionCombo.select(repositoryVersionCombo.indexOf(repository.getVersion()));
- } else {
- int defaultIndex = getConnector().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
- }
- });
- }
-
- public void setBugzillaVersion(String version) {
- if (version == null) {
- repositoryVersionCombo.select(0);
- } else {
- int i = repositoryVersionCombo.indexOf(version.toString());
- if (i != -1) {
- repositoryVersionCombo.select(i);
- setVersion(version);
- } else {
- for (IBugzillaConstants.BugzillaServerVersion serverVersion : IBugzillaConstants.BugzillaServerVersion
- .values()) {
- if (version.startsWith(serverVersion.toString())) {
- i = repositoryVersionCombo.indexOf(serverVersion.toString());
- if (i != -1) {
- repositoryVersionCombo.select(i);
- setVersion(serverVersion.toString());
- break;
- }
- }
- }
- if (i == -1) {
- MylarStatusHandler.log("Could not resolve repository version: " + version, this);
- setVersion(IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString());
- }
- }
- }
- }
-
- @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;
- }
-
- /* public for testing */
- public void validateSettings() {
-
- try {
- final URL serverURL = new URL(super.getServerUrl());
- final String serverUrl = getServerUrl();
- final String newUserId = getUserName();
- final String newPassword = getPassword();
- final boolean isAnonymous = isAnonymousAccess();
- final String newEncoding = getCharacterEncoding();
- final boolean checkVersion = repositoryVersionCombo.getSelectionIndex() == 0;
- final String[] version = new String[1];
- getWizard().getContainer().run(true, false, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("Validating server settings", IProgressMonitor.UNKNOWN);
- try {
-
- // Check that the server exists and we can connect (proxy or not)
- Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
- WebClientUtil.openUrlConnection(serverURL, proxySettings, false);
-
- if (!isAnonymous) {
- // Server exists, connect to service and validate credentials
- BugzillaServerFacade.validateCredentials(proxySettings, serverUrl, newUserId, newPassword);
- }
-
- if (checkVersion) {
- RepositoryConfiguration config = BugzillaCorePlugin.getRepositoryConfiguration(true,
- serverUrl, proxySettings, newUserId, newPassword, newEncoding);
-
- if (config != null) {
- version[0] = config.getInstallVersion();
- }
- }
-
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
-
- if (version[0] != null) {
- setBugzillaVersion(version[0]);
- }
-
- if (!testing) {
- MessageDialog.openInformation(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
- "Authentication credentials are valid.");
- }
- } catch (InvocationTargetException e) {
- if (e.getCause() instanceof MalformedURLException) {
- MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "Server URL is invalid.");
- } else if (e.getCause() instanceof LoginException) {
- MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
- "Unable to authenticate with server. Login credentials invalid.");
- } else if (e.getCause() instanceof IOException) {
- MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
- "No Bugzilla server found at url");
- } else {
- MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, MESSAGE_FAILURE_UNKNOWN);
- }
- } catch (MalformedURLException e) {
- MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "Server URL is invalid.");
- } catch (InterruptedException e) {
- MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, MESSAGE_FAILURE_UNKNOWN);
- }
-
- super.getWizard().getContainer().updateButtons();
- }
-
- public void setTesting(boolean testing) {
- this.testing = testing;
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryUi.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryUi.java
deleted file mode 100644
index 463eb49d9..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryUi.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.bugzilla.ui.tasklist;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage;
-import org.eclipse.mylar.internal.bugzilla.ui.wizard.NewBugzillaTaskWizard;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- */
-public class BugzillaRepositoryUi extends AbstractRepositoryConnectorUi {
-
- public AbstractRepositorySettingsPage getSettingsPage() {
- return new BugzillaRepositorySettingsPage(this);
- }
-
- @Override
- public AbstractRepositoryQueryPage getSearchPage(TaskRepository repository, IStructuredSelection selection) {
- return new BugzillaSearchPage(repository);
- }
-
- @Override
- public IWizard getNewTaskWizard(TaskRepository taskRepository, IStructuredSelection selection) {
- return new NewBugzillaTaskWizard(taskRepository, selection);
- }
-
- public IWizard getQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) {
- if (query instanceof BugzillaRepositoryQuery) {
- return new EditBugzillaQueryWizard(repository, (BugzillaRepositoryQuery) query);
- } else {
- return new NewBugzillaQueryWizard(repository);
- }
- }
-
- @Override
- public boolean hasSearchPage() {
- return true;
- }
-
- @Override
- public boolean hasRichEditor() {
- return true;
- }
-
- @Override
- public String getRepositoryType() {
- return BugzillaCorePlugin.REPOSITORY_KIND;
- }
-
- @Override
- public void openRemoteTask(String repositoryUrl, String idString) {
- int id = -1;
- try {
- id = Integer.parseInt(idString);
- } catch (NumberFormatException e) {
- // ignore
- }
- if (id != -1) {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- OpenBugzillaReportJob job = new OpenBugzillaReportJob(repositoryUrl, id, page);
- job.schedule();
- }
- }
-}
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
deleted file mode 100644
index eeb696fcc..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java
+++ /dev/null
@@ -1,58 +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.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.core.BugzillaQueryHit;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-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();
- // XXX: refactor to use configuration
- if ("major".equals(kind) || "blocker".equals(kind) || "critical".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
deleted file mode 100644
index 900b5b123..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java
+++ /dev/null
@@ -1,275 +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.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.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.editors.IRepositoryTaskAttributeListener;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.RepositoryTaskOutlineNode;
-import org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.TaskFormPage;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-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 RepositoryTaskData offlineBug;
-
- private ExistingBugEditor bugzillaEditor;
-
- private BugzillaTaskEditorInput bugzillaEditorInput;
-
- private IRepositoryTaskAttributeListener ATTRIBUTE_LISTENER = new IRepositoryTaskAttributeListener() {
- public void attributeChanged(String attribute, String value) {
- // TODO: get rid of this?
- if (attribute.equals("Priority")) {
- bugTask.setPriority(value);
- }
- }
- };
-
- public BugzillaTaskEditor() {
- super();
- bugzillaEditor = new ExistingBugEditor(this);
- bugzillaEditor.addAttributeListener(ATTRIBUTE_LISTENER);
- }
-
- public TaskFormPage 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.setTaskOutlineModel(RepositoryTaskOutlineNode.parseBugReport(bugzillaEditorInput.getRepositoryTaskData()));
- offlineBug = bugzillaEditorInput.getRepositoryTaskData();
-
- 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 RepositoryTaskData 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.getId());
- }
-
-
-// @Override
-// public Object getAdapter(Class adapter) {
-// if (IContentOutlinePage.class.equals(adapter)) {
-// if (outlinePage == null && bugzillaEditorInput != null) {
-// outlinePage = new RepositoryTaskOutlinePage(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(RepositoryTaskData 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/BugzillaTaskEditorInput.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditorInput.java
deleted file mode 100644
index 26fe3bbce..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditorInput.java
+++ /dev/null
@@ -1,98 +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
- *******************************************************************************/
-/*
- * Created on 1-Feb-2005
- */
-package org.eclipse.mylar.internal.bugzilla.ui.tasklist;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.ui.IPersistableElement;
-
-/**
- * @author Eric Booth
- * @author Mik Kersten
- */
-public class BugzillaTaskEditorInput extends ExistingBugEditorInput {
-
- private String bugTitle;
-
- private BugzillaTask bugTask;
-
- public BugzillaTaskEditorInput(TaskRepository repository, BugzillaTask bugTask, boolean offline)
- throws IOException, GeneralSecurityException {
- super(repository, bugTask.getTaskData(), AbstractRepositoryTask.getTaskId(bugTask.getHandleIdentifier()));
- this.bugTask = bugTask;
- migrateDescToReadOnly(bugTask);
- id = AbstractRepositoryTask.getTaskId(bugTask.getHandleIdentifier());
- bugTitle = "";
-
- }
-
- protected void setBugTitle(String str) {
- // 03-20-03 Allows editor to store title (once it is known)
- bugTitle = str;
- }
-
- @Override
- public boolean exists() {
- return true;
- }
-
- @Override
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- @Override
- public String getName() {
- return bugTask.getDescription();
- }
-
- @Override
- public IPersistableElement getPersistable() {
- return null;
- }
-
- @Override
- public String getToolTipText() {
- return bugTitle;
- }
-
- @Override
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- /**
- * @return Returns the <code>BugzillaTask</code>
- */
- public BugzillaTask getBugTask() {
- return bugTask;
- }
-
- // TODO: migration code 0.6.1 -> 0.6.2
- private void migrateDescToReadOnly(BugzillaTask task) {
- if (task != null && task.getTaskData() != null) {
- RepositoryTaskAttribute attrib = task.getTaskData().getDescriptionAttribute();
- if (attrib != null) {
- attrib.setReadOnly(true);
- }
- }
- }
-}
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
deleted file mode 100644
index 4e8b99db1..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java
+++ /dev/null
@@ -1,205 +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.bugzilla.ui.tasklist;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaQueryHit;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaTask;
-import org.eclipse.mylar.internal.tasks.ui.OfflineTaskManager;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DelegatingTaskExternalizer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskExternalizationException;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-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 KEY_OLD_LAST_DATE = "LastDate";
-
- 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) != null && !element.getAttribute(KEY_LAST_REFRESH).equals("")) {
- query.setLastRefreshTimeStamp(element.getAttribute(KEY_LAST_REFRESH));
- }
-
- 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 boolean canCreateElementFor(AbstractRepositoryQuery category) {
- return category instanceof BugzillaRepositoryQuery;
- }
-
- public boolean canCreateElementFor(ITask task) {
- return task instanceof BugzillaTask;
- }
-
- @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);
- super.readTaskInfo(task, taskList, element, parent, category);
-
- if (!element.hasAttribute(KEY_LAST_MOD_DATE) || element.getAttribute(KEY_LAST_MOD_DATE).equals("")) {
- // migrate to new time stamp 0.5.3 -> 0.6.0
- try {
- if (element.hasAttribute(KEY_OLD_LAST_DATE)) {
- String DATE_FORMAT_2 = "yyyy-MM-dd HH:mm:ss";
- SimpleDateFormat delta_ts_format = new SimpleDateFormat(DATE_FORMAT_2);
- String oldDateStamp = "";
- try {
- oldDateStamp = delta_ts_format.format(new Date(
- new Long(element.getAttribute(KEY_OLD_LAST_DATE)).longValue()));
- task.setLastSyncDateStamp(oldDateStamp);
- } catch (NumberFormatException e) {
- // For those who may have been working from head...
- Date parsedDate = delta_ts_format.parse(element.getAttribute(KEY_OLD_LAST_DATE));
- if (parsedDate != null) {
- oldDateStamp = element.getAttribute(KEY_OLD_LAST_DATE);
- task.setLastSyncDateStamp(oldDateStamp);
- }
- }
- }
- } catch (Exception e) {
- // invalid date format/parse
- }
- }
-
- return task;
- }
-
- // TODO move to DelegatingTaskExternalizer
- @Override
- public void readTaskData(AbstractRepositoryTask task) {
- RepositoryTaskData data = OfflineTaskManager.findBug(task.getRepositoryUrl(), AbstractRepositoryTask
- .getTaskId(task.getHandleIdentifier()));
- task.setTaskData((RepositoryTaskData) data);
-
- if (data != null && data.hasLocalChanges()) {
- task.setSyncState(RepositoryTaskSyncState.OUTGOING);
- }
- }
-
- 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 status;
- if (element.hasAttribute(KEY_HANDLE)) {
- handle = element.getAttribute(KEY_HANDLE);
- } else {
- throw new TaskExternalizationException("Handle 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(taskList, "", "", query.getRepositoryUrl(), AbstractRepositoryTask
- .getTaskId(handle), null, status);
- readQueryHitInfo(hit, taskList, query, element);
- }
-
- @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
deleted file mode 100644
index 9802d9c2d..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.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.internal.bugzilla.ui.tasklist;
-
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractEditQueryWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Rob Elves
- */
-public class EditBugzillaQueryWizard extends AbstractEditQueryWizard {
-
- public EditBugzillaQueryWizard(TaskRepository repository, BugzillaRepositoryQuery query) {
- super(repository, query);
- }
-
- @Override
- public void addPages() {
- if (((BugzillaRepositoryQuery) query).isCustomQuery()) {
- page = new BugzillaCustomQueryWizardPage(repository, (BugzillaRepositoryQuery) query);
- } else {
- page = new BugzillaSearchPage(repository, (BugzillaRepositoryQuery) query);
- }
- addPage(page);
- }
-
- @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
deleted file mode 100644
index 5bb32a90f..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java
+++ /dev/null
@@ -1,99 +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.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.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-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() {
-
- AbstractRepositoryQueryPage page;
-
- if (page1.getNextPage() != null && page1.getNextPage() instanceof AbstractRepositoryQueryPage) {
- page = (AbstractRepositoryQueryPage) page1.getNextPage();
- } else {
- return false;
- }
-
- final BugzillaRepositoryQuery queryCategory = (BugzillaRepositoryQuery) page.getQuery();
-
- TasksUiPlugin.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 connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(BugzillaCorePlugin.REPOSITORY_KIND);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, 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
deleted file mode 100644
index b985e87d4..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java
+++ /dev/null
@@ -1,144 +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.bugzilla.ui.tasklist;
-
-import java.io.IOException;
-
-import javax.security.auth.login.LoginException;
-
-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.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaCorePlugin;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- */
-public class OpenBugzillaReportJob extends Job {
-
- private int id;
-
- private String serverUrl;
-
- private IWorkbenchPage page;
-
- public OpenBugzillaReportJob(String serverUrl, int id, IWorkbenchPage page) {
- super("Opening Bugzilla report: " + id);
- this.id = id;
- this.serverUrl = serverUrl;
- this.page = page;
- }
-
- public IStatus run(IProgressMonitor monitor) {
-
- // @Override
- // public IStatus runInUIThread(IProgressMonitor monitor) {
- try {
- monitor.beginTask("Opening Bugzilla Report", 10);
- Integer bugId = id;
-
- try {
- // try to open a new editor on the bug
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- BugzillaCorePlugin.REPOSITORY_KIND, serverUrl);
-
- if (repository == null) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- MessageDialog.openError(null, "Repository Not Found",
- "Could not find repository configuration for " + serverUrl
- + ". \nPlease set up repository via " + TaskRepositoriesView.NAME + ".");
- String bugUrl = BugzillaServerFacade.getBugUrlWithoutLogin(serverUrl, id);
- TaskUiUtil.openUrl(bugUrl);
- }
-
- });
- return Status.OK_STATUS;
- }
-
- RepositoryTaskData data = BugzillaServerFacade.getBug(repository.getUrl(), repository.getUserName(),
- repository.getPassword(), TasksUiPlugin.getDefault().getProxySettings(), repository
- .getCharacterEncoding(), bugId.intValue());
-
- String url = BugzillaServerFacade.getBugUrlWithoutLogin(repository.getUrl(), id);
-
- final AbstractBugEditorInput editorInput = new ExistingBugEditorInput(url, repository, data);
-
- // final ExistingBugEditorInput editorInput = new
- // ExistingBugEditorInput(repository, bugId.intValue());
-
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-
- public void run() {
- if (editorInput.getRepositoryTaskData() == null) {
- MessageDialog.openError(null, "Server Setting Error", "Incorrect server set for the bug.");
- } else {
- try {
- page.openEditor(editorInput, TaskListPreferenceConstants.TASK_EDITOR_ID);
-
- // AbstractRepositoryTaskEditor abe =
- // (AbstractRepositoryTaskEditor)
- // page.openEditor(editorInput,
- // TaskListPreferenceConstants.TASK_EDITOR_ID);//BugzillaUiPlugin.EXISTING_BUG_EDITOR_ID
- // abe.selectDescription();
-
- // if (commentNumber == 0) {
- // abe.selectDescription();
- // } else if (commentNumber == 1) {
- // abe.select(commentNumber);
- // } else {
- // abe.select(commentNumber - 1);
- // }
- } catch (PartInitException e) {
- BugzillaCorePlugin.log(e);
- }
- }
- }
- });
- } catch (LoginException e) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-
- public void run() {
- 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. ");
- }
- });
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "Error opening Bugzilla report", true);
- } finally {
- monitor.done();
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Unable to open Bug report: " + id, true);
- }
- return new Status(IStatus.OK, BugzillaUiPlugin.PLUGIN_ID, IStatus.OK, "", null);
- }
-}
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
deleted file mode 100644
index 9bb211200..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java
+++ /dev/null
@@ -1,546 +0,0 @@
-/*******************************************************************************
- * 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.io.UnsupportedEncodingException;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URLDecoder;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-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 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.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaException;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaQueryHit;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryQuery;
-import org.eclipse.mylar.internal.bugzilla.core.BugzillaServerFacade;
-import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants;
-import org.eclipse.mylar.internal.bugzilla.core.NewBugzillaReport;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Shawn Minto
- * @author Rob Elves
- * @author Mik Kersten
- *
- * Product selection page of new bug wizard
- */
-public class BugzillaProductPage extends WizardPage implements Listener {
-
- // A Map from Java's OS and Platform to Buzilla's
- private Map<String, String> java2buzillaOSMap = new HashMap<String, String>();
-
- private Map<String, String> java2buzillaPlatformMap = new HashMap<String, String>();
-
- private static final String NEW_BUGZILLA_TASK_ERROR_TITLE = "New Bugzilla Task Error";
-
- private static final String DESCRIPTION = "Pick a product to open the new bug editor.\n"
- + "Press the Update button if the product is not in the list.";
-
- private static final String LABEL_UPDATE = "Update Products from Repository";
-
- /** The list of products to submit a bug report for */
- private List<String> products = null;
-
- /**
- * Reference to the bug wizard which created this page so we can create the
- * second page
- */
- private NewBugzillaTaskWizard bugWizard;
-
- /** The instance of the workbench */
- protected IWorkbench workbench;
-
- /** The list box for the list of items to choose from */
- protected org.eclipse.swt.widgets.List listBox;
-
- /** Status variable for the possible errors on this page */
- protected IStatus listStatus;
-
- /**
- * String to hold previous product; determines if attribute option values
- * need to be updated
- */
- private String prevProduct;
-
- private final TaskRepository repository;
-
- protected IPreferenceStore prefs = BugzillaUiPlugin.getDefault().getPreferenceStore();
-
- private final IStructuredSelection selection;
-
- /**
- * 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
- * @param selection
- */
- public BugzillaProductPage(IWorkbench workbench, NewBugzillaTaskWizard bugWiz, TaskRepository repository,
- IStructuredSelection selection) {
- super("Page1");
- this.selection = selection;
- setTitle(IBugzillaConstants.TITLE_NEW_BUG);
- setDescription(DESCRIPTION);
- this.workbench = workbench;
-
- // set the status for the page
- listStatus = new Status(IStatus.OK, "not_used", 0, "", null);
-
- this.bugWizard = bugWiz;
- this.repository = repository;
- setImageDescriptor(BugzillaUiPlugin.imageDescriptorFromPlugin("org.eclipse.mylar.bugzilla.ui",
- "icons/wizban/bug-wizard.gif"));
-
- 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");
- }
-
- public void createControl(Composite parent) {
- // create the composite to hold the widgets
- Composite composite = new Composite(parent, SWT.NULL);
-
- // create the desired layout for this wizard page
- composite.setLayout(new GridLayout(1, true));
-
- // create the list of bug reports
- listBox = new org.eclipse.swt.widgets.List(composite, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY | SWT.V_SCROLL);
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.heightHint = 200;
- listBox.setLayoutData(gd);
-
- // Each wizard has different types of items to add to the list
- populateList(true);
-
- listBox.addListener(SWT.Selection, this);
-
- listBox.setSelection(getSelectedProducts());
- listBox.showSelection();
-// listBox.addSelectionListener(new SelectionListener() {
-//
-// public void widgetDefaultSelected(SelectionEvent e) {
-// // ignore
-// }
-//
-// public void widgetSelected(SelectionEvent e) {
-// getWizard().performFinish();
-// getWizard().dispose();
-// // TODO: is this the wrong way of doing the close?
-// getContainer().getShell().close();
-// }
-// });
-
- Button updateButton = new Button(composite, SWT.LEFT | SWT.PUSH);
- updateButton.setText(LABEL_UPDATE);
- updateButton.setLayoutData(new GridData());
-
- updateButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- try {
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(repository.getKind());
-
- getContainer().run(true, false, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException,
- InterruptedException {
- monitor.beginTask("Updating repository report options...", IProgressMonitor.UNKNOWN);
- try {
- connector.updateAttributes(repository, TasksUiPlugin.getDefault().getProxySettings(),
- monitor);
- } catch (CoreException ce) {
- if (ce.getStatus().getException() instanceof GeneralSecurityException) {
- MylarStatusHandler.fail(ce,
- "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\n"
- + "Please ensure proper configuration in "
- + TaskRepositoriesView.NAME + ". ", true);
- } else if (ce.getStatus().getException() instanceof IOException) {
- MylarStatusHandler.fail(ce,
- "Connection Error, please ensure proper configuration in "
- + TaskRepositoriesView.NAME + ".", true);
- } else {
- MylarStatusHandler.fail(ce, "Error updating repository attributes for "
- + repository.getUrl(), true);
- }
- return;
- }
- BugzillaUiPlugin.updateQueryOptions(repository, monitor);
-
- products = new ArrayList<String>();
- for (String product : BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT,
- null, repository.getUrl())) {
- products.add(product);
- }
- }
- });
- populateList(false);
- } catch (InvocationTargetException ex) {
- MessageDialog.openError(null, "Error updating product list", "Error reported:\n"
- + ex.getCause().getMessage());
- } catch (InterruptedException ex) {
- // Was cancelled...
- }
- }
- });
-
- // set the composite as the control for this page
- setControl(composite);
-
- isPageComplete();
- getWizard().getContainer().updateButtons();
- }
-
- private void initProducts() {
- // try to get the list of products from the server
- if (!bugWizard.model.hasParsedProducts()) {
- String repositoryUrl = repository.getUrl();
- try {
- String[] storedProducts = BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT, null,
- repositoryUrl);
- if (storedProducts.length > 0) {
- products = Arrays.asList(storedProducts);
- } else {
- products = BugzillaServerFacade.getProductList(repository.getUrl(), TasksUiPlugin.getDefault()
- .getProxySettings(), repository.getUserName(), repository.getPassword(), repository
- .getCharacterEncoding());
- }
- bugWizard.model.setConnected(true);
- bugWizard.model.setParsedProductsStatus(true);
-
- } catch (final 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 + ".\n\n");
- MylarStatusHandler.log(e, "Failed to retrieve products from server");
- }
- });
- }
- }
- }
-
- /**
- * Populates the listBox with all available products.
- *
- * @param read
- */
- 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();
- }
-
- private String[] getSelectedProducts() {
- ArrayList<String> products = new ArrayList<String>();
- if (selection == null) {
- return products.toArray(new String[0]);
- }
-
- BugzillaRepositoryQuery query = null;
- Object element = selection.getFirstElement();
- if (element instanceof BugzillaRepositoryQuery) {
- query = (BugzillaRepositoryQuery) element;
-
- } else if (element instanceof BugzillaQueryHit) {
- BugzillaQueryHit hit = (BugzillaQueryHit) element;
- if (hit.getParent() != null && hit.getParent() instanceof BugzillaRepositoryQuery) {
- query = (BugzillaRepositoryQuery) hit.getParent();
- }
- }
-
- if (query != null) {
- String queryUrl = query.getUrl();
- queryUrl = queryUrl.substring(queryUrl.indexOf("?") + 1);
- String[] options = queryUrl.split("&");
-
- for (String option : options) {
- String key = option.substring(0, option.indexOf("="));
- if ("product".equals(key)) {
- try {
- products.add(URLDecoder.decode(option.substring(option.indexOf("=") + 1), repository
- .getCharacterEncoding()));
- // TODO: list box only accepts a single selection so we
- // break on first found
- break;
- } catch (UnsupportedEncodingException ex) {
- // ignore
- }
- }
- }
- }
-
- return products.toArray(new String[products.size()]);
- }
-
- public void handleEvent(Event event) {
- handleEventHelper(event, "You must select a product");
- }
-
- /**
- * A helper function for "handleEvent"
- *
- * @param event
- * the event which occurred
- * @param errorMessage
- * the error message unique to the wizard calling this function
- */
- protected void handleEventHelper(Event event, String errorMessage) {
- // Initialize a variable with the no error status
- Status status = new Status(IStatus.OK, "not_used", 0, "", null);
-
- // If the event is triggered by the list of items, respond with the
- // corresponding status
- if (event.widget == listBox) {
- if (listBox.getSelectionIndex() == -1)
- status = new Status(IStatus.ERROR, "not_used", 0, errorMessage, null);
- listStatus = status;
- }
-
- // Show the most serious error
- applyToStatusLine(listStatus);
- isPageComplete();
- getWizard().getContainer().updateButtons();
- }
-
- /**
- * 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;
- }
- }
-
- /**
- * Save the currently selected product to the model when next is clicked
- *
- * @throws IOException
- * @throws NoSuchAlgorithmException
- * @throws LoginException
- * @throws KeyManagementException
- * @throws BugzillaException
- */
- public void saveDataToModel() throws KeyManagementException, GeneralSecurityException, IOException,
- BugzillaException {
- NewBugzillaReport model = bugWizard.model;
- prevProduct = model.getProduct();
- model.setProduct((listBox.getSelection())[0]);
-
- if (!model.hasParsedAttributes() || !model.getProduct().equals(prevProduct)) {
- BugzillaServerFacade.setupNewBugAttributes(repository.getUrl(), TasksUiPlugin.getDefault()
- .getProxySettings(), repository.getUserName(), repository.getPassword(), model, repository
- .getCharacterEncoding());
- model.setParsedAttributesStatus(true);
- }
-
- setPlatformOptions(model);
- }
-
- @Override
- public boolean isPageComplete() {
- bugWizard.completed = listBox.getSelectionIndex() != -1;
- return bugWizard.completed;
- }
-
- public void setPlatformOptions(NewBugzillaReport newBugModel) {
- try {
-
- // Get OS Lookup Map
- // Check that the result is in Values, if it is not, set it to other
- RepositoryTaskAttribute opSysAttribute = newBugModel.getAttribute(BugzillaReportElement.OP_SYS
- .getKeyString());
- RepositoryTaskAttribute platformAttribute = newBugModel.getAttribute(BugzillaReportElement.REP_PLATFORM
- .getKeyString());
-
- 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);
- }
- }
-
- // @Override
- // public IWizardPage getNextPage() {
- // // save the product information to the model
- // saveDataToModel();
- // NewBugzillaTaskWizard wizard = (NewBugzillaTaskWizard) getWizard();
- // NewBugzillaReport model = wizard.model;
- //
- // // try to get the attributes from the bugzilla server
- // try {
- // if (!model.hasParsedAttributes() ||
- // !model.getProduct().equals(prevProduct)) {
- // BugzillaRepositoryUtil.setupNewBugAttributes(repository.getUrl(),
- // MylarTaskListPlugin.getDefault()
- // .getProxySettings(), repository.getUserName(), repository.getPassword(),
- // model, repository
- // .getCharacterEncoding());
- // 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();
- // }
-
-}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java
deleted file mode 100644
index 1430f5a8c..000000000
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaTaskWizard.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * 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.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.bugzilla.core.NewBugzillaReport;
-import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin;
-import org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class NewBugzillaTaskWizard extends Wizard implements INewWizard {
-
- private static final String TITLE = "New Bugzilla Task";
-
- private IWorkbench workbenchInstance;
-
- private final TaskRepository repository;
-
- private final BugzillaProductPage productPage;
-
- /**
- * Flag to indicate if the wizard can be completed (finish button enabled)
- */
- protected boolean completed = false;
-
- /** The model used to store all of the data for the wizard */
- protected NewBugzillaReport model;
-
- // TODO: Change model to a RepositoryTaskData
- // protected RepositoryTaskData model;
-
- public NewBugzillaTaskWizard(TaskRepository repository, IStructuredSelection selection) {
- this(false, repository, selection);
- model = new NewBugzillaReport(repository.getUrl(), TasksUiPlugin.getDefault().getOfflineReportsFile()
- .getNextOfflineBugId());
- super.setDefaultPageImageDescriptor(BugzillaUiPlugin.imageDescriptorFromPlugin(
- "org.eclipse.mylar.internal.bugzilla.ui", "icons/wizban/bug-wizard.gif"));
- super.setWindowTitle(TITLE);
- setNeedsProgressMonitor(true);
- }
-
- public NewBugzillaTaskWizard(boolean fromDialog, TaskRepository repository, IStructuredSelection selection) {
- super();
- this.repository = repository;
- this.productPage = new BugzillaProductPage(workbenchInstance, this, repository, selection);
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- this.workbenchInstance = workbench;
- }
-
- @Override
- public void addPages() {
- super.addPages();
- addPage(productPage);
- }
-
- @Override
- public boolean canFinish() {
- return completed;
- }
-
- @Override
- public boolean performFinish() {
-
- try {
- productPage.saveDataToModel();
- NewBugEditorInput editorInput = new NewBugEditorInput(repository, model);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- TaskUiUtil.openEditor(editorInput, BugzillaUiPlugin.NEW_BUG_EDITOR_ID, page);
- return true;
- } catch (Exception e) {
- productPage.applyToStatusLine(new Status(IStatus.ERROR, "not_used", 0,
- "Problem occured retrieving repository configuration from " + repository.getUrl(), null));
- }
- return false;
- }
-
-}
-
-// @Override
-// protected void saveBugOffline() {
-// // AbstractRepositoryConnector client = (AbstractRepositoryConnector)
-// // MylarTaskListPlugin.getRepositoryManager()
-// // .getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND);
-// // client.saveOffline(model);
-// }
-//
-// @Override
-// protected AbstractBugzillaWizardPage getWizardDataPage() {
-// return null;
-// }
-
-// Open new bug editor
-
-// if (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) {
-// MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG,
-// "Could not create bug id, no valid id");
-// return false;
-// }
-// // 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.getFromActivePerspective() != null)
-// selectedObject = ((IStructuredSelection)
-// TaskListView.getFromActivePerspective().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());
-// }
-//
-// TaskUiUtil.refreshAndOpenTaskListElement(newTask);
-// MylarTaskListPlugin.getSynchronizationManager().synchNow(0);
-//
-// return true;
-// }
diff --git a/org.eclipse.mylyn.help.ui/.classpath b/org.eclipse.mylyn.help.ui/.classpath
deleted file mode 100644
index 304e86186..000000000
--- a/org.eclipse.mylyn.help.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 616983fb2..000000000
--- a/org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,303 +0,0 @@
-#Mon Feb 13 11:20:14 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 8eff44dbd..000000000
--- a/org.eclipse.mylyn.help.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Mon Feb 13 11:20:14 PST 2006
-eclipse.preferences.version=1
-formatter_profile=_Mylar based on Eclipse [built-in]
-formatter_settings_version=10
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"></template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2004 - 2006 University Of British Columbia and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n * University Of British Columbia - initial API and implementation\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ignore\r\n${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ignore</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index 374805122..000000000
--- a/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Documentation Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.doc; singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Localization: plugin
-Eclipse-AutoStart: true
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.ui,
- org.eclipse.ui.forms,
- org.eclipse.mylar.tasks.ui
-Export-Package: org.eclipse.mylar.doc.internal.actions,
- org.eclipse.mylar.doc.internal.dialogs
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.help.ui/doc/context.html b/org.eclipse.mylyn.help.ui/doc/context.html
deleted file mode 100644
index 68145d668..000000000
--- a/org.eclipse.mylyn.help.ui/doc/context.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!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>
- Task Context</h1>
- <p>&nbsp;</p>
- <p>&nbsp;</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
deleted file mode 100644
index d927dc964..000000000
--- a/org.eclipse.mylyn.help.ui/doc/contributing.html
+++ /dev/null
@@ -1,216 +0,0 @@
-<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="#tests">Running tests</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="#building-jira">Building the JIRA Connector</a></li>
- <li><a href="#building-trac">Building the Trac Connector</a></li>
- <li><a href="#building-dist">Building a distribution</a></li>
- <li><a href="#web-site-authoring">Web site authoring</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.</li>
- </ul>
- <hr>
- <h3><a name="tests">Running tests</a></h3>
- <p>Each component has it's own All&lt;Component&gt;Tests suite, and all can be run
- via org.eclipse.mylar.tests.AllTests.&nbsp; </p>
- <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>
- <hr>
- <h3><a name="building-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 features:<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="building-trac">Trac 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="https://oss.steffenpingel.de/">
- oss.steffenpingel.de</a>:
- <ul>
- <li>repository:
- <a href="https://oss.steffenpingel.de/svn/mylar-trac-connector/trunk">
- https://oss.steffenpingel.de/svn/mylar-trac-connector/trunk</a></li>
- </ul>
- </li>
- <li>Check out the library which is required by the connector:<ul>
- <li>org.apache.xmlrpc</li>
- </ul>
- </li>
- <li>Note that the Trac connector has it's own test suite: <i>
- org.eclipse.mylar.trac.tests.AllTracTests</i></li>
- </ul>
- <hr>
-<h3><a name="bootstrap">Working bootstrapped</a> </h3>
-<p>Working bootstrapped (i.e. self-hosted) makes eating your own dog food easier
-and avoids having to update to dev builds:</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 <i>Launch Configuration</i>, point it at your workspace,
- and work in that.&nbsp; Note that the launching workspace will typically
- consume very little memory.</li>
- <li>Whenever your changes make it into HEAD close your runtime
- workspace, update from CVS, and then re-launch.&nbsp; It is possible to
- run in debug mode so that the changes apply to the workspace immediately
- after synch, but this can cause problems with the running workspace if
- classes change or go missing.</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>Add an @author tag to each class that you create.</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>
- <hr>
-<h3><a name=web-site-authoring>Web site authoring</a></h3>
-<ul>
- <li>Create a new CVS location: dev.eclipse.org:/cvsroot/org.eclipse</li>
- <li>Check out www/mylar as a project</li>
- <li>To push documentation from org.eclipse.mylar.doc to the web site use the
- targets in mylar/build.xml</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
deleted file mode 100644
index bea7d91d3..000000000
--- a/org.eclipse.mylyn.help.ui/doc/dev/changes.html
+++ /dev/null
@@ -1,12395 +0,0 @@
-<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
deleted file mode 100644
index 1ece91b2c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsd
+++ /dev/null
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
deleted file mode 100644
index b2832954a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/dev/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!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
deleted file mode 100644
index 168c5f186..000000000
--- a/org.eclipse.mylyn.help.ui/doc/dev/model.vsd
+++ /dev/null
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
deleted file mode 100644
index c8f211a16..000000000
--- a/org.eclipse.mylyn.help.ui/doc/dev/plan.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<title>April 2006</title>
-</head>
-
-<body>
-
- <p>The following is a high-level plan for Mylar releases up to 1.0.0.&nbsp; Current priorities are represented by the
- <a href="bugs.php">prioritized bugzilla reports</a> and discussed in our
- <a href="http://wiki.eclipse.org/index.php/Mylar_Meetings">meetings</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: 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</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">UI and tuning, repository
- task change notifications</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>Debug integration, task editor improvements, Trac Connector</td>
-
- <td height="18"></td>
-
- <td>Context API (provisional)</td>
- </tr>
- <tr>
-
- <td height="18" align="right"><b>&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>Eclipse API contract</td>
- </tr>
-
- </table>
-<p>* See the
-<a href="http://wiki.eclipse.org/index.php/Mylar_Contributor_Reference">Contributor Reference</a> for the extensibility overview. </p>
- <p><i>Last updated: 2005-08-03</i></p>
- <p>&nbsp; </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
deleted file mode 100644
index 7abe2a2c5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/faq.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
- <head>
- <title>
- Mylar FAQ
- </title>
- </head>
- <body>
- <p>&nbsp; </p>
- <p>See: <b><a href="http://wiki.eclipse.org/index.php/Mylar_FAQ">
- http://wiki.eclipse.org/index.php/Mylar_FAQ</a> </b></p>
-</body></html> \ No newline at end of file
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-hierarchy.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/active-hierarchy.gif
deleted file mode 100644
index 35651b170..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-hierarchy.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-linked.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-linked.gif
deleted file mode 100644
index 1407080bf..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-linked.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-manipulation.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-manipulation.gif
deleted file mode 100644
index b3e3784ab..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-manipulation.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-qualify.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-qualify.gif
deleted file mode 100644
index 83109c54a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search-qualify.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search.gif
deleted file mode 100644
index 63af2fd51..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/active-search.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/alt-click.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/alt-click.gif
deleted file mode 100644
index fc2a91bcf..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/alt-click.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-hyperlink.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-hyperlink.gif
deleted file mode 100644
index 22dfa8780..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-hyperlink.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-internal-browser.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-internal-browser.gif
deleted file mode 100644
index 6087ee5b8..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-internal-browser.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-query-custom.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-query-custom.gif
deleted file mode 100644
index 7f341e135..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-query-custom.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-synch.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-synch.gif
deleted file mode 100644
index 390e6ea86..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/bugzilla-synch.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/filter-auto-toggle.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/filter-auto-toggle.gif
deleted file mode 100644
index 02670b06a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/filter-auto-toggle.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-ant.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-ant.gif
deleted file mode 100644
index eac12cbf4..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-ant.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-declarations.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-declarations.gif
deleted file mode 100644
index 9362a231f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-declarations.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-exclusion.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-exclusion.gif
deleted file mode 100644
index ff1c65b23..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-exclusion.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-navigator.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-navigator.gif
deleted file mode 100644
index fd9d2157e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/filtering-navigator.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/folding-toggle.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/folding-toggle.gif
deleted file mode 100644
index bfaa55233..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/folding-toggle.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/highlight.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/highlight.gif
deleted file mode 100644
index 7368b7f25..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/highlight.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-content-assist.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-content-assist.gif
deleted file mode 100644
index 67c85f9d8..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-content-assist.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-error.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-error.gif
deleted file mode 100644
index d57c90d25..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-error.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-java-browsing.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-java-browsing.gif
deleted file mode 100644
index 031d55daf..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-java-browsing.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-manipulate.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-manipulate.gif
deleted file mode 100644
index 5640c2b2a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/interest-manipulate.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/monitor-enable.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/monitor-enable.gif
deleted file mode 100644
index bc26204e9..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/monitor-enable.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/open-type.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/open-type.gif
deleted file mode 100644
index 2b1879eb4..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/open-type.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/overview.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/overview.gif
deleted file mode 100644
index b005ae592..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/overview.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/preference-error-interest.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/preference-error-interest.gif
deleted file mode 100644
index ee172dfbe..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/preference-error-interest.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/search-context.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/search-context.gif
deleted file mode 100644
index 43aed77ec..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/search-context.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/task-context-visible.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/task-context-visible.gif
deleted file mode 100644
index 2a3943b3e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/task-context-visible.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasklist-actions.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasklist-actions.gif
deleted file mode 100644
index 880813f89..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasklist-actions.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-archive.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-archive.gif
deleted file mode 100644
index a060adbfd..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-archive.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-drilldown.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-drilldown.gif
deleted file mode 100644
index 18c536aad..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-drilldown.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-go-navigation.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-go-navigation.gif
deleted file mode 100644
index 7be278ba6..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-go-navigation.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-history.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-history.gif
deleted file mode 100644
index 419a2d2d5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-history.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-offline.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-offline.gif
deleted file mode 100644
index 96c74ab4a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-offline.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-quick-filter.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-quick-filter.gif
deleted file mode 100644
index a0fd9f09e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-quick-filter.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-reminders.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-reminders.gif
deleted file mode 100644
index d1abb52ce..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/tasks-reminders.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.3/test-context.gif b/org.eclipse.mylyn.help.ui/doc/images/0.3/test-context.gif
deleted file mode 100644
index dba15f26a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.3/test-context.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-editor-browser.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-editor-browser.gif
deleted file mode 100644
index a5d53afe1..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-editor-browser.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-220.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-220.gif
deleted file mode 100644
index b7e813cca..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-220.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-open-reports.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-open-reports.gif
deleted file mode 100644
index 10a606847..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/bugzilla-prefs-open-reports.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/context-pause.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/context-pause.gif
deleted file mode 100644
index d2814d752..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/context-pause.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-context.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-context.gif
deleted file mode 100644
index 3a5fdef72..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-context.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-export.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-export.gif
deleted file mode 100644
index 26a2bc189..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-export.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-popup.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-popup.gif
deleted file mode 100644
index 6d1181141..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-popup.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink-editor.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink-editor.gif
deleted file mode 100644
index dd903ec8e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink-editor.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink.gif
deleted file mode 100644
index 7cf37988f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.1/tasklist-weblink.gif
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index ecfd2e891..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif
+++ /dev/null
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
deleted file mode 100644
index c211f3c04..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gif
+++ /dev/null
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
deleted file mode 100644
index 22a4b73a1..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gif
+++ /dev/null
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
deleted file mode 100644
index 88c6ab700..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-change-set.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-change-set.gif
deleted file mode 100644
index 1ee152822..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-change-set.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-prefix.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-prefix.gif
deleted file mode 100644
index 4d5514d1c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-prefix.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-wizard.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-wizard.gif
deleted file mode 100644
index e08ac28fc..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit-wizard.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit.gif
deleted file mode 100644
index a14de8c03..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/context-commit.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/problems-hierarchical.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.2/problems-hierarchical.gif
deleted file mode 100644
index e028912b7..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/problems-hierarchical.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/tasklist-editors-manage.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.2/tasklist-editors-manage.gif
deleted file mode 100644
index 1377eae2c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.2/tasklist-editors-manage.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/bugzilla-outline.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.3/bugzilla-outline.gif
deleted file mode 100644
index 4cb7376ff..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/bugzilla-outline.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/context-capture-pause-indicator.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.3/context-capture-pause-indicator.gif
deleted file mode 100644
index 3397ba934..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/context-capture-pause-indicator.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/cvs-resource-history-open.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.3/cvs-resource-history-open.gif
deleted file mode 100644
index dfdbbc283..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/cvs-resource-history-open.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage-pref.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage-pref.gif
deleted file mode 100644
index 83edcb27e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage-pref.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage.gif
deleted file mode 100644
index 466922c8b..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/editors-auto-manage.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/synchronize-change-sets.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.3/synchronize-change-sets.gif
deleted file mode 100644
index bb320c141..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.3/synchronize-change-sets.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.4/changeset-addto.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.4/changeset-addto.gif
deleted file mode 100644
index 5475c529c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.4/changeset-addto.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.5/taskist-planner.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.5/taskist-planner.gif
deleted file mode 100644
index 30b927a5b..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.5/taskist-planner.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.5/tasklist-drag.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.5/tasklist-drag.gif
deleted file mode 100644
index 5d5b49f53..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.5/tasklist-drag.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.6/tasklist-pastreminder.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.6/tasklist-pastreminder.gif
deleted file mode 100644
index fd354ff42..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.6/tasklist-pastreminder.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.7/bugzilla-encoding.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.7/bugzilla-encoding.gif
deleted file mode 100644
index c4c8cb69c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.7/bugzilla-encoding.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-open-external.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-open-external.gif
deleted file mode 100644
index 769fe65cb..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-open-external.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-repositories.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-repositories.gif
deleted file mode 100644
index f47a5916b..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.7/tasklist-repositories.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-query.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-query.gif
deleted file mode 100644
index 1262bb773..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-query.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-select-type.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-select-type.gif
deleted file mode 100644
index e7237f26e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/jira-select-type.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-import.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-import.gif
deleted file mode 100644
index 1c62eb08e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-import.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-indication-active.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-indication-active.gif
deleted file mode 100644
index 99be376e1..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-indication-active.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-notification.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-notification.gif
deleted file mode 100644
index 788d9fae0..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.4.9/tasklist-notification.gif
+++ /dev/null
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
deleted file mode 100644
index 3dabe9c5b..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gif
+++ /dev/null
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
deleted file mode 100644
index 84a923cb7..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gif
+++ /dev/null
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
deleted file mode 100644
index 36a82463a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gif
+++ /dev/null
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
deleted file mode 100644
index 8b687aac5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gif
+++ /dev/null
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
deleted file mode 100644
index d8db0972c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gif
+++ /dev/null
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
deleted file mode 100644
index 4ddaba40f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gif
+++ /dev/null
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
deleted file mode 100644
index 5a2beb235..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gif
+++ /dev/null
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
deleted file mode 100644
index 15223483e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gif
+++ /dev/null
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
deleted file mode 100644
index a455fc3fc..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gif
+++ /dev/null
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
deleted file mode 100644
index a2d110bd1..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gif
+++ /dev/null
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
deleted file mode 100644
index df618d3b9..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gif
+++ /dev/null
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
deleted file mode 100644
index 10e6c4be4..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gif
+++ /dev/null
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
deleted file mode 100644
index 6f9015f34..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gif
+++ /dev/null
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
deleted file mode 100644
index 2b5ec2de0..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gif
+++ /dev/null
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
deleted file mode 100644
index 89bcc93fe..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gif
+++ /dev/null
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
deleted file mode 100644
index 8501646c7..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gif
+++ /dev/null
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
deleted file mode 100644
index 5afa19dbb..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gif
+++ /dev/null
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
deleted file mode 100644
index f67baeb31..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gif
+++ /dev/null
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
deleted file mode 100644
index 07b7474e4..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gif
+++ /dev/null
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
deleted file mode 100644
index 441e8b8e3..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gif
+++ /dev/null
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
deleted file mode 100644
index 8503d1cdb..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gif
+++ /dev/null
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
deleted file mode 100644
index e53ffb440..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/bugzilla-attach.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.3/bugzilla-attach.gif
deleted file mode 100644
index 2b0fda251..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/bugzilla-attach.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/changeset-subclipse.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.3/changeset-subclipse.gif
deleted file mode 100644
index ea000dd4d..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/changeset-subclipse.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/repository-synch.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.3/repository-synch.gif
deleted file mode 100644
index b244cddda..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/repository-synch.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/resources-exclusion.gif b/org.eclipse.mylyn.help.ui/doc/images/0.5.3/resources-exclusion.gif
deleted file mode 100644
index f6ab8a92e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.5.3/resources-exclusion.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-attachments.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-attachments.gif
deleted file mode 100644
index f446bd65e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-attachments.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-notifications.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-notifications.gif
deleted file mode 100644
index 11f7d1047..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-notifications.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-search.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-search.gif
deleted file mode 100644
index 4df31448b..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/bugzilla-search.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/jira-new.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.0/jira-new.gif
deleted file mode 100644
index 75a0602a8..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/jira-new.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/perspective-management.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.0/perspective-management.gif
deleted file mode 100644
index 1a08c457f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/perspective-management.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/task-editor-menu.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.0/task-editor-menu.gif
deleted file mode 100644
index 3548a220e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.0/task-editor-menu.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-debug.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-debug.gif
deleted file mode 100644
index c093226b9..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-debug.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-prefs-ui-management.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-prefs-ui-management.gif
deleted file mode 100644
index 35516cb41..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/context-prefs-ui-management.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/jira-query.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/jira-query.gif
deleted file mode 100644
index 6521086be..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/jira-query.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-create-error-log.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-create-error-log.gif
deleted file mode 100644
index 5c467ffd2..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-create-error-log.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-duplicate-detection.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-duplicate-detection.gif
deleted file mode 100644
index fbdc6f5c4..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-duplicate-detection.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-editor-hyperlinks.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-editor-hyperlinks.gif
deleted file mode 100644
index 9ccb3e0e5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/tasks-editor-hyperlinks.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-add-repository.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-add-repository.gif
deleted file mode 100644
index 85087ccef..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-add-repository.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-editor-web.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-editor-web.gif
deleted file mode 100644
index 01a9b357d..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-editor-web.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-query.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-query.gif
deleted file mode 100644
index 88b5a0d20..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.1/trac-query.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/attachments-open.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/attachments-open.gif
deleted file mode 100644
index 8c12f2b66..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/attachments-open.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/open-task-dialog.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/open-task-dialog.gif
deleted file mode 100644
index fdb9497d6..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/open-task-dialog.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/package-explorer-hierarchical.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/package-explorer-hierarchical.gif
deleted file mode 100644
index 31ec48eff..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/package-explorer-hierarchical.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/spell-checking.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/spell-checking.gif
deleted file mode 100644
index 3e788a94d..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/spell-checking.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/tasklist-restore.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/tasklist-restore.gif
deleted file mode 100644
index 65940549e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/tasklist-restore.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-editor.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-editor.gif
deleted file mode 100644
index b54510cdb..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-editor.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-search.gif b/org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-search.gif
deleted file mode 100644
index dd048e9e5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.6.2/trac-search.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/bugzilla-attributes.gif b/org.eclipse.mylyn.help.ui/doc/images/0.7.0/bugzilla-attributes.gif
deleted file mode 100644
index f514f1e5c..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/bugzilla-attributes.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-editor-improvements.gif b/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-editor-improvements.gif
deleted file mode 100644
index 7b84d6a8f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-editor-improvements.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-mark-unread.gif b/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-mark-unread.gif
deleted file mode 100644
index 781b00210..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-mark-unread.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-repository-association.gif b/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-repository-association.gif
deleted file mode 100644
index 20899d93e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/0.7.0/task-repository-association.gif
+++ /dev/null
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
deleted file mode 100644
index 09ebe09a3..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif
+++ /dev/null
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
deleted file mode 100644
index bc9edc1c2..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gif
+++ /dev/null
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
deleted file mode 100644
index d748bab4b..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/faq/changeset-subclipse.gif b/org.eclipse.mylyn.help.ui/doc/images/faq/changeset-subclipse.gif
deleted file mode 100644
index ea000dd4d..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/faq/changeset-subclipse.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/faq/changesets-model-based.gif b/org.eclipse.mylyn.help.ui/doc/images/faq/changesets-model-based.gif
deleted file mode 100644
index 07b7474e4..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/faq/changesets-model-based.gif
+++ /dev/null
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
deleted file mode 100644
index 47e59b973..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/faq/eclipse-manage-configuration.gif b/org.eclipse.mylyn.help.ui/doc/images/faq/eclipse-manage-configuration.gif
deleted file mode 100644
index dbafa4af2..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/faq/eclipse-manage-configuration.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/faq/filtering-declarations.gif b/org.eclipse.mylyn.help.ui/doc/images/faq/filtering-declarations.gif
deleted file mode 100644
index 9362a231f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/faq/filtering-declarations.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/faq/tasklist-backup.gif b/org.eclipse.mylyn.help.ui/doc/images/faq/tasklist-backup.gif
deleted file mode 100644
index 1a6a284d2..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/faq/tasklist-backup.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/reference/book-allen-gettingThingsDone.gif b/org.eclipse.mylyn.help.ui/doc/images/reference/book-allen-gettingThingsDone.gif
deleted file mode 100644
index bd7b3343a..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/reference/book-allen-gettingThingsDone.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/reference/book-beck-xp.gif b/org.eclipse.mylyn.help.ui/doc/images/reference/book-beck-xp.gif
deleted file mode 100644
index a9d5c32fa..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/reference/book-beck-xp.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/reference/book-bloch-effectiveJava.gif b/org.eclipse.mylyn.help.ui/doc/images/reference/book-bloch-effectiveJava.gif
deleted file mode 100644
index dfab14d9e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/reference/book-bloch-effectiveJava.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/reference/book-gamma-eclipse.gif b/org.eclipse.mylyn.help.ui/doc/images/reference/book-gamma-eclipse.gif
deleted file mode 100644
index 464197b96..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/reference/book-gamma-eclipse.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-completed.gif b/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-completed.gif
deleted file mode 100644
index ec07a104e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-completed.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-notes.gif b/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-notes.gif
deleted file mode 100644
index fd01f49e0..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task-notes.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task.gif b/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task.gif
deleted file mode 100644
index 754611bbd..000000000
--- a/org.eclipse.mylyn.help.ui/doc/images/tips/icon-task.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.help.ui/doc/integrating.html b/org.eclipse.mylyn.help.ui/doc/integrating.html
deleted file mode 100644
index b43da3ed5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/integrating.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<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
deleted file mode 100644
index 6dc16be72..000000000
--- a/org.eclipse.mylyn.help.ui/doc/new-0.3.html
+++ /dev/null
@@ -1,711 +0,0 @@
-<!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
deleted file mode 100644
index b150304f5..000000000
--- a/org.eclipse.mylyn.help.ui/doc/new-0.4.html
+++ /dev/null
@@ -1,1053 +0,0 @@
-<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-0.5.html b/org.eclipse.mylyn.help.ui/doc/new-0.5.html
deleted file mode 100644
index e902daa1e..000000000
--- a/org.eclipse.mylyn.help.ui/doc/new-0.5.html
+++ /dev/null
@@ -1,616 +0,0 @@
-<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.1 - 0.6.0</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="#E0D0E6"><font size="1">0.6.0<br>
- <i>June 30</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-06-14&chfieldto=2006-06-30&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
- 82<br>
- reports</a></font></td>
- <td bgcolor="#E0D0E6"><font size="1">Jeff Pound added Bugzilla search
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=142891">attribute
- persistence</a> and
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102851">
- attachment improvements</a>, Brock Janiczak and Gunnar Wagenknecht
- contributed
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=145074">Team
- provider extension points</a> and Subclipse
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=148512">
- integration improvements</a>.&nbsp; Eugene Kuleshov integrated JIRA task
- creation.&nbsp; Stephen Pingel, Nathan Hapke, Raphael Ackermann and
- Felix Schwarz provided helpful bug fixes and unit tests. </font></td>
- </tr>
- <tr>
- <td bgcolor="#FAF7FB"><font size="1">0.5.3<br>
- <i>June 13</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-23&chfieldto=2006-06-13&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
- 84<br>
- reports</a></font></td>
- <td bgcolor="#FAF7FB"><font size="1">Brian de Alwis patches resolved the
- long-standing
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=103235">multiple
- workbench windows limitation</a>. Eugene Kuleshov added support for
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=139314">editing
- custom JIRA queries</a>.&nbsp; Brock Janiczak added
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=142875">Subclipse
- change set support</a>. Jeff Pound added support for
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102851">Bugzilla
- attachments</a>.&nbsp; Raphael Ackermann improved
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=142898">Bugzilla
- search selections</a>.&nbsp; Gunnar Wagenknecht fixed
- <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=146385">Subclipse
- dependency loading</a>.&nbsp; </font></td>
- </tr>
- <tr>
- <td bgcolor="#FAF7FB"><font size="1">0.5.2<br>
- <i>May 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=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="#FAF7FB"><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:</p>
-<ul>
- <li><b><a href="new-0.4.html">New &amp; Noteworthy for Mylar 0.4.x</a></b></li>
- <li><b><a href="new-0.3.html">New &amp; Noteworthy for
-Mylar 0.3.x</a></b></li>
-</ul>
-
-<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.1 is required and included on the
- update site, synch queries after updating</li>
-</ul>
-
-<hr>
-
-<p>&nbsp;</p>
-<h2>Task List</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table256">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Popup menu on Task Editor</b></p>
- </td>
- <td valign="top" width="70%">
- The Task Editor now provides a popup menu similar to the Task List.<p>
- <img src="images/0.6.0/task-editor-menu.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="table240">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Open in Browser</b></p>
- </td>
- <td valign="top" width="70%">
- The Task List &quot;Open in Browser&quot; and hyperlink actions now follow the
- Platform browser settings in <i>Preferences -&gt; General -&gt; Web
- Browser</i>.&nbsp; This allows you to open repository tasks and
- queries in the internal or external browser via the Task List
- context menu.
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <hr>
- </td>
- </tr>
-</table>
-
-<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="table255">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Perspective management</b></p>
- </td>
- <td valign="top" width="70%">
- Turning on the preference visible below via <i>Preferences -&gt; Mylar</i>
- will cause the perspective last used when a task was active to be
- opened when the task is re-activated.&nbsp; This can be useful when
- switching between different kinds of tasks (e.g. between Java and
- PHP development) each of which is associated with a perspective.<p>
- <img src="images/0.6.0/perspective-management.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="table239">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Resource Exclusions</b></p>
- </td>
- <td valign="top" width="70%">
- Files and directories can be excluded from the change monitoring
- that causes them to get automatically added to the context.&nbsp;
- This can be useful for not monitoring settings files (.* is enabled
- default), generated files not in output folders (e.g. source code
- generation), or shared directories (e.g. linked network drives used
- by others).&nbsp; See <i>Preferences -&gt; Mylar -&gt; Resources</i>.<p>
- <img src="images/0.5.3/resources-exclusion.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="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; &nbsp; </p>
-
-<h2>Team</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table258">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Change Set Management for Subclipse</b></p>
- </td>
- <td valign="top" width="70%">
- Mylar's automatic change set management now integrates with
- <a href="http://subclipse.tigris.org/servlets/ReadMsg?list=users&msgNo=6914">
- Subclipse 1.1.0</a> (<a href="http://subclipse.tigris.org/update_1.2.x">update
- site</a>).&nbsp; Note that you need to have the Synchronize view in
- either Incoming or Outgoing mode in order for change sets to work.&nbsp;
- If a change set does not show up for an existing synchronization
- deactivate and activate the current task.&nbsp; Commit changes
- either via the Synchronize view or the Task List's <i>Commit Context</i>
- popup menu action.<p>
- <img src="images/0.5.3/changeset-subclipse.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="table259">
- <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>
-
- <h2>&nbsp; </h2>
-<h2>Bugzilla Connector</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table252">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Incoming change notifications<br>
- (3.2 only)</b></p>
- </td>
- <td valign="top" width="70%">
- A notification popup dialog in the lower-right corner of the screen
- will notify you of incoming changes to Bugzilla reports.&nbsp;
- Toggle this and set the synchronization schedule via <i>Preferences -&gt;
- Mylar -&gt; Task List</i>. To mark tasks with the incoming indicator
- as 'read' without opening them Right+Click one or more tasks and
- select <i>Synchronize</i>.<p>
- <img src="images/0.6.0/bugzilla-notifications.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="table253">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Search parameters persist</b></p>
- </td>
- <td valign="top" width="70%">
- Bugzilla Search parameters will persist across search invocations,
- making it easier to iterate on searches.<p>
- <img src="images/0.6.0/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="table254">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Attachment sources</b></p>
- </td>
- <td valign="top" width="70%">
- New attachments can be selected from the clipboard, a file, or from
- the workspace.&nbsp; Using the pop up menu on the Attachments table
- in the task editor existing attachments can be opened, saved, or
- loaded into the clipboard.<p>
- <img src="images/0.6.0/bugzilla-attachments.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="table260">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Background Synch on Open</b></p>
- </td>
- <td valign="top" width="70%">
- Incremental background synchronization and offline support has been
- further improved, and opening a Bugzilla report will now open the
- offline copy and synchronize with the server in the background.&nbsp;
- Note that if you have a large Task List&nbsp; your first
- synchronization may be slow since every report will be synched.&nbsp;
- The preference settings have been simplified and are in <i>
- Preferences -&gt; Mylar -&gt; Task List</i>.&nbsp; <p>
- <img src="images/0.5.3/repository-synch.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="table242">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>File Attachments</b></p>
- </td>
- <td valign="top" width="70%">
- Attachments can be added from the bugzilla editor.&nbsp; Note
- that you must provide a description.<p>
- <img src="images/0.5.3/bugzilla-attach.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="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="table257">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Create New Tasks</b></p>
- </td>
- <td valign="top" width="70%">
- New tasks can be created without leaving Eclipse via the web browser integration.<p>
- <img src="images/0.6.0/jira-new.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="table223">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor="#FAF7FB">
- <p align="right"><b>Integrated JIRA Editor</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/new.html b/org.eclipse.mylyn.help.ui/doc/new.html
deleted file mode 100644
index 8c850161f..000000000
--- a/org.eclipse.mylyn.help.ui/doc/new.html
+++ /dev/null
@@ -1,443 +0,0 @@
-<html>
-<body>
-<div align=center><h1>New &amp; Noteworthy for Mylar 0.7.0</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="#E0D0E6"><font size="1">0.7.0<br>
- <i>Sep 29</i></font></td>
- <td bgcolor="#E0D0E6" 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-08-28&chfieldto=2006-09-30&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">92</font><br><font size="1">reports</a></font></td>
- <td bgcolor="#E0D0E6"><font size="1">Eugene Kuleshov streamlined adding
- new repositories, improved the generic web connector, and JIRA query
- dialog.&nbsp; Willian Mitsuda provided several layout UI layout and
- presentation improvements.&nbsp; Yuri V. Baburov improved task activity
- timing.&nbsp; John Anvik and Nathan Hapke also contributed patches and
- tests.</font></td>
- </tr>
- <tr>
- <td bgcolor="#FAF7FB"><font size="1">0.6.2<br>
- <i>Aug 25</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-08-01&chfieldto=2006-08-27&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
- 125<br>
- reports</a></font></td>
- <td bgcolor="#FAF7FB"><font size="1">Steffen Pingel provided numerous patches to the tasks framework and
- improvements to the Trac connector, and has been
- voted in as a committer. Jeff Pound improved attachment handling and
- spell checking. Eugene Kuleshov contributed web connector support for
- Google's new code hosting service. Willian Mitsuda contributed the open
- task dialogs.&nbsp; Felix Schwarz contributed patches improving the
- usability of connector selection. Izzet Safer and Nathan Hapke also
- contributed a number of patches and tests. </font></td>
- </tr>
- <tr>
- <td bgcolor="#FAF7FB"><font size="1">0.6.1<br>
- <i>July 31</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-08-02&chfieldto=2006-08-27&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">
- 126<br>
- reports</a></font></td>
- <td bgcolor="#FAF7FB"><font size="1">Steffen Pingel contributed Trac
- support as well as numerous patches to the Tasks framework.&nbsp; Jeff
- Pound contributed duplicate detection, Error Log bug reporting and
- streamlined context attachments. Eugene Kuleshov improved the JIRA query
- dialog and provided numerous patches for the sandbox web repository
- connector. Willian Mitsuda provided a patches for Tasks UI streamlining.&nbsp;
- Brian de Alwis, Brock Janiczak, Izzet Safer and Nathan Hapke also
- contributed useful patches and tests.</font></td>
- </tr>
- </table>
-
-<p><b>Also: New &amp; Noteworthy for: <a href="new-0.5.html">Mylar 0.5</a>,&nbsp;
-<a href="new-0.4.html">Mylar 0.4</a>, <a href="new-0.3.html">Mylar 0.3</a></b></p>
-<p><b>Update notes</b>: </p>
-<ul>
- <li>When updating to 0.7.0: If you have a lot of contexts the restart will
- take slightly longer as they are migrated to a compressed format.</li>
- <li>If updating from 0.6.0: the <i>Preferences -&gt; Tasks</i> settings will be reset to their defaults
- due to plug-in name changes.&nbsp; If you use a non-default <i>Task
- Data</i> directory you will need to update this setting after restart.</li>
- <li>If updating from 0.5.x or earlier: you must first update to 0.6.0: download.eclipse.org/technology/mylar/update-site-archive/0.6.0/e3.2.&nbsp;
- <br>
-&nbsp;</li>
-</ul>
-
-<hr>
-
-<h2>Tasks</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table281">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Incoming Changes</b></p>
- </td>
- <td valign="top" width="70%">
- All comments added since your last reading of a repository task will
- be automatically expanded when the task is opened.&nbsp; Incoming
- changes are retrieved with the background synchronization and
- available without the round-trip to the server (note that a
- background synchronization is still kicked off on open to ensure you
- are looking at the latest contents).&nbsp; Tasks can now be
- explicitly marked as read or unread.<p>
- <img src="images/0.7.0/task-mark-unread.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="table277">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Task Editor Improvements</b></p>
- </td>
- <td valign="top" width="70%">
- All <p>
- <img src="images/0.7.0/task-editor-improvements.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="table278">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Task Repository Integration</b></p>
- </td>
- <td valign="top" width="70%">
- Task repositories are easier to add, validate, and can be named via
- the <i>Task Repositories</i> view.&nbsp; An icon decorated indicates
- the repository type.&nbsp; A task repository can be associated with
- a project, enabling it to be used for actions such as resolving bug
- hyperlinks.&nbsp; Note that you do not need to associate all of your
- projects with repositories after updating, since you will be
- prompted to do this if when the associate is needed.
- <p>
- <img src="images/0.7.0/task-repository-association.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="table269">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Spell Checking</b></p>
- </td>
- <td valign="top" width="70%">
- Spell checking is supported in the task editor for local tasks and
- for connectors that support rich editing (e.g. Bugzilla, Trac).&nbsp;
- Please see the FAQ for how to turn on this preference:
- <a href="http://wiki.eclipse.org/index.php/Mylar_FAQ#Spell_Checking">
- http://wiki.eclipse.org/index.php/Mylar_FAQ#Spell_Checking</a> <p>
- <img src="images/0.6.2/spell-checking.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="table264">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Open/Active Task dialogs</b></p>
- </td>
- <td valign="top" width="70%">
- An <i>Open Type</i> style dialog is available for opening tasks
- (Ctrl+Shift+F11) and for activating tasks (Ctrl+Shift+F12).&nbsp;
- The list is initially populated by recently active tasks.&nbsp; The
- active task can also be deactivated via Ctrl+Shift+F9.&nbsp; This
- can be used as a keyboard only alternative for multi-tasking
- without the <i>Task List</i> view visible.&nbsp; These
- actions appear in the <i>Navigate</i> menu.<p>
- <img src="images/0.6.2/open-task-dialog.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="table276">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Attachment Improvements</b></p>
- </td>
- <td valign="top" width="70%">
- Repository task attachments (supported by the Bugzilla and Trac
- connectors) can now be attached via drag-and-drop from both within
- the Eclipse workspace and from outside, and from text selections,
- which will invoke the attachment wizard. Attachment can be opened
- with a browser or corresponding editor.<p>
- <img src="images/0.6.2/attachments-open.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="table265">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Task List Restore</b></p>
- </td>
- <td valign="top" width="70%">
- Task and context data can be restored from a backup snapshot via <i>
- File -&gt; Import -&gt; Mylar Task Data</i>.&nbsp; By default backup
- snapshots are taken daily and kept for 30 days.<p>
- <img src="images/0.6.2/tasklist-restore.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="table256">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Report Bugs from Error Log</b></p>
- </td>
- <td valign="top" width="70%">
- Bugs can created directly from events in the
- <i>Error Log</i> view.&nbsp;
- This will create a new repository task editor with the summary and
- description populated with the error event's details.&nbsp; If
- the Connector you are using does not have a rich editor, the event
- details will be placed into the clipboard so that you can paste them
- into the web-based editor that will be opened automatically.<p>
- <img src="images/0.6.1/tasks-create-error-log.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="table259">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Automatic Duplicate Detection</b></p>
- </td>
- <td valign="top" width="70%">
- The <i>Search for Duplicates</i> button on the <i>New Repository
- Task</i> editor encourages and facilitates finding similar bug
- reports before creating a new one.&nbsp; Potential duplicates are displayed in
- the <i>Search</i> view which can be used to open a bug and comment
- or vote if a duplicate is found.&nbsp; The current duplicate
- detection mechanism uses stack traces, either automatically inserted
- by the <i>Report as Bug</i> mechanism, or manually pasted into the
- <i>Description </i>area.&nbsp; All descriptions and comments of bugs
- on the corresponding repository are included in the search.<p>
- <img src="images/0.6.1/tasks-duplicate-detection.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="table260">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Task Editor Improvements</b></p>
- </td>
- <td valign="top" width="70%">
- All hyperlinks (URLs, bug/task references, Java stack traces) now
- work in the <i>New Comment</i> and <i>Notes</i> editors.&nbsp; Note
- that hyperlinks need to be hovered over in order to get underlined.&nbsp;
- Multiple undo/redo and other editor shortcuts now work, and
- editing actions are integrated into the context menu.&nbsp; When
- submitting comments, contexts can be more easily attached by selecting the corresponding check-box in the <i>Actions</i>
- section.<p>
- <img src="images/0.6.1/tasks-editor-hyperlinks.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="table274">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Hierarchical Layout in Package Explorer</b></p>
- </td>
- <td valign="top" width="70%">
- The long-standing limitation of not being able to use the Package
- Explorer in hierarchical mode has been resolved for Eclipse 3.2.1
- and later (3.3M1 and the upcoming 3.2.1 release).<p>
- <img src="images/0.6.2/package-explorer-hierarchical.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="table255">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Apply Mylar to Debug view<br>
- (Experimental)</b></p>
- </td>
- <td valign="top" width="70%">
- Mylar can now be applied to the <i>Debug</i> view, making the thread
- tree focusing on the task context by hiding uninteresting stack
- frames. <p>
- <img src="images/0.6.1/context-debug.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="table261">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Auto Apply Mylar on Navigator Views</b></p>
- </td>
- <td valign="top" width="70%">
- For navigator views (<i>Package Explorer</i>, <i>Project Explorer</i>
- and <i>Navigator</i>) the <i>Apply Mylar</i> button can be set to automatically toggle on
- with task activation and off with task deactivation.&nbsp;
- Note that the context-related preferences including this one are now in <i>
- Preferences -&gt; Mylar -&gt; Context</i>.<p>
- <img src="images/0.6.1/context-prefs-ui-management.gif"></td>
- </tr>
- </table>
-
-<h2>&nbsp; </h2>
-<h2>Bugzilla Connector</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table282">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#E0D0E6>
- <p align="right"><b>Votes and Links</b></p>
- </td>
- <td valign="top" width="70%">
- Additional attributes that do not have rich editor components
- (votes, bug activity log) are now linked to remove the need to
- manually check the Browser tab.&nbsp; Bug dependencies can be
- navigated with hyperlinks, and the tooltips for linked bugs are the
- bug descriptions.<p>
- <img src="images/0.7.0/bugzilla-attributes.gif"></td>
- </tr>
- <tr>
- <td colspan="2">
- <hr>
- </td>
- </tr>
-</table>
-
-<h2>&nbsp; </h2>
-<h2>Trac Connector</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table270">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Rich Editor, Attachments and Offline support</b></p>
- </td>
- <td valign="top" width="70%">
- The Trac connector now supports the rich task editor.&nbsp; As with
- the Bugzilla editor, this means that attributes and comments can be
- for viewed and edited offline, synchronization is done in the
- background, and attachments can be posted and retrieved.&nbsp; Task
- Context attachments are supported via the context menu actions in
- the Task List.&nbsp; This support requires the Trac XML-RPC plug-in
- to be enabled and the integration will fall back to the web mode if
- it is not, see:
- <a href="http://wiki.eclipse.org/index.php/Mylar_FAQ#Trac_Connector_troubleshooting">
- http://wiki.eclipse.org/index.php/Mylar_FAQ#Trac_Connector_troubleshooting</a> <p>
- <img src="images/0.6.2/trac-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="table273">
- <tr>
- <td align="left" valign="top" width="15%">
- <p align="right"><b>Search Integration</b></p>
- </td>
- <td valign="top" width="70%">
- Trac search is now integrated with the generic Task search facility.<p>
- <img src="images/0.6.2/trac-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="table257">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Query Integration</b></p>
- </td>
- <td valign="top" width="70%">
- The new connector for the open source
- <a href="http://trac.edgewall.org/">Trac</a> issue tracking system
- integrates Trac queries into the Task List. If you do not know your
- Trac repository version use the <i>Automatic</i> setting and click
- <i>Validate Settings.</i><p>
- <img src="images/0.6.1/trac-add-repository.gif"></p>
- <p>
- <img src="images/0.6.1/trac-query.gif"><p>
- <img src="images/0.6.1/trac-editor-web.gif"></td>
- </tr>
- </table>
-
-<p>&nbsp;</p>
-<h2>JIRA Connector</h2>
-
-<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table262">
- <tr>
- <td align="left" valign="top" width="15%" bgcolor=#FAF7FB>
- <p align="right"><b>Improved JIRA Query Dialog</b></p>
- </td>
- <td valign="top" width="70%">
- The JIRA query dialog has been streamlined into a single page.&nbsp;
- Date range queries are now supported.<p>
- <img src="images/0.6.1/jira-query.gif"></p>
- </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
deleted file mode 100644
index 457042e14..000000000
--- a/org.eclipse.mylyn.help.ui/doc/overview.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!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>
- <p><b>Please note: </b>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>&nbsp;and the <b><a href="http://wiki.eclipse.org/index.php/Mylar_FAQ">
- FAQ</a></b>.</p>
- <p><b>Also see: <a href="http://eclipse.org/mylar/start.php">
- http://eclipse.org/mylar/start.php</a> </b> </p>
-
- </body>
-</html>
diff --git a/org.eclipse.mylyn.help.ui/doc/tips.html b/org.eclipse.mylyn.help.ui/doc/tips.html
deleted file mode 100644
index ae36a45d6..000000000
--- a/org.eclipse.mylyn.help.ui/doc/tips.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<html>
- <head>
- <title>
- Mylar FAQ
- </title>
- </head>
- <body>
- <h1>
- Mylar Tips and Tricks</h1>
-
-<p><b>Common Shortcuts</b></p>
-
- <table border="1" width="100%" id="table1">
- <tr>
- <td width="223" align="center">Action</td>
- <td width="862" align="center">Description</td>
- </tr>
- <tr>
- <td width="223">Create Task</td>
- <td width="862">INS key, toolbar button, or Ctrl+N and type &quot;task&quot;</td>
- </tr>
- <tr>
- <td width="223">Create task from URL<p>&nbsp;</td>
- <td width="862">Mozilla: drag URL from Browser onto Task List view<br>
- Internet Explorer: as above but hold down CTRL</td>
- </tr>
- <tr>
- <td width="223">Show filtered elements</td>
- <td width="862">Alt+Click in the view, holding down Alt for
- subsequent clicks.</td>
- </tr>
- <tr>
- <td width="223">Increase or reduce interest of elements</td>
- <td width="862">In view: Right Click and use the menu [show figure]<br>
- In editor: Alt+Shift+Up Arrow, Alt+Shift+Down Arrow</td>
- </tr>
- <tr>
- <td width="223">&nbsp;</td>
- <td width="862">&nbsp;</td>
- </tr>
- </table>
-
- <p><b>Visual Design Legend</b></p>
-
- <table border="1" width="100%" id="table2">
- <tr>
- <td width="1085" align="center" colspan="2">Tasks</td>
- </tr>
- <tr>
- <td width="223" align="center">
- <p align="left"><img src="images/tips/icon-task.gif"><img src="images/tips/icon-task-notes.gif"><img src="images/tips/icon-task-completed.gif"></td>
- <td width="862" align="center">
- <p align="left">Task, task with notes, completed task, overdue task</td>
- </tr>
- <tr>
- <td width="223" align="center">
- <p align="left">&nbsp;</td>
- <td width="862" align="center">
- <p align="left">Category, Query, Task Archive</td>
- </tr>
- <tr>
- <td width="223" align="center">&nbsp;</td>
- <td width="862" align="center">
- <p align="left">Query hit, shared Task, incoming changes, outgoing
- changes</td>
- </tr>
- <tr>
- <td width="223">&nbsp;</td>
- <td width="862">Priorities: Very high, high, normal, low, very low</td>
- </tr>
- <tr>
- <td width="1085" colspan="2">
- <p align="center">Scheduling</td>
- </tr>
- <tr>
- <td width="223">[list of 3 tasks]</td>
- <td width="862">Overdue task, scheduled for today, scheduled for
- this week, completed today, completed previously</td>
- </tr>
- <tr>
- <td width="223">[bold]</td>
- <td width="862">Active task</td>
- </tr>
- <tr>
- <td width="1085" colspan="2">
- <p align="center">Context</td>
- </tr>
- <tr>
- <td width="223">[tree with 3 items]</td>
- <td width="862">Landmark, landmark gutter annotation, interesting,
- uninteresting</td>
- </tr>
- <tr>
- <td width="223">&nbsp;</td>
- <td width="862">Active task, ask without context, with personal context, with
- repository context</td>
- </tr>
- <tr>
- <td width="223">&nbsp;</td>
- <td width="862">Apply Mylar to a view, to the editor, Apply Mylar
- overlay</td>
- </tr>
- </table>
-
-<p> </p>
-
-
- <p><b>Drag and Drop?</b></p>
-
- </body></html>
diff --git a/org.eclipse.mylyn.help.ui/doc/toc.xml b/org.eclipse.mylyn.help.ui/doc/toc.xml
deleted file mode 100644
index a3ee64273..000000000
--- a/org.eclipse.mylyn.help.ui/doc/toc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.toc"?>
-
-<toc label="Mylar">
- <topic label="Overview" href="doc/overview.html"/>
- <topic label="New &amp; Noteworthy" href="doc/new.html"/>
- <anchor id="concepts"/>
- <anchor id="tasklist"/>
- <anchor id="java"/>
- <anchor id="xml"/>
- <anchor id="bugzilla"/>
- <anchor id="monitor"/>
- <!--
- <topic label="For Developers" href="doc/developer/index.html">
- <topic label="Release Notes" href="doc/developer/changes.html"/>
- </topic>
- -->
-</toc>
-
-
diff --git a/org.eclipse.mylyn.help.ui/plugin.xml b/org.eclipse.mylyn.help.ui/plugin.xml
deleted file mode 100644
index f3351c4e6..000000000
--- a/org.eclipse.mylyn.help.ui/plugin.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<?eclipse version="3.0"?>
-<plugin>
- <extension
- id="org.eclipse.mylar.helpDocs"
- name="Mylar Help"
- point="org.eclipse.help.toc">
- <toc
- file="doc/toc.xml"
- primary="true">
- </toc>
- </extension>
-
- <!--
- <extension point="org.eclipse.ui.actionSets">
- <actionSet
- id="org.eclipse.mylar.doc.actionSet"
- label="Mylar Documentation"
- visible="true">
- <action
- class="org.eclipse.mylar.doc.internal.actions.ShowMylarLegendAction"
- definitionId="org.eclipse.mylar.doc.legend.show"
- icon="icons/etool16/icons-legend.gif"
- id="org.eclipse.mylar.doc.legend.show.action"
- label="Mylar UI Legend..."
- menubarPath="help/helpStart"
- style="push"
- tooltip="Mylar UI Legend...">
- </action>
- </actionSet>
- </extension>
-
- <extension point="org.eclipse.ui.commands">
- <command
- categoryId="org.eclipse.mylar.ui"
- description="Show Mylar UI Legend"
- id="org.eclipse.mylar.doc.legend.show"
- name="Show Mylar UI Legend">
- </command>
- </extension>
-
- <extension point="org.eclipse.ui.bindings">
- <key
- sequence="M1+M2+M3+?"
- contextId="org.eclipse.ui.globalScope"
- commandId="org.eclipse.mylar.doc.legend.show"
- schemeId ="org.eclipse.ui.defaultAcceleratorConfiguration">
- </key>
- </extension>
- -->
-
-</plugin>
diff --git a/org.eclipse.mylyn.help.ui/src/org/eclipse/mylyn/doc/internal/dialogs/UiLegendDialog.java b/org.eclipse.mylyn.help.ui/src/org/eclipse/mylyn/doc/internal/dialogs/UiLegendDialog.java
deleted file mode 100644
index fa72b0cba..000000000
--- a/org.eclipse.mylyn.help.ui/src/org/eclipse/mylyn/doc/internal/dialogs/UiLegendDialog.java
+++ /dev/null
@@ -1,139 +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.doc.internal.dialogs;
-
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-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 Mik Kersten
- */
-public class UiLegendDialog extends PopupDialog {
-
- private static final String LABEL = "Mylar UI Legend";
-
- private FormToolkit toolkit;
-
- private Form form;
-
- private Rectangle bounds;
-
- private Composite sectionClient;
-
- public UiLegendDialog(Shell parent) {
- super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, false, false, false, false, null, null);
- }
-
- 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 UI Legend");
-
- 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(LABEL);
- section.setLayout(new GridLayout());
-
- sectionClient = toolkit.createComposite(section);
- sectionClient.setLayout(new GridLayout(2, false));
-
- String descriptionText = "xxxxxxxxxxxxxxx";
- Label descriptionLabel = toolkit.createLabel(sectionClient, descriptionText);
- GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(descriptionLabel);
-
- section.setClient(sectionClient);
-
- Composite buttonsComposite = toolkit.createComposite(section);
- section.setTextClient(buttonsComposite);
- buttonsComposite.setLayout(new RowLayout());
- buttonsComposite.setBackground(section.getTitleBarBackground());
- final ImageHyperlink closeHyperlink = toolkit.createImageHyperlink(buttonsComposite, SWT.NONE);
- // closeHyperlink.setBackgroundMode(SWT.INHERIT_FORCE);
- closeHyperlink.setBackground(section.getTitleBarBackground());
- closeHyperlink.setImage(TaskListImages.getImage(TaskListImages.NOTIFICATION_CLOSE));
- closeHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- close();
- }
- });
-
- 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.core/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 398008f59..000000000
--- a/org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,303 +0,0 @@
-#Mon Feb 13 11:20:13 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 092916a2d..000000000
--- a/org.eclipse.mylyn.tasks.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Feb 13 11:20:03 PST 2006
-eclipse.preferences.version=1
-formatter_profile=_Mylar based on Eclipse [built-in]
-formatter_settings_version=10
-internal.default.compliance=default
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"></template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2004 - 2006 University Of British Columbia and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *\r\n * Contributors\:\r\n * University Of British Columbia - initial API and implementation\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ignore\r\n${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ignore</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/org.eclipse.mylyn.tasks.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.core/META-INF/MANIFEST.MF
deleted file mode 100644
index c8c4fa07a..000000000
--- a/org.eclipse.mylyn.tasks.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Tasks Core Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.tasks.core;singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Localization: plugin
-Eclipse-AutoStart: true
-Bundle-Vendor: Eclipse.org
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.mylar.context.core
-Export-Package: org.eclipse.mylar.internal.tasks.core,
- org.eclipse.mylar.tasks.core
diff --git a/org.eclipse.mylyn.tasks.core/plugin.xml b/org.eclipse.mylyn.tasks.core/plugin.xml
deleted file mode 100644
index 5a5adfd94..000000000
--- a/org.eclipse.mylyn.tasks.core/plugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<?eclipse version="3.0"?>
-<plugin>
- <!--
- <extension
- point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
- <hyperlinkDetector class="org.eclipse.mylar.internal.bugs.java.BugzillaHyperLinkDetector"/>
- </extension>
- -->
-
-<!--
- <extension
- point="org.eclipse.mylar.core.context">
- <structureBridge
- activeSearchIcon="icons/elcl16/edge-ref-bug.gif"
- activeSearchLabel="Bugzilla References"
- class="org.eclipse.mylar.bugs.BugzillaStructureBridge"
- name="Bugzilla Structure Bridge"/>
- </extension>
-
- <extension
- point="org.eclipse.mylar.ui.context">
- <uiBridge
- class="org.eclipse.mylar.bugs.BugzillaUiBridge"
- contentType="bugzilla"/>
- </extension>
--->
-</plugin>
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlStreamTokenizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlStreamTokenizer.java
deleted file mode 100644
index 1afcc459e..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlStreamTokenizer.java
+++ /dev/null
@@ -1,1116 +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.tasks.core;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.net.URL;
-import java.text.ParseException;
-import java.util.HashMap;
-
-public class HtmlStreamTokenizer {
-
- /** parser state */
- private State state;
-
- /** reader from which to parse the text */
- private BufferedReader in;
-
- /** base URL for resolving relative URLs */
- private URL base;
-
- /** buffer holding the text of the current token */
- private StringBuffer textBuffer;
-
- /** buffer holding whitespace preceding the current token */
- private StringBuffer whitespaceBuffer;
-
- /**
- * holds a token that was read and then put back in the queue to be returned
- * again on <code>nextToken</code> call
- */
- private Token pushbackToken;
-
- /**
- * holds a character that was read and then determined not to be part of the
- * current token
- */
- private int pushbackChar;
-
- /** current quote delimiter (single or double) */
- private int quoteChar;
-
- /** Allow class client to choose if tag attributes are escaped or not */
- private boolean escapeTagValues;
-
- /**
- * Constructor.
- *
- * @param in
- * reader for the HTML document to tokenize
- * @param base
- * URL for resolving relative URLs
- */
- public HtmlStreamTokenizer(Reader in, URL base) {
- textBuffer = new StringBuffer();
- whitespaceBuffer = new StringBuffer();
- pushbackChar = 0;
- state = State.TEXT;
- this.in = new BufferedReader(in);
- this.base = base;
- escapeTagValues = true;
- }
-
- public void escapeTagAttributes(boolean value) {
- escapeTagValues = value;
- }
-
- /**
- * Returns the next token from the stream.
- */
- public Token nextToken() throws IOException, ParseException {
- if (pushbackToken != null) {
- Token token = pushbackToken;
- pushbackToken = null;
- return token;
- }
-
- int closingComment = 0;
-
- textBuffer.setLength(0);
- whitespaceBuffer.setLength(0);
- do {
- int ch;
- if (pushbackChar != 0) {
- ch = pushbackChar;
- pushbackChar = 0;
- } else {
- ch = in.read();
- }
- if (ch < 0) {
- State oldState = state;
- state = State.EOF;
- if (textBuffer.length() > 0 && oldState == State.TEXT) {
- return new Token(textBuffer, whitespaceBuffer, false);
- } else {
- return new Token();
- }
- }
- if (state == State.TEXT) {
- if (ch == '<') {
- state = State.TAG;
- if (textBuffer.length() > 0)
- return new Token(textBuffer, whitespaceBuffer, false);
- } else if (Character.isWhitespace((char) ch)) {
- pushbackChar = ch;
- state = State.WS;
- if (textBuffer.length() > 0)
- return new Token(textBuffer, whitespaceBuffer, false);
- } else {
- textBuffer.append((char) ch);
- }
- } else if (state == State.WS) {
- if (!Character.isWhitespace((char) ch)) {
- pushbackChar = ch;
- state = State.TEXT;
- } else {
- whitespaceBuffer.append((char) ch);
- }
- } else if (state == State.TAG) {
- if (ch == '>') {
- state = State.TEXT;
- HtmlTag tag = new HtmlTag(base);
- parseTag(textBuffer.toString(), tag, escapeTagValues);
- return new Token(tag, whitespaceBuffer);
- }
- if (ch == '<' && textBuffer.length() == 0) {
- textBuffer.append("<<");
- state = State.TEXT;
- } else if (ch == '-' && textBuffer.length() == 2 && textBuffer.charAt(1) == '-'
- && textBuffer.charAt(0) == '!') {
- textBuffer.setLength(0);
- state = State.COMMENT;
- } else if (ch == '\'' || ch == '"') {
- quoteChar = ch;
- textBuffer.append((char) ch);
- state = State.TAG_QUOTE;
- } else {
- textBuffer.append((char) ch);
- }
- } else if (state == State.TAG_QUOTE) {
- if (ch == '>') {
- pushbackChar = ch;
- state = State.TAG;
- } else {
- textBuffer.append((char) ch);
- if (ch == quoteChar)
- state = State.TAG;
- }
- } else if (state == State.COMMENT) {
- if (ch == '>' && closingComment >= 2) {
- textBuffer.setLength(textBuffer.length() - 2);
- closingComment = 0;
- state = State.TEXT;
- return new Token(textBuffer, whitespaceBuffer, true);
- }
- if (ch == '-') {
- closingComment++;
- } else {
- closingComment = 0;
- }
- textBuffer.append((char) ch);
- }
- } while (true);
- }
-
- /**
- * Pushes the token back into the queue, to be returned by the subsequent
- * call to <code>nextToken</code>
- */
- public void pushback(Token token) {
- pushbackToken = token;
- }
-
- /**
- * Parses an HTML tag out of a string of characters.
- */
- private static void parseTag(String s, HtmlTag tag, boolean escapeValues) throws ParseException {
-
- int i = 0;
- for (; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) {
- // just move forward
- }
- if (i == s.length())
- throw new ParseException("parse empty tag", 0);
-
- int start = i;
- for (; i < s.length() && !Character.isWhitespace(s.charAt(i)); i++) {
- // just move forward
- }
- tag.setTagName(s.substring(start, i));
-
- for (; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) {
- // just move forward
- }
- if (i == s.length()) {
- return;
- } else {
- parseAttributes(tag, s, i, escapeValues);
- return;
- }
- }
-
- /**
- * parses HTML tag attributes from a buffer and sets them in an HtmlTag
- */
- private static void parseAttributes(HtmlTag tag, String s, int i, boolean escapeValues) throws ParseException {
- while (i < s.length()) {
- // skip whitespace
- while (i < s.length() && Character.isWhitespace(s.charAt(i)))
- i++;
-
- if (i == s.length())
- return;
-
- // read the attribute name -- the rule might be looser than the RFC
- // specifies:
- // everything up to a space or an equal sign is included
- int start = i;
- for (; i < s.length() && !Character.isWhitespace(s.charAt(i)) && s.charAt(i) != '='; i++) {
- // just move forward
- }
- String attributeName = s.substring(start, i).toLowerCase();
-
- if (attributeName.equals("/")) {
- tag.setSelfTerminating(true);
- continue;
- }
-
- for (; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) {
- // just move forward
- }
- if (i == s.length() || s.charAt(i) != '=') {
- // no attribute value
- tag.setAttribute(attributeName, "");
- continue;
- }
-
- // skip whitespace to the start of attribute value
- for (i = i + 1; i < s.length() && Character.isWhitespace(s.charAt(i)); i++) {
- // just move forward
- }
- if (i == s.length())
- return;
-
- // read the attribute value -- the rule for unquoted attribute value
- // is
- // looser than the one in Conolly's W3C 1996 lexical analyzer draft:
- // everything
- // is included up to the next space
- String attributeValue;
- if (s.charAt(i) == '"') {
- start = ++i;
- for (; i < s.length() && s.charAt(i) != '"'; i++) {
- // just move forward
- }
- if (i == s.length())
- return; // shouldn't happen if input returned by nextToken
- if (escapeValues)
- attributeValue = unescape(s.substring(start, i));
- else
- attributeValue = s.substring(start, i);
- i++;
- } else if (s.charAt(i) == '\'') {
- start = ++i;
- for (; i < s.length() && s.charAt(i) != '\''; i++) {
- // just move forward
- }
- if (i == s.length())
- return; // shouldn't happen if input returned by nextToken
- attributeValue = unescape(s.substring(start, i));
- i++;
- } else {
- start = i;
- for (; i < s.length() && !Character.isWhitespace(s.charAt(i)); i++) {
- // just move forward
- }
- attributeValue = s.substring(start, i);
- }
- tag.setAttribute(attributeName, attributeValue);
- }
- }
-
- /**
- * Returns a string with HTML escapes changed into their corresponding
- * characters.
- */
- public static String unescape(String s) {
- if (s.indexOf('&') == -1) {
- return s;
- } else {
- StringBuffer sb = new StringBuffer(s);
- unescape(sb);
- return sb.toString();
- }
- }
-
- /**
- * Replaces (in-place) HTML escapes in a StringBuffer with their
- * corresponding characters.
- */
- public static StringBuffer unescape(StringBuffer sb) {
- int i = 0; // index into the unprocessed section of the buffer
- int j = 0; // index into the processed section of the buffer
-
- while (i < sb.length()) {
- char ch = sb.charAt(i);
- if (ch == '&') {
- int start = i;
- String escape = null;
- for (i = i + 1; i < sb.length(); i++) {
- ch = sb.charAt(i);
- if (!Character.isLetterOrDigit(ch) && !(ch == '#' && i == (start + 1))) {
- escape = sb.substring(start + 1, i);
- break;
- }
- }
- if (i == sb.length() && i != (start + 1)) {
- escape = sb.substring(start + 1);
- }
- if (escape != null) {
- Character character = parseReference(escape);
- if (character != null) {
- ch = character.charValue();
- } else {
- // not an HTML escape; rewind
- i = start;
- ch = '&';
- }
- }
- }
- sb.setCharAt(j, ch);
- i++;
- j++;
- }
-
- sb.setLength(j);
- return sb;
- }
-
- /**
- * Parses HTML character and entity references and returns the corresponding
- * character.
- */
- private static Character parseReference(String s) {
- if (s.length() == 0)
- return null;
-
- if (s.charAt(0) == '#') {
- // character reference
- if (s.length() == 1)
- return null;
-
- try {
- int value;
- if (s.charAt(1) == 'x') {
- // Hex reference
- value = Integer.parseInt(s.substring(2), 16);
- } else {
- // Decimal reference
- value = Integer.parseInt(s.substring(1));
- }
- return new Character((char) value);
- } catch (NumberFormatException e) {
- return null;
- }
- } else {
- return entities.get(s);
- }
- }
-
- /**
- * Class for current token.
- */
- public static class Token {
- public static final Type EOF = new Type();
-
- public static final Type TEXT = new Type();
-
- public static final Type TAG = new Type();
-
- public static final Type COMMENT = new Type();
-
- /** token's type */
- private Type type;
-
- /** token's value */
- private Object value;
-
- /** whitespace preceding the token */
- private StringBuffer whitespace;
-
- /**
- * Constructor for the EOF token.
- */
- protected Token() {
- type = EOF;
- value = null;
- whitespace = null;
- }
-
- /**
- * Constructor for the HTML tag tokens.
- */
- protected Token(HtmlTag tag, StringBuffer whitespace) {
- type = TAG;
- value = tag;
- this.whitespace = whitespace;
- }
-
- /**
- * Constructor for regular text and comments.
- */
- protected Token(StringBuffer text, StringBuffer whitespace, boolean comment) {
- if (comment) {
- type = COMMENT;
- } else {
- type = TEXT;
- }
- this.value = text;
- this.whitespace = whitespace;
- }
-
- /**
- * Returns the token's type.
- */
- public Type getType() {
- return type;
- }
-
- /**
- * Returns the whitespace preceding the token.
- */
- public StringBuffer getWhitespace() {
- return whitespace;
- }
-
- /**
- * Returns the token's value. This is an HtmlTag for tokens of type
- * <code>TAG</code> and a StringBuffer for tokens of type
- * <code>TEXT</code> and <code>COMMENT</code>. For tokens of type
- * <code>EOF</code>, the value is <code>null</code>.
- */
- public Object getValue() {
- return value;
- }
-
- /**
- * Returns the string representation of the token, including the
- * preceding whitespace.
- */
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- if (whitespace != null) {
- sb.append(whitespace);
- }
- if (value != null) {
- if (type == TAG) {
- // sb.append('<');
- } else if (type == COMMENT) {
- sb.append("<!--");
- }
- sb.append(value);
- if (type == TAG) {
- // if(value instanceof HtmlTag) {
- // HtmlTag htmlTag = (HtmlTag)value;
- // if(htmlTag.getTagName().startsWith("?xml")) {
- // sb.append("?>");
- // }
- // } else {
- // sb.append('>');
-
- } else if (type == COMMENT) {
- sb.append("-->");
- }
-
- }
- return sb.toString();
- }
-
- /**
- * Private enum class for token type.
- */
- private static class Type {
- private Type() {
- // don't need to do anything
- }
- }
- }
-
- /**
- * Enum class for parser state.
- */
- private static class State {
- static final State EOF = new State();
-
- static final State COMMENT = new State();
-
- static final State TEXT = new State();
-
- static final State TAG = new State();
-
- static final State WS = new State();
-
- static final State TAG_QUOTE = new State();
-
- private State() {
- // don't need to do anything
- }
- }
-
- /** names and values of HTML entity references */
- private static HashMap<String, Character> entities;
-
- /*
- * Based on ISO 8879.
- *
- * Portions (c) International Organization for Standardization 1986
- * Permission to copy in any form is granted for use with conforming SGML
- * systems and applications as defined in ISO 8879, provided this notice is
- * included in all copies.
- *
- */
- static {
- entities = new HashMap<String, Character>();
- entities.put("nbsp", new Character('\240')); // no-break
- // space =
- // non-breaking
- // space
- entities.put("iexcl", new Character('\241')); // inverted
- // exclamation
- // mark
- entities.put("cent", new Character('\242')); // cent sign
- entities.put("pound", new Character('\243')); // pound
- // sign
- entities.put("curren", new Character('\244')); // currency
- // sign
- entities.put("yen", new Character('\245')); // yen sign =
- // yuan sign
- entities.put("brvbar", new Character('\246')); // broken
- // bar =
- // broken
- // vertical
- // bar
- entities.put("sect", new Character('\247')); // section
- // sign
- entities.put("uml", new Character('\250')); // diaeresis =
- // spacing
- // diaeresis
- entities.put("copy", new Character('\251')); // copyright
- // sign
- entities.put("ordf", new Character('\252')); // feminine
- // ordinal
- // indicator
- entities.put("laquo", new Character('\253')); // left-pointing
- // double
- // angle
- // quotation
- // mark =
- // left
- // pointing
- // guillemet
- entities.put("not", new Character('\254')); // not sign
- entities.put("shy", new Character('\255')); // soft hyphen =
- // discretionary
- // hyphen
- entities.put("reg", new Character('\256')); // registered
- // sign =
- // registered
- // trade mark
- // sign
- entities.put("macr", new Character('\257')); // macron =
- // spacing
- // macron =
- // overline
- // = APL
- // overbar
- entities.put("deg", new Character('\260')); // degree sign
- entities.put("plusmn", new Character('\261')); // plus-minus
- // sign =
- // plus-or-minus
- // sign
- entities.put("sup2", new Character('\262')); // superscript
- // two =
- // superscript
- // digit two
- // = squared
- entities.put("sup3", new Character('\263')); // superscript
- // three =
- // superscript
- // digit
- // three =
- // cubed
- entities.put("acute", new Character('\264')); // acute
- // accent =
- // spacing
- // acute
- entities.put("micro", new Character('\265')); // micro
- // sign
- entities.put("para", new Character('\266')); // pilcrow
- // sign =
- // paragraph
- // sign
- entities.put("middot", new Character('\267')); // middle
- // dot =
- // Georgian
- // comma =
- // Greek
- // middle
- // dot
- entities.put("cedil", new Character('\270')); // cedilla =
- // spacing
- // cedilla
- entities.put("sup1", new Character('\271')); // superscript
- // one =
- // superscript
- // digit one
- entities.put("ordm", new Character('\272')); // masculine
- // ordinal
- // indicator
- entities.put("raquo", new Character('\273')); // right-pointing
- // double
- // angle
- // quotation
- // mark =
- // right
- // pointing
- // guillemet
- entities.put("frac14", new Character('\274')); // vulgar
- // fraction
- // one
- // quarter =
- // fraction
- // one
- // quarter
- entities.put("frac12", new Character('\275')); // vulgar
- // fraction
- // one half
- // =
- // fraction
- // one half
- entities.put("frac34", new Character('\276')); // vulgar
- // fraction
- // three
- // quarters
- // =
- // fraction
- // three
- // quarters
- entities.put("iquest", new Character('\277')); // inverted
- // question
- // mark =
- // turned
- // question
- // mark
- entities.put("Agrave", new Character('\300')); // latin
- // capital
- // letter A
- // with
- // grave =
- // latin
- // capital
- // letter A
- // grave
- entities.put("Aacute", new Character('\301')); // latin
- // capital
- // letter A
- // with
- // acute
- entities.put("Acirc", new Character('\302')); // latin
- // capital
- // letter A
- // with
- // circumflex
- entities.put("Atilde", new Character('\303')); // latin
- // capital
- // letter A
- // with
- // tilde
- entities.put("Auml", new Character('\304')); // latin
- // capital
- // letter A
- // with
- // diaeresis
- entities.put("Aring", new Character('\305')); // latin
- // capital
- // letter A
- // with ring
- // above =
- // latin
- // capital
- // letter A
- // ring
- entities.put("AElig", new Character('\306')); // latin
- // capital
- // letter AE
- // = latin
- // capital
- // ligature
- // AE
- entities.put("Ccedil", new Character('\307')); // latin
- // capital
- // letter C
- // with
- // cedilla
- entities.put("Egrave", new Character('\310')); // latin
- // capital
- // letter E
- // with
- // grave
- entities.put("Eacute", new Character('\311')); // latin
- // capital
- // letter E
- // with
- // acute
- entities.put("Ecirc", new Character('\312')); // latin
- // capital
- // letter E
- // with
- // circumflex
- entities.put("Euml", new Character('\313')); // latin
- // capital
- // letter E
- // with
- // diaeresis
- entities.put("Igrave", new Character('\314')); // latin
- // capital
- // letter I
- // with
- // grave
- entities.put("Iacute", new Character('\315')); // latin
- // capital
- // letter I
- // with
- // acute
- entities.put("Icirc", new Character('\316')); // latin
- // capital
- // letter I
- // with
- // circumflex
- entities.put("Iuml", new Character('\317')); // latin
- // capital
- // letter I
- // with
- // diaeresis
- entities.put("ETH", new Character('\320')); // latin capital
- // letter ETH
- entities.put("Ntilde", new Character('\321')); // latin
- // capital
- // letter N
- // with
- // tilde
- entities.put("Ograve", new Character('\322')); // latin
- // capital
- // letter O
- // with
- // grave
- entities.put("Oacute", new Character('\323')); // latin
- // capital
- // letter O
- // with
- // acute
- entities.put("Ocirc", new Character('\324')); // latin
- // capital
- // letter O
- // with
- // circumflex
- entities.put("Otilde", new Character('\325')); // latin
- // capital
- // letter O
- // with
- // tilde
- entities.put("Ouml", new Character('\326')); // latin
- // capital
- // letter O
- // with
- // diaeresis
- entities.put("times", new Character('\327')); // multiplication
- // sign
- entities.put("Oslash", new Character('\330')); // latin
- // capital
- // letter O
- // with
- // stroke =
- // latin
- // capital
- // letter O
- // slash
- entities.put("Ugrave", new Character('\331')); // latin
- // capital
- // letter U
- // with
- // grave
- entities.put("Uacute", new Character('\332')); // latin
- // capital
- // letter U
- // with
- // acute
- entities.put("Ucirc", new Character('\333')); // latin
- // capital
- // letter U
- // with
- // circumflex
- entities.put("Uuml", new Character('\334')); // latin
- // capital
- // letter U
- // with
- // diaeresis
- entities.put("Yacute", new Character('\335')); // latin
- // capital
- // letter Y
- // with
- // acute
- entities.put("THORN", new Character('\336')); // latin
- // capital
- // letter
- // THORN
- entities.put("szlig", new Character('\337')); // latin
- // small
- // letter
- // sharp s =
- // ess-zed
- entities.put("agrave", new Character('\340')); // latin
- // small
- // letter a
- // with
- // grave =
- // latin
- // small
- // letter a
- // grave
- entities.put("aacute", new Character('\341')); // latin
- // small
- // letter a
- // with
- // acute
- entities.put("acirc", new Character('\342')); // latin
- // small
- // letter a
- // with
- // circumflex
- entities.put("atilde", new Character('\343')); // latin
- // small
- // letter a
- // with
- // tilde
- entities.put("auml", new Character('\344')); // latin
- // small
- // letter a
- // with
- // diaeresis
- entities.put("aring", new Character('\345')); // latin
- // small
- // letter a
- // with ring
- // above =
- // latin
- // small
- // letter a
- // ring
- entities.put("aelig", new Character('\346')); // latin
- // small
- // letter ae
- // = latin
- // small
- // ligature
- // ae
- entities.put("ccedil", new Character('\347')); // latin
- // small
- // letter c
- // with
- // cedilla
- entities.put("egrave", new Character('\350')); // latin
- // small
- // letter e
- // with
- // grave
- entities.put("eacute", new Character('\351')); // latin
- // small
- // letter e
- // with
- // acute
- entities.put("ecirc", new Character('\352')); // latin
- // small
- // letter e
- // with
- // circumflex
- entities.put("euml", new Character('\353')); // latin
- // small
- // letter e
- // with
- // diaeresis
- entities.put("igrave", new Character('\354')); // latin
- // small
- // letter i
- // with
- // grave
- entities.put("iacute", new Character('\355')); // latin
- // small
- // letter i
- // with
- // acute
- entities.put("icirc", new Character('\356')); // latin
- // small
- // letter i
- // with
- // circumflex
- entities.put("iuml", new Character('\357')); // latin
- // small
- // letter i
- // with
- // diaeresis
- entities.put("eth", new Character('\360')); // latin small
- // letter eth
- entities.put("ntilde", new Character('\361')); // latin
- // small
- // letter n
- // with
- // tilde
- entities.put("ograve", new Character('\362')); // latin
- // small
- // letter o
- // with
- // grave
- entities.put("oacute", new Character('\363')); // latin
- // small
- // letter o
- // with
- // acute
- entities.put("ocirc", new Character('\364')); // latin
- // small
- // letter o
- // with
- // circumflex
- entities.put("otilde", new Character('\365')); // latin
- // small
- // letter o
- // with
- // tilde
- entities.put("ouml", new Character('\366')); // latin
- // small
- // letter o
- // with
- // diaeresis
- entities.put("divide", new Character('\367')); // division
- // sign
- entities.put("oslash", new Character('\370')); // latin
- // small
- // letter o
- // with
- // stroke =
- // latin
- // small
- // letter o
- // slash
- entities.put("ugrave", new Character('\371')); // latin
- // small
- // letter u
- // with
- // grave
- entities.put("uacute", new Character('\372')); // latin
- // small
- // letter u
- // with
- // acute
- entities.put("ucirc", new Character('\373')); // latin
- // small
- // letter u
- // with
- // circumflex
- entities.put("uuml", new Character('\374')); // latin
- // small
- // letter u
- // with
- // diaeresis
- entities.put("yacute", new Character('\375')); // latin
- // small
- // letter y
- // with
- // acute
- entities.put("thorn", new Character('\376')); // latin
- // small
- // letter
- // thorn
- entities.put("yuml", new Character('\377')); // latin
- // small
- // letter y
- // with
- // diaeresis
-
- // Special characters
- entities.put("quot", new Character('\42')); // quotation
- // mark = APL
- // quote
- entities.put("amp", new Character('\46')); // ampersand
- entities.put("lt", new Character('\74')); // less-than
- // sign
- entities.put("gt", new Character('\76')); // greater-than
- // sign
- // Latin Extended-A
- entities.put("OElig", new Character('\u0152')); // latin
- // capital
- // ligature
- // OE
- entities.put("oelig", new Character('\u0153')); // latin
- // small
- // ligature
- // oe,
- // ligature
- // is a
- // misnomer,
- // this is a
- // separate
- // character
- // in some
- // languages
- entities.put("Scaron", new Character('\u0160')); // latin
- // capital
- // letter
- // S
- // with
- // caron
- entities.put("scaron", new Character('\u0161')); // latin
- // small
- // letter
- // s
- // with
- // caron
- entities.put("Yuml", new Character('\u0178')); // latin
- // capital
- // letter Y
- // with
- // diaeresis
- // Spacing Modifier Letters
- entities.put("circ", new Character('\u02c6')); // modifier
- // letter
- // circumflex
- // accent
- entities.put("tilde", new Character('\u02dc')); // small
- // tilde
- // General punctuation
- entities.put("ensp", new Character('\u2002')); // en space
- entities.put("emsp", new Character('\u2003')); // em space
- entities.put("thinsp", new Character('\u2009')); // thin
- // space
- entities.put("zwnj", new Character('\u200c')); // zero
- // width
- // non-joiner
- entities.put("zwj", new Character('\u200d')); // zero
- // width
- // joiner
- entities.put("lrm", new Character('\u200e')); // left-to-right
- // mark
- entities.put("rlm", new Character('\u200f')); // right-to-left
- // mark
- entities.put("ndash", new Character('\u2013')); // en dash
- entities.put("mdash", new Character('\u2014')); // em dash
- entities.put("lsquo", new Character('\u2018')); // left
- // single
- // quotation
- // mark
- entities.put("rsquo", new Character('\u2019')); // right
- // single
- // quotation
- // mark
- entities.put("sbquo", new Character('\u201a')); // single
- // low-9
- // quotation
- // mark
- entities.put("ldquo", new Character('\u201c')); // left
- // double
- // quotation
- // mark
- entities.put("rdquo", new Character('\u201d')); // right
- // double
- // quotation
- // mark
- entities.put("bdquo", new Character('\u201e')); // double
- // low-9
- // quotation
- // mark
- entities.put("dagger", new Character('\u2020')); // dagger
- entities.put("Dagger", new Character('\u2021')); // double
- // dagger
- entities.put("permil", new Character('\u2030')); // per
- // mille
- // sign
- entities.put("lsaquo", new Character('\u2039')); // single
- // left-pointing
- // angle
- // quotation
- // mark,
- // not
- // yet
- // standardized
- entities.put("rsaquo", new Character('\u203a')); // single
- // right-pointing
- // angle
- // quotation
- // mark,
- // not
- // yet
- // standardized
- entities.put("euro", new Character('\u20ac')); // euro sign
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlTag.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlTag.java
deleted file mode 100644
index 1588eb46c..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/HtmlTag.java
+++ /dev/null
@@ -1,364 +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.tasks.core;
-
-import java.net.URL;
-import java.text.ParseException;
-import java.util.HashMap;
-import java.util.Iterator;
-import javax.swing.text.html.HTML.Tag;
-
-/**
- * Class representing an HTML (3.2) tag and its attributes.
- */
-public class HtmlTag {
- /** tag's name */
- private String tagName;
-
- /** tag type enum */
- private Tag tagType;
-
- /** true if the tag is a closing tag */
- private boolean isEndTag;
-
- /** tag's attributes (keys are lowercase attribute names) */
- private HashMap<String, String> attributes;
-
- /** tag's base url */
- private URL baseUrl;
-
- /** tag is self terminated */
- private boolean selfTerminating;
-
- /**
- * Basic constructor. The tag is uninitialized.
- */
- public HtmlTag() {
- tagName = null;
- tagType = Type.UNKNOWN;
- isEndTag = false;
- attributes = new HashMap<String, String>();
- baseUrl = null;
- }
-
- /**
- * Copy constructor.
- */
- @SuppressWarnings("unchecked")
- public HtmlTag(HtmlTag htmltag) {
- tagName = null;
- tagType = Type.UNKNOWN;
- isEndTag = false;
- attributes = new HashMap<String, String>();
- tagName = htmltag.tagName;
- baseUrl = htmltag.baseUrl;
- tagType = htmltag.tagType;
- isEndTag = htmltag.isEndTag;
- attributes = (HashMap) htmltag.attributes.clone();
- }
-
- /**
- * Constructor.
- */
- public HtmlTag(String s) throws ParseException {
- attributes = new HashMap<String, String>();
- setTagName(s);
- baseUrl = null;
- }
-
- /**
- * Constructor creating an otherwise empty tag, but with a given base url.
- */
- public HtmlTag(URL url) {
- tagName = null;
- tagType = Type.UNKNOWN;
- isEndTag = false;
- attributes = new HashMap<String, String>();
- baseUrl = url;
- }
-
- /**
- * Returns the tag's type (linked to the tag's name).
- */
- public Tag getTagType() {
- return tagType;
- }
-
- /**
- * Returns the tag's name (e.g., "HEAD", "P", etc.).
- */
- public String getTagName() {
- return tagName;
- }
-
- /**
- * Sets the tag's name and type, if known.
- *
- * @throws IllegalArgumentException
- * if the argument is <code>null</code> or empty string
- */
- public void setTagName(String s) throws IllegalArgumentException {
- if (s == null || s.length() == 0)
- throw new IllegalArgumentException("Empty tag name");
- if (s.charAt(0) == '/') {
- isEndTag = true;
- s = s.substring(1);
- }
- if (s.length() == 0)
- throw new IllegalArgumentException("Empty tag name");
- tagName = s;
- tagType = tags.get(s.toUpperCase());
- if (tagType == null) {
- tagType = Type.UNKNOWN;
- }
- }
-
- /**
- * Returns <code>true</code> if the tag is a closing tag.
- */
- public boolean isEndTag() {
- return isEndTag;
- }
-
- /**
- * Returns the value of a tag's attribute as an integer.
- */
- public int getIntAttribute(String s) throws NumberFormatException {
- return Integer.parseInt(getAttribute(s));
- }
-
- /**
- * Returns the value of a tag's attribute, or NULL if it doesn't exist.
- */
- public String getAttribute(String s) {
- return attributes.get(s);
- }
-
- /**
- * Returns <code>true</code> if the tag contains attribute with the given
- * name.
- */
- public boolean hasAttribute(String s) {
- return getAttribute(s) != null;
- }
-
- /**
- * Sets the value of a tag's attribute.
- */
- public void setAttribute(String name, String value) {
- attributes.put(name.toLowerCase(), value);
- }
-
- public StringBuffer getURLs() {
- StringBuffer sb = new StringBuffer();
-
- Iterator<String> attributeNames = attributes.keySet().iterator();
- Iterator<String> attributeValues = attributes.values().iterator();
- while (attributeNames.hasNext()) {
- String attributeName = attributeNames.next();
- if (attributeName.compareTo("href") == 0 || attributeName.compareTo("src") == 0) {
- String target = attributeValues.next();
- if (!target.endsWith(".jpg") && !target.endsWith(".gif") && !target.endsWith(".css")
- && !target.endsWith(".js") && !target.startsWith("mailto") && target.lastIndexOf("#") == -1
- && target.length() > 0) {
-
- for (int i = 0; i < target.length(); i++) {
- char ch = target.charAt(i);
- if (!Character.isWhitespace(ch)) {
- if (i > 0)
- target = target.substring(i + 1);
- break;
- }
- }
- target = target.replace('\\', '/');
-
- if (target.startsWith("news:") || (target.indexOf("://") != -1 && target.length() >= 7)) {
- // Absolute URL
- if (target.substring(0, 7).compareToIgnoreCase("http://") == 0)
- sb.append(target);
- } else {
- // Relative URL
-
- String baseDir = baseUrl.getPath();
- int lastSep = -1;
- for (int i = 0; i < baseDir.length(); i++) {
- char ch = baseDir.charAt(i);
- if (ch == '/')
- lastSep = i;
- else if (ch == '?')
- break;
- }
- if (lastSep >= 0)
- baseDir = baseDir.substring(0, lastSep);
- while (baseDir.length() > 1 && baseDir.endsWith("/.")) {
- baseDir = baseDir.substring(0, baseDir.length() - 2);
- }
-
- if (target.startsWith("//")) {
- sb.append(baseUrl.getProtocol() + ":" + target);
- } else if (target.startsWith("/")) {
- sb.append(baseUrl.getProtocol() + "://" + baseUrl.getHost() + target);
- } else {
- while (target.startsWith("../")) {
- if (baseDir.length() > 0) {
- // can't go above root
- baseDir = baseDir.substring(0, baseDir.lastIndexOf("/"));
- }
- target = target.substring(3);
- }
- sb.append(baseUrl.getProtocol() + "://" + baseUrl.getHost() + baseDir + "/" + target);
- }
- }
- }
- } else {
- attributeValues.next();
- }
- }
-
- return sb;
- }
-
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- sb.append('<');
- if (isEndTag)
- sb.append('/');
- sb.append(tagName);
- Iterator<String> keys = attributes.keySet().iterator();
- Iterator<String> values = attributes.values().iterator();
- while (keys.hasNext()) {
- String name = keys.next();
- sb.append(' ');
- sb.append(name);
- String value = values.next();
- if (value.length() > 0) {
- sb.append("=\"");
- sb.append(value);
- sb.append('"');
- } else {
- sb.append("=\"\"");
- }
- }
- if(selfTerminating) {
- sb.append('/');
- }
- sb.append('>');
-
- return sb.toString();
- }
-
- /**
- * Enum class for tag types.
- */
- public static class Type extends Tag {
- public static final Tag UNKNOWN = new Tag();
-
- public static final Tag THEAD = new Type("THEAD");
-
- public static final Tag DOCTYPE = new Type("!DOCTYPE");
-
- public static final Tag LABEL = new Type("LABEL");
-
- private Type(String name) {
- super(name);
- }
- }
-
- private static HashMap<String, Tag> tags;
- static {
- tags = new HashMap<String, Tag>();
- tags.put("A", Tag.A);
- tags.put("ADDRESS", Tag.ADDRESS);
- tags.put("APPLET", Tag.APPLET);
- tags.put("AREA", Tag.AREA);
- tags.put("B", Tag.B);
- tags.put("BASE", Tag.BASE);
- tags.put("BASEFONT", Tag.BASEFONT);
- tags.put("BIG", Tag.BIG);
- tags.put("BLOCKQUOTE", Tag.BLOCKQUOTE);
- tags.put("BODY", Tag.BODY);
- tags.put("BR", Tag.BR);
- tags.put("CAPTION", Tag.CAPTION);
- tags.put("CENTER", Tag.CENTER);
- tags.put("CITE", Tag.CITE);
- tags.put("CODE", Tag.CODE);
- tags.put("DD", Tag.DD);
- tags.put("DFN", Tag.DFN);
- tags.put("DIR", Tag.DIR);
- tags.put("DIV", Tag.DIV);
- tags.put("DL", Tag.DL);
- tags.put("!DOCTYPE", Type.DOCTYPE);
- tags.put("DT", Tag.DT);
- tags.put("EM", Tag.EM);
- tags.put("FONT", Tag.FONT);
- tags.put("FORM", Tag.FORM);
- tags.put("FRAME", Tag.FRAME);
- tags.put("FRAMESET", Tag.FRAMESET);
- tags.put("H1", Tag.H1);
- tags.put("H2", Tag.H2);
- tags.put("H3", Tag.H3);
- tags.put("H4", Tag.H4);
- tags.put("H5", Tag.H5);
- tags.put("H6", Tag.H6);
- tags.put("HEAD", Tag.HEAD);
- tags.put("HTML", Tag.HTML);
- tags.put("HR", Tag.HR);
- tags.put("I", Tag.I);
- tags.put("IMG", Tag.IMG);
- tags.put("INPUT", Tag.INPUT);
- tags.put("ISINDEX", Tag.ISINDEX);
- tags.put("KBD", Tag.KBD);
- tags.put("LI", Tag.LI);
- tags.put("LABEL", Type.LABEL);
- tags.put("LINK", Tag.LINK);
- tags.put("MAP", Tag.MAP);
- tags.put("MENU", Tag.MENU);
- tags.put("META", Tag.META);
- tags.put("NOFRAMES", Tag.NOFRAMES);
- tags.put("OBJECT", Tag.OBJECT);
- tags.put("OL", Tag.OL);
- tags.put("OPTION", Tag.OPTION);
- tags.put("P", Tag.P);
- tags.put("PARAM", Tag.PARAM);
- tags.put("PRE", Tag.PRE);
- tags.put("S", Tag.S);
- tags.put("SAMP", Tag.SAMP);
- tags.put("SCRIPT", Tag.SCRIPT);
- tags.put("SELECT", Tag.SELECT);
- tags.put("SMALL", Tag.SMALL);
- tags.put("STRONG", Tag.STRONG);
- tags.put("STYLE", Tag.STYLE);
- tags.put("SUB", Tag.SUB);
- tags.put("SUP", Tag.SUP);
- tags.put("TABLE", Tag.TABLE);
- tags.put("TD", Tag.TD);
- tags.put("TEXTAREA", Tag.TEXTAREA);
- tags.put("TH", Tag.TH);
- tags.put("THEAD", Type.THEAD);
- tags.put("TITLE", Tag.TITLE);
- tags.put("TR", Tag.TR);
- tags.put("TT", Tag.TT);
- tags.put("U", Tag.U);
- tags.put("UL", Tag.UL);
- tags.put("VAR", Tag.VAR);
- }
-
- public void setSelfTerminating(boolean terminating) {
- this.selfTerminating = terminating;
-
- }
-
- public boolean isSelfTerminating() {
- return selfTerminating;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryTrustManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryTrustManager.java
deleted file mode 100644
index aca5d6e9f..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/RepositoryTrustManager.java
+++ /dev/null
@@ -1,58 +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.tasks.core;
-
-import javax.net.ssl.X509TrustManager;
-
-/**
- * TrustAll class implements X509TrustManager to access all https servers with
- * signed and unsigned certificates.
- */
-public class RepositoryTrustManager implements X509TrustManager {
- // seems to be no purpose
- public boolean checkClientTrusted(java.security.cert.X509Certificate[] chain) {
- return true;
- }
-
- // seems to be no purpose
- public boolean isServerTrusted(java.security.cert.X509Certificate[] chain) {
- return true;
- }
-
- // seems to be no purpose
- public boolean isClientTrusted(java.security.cert.X509Certificate[] chain) {
- return true;
- }
-
- /**
- * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
- */
- public java.security.cert.X509Certificate[] getAcceptedIssuers() {
- return null;
- }
-
- /**
- * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[],
- * java.lang.String)
- */
- public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
- // don't need to do any checks
- }
-
- /**
- * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[],
- * java.lang.String)
- */
- public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
- // don't need to do any checks
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesContentHandler.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesContentHandler.java
deleted file mode 100644
index 072b8ae85..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesContentHandler.java
+++ /dev/null
@@ -1,62 +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.tasks.core;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.mylar.internal.context.core.util.XmlStringConverter;
-import org.eclipse.mylar.tasks.core.IRepositoryConstants;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Adapted from SaxContextContentHandler
- *
- * @author Rob Elves
- */
-public class SaxRepositoriesContentHandler extends DefaultHandler {
-
-
- static final String ATTRIBUTE_INTERACTION_EVENT = "InteractionEvent";
-
- private Set<TaskRepository> taskRepositories = new HashSet<TaskRepository>();
-
- @Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- try {
- if (localName.equals(TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORY) && attributes != null) {
- String kind = XmlStringConverter.convertXmlToString(attributes
- .getValue(IRepositoryConstants.PROPERTY_KIND));
- String url = XmlStringConverter.convertXmlToString(attributes
- .getValue(IRepositoryConstants.PROPERTY_URL));
- if (kind != null && kind.length() > 0 && url != null && url.length() > 0) {
- TaskRepository repository = new TaskRepository(kind, url);
- for (int index = 0; index < attributes.getLength(); index++) {
- String key = XmlStringConverter.convertXmlToString(attributes.getLocalName(index));
- String value = XmlStringConverter.convertXmlToString(attributes.getValue(index));
- repository.setProperty(key, value);
- }
- taskRepositories.add(repository);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
- public Set<TaskRepository> getRepositories() {
- return taskRepositories;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesWriter.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesWriter.java
deleted file mode 100644
index 336582edb..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SaxRepositoriesWriter.java
+++ /dev/null
@@ -1,180 +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.tasks.core;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.XmlStringConverter;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * Adapted from SaxContextWriter
- *
- * @author Rob Elves
- */
-public class SaxRepositoriesWriter {
-
- private OutputStream outputStream;
-
- public void setOutputStream(OutputStream outputStream) {
- this.outputStream = outputStream;
- }
-
- public void writeRepositoriesToStream(Collection<TaskRepository> repositories) throws IOException {
- if (outputStream == null) {
- IOException ioe = new IOException("OutputStream not set");
- throw ioe;
- }
-
- try {
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- transformer.transform(
- new SAXSource(new RepositoriesWriter(), new TaskRepositoriesInputSource(repositories)),
- new StreamResult(outputStream));
- } catch (TransformerException e) {
- MylarStatusHandler.fail(e, "could not write repositories", false);
- throw new IOException(e.getMessage());
- }
-
- }
-
- private static class TaskRepositoriesInputSource extends InputSource {
- private Collection<TaskRepository> repositories;
-
- public TaskRepositoriesInputSource(Collection<TaskRepository> repositories) {
- this.repositories = repositories;
- }
-
- public Collection<TaskRepository> getRepositories() {
- return this.repositories;
- }
-
- }
-
- private static class RepositoriesWriter implements XMLReader {
-
-// private static final String ELEMENT_TASK_REPOSITORIES = "TaskRepositories";
-//
-// public static final String ELEMENT_TASK_REPOSITORY = "TaskRepository";
-//
-// private static final String ATTRIBUTE_VERSION = "xmlVersion";
-
-// private static final String ATTRIBUTE_URL = "Url";
-//
-// private static final String ATTRIBUTE_KIND = "Kind";
-
- private ContentHandler handler;
-
- private ErrorHandler errorHandler;
-
- public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
- return false;
- }
-
- public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
-
- }
-
- public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
- return null;
- }
-
- public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
- }
-
- public void setEntityResolver(EntityResolver resolver) {
- }
-
- public EntityResolver getEntityResolver() {
- return null;
- }
-
- public void setDTDHandler(DTDHandler handler) {
- }
-
- public DTDHandler getDTDHandler() {
- return null;
- }
-
- public void setContentHandler(ContentHandler handler) {
- this.handler = handler;
-
- }
-
- public ContentHandler getContentHandler() {
- return handler;
- }
-
- public void setErrorHandler(ErrorHandler handler) {
- this.errorHandler = handler;
-
- }
-
- public ErrorHandler getErrorHandler() {
- return errorHandler;
- }
-
- public void parse(InputSource input) throws IOException, SAXException {
- if (!(input instanceof TaskRepositoriesInputSource)) {
- throw new SAXException("Can only parse writable input sources");
- }
-
- Collection<TaskRepository> repositories = ((TaskRepositoriesInputSource) input).getRepositories();
-
- handler.startDocument();
- AttributesImpl rootAttributes = new AttributesImpl();
- rootAttributes.addAttribute("", TaskRepositoriesExternalizer.ATTRIBUTE_VERSION, TaskRepositoriesExternalizer.ATTRIBUTE_VERSION, "", "1");
-
- handler.startElement("", TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORIES, TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORIES, rootAttributes);
-
- for (TaskRepository repository : new ArrayList<TaskRepository>(repositories)) {
-
- AttributesImpl ieAttributes = new AttributesImpl();
- for (String key : repository.getProperties().keySet()) {
- ieAttributes.addAttribute("", key, key, "", XmlStringConverter.convertToXmlString(repository
- .getProperties().get(key)));
- }
-
- handler.startElement("", TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORY, TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORY, ieAttributes);
- handler.endElement("", TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORY, TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORY);
- }
- handler.endElement("", TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORIES, TaskRepositoriesExternalizer.ELEMENT_TASK_REPOSITORIES);
-
- handler.endDocument();
- }
-
- public void parse(String systemId) throws IOException, SAXException {
- throw new SAXException("Can only parse writable input sources");
- }
-
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SslProtocolSocketFactory.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SslProtocolSocketFactory.java
deleted file mode 100644
index 0e95a6970..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/SslProtocolSocketFactory.java
+++ /dev/null
@@ -1,67 +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.tasks.core;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-
-import org.apache.commons.httpclient.ConnectTimeoutException;
-import org.apache.commons.httpclient.params.HttpConnectionParams;
-import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-
-/**
- * @author Nathan Hapke
- */
-public class SslProtocolSocketFactory implements ProtocolSocketFactory {
-
- private SSLContext sslContext;
-
- private SSLContext getSslContext() {
- if (sslContext == null) {
- try {
- sslContext = SSLContext.getInstance("SSL");
- sslContext.init(null, new TrustManager[] { new RepositoryTrustManager() }, null);
- } catch (Exception e) {
- MylarStatusHandler.log(e, "could not get SSL context");
- }
- }
- return sslContext;
- }
-
- public Socket createSocket(String remoteHost, int remotePort) throws IOException, UnknownHostException {
- return getSslContext().getSocketFactory().createSocket(remoteHost, remotePort);
- }
-
- public Socket createSocket(String remoteHost, int remotePort, InetAddress clientHost, int clientPort)
- throws IOException, UnknownHostException {
- return getSslContext().getSocketFactory().createSocket(remoteHost, remotePort, clientHost, clientPort);
- }
-
- public Socket createSocket(String remoteHost, int remotePort, InetAddress clientHost, int clientPort,
- HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException {
- if (params == null || params.getConnectionTimeout() == 0)
- return getSslContext().getSocketFactory().createSocket(remoteHost, remotePort, clientHost, clientPort);
-
- Socket socket = getSslContext().getSocketFactory().createSocket();
- socket.bind(new InetSocketAddress(clientHost, clientPort));
- socket.connect(new InetSocketAddress(remoteHost, remotePort), params.getConnectionTimeout());
- return socket;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java
deleted file mode 100644
index 27144ed48..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java
+++ /dev/null
@@ -1,107 +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.tasks.core;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.xml.sax.InputSource;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/**
- * Adapted from MylarContextExternalizer
- *
- * @author Rob Elves
- */
-public class TaskRepositoriesExternalizer {
-
- private SaxRepositoriesWriter writer = new SaxRepositoriesWriter();
-
- public static final String ELEMENT_TASK_REPOSITORIES = "TaskRepositories";
-
- public static final String ELEMENT_TASK_REPOSITORY = "TaskRepository";
-
- public static final String ATTRIBUTE_VERSION = "OutputVersion";
-
- public void writeRepositoriesToXML(Collection<TaskRepository> repositories, File file) {
- if (repositories.isEmpty())
- return;
- ZipOutputStream outputStream = null;
- try {
- if (!file.exists())
- file.createNewFile();
-
- outputStream = new ZipOutputStream(new FileOutputStream(file));
- ZipEntry zipEntry = new ZipEntry(TaskRepositoryManager.OLD_REPOSITORIES_FILE);
- outputStream.putNextEntry(zipEntry);
- outputStream.setMethod(ZipOutputStream.DEFLATED);
-
- // OutputStream stream = new FileOutputStream(file);
- writer.setOutputStream(outputStream);
- writer.writeRepositoriesToStream(repositories);
- outputStream.flush();
- outputStream.closeEntry();
- outputStream.close();
-
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "Could not write: " + file.getAbsolutePath(), true);
- } finally {
- if (outputStream != null) {
- try {
- outputStream.close();
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "Unable to terminate output stream to repositories file.", false);
- }
- }
- }
- }
-
- public Set<TaskRepository> readRepositoriesFromXML(File file) {
-
- if (!file.exists())
- return null;
- InputStream inputStream = null;
- try {
- inputStream = new ZipInputStream(new FileInputStream(file));
- ((ZipInputStream) inputStream).getNextEntry();
- SaxRepositoriesContentHandler contentHandler = new SaxRepositoriesContentHandler();
- XMLReader reader = XMLReaderFactory.createXMLReader();
- reader.setContentHandler(contentHandler);
- reader.parse(new InputSource(inputStream));
- return contentHandler.getRepositories();
- } catch (Throwable e) {
- file.renameTo(new File(file.getAbsolutePath() + "-save"));
- MylarStatusHandler.log(e, "Error while reading context file");
- return null;
- } finally {
- if (inputStream != null) {
- try {
- inputStream.close();
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "Failed to close repositories input stream.", false);
- }
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebClientUtil.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebClientUtil.java
deleted file mode 100644
index b247357c7..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebClientUtil.java
+++ /dev/null
@@ -1,186 +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.tasks.core;
-
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.HttpURLConnection;
-import java.net.InetSocketAddress;
-import java.net.MalformedURLException;
-import java.net.Proxy;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.protocol.Protocol;
-
-/**
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class WebClientUtil {
-
- private static final int HTTP_PORT = 80;
-
- private static final int HTTPS_PORT = 443;
-
- private static final int COM_TIME_OUT = 30000;
-
- public static final String ENCODING_GZIP = "gzip";
-
- public static void initCommonsLoggingSettings() {
- // TODO: move?
- System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
- System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire.header", "off");
- System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "off");
- }
-
- /**
- * Returns an opened HttpURLConnection. If the proxy fails a direct connection
- * is attempted.
- */
- public static HttpURLConnection openUrlConnection(URL url, Proxy proxy, boolean useTls) throws IOException,
- KeyManagementException, GeneralSecurityException {
-
- if (proxy == null) {
- proxy = Proxy.NO_PROXY;
- }
-
- HttpURLConnection remoteConnection = getUrlConnection(url, proxy, useTls);
- try {
- remoteConnection = openConnection(url, proxy);
- } catch (ConnectException e) {
- remoteConnection = openConnection(url, Proxy.NO_PROXY);
- }
-
- return remoteConnection;
- }
-
- /**
- * Returns connection that has yet to be opened (can still set connection parameters).
- * Catch ConnectException and retry with Proxy.NO_PROXY if necessary.
- */
- public static HttpURLConnection getUrlConnection(URL url, Proxy proxy, boolean useTls) throws IOException,
- KeyManagementException, GeneralSecurityException {
- SSLContext ctx;
- if (useTls) {
- ctx = SSLContext.getInstance("TLS");
- } else {
- ctx = SSLContext.getInstance("SSL");
- }
-
- javax.net.ssl.TrustManager[] tm = new javax.net.ssl.TrustManager[] { new RepositoryTrustManager() };
- ctx.init(null, tm, null);
- HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
-
- if (proxy == null) {
- proxy = Proxy.NO_PROXY;
- }
-
- URLConnection connection = url.openConnection(proxy);
- if (connection == null || !(connection instanceof HttpURLConnection)) {
- throw new MalformedURLException();
- }
- return (HttpURLConnection)connection;
- }
-
- private static HttpURLConnection openConnection(URL url, Proxy proxy) throws IOException {
- URLConnection connection = url.openConnection(proxy);
- if (connection == null || !(connection instanceof HttpURLConnection)) {
- throw new MalformedURLException();
- }
- HttpURLConnection remoteConnection = (HttpURLConnection) connection;
- remoteConnection.addRequestProperty("Accept-Encoding", ENCODING_GZIP);
- remoteConnection.setConnectTimeout(COM_TIME_OUT);
- remoteConnection.setReadTimeout(COM_TIME_OUT);
- remoteConnection.connect();
- return remoteConnection;
- }
-
- /**
- * public for testing
- */
- public static boolean repositoryUsesHttps(String repositoryUrl) {
- return repositoryUrl.matches("https.*");
- }
-
- public static int getPort(String repositoryUrl) {
- int colonSlashSlash = repositoryUrl.indexOf("://");
- int colonPort = repositoryUrl.indexOf(':', colonSlashSlash + 1);
- if (colonPort < 0)
- return repositoryUsesHttps(repositoryUrl) ? HTTPS_PORT : HTTP_PORT;
-
- int requestPath = repositoryUrl.indexOf('/', colonPort + 1);
-
- int end;
- if (requestPath < 0)
- end = repositoryUrl.length();
- else
- end = requestPath;
-
- return Integer.parseInt(repositoryUrl.substring(colonPort + 1, end));
- }
-
- public static String getDomain(String repositoryUrl) {
- int colonSlashSlash = repositoryUrl.indexOf("://");
-
- int colonPort = repositoryUrl.indexOf(':', colonSlashSlash + 1);
- int requestPath = repositoryUrl.indexOf('/', colonSlashSlash + 3);
-
- int substringEnd;
-
- // minimum positive, or string length
- if (colonPort > 0 && requestPath > 0)
- substringEnd = Math.min(colonPort, requestPath);
- else if (colonPort > 0)
- substringEnd = colonPort;
- else if (requestPath > 0)
- substringEnd = requestPath;
- else
- substringEnd = repositoryUrl.length();
-
- return repositoryUrl.substring(colonSlashSlash + 3, substringEnd);
- }
-
- public static String getRequestPath(String repositoryUrl) {
- int colonSlashSlash = repositoryUrl.indexOf("://");
- int requestPath = repositoryUrl.indexOf('/', colonSlashSlash + 3);
-
- if (requestPath < 0)
- return "";
- else
- return repositoryUrl.substring(requestPath);
- }
-
- public static void setupHttpClient(HttpClient client, Proxy proxySettings, String repositoryUrl) {
- if (proxySettings != null && proxySettings.address() instanceof InetSocketAddress) {
- InetSocketAddress address = (InetSocketAddress) proxySettings.address();
- client.getHostConfiguration().setProxy(address.getHostName(), address.getPort());
- }
-
- if (WebClientUtil.repositoryUsesHttps(repositoryUrl)) {
- Protocol acceptAllSsl = new Protocol("https", new SslProtocolSocketFactory(), WebClientUtil
- .getPort(repositoryUrl));
- client.getHostConfiguration().setHost(WebClientUtil.getDomain(repositoryUrl),
- WebClientUtil.getPort(repositoryUrl), acceptAllSsl);
- } else {
- client.getHostConfiguration().setHost(WebClientUtil.getDomain(repositoryUrl),
- WebClientUtil.getPort(repositoryUrl));
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebTask.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebTask.java
deleted file mode 100644
index 08fa99a23..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/WebTask.java
+++ /dev/null
@@ -1,57 +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.tasks.core;
-
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-
-/**
- * Task used with generic web-based repositories
- *
- * @author Eugene Kuleshov
- */
-public class WebTask extends AbstractRepositoryTask {
-
- private final String id;
-
- private final String taskPrefix;
-
- private final String repositoryUrl;
-
- private final String repsitoryType;
-
- public WebTask(String id, String label, String taskPrefix, String repositoryUrl, String repsitoryType) {
- super(taskPrefix + id, label, false);
- this.id = id;
- this.taskPrefix = taskPrefix;
- this.repositoryUrl = repositoryUrl;
- this.repsitoryType = repsitoryType;
- setUrl(taskPrefix + id);
- }
-
- public String getRepositoryKind() {
- return repsitoryType;
- }
-
- public String getTaskPrefix() {
- return this.taskPrefix;
- }
-
- public String getId() {
- return this.id;
- }
-
- @Override
- public String getRepositoryUrl() {
- return repositoryUrl;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/.AbstractRepositoryTask.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/.AbstractRepositoryTask.java
deleted file mode 100644
index 73473f890..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/.AbstractRepositoryTask.java
+++ /dev/null
@@ -1,169 +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.tasks.core;
-
-import java.util.Date;
-
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-
-/**
- * Virtual proxy for a repository task.
- *
- * @author Mik Kersten
- * @author Rob Elves
- */
-public abstract class AbstractRepositoryTask extends Task {
-
- private static final String CONTEXT_HANDLE_DELIM = "-";
-
- private static final String MISSING_REPOSITORY_HANDLE = "norepository" + CONTEXT_HANDLE_DELIM;
-
- /** The last time this task's bug report was in a synchronized (read?) state. */
- protected String lastSynchronizedDateStamp;
-
- protected transient RepositoryTaskData taskData;
-
- protected boolean currentlySynchronizing;
-
- protected boolean isNotifiedIncoming = true;
-
- /**
- * Value is <code>true</code> if the bug report has saved changes that
- * need synchronizing with the repository.
- */
- protected boolean isDirty;
-
- public enum RepositoryTaskSyncState {
- OUTGOING, SYNCHRONIZED, INCOMING, CONFLICT
- }
-
- protected RepositoryTaskSyncState syncState = RepositoryTaskSyncState.SYNCHRONIZED;
-
- public static final String HANDLE_DELIM = "-";
-
- public AbstractRepositoryTask(String handle, String label, boolean newTask) {
- super(handle, label, newTask);
- }
-
- public abstract String getRepositoryKind();
-
- public boolean isDownloaded() {
- return taskData != null;
- }
-
- public String getLastSyncDateStamp() {
- return lastSynchronizedDateStamp;
- }
-
- public void setLastSyncDateStamp(String lastSyncDateStamp) {
- this.lastSynchronizedDateStamp = lastSyncDateStamp;
- }
-
- public void setSyncState(RepositoryTaskSyncState syncState) {
- this.syncState = syncState;
- }
-
- public RepositoryTaskSyncState getSyncState() {
- return syncState;
- }
-
- public String getRepositoryUrl() {
- return AbstractRepositoryTask.getRepositoryUrl(getHandleIdentifier());
- }
-
- @Override
- public boolean isLocal() {
- return false;
- }
-
- public static long getLastRefreshTimeInMinutes(Date lastRefresh) {
- Date timeNow = new Date();
- if (lastRefresh == null)
- lastRefresh = new Date();
- long timeDifference = (timeNow.getTime() - lastRefresh.getTime()) / 60000;
- return timeDifference;
- }
-
- public boolean isSynchronizing() {
- return currentlySynchronizing;
- }
-
- public void setCurrentlySynchronizing(boolean currentlySychronizing) {
- this.currentlySynchronizing = currentlySychronizing;
- }
-
- public static String getTaskId(String taskHandle) {
- int index = taskHandle.lastIndexOf(AbstractRepositoryTask.HANDLE_DELIM);
- if (index != -1) {
- String id = taskHandle.substring(index + 1);
- return id;
- }
- return null;
- }
-
- public static String getRepositoryUrl(String taskHandle) {
- int index = taskHandle.lastIndexOf(AbstractRepositoryTask.HANDLE_DELIM);
- String url = null;
- if (index != -1) {
- url = taskHandle.substring(0, index);
- }
- return url;
- }
-
- public static String getHandle(String repositoryUrl, String taskId) {
- if (repositoryUrl == null) {
- return MISSING_REPOSITORY_HANDLE + taskId;
- } else if (taskId.contains(CONTEXT_HANDLE_DELIM)) {
- throw new RuntimeException("invalid handle for task, can not contain: " + CONTEXT_HANDLE_DELIM + ", was: " + taskId);
- } else {
- return repositoryUrl + CONTEXT_HANDLE_DELIM + taskId;
- }
- }
-
- public static String getHandle(String repositoryUrl, int taskId) {
- return AbstractRepositoryTask.getHandle(repositoryUrl, "" + taskId);
- }
-
- public boolean isDirty() {
- return isDirty;
- }
-
- public void setDirty(boolean isDirty) {
- this.isDirty = isDirty;
- }
-
- public RepositoryTaskData getTaskData() {
- return taskData;
- }
-
- public void setTaskData(RepositoryTaskData taskData) {
- this.taskData = taskData;
- // TODO: remove?
- if (taskData != null) {
- setDescription(HtmlStreamTokenizer.unescape(AbstractRepositoryTask.getTaskId(getHandleIdentifier())
- + ": " + taskData.getSummary()));
- }
- }
-
- public boolean isNotified() {
- return isNotifiedIncoming;
- }
-
- public void setNotified(boolean notified) {
- isNotifiedIncoming = notified;
- }
-
-
- public String getOwner() {
- return "<unknown>";
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractAttributeFactory.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractAttributeFactory.java
deleted file mode 100644
index a464517af..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractAttributeFactory.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.tasks.core;
-
-import java.io.Serializable;
-
-
-/**
- * @author Rob Elves
- */
-public abstract class AbstractAttributeFactory implements Serializable {
-
- public RepositoryTaskAttribute createAttribute(String key) {
- String mapped = mapCommonAttributeKey(key);
- RepositoryTaskAttribute attribute = new RepositoryTaskAttribute(mapped, getName(mapped), getIsHidden(mapped));
- attribute.setReadOnly(isReadOnly(mapped));
- return attribute;
- }
-
- public abstract String mapCommonAttributeKey(String key);
-
- public abstract boolean getIsHidden(String key);
-
- public abstract String getName(String key);
-
- public abstract boolean isReadOnly(String key);
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java
deleted file mode 100644
index 501e32739..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractQueryHit.java
+++ /dev/null
@@ -1,131 +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.tasks.core;
-
-
-/**
- * @author Mik Kersten
- */
-public abstract class AbstractQueryHit implements ITaskListElement {
-
- protected String repositoryUrl;
-
- protected String description;
-
- protected String priority;
-
- protected String id;
-
- protected boolean isNotified = false;
-
- private AbstractRepositoryQuery parent;
-
- protected AbstractQueryHit(String repositoryUrl, String description, String id) {
- this.repositoryUrl = repositoryUrl;
- this.description = description;
- this.id = id;
- }
-
- public AbstractRepositoryQuery getParent() {
- return parent;
- }
-
- public void setParent(AbstractRepositoryQuery parent) {
- this.parent = parent;
- }
-
- public String getRepositoryUrl() {
- return repositoryUrl;
- }
-
- public void setRepositoryUrl(String repositoryUrl) {
- this.repositoryUrl = repositoryUrl;
- }
-
- public abstract AbstractRepositoryTask getOrCreateCorrespondingTask();
-
- /**
- * @return null if there is no corresponding report
- */
- public abstract AbstractRepositoryTask getCorrespondingTask();
-
- public abstract boolean isCompleted();
-
- public abstract void setCorrespondingTask(AbstractRepositoryTask task);
-
- public String getHandleIdentifier() {
- return AbstractRepositoryTask.getHandle(repositoryUrl, id);
- }
-
- public String getId() {
- return id;
- }
-
- public boolean isNotified() {
- return isNotified;
- }
-
- public void setNotified(boolean notified) {
- isNotified = notified;
- }
-
- @Override
- public boolean equals(Object obj) {
- if(!(obj instanceof AbstractQueryHit)) {
- return false;
- }
- AbstractQueryHit hit = (AbstractQueryHit)obj;
- return hit.getHandleIdentifier().equals(this.getHandleIdentifier());
- }
-
- @Override
- public int hashCode() {
- return this.getHandleIdentifier().hashCode();
- }
-
- /**
- * @return the url of the hit without any additional login information etc.
- */
- public String getUrl() {
- return "";
- }
-
- public String getPriority() {
- AbstractRepositoryTask task = getCorrespondingTask();
- if (task != null) {
- return task.getPriority();
- } else {
- return priority;
- }
- }
-
- public String getDescription() {
- AbstractRepositoryTask task = getCorrespondingTask();
- if (task != null) {
- return task.getDescription();
- } else {
- return description;
- }
- }
-
- public void setPriority(String priority) {
- this.priority = priority;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void setHandleIdentifier(String id) {
- //ignore
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java
deleted file mode 100644
index 2443d25fd..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryConnector.java
+++ /dev/null
@@ -1,225 +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.tasks.core;
-
-import java.io.File;
-import java.net.Proxy;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-
-/**
- * Encapsulates synchronization policy.
- *
- * @author Mik Kersten
- * @author Rob Elves
- */
-public abstract class AbstractRepositoryConnector {
-
- public static final String MESSAGE_ATTACHMENTS_NOT_SUPPORTED = "Attachments not supported by connector: ";
-
- public static final String MYLAR_CONTEXT_DESCRIPTION = "mylar/context/zip";
-
- private static final String APPLICATION_OCTET_STREAM = "application/octet-stream";
-
- protected List<String> supportedVersions;
-
- protected Set<RepositoryTemplate> templates = new LinkedHashSet<RepositoryTemplate>();
-
- protected TaskList taskList;
-
- public void init(TaskList taskList) {
- this.taskList = taskList;
- }
-
- /**
- * @return null if not supported
- */
- public abstract IAttachmentHandler getAttachmentHandler();
-
- /**
- * @return null if not supported
- */
- public abstract IOfflineTaskHandler getOfflineTaskHandler();
-
- public abstract String getRepositoryUrlFromTaskUrl(String url);
-
- public abstract boolean canCreateTaskFromKey(TaskRepository repository);
-
- public abstract boolean canCreateNewTask(TaskRepository repository);
-
- /**
- * Reset and update the repository attributes from the server (e.g.
- * products, components)
- *
- * @param proxySettings
- * TODO
- * @throws CoreException
- * TODO
- */
- public abstract void updateAttributes(TaskRepository repository, Proxy proxySettings, IProgressMonitor monitor)
- throws CoreException;
-
- /**
- * @param id
- * identifier, e.g. "123" bug Bugzilla bug 123
- * @param proxySettings
- * TODO
- * @return null if task could not be created
- * @throws CoreException
- * TODO
- */
- public abstract ITask createTaskFromExistingKey(TaskRepository repository, String id, Proxy proxySettings)
- throws CoreException;
-
- /**
- * Implementors must execute query synchronously.
- *
- * @param query
- * @param repository
- * TODO
- * @param proxySettings
- * TODO
- * @param monitor
- * @param resultCollector
- * IQueryHitCollector that collects the hits found
- */
- public abstract IStatus performQuery(AbstractRepositoryQuery query, TaskRepository repository, Proxy proxySettings,
- IProgressMonitor monitor, QueryHitCollector resultCollector);
-
- public abstract String getLabel();
-
- /**
- * @return the unique type of the repository, e.g. "bugzilla"
- */
- public abstract String getRepositoryType();
-
- public abstract List<String> getSupportedVersions();
-
- public abstract void updateTaskState(AbstractRepositoryTask repositoryTask);
-
- public String[] repositoryPropertyNames() {
- return new String[] { IRepositoryConstants.PROPERTY_VERSION, IRepositoryConstants.PROPERTY_TIMEZONE,
- IRepositoryConstants.PROPERTY_ENCODING };
- }
-
- /**
- * Implementors of this repositoryOperations must perform it locally without
- * going to the server since it is used for frequent repositoryOperations
- * such as decoration.
- *
- * @return an empty set if no contexts
- */
- public final Set<RepositoryAttachment> getContextAttachments(TaskRepository repository, AbstractRepositoryTask task) {
- Set<RepositoryAttachment> contextAttachments = new HashSet<RepositoryAttachment>();
- if (task.getTaskData() != null) {
- for (RepositoryAttachment attachment : task.getTaskData().getAttachments()) {
- if (attachment.getDescription().equals(MYLAR_CONTEXT_DESCRIPTION)) {
- contextAttachments.add(attachment);
- }
- }
- }
- return contextAttachments;
- }
-
- // TODO: move
- public final boolean hasRepositoryContext(TaskRepository repository, AbstractRepositoryTask task) {
- if (repository == null || task == null) {
- return false;
- } else {
- Set<RepositoryAttachment> remoteContextAttachments = getContextAttachments(repository, task);
- return (remoteContextAttachments != null && remoteContextAttachments.size() > 0);
- }
- }
-
- /**
- * Attaches the associated context to <code>task</code>.
- *
- * @return false, if operation is not supported by repository
- */
- public final boolean attachContext(TaskRepository repository, AbstractRepositoryTask task, String longComment,
- Proxy proxySettings) throws CoreException {
- ContextCorePlugin.getContextManager().saveContext(task.getHandleIdentifier());
- File sourceContextFile = ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
-
- if (sourceContextFile != null && sourceContextFile.exists()) {
- IAttachmentHandler handler = getAttachmentHandler();
- if (handler == null) {
- return false;
- }
-
- try {
- // TODO: 'faking' outgoing state
- task.setSyncState(RepositoryTaskSyncState.OUTGOING);
- handler.uploadAttachment(repository, task, longComment, MYLAR_CONTEXT_DESCRIPTION, sourceContextFile,
- APPLICATION_OCTET_STREAM, false, proxySettings);
- } catch (CoreException e) {
- task.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
- throw e;
- }
- task.setTaskData(null);
- }
- return true;
- }
-
- /**
- * Retrieves a context stored in <code>attachment</code> from
- * <code>task</code>.
- *
- * @return false, if operation is not supported by repository
- */
- public final boolean retrieveContext(TaskRepository repository, AbstractRepositoryTask task,
- RepositoryAttachment attachment, Proxy proxySettings, String destinationPath) throws CoreException {
- IAttachmentHandler attachmentHandler = getAttachmentHandler();
- if (attachmentHandler == null) {
- return false;
- }
-
- File destinationContextFile = ContextCorePlugin.getContextManager().getFileForContext(
- task.getHandleIdentifier());
-
- // TODO: add functionality for not overwriting previous context
- if(destinationContextFile.exists()) {
- if(!destinationContextFile.delete()) {
- return false;
- }
- }
- attachmentHandler.downloadAttachment(repository, task, attachment, destinationContextFile, proxySettings);
- return true;
- }
-
- public void addTemplate(RepositoryTemplate template) {
- this.templates.add(template);
- }
-
- public Set<RepositoryTemplate> getTemplates() {
- return templates;
- }
-
- /** returns null if template not found */
- public RepositoryTemplate getTemplate(String label) {
- for (RepositoryTemplate template : getTemplates()) {
- if (template.label.equals(label)) {
- return template;
- }
- }
- return null;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java
deleted file mode 100644
index 8c462f40d..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryQuery.java
+++ /dev/null
@@ -1,161 +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.tasks.core;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author Mik Kersten
- * @author Eugene Kuleshov
- */
-public abstract class AbstractRepositoryQuery extends AbstractTaskContainer {
-
- protected String repositoryUrl;
-
- protected int maxHits;
-
- private Set<AbstractQueryHit> hits = new HashSet<AbstractQueryHit>();
-
- protected String lastRefreshTimeStamp = "<never>";
-
- private boolean currentlySynchronizing = false;
-
- public abstract String getRepositoryKind();
-
- public AbstractRepositoryQuery(String description, TaskList taskList) {
- super(description, taskList);
- }
-
- // TODO: this overriding is a bit weird
- public Set<ITask> getChildren() {
- Set<ITask> tasks = new HashSet<ITask>();
- for (AbstractQueryHit hit : getHits()) {
- ITask task = hit.getCorrespondingTask();
- if (task != null) {
- tasks.add(task);
- }
- }
- return tasks;
- }
-
- public boolean isArchive() {
- return false;
- }
-
- public void setIsArchive(boolean isArchive) {
- // ignore
- }
-
- public synchronized AbstractQueryHit findQueryHit(String handle) {
- if (handle != null) {
- for (AbstractQueryHit hit : hits) {
- if (handle.equals(hit.getHandleIdentifier())) {
- return hit;
- }
- }
- }
- return null;
- }
-
- public synchronized Set<AbstractQueryHit> getHits() {
- return new HashSet<AbstractQueryHit>(hits);
- }
-
- public synchronized void updateHits(List<AbstractQueryHit> newHits, TaskList taskList) {
- Set<AbstractQueryHit> oldHits = new HashSet<AbstractQueryHit>(hits);
- hits.clear();
- for (AbstractQueryHit oldHit : oldHits) {
- if (newHits.contains(oldHit)) {
- newHits.get(newHits.indexOf(oldHit)).setNotified(oldHit.isNotified);
- }
- }
- for (AbstractQueryHit hit : newHits) {
- this.addHit(hit, taskList);
- }
- }
-
- public synchronized void addHit(AbstractQueryHit hit, TaskList taskList) {
- ITask correspondingTask = taskList.getTask(hit.getHandleIdentifier());
- if (correspondingTask instanceof AbstractRepositoryTask) {
- hit.setCorrespondingTask((AbstractRepositoryTask) correspondingTask);
- }
- hit.setParent(this);
- hits.add(hit);
- }
-
- public synchronized void removeHit(AbstractQueryHit hit) {
- hits.remove(hit);
- }
-
- public synchronized String getPriority() {
- if (hits.isEmpty()) {
- return Task.PriorityLevel.P1.toString();
- }
- String highestPriority = Task.PriorityLevel.P5.toString();
- for (AbstractQueryHit hit : hits) {
- if (highestPriority.compareTo(hit.getPriority()) > 0) {
- highestPriority = hit.getPriority();
- }
- }
- return highestPriority;
- }
-
- public boolean isLocal() {
- return false;
- }
-
- public boolean isCompleted() {
- return false;
- }
-
- public int getMaxHits() {
- return maxHits;
- }
-
- public void setMaxHits(int maxHits) {
- this.maxHits = maxHits;
- }
-
- public String getRepositoryUrl() {
- return repositoryUrl;
- }
-
- public void setRepositoryUrl(String newRepositoryUrl) {
- if (repositoryUrl != null && url != null) {
- // the repository url has changed, so change corresponding part of query URL
- this.url = newRepositoryUrl + url.substring(repositoryUrl.length());
- }
- this.repositoryUrl = newRepositoryUrl;
- }
-
- public boolean isSynchronizing() {
- return currentlySynchronizing;
- }
-
- public void setCurrentlySynchronizing(boolean currentlySynchronizing) {
- this.currentlySynchronizing = currentlySynchronizing;
- }
-
- @Override
- final void add(ITask task) {
- // ignore, can not add tasks to a query
- }
-
- public String getLastRefreshTimeStamp() {
- return lastRefreshTimeStamp;
- }
-
- public void setLastRefreshTimeStamp(String lastRefreshTimeStamp) {
- this.lastRefreshTimeStamp = lastRefreshTimeStamp;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryTask.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryTask.java
deleted file mode 100644
index 73473f890..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractRepositoryTask.java
+++ /dev/null
@@ -1,169 +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.tasks.core;
-
-import java.util.Date;
-
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-
-/**
- * Virtual proxy for a repository task.
- *
- * @author Mik Kersten
- * @author Rob Elves
- */
-public abstract class AbstractRepositoryTask extends Task {
-
- private static final String CONTEXT_HANDLE_DELIM = "-";
-
- private static final String MISSING_REPOSITORY_HANDLE = "norepository" + CONTEXT_HANDLE_DELIM;
-
- /** The last time this task's bug report was in a synchronized (read?) state. */
- protected String lastSynchronizedDateStamp;
-
- protected transient RepositoryTaskData taskData;
-
- protected boolean currentlySynchronizing;
-
- protected boolean isNotifiedIncoming = true;
-
- /**
- * Value is <code>true</code> if the bug report has saved changes that
- * need synchronizing with the repository.
- */
- protected boolean isDirty;
-
- public enum RepositoryTaskSyncState {
- OUTGOING, SYNCHRONIZED, INCOMING, CONFLICT
- }
-
- protected RepositoryTaskSyncState syncState = RepositoryTaskSyncState.SYNCHRONIZED;
-
- public static final String HANDLE_DELIM = "-";
-
- public AbstractRepositoryTask(String handle, String label, boolean newTask) {
- super(handle, label, newTask);
- }
-
- public abstract String getRepositoryKind();
-
- public boolean isDownloaded() {
- return taskData != null;
- }
-
- public String getLastSyncDateStamp() {
- return lastSynchronizedDateStamp;
- }
-
- public void setLastSyncDateStamp(String lastSyncDateStamp) {
- this.lastSynchronizedDateStamp = lastSyncDateStamp;
- }
-
- public void setSyncState(RepositoryTaskSyncState syncState) {
- this.syncState = syncState;
- }
-
- public RepositoryTaskSyncState getSyncState() {
- return syncState;
- }
-
- public String getRepositoryUrl() {
- return AbstractRepositoryTask.getRepositoryUrl(getHandleIdentifier());
- }
-
- @Override
- public boolean isLocal() {
- return false;
- }
-
- public static long getLastRefreshTimeInMinutes(Date lastRefresh) {
- Date timeNow = new Date();
- if (lastRefresh == null)
- lastRefresh = new Date();
- long timeDifference = (timeNow.getTime() - lastRefresh.getTime()) / 60000;
- return timeDifference;
- }
-
- public boolean isSynchronizing() {
- return currentlySynchronizing;
- }
-
- public void setCurrentlySynchronizing(boolean currentlySychronizing) {
- this.currentlySynchronizing = currentlySychronizing;
- }
-
- public static String getTaskId(String taskHandle) {
- int index = taskHandle.lastIndexOf(AbstractRepositoryTask.HANDLE_DELIM);
- if (index != -1) {
- String id = taskHandle.substring(index + 1);
- return id;
- }
- return null;
- }
-
- public static String getRepositoryUrl(String taskHandle) {
- int index = taskHandle.lastIndexOf(AbstractRepositoryTask.HANDLE_DELIM);
- String url = null;
- if (index != -1) {
- url = taskHandle.substring(0, index);
- }
- return url;
- }
-
- public static String getHandle(String repositoryUrl, String taskId) {
- if (repositoryUrl == null) {
- return MISSING_REPOSITORY_HANDLE + taskId;
- } else if (taskId.contains(CONTEXT_HANDLE_DELIM)) {
- throw new RuntimeException("invalid handle for task, can not contain: " + CONTEXT_HANDLE_DELIM + ", was: " + taskId);
- } else {
- return repositoryUrl + CONTEXT_HANDLE_DELIM + taskId;
- }
- }
-
- public static String getHandle(String repositoryUrl, int taskId) {
- return AbstractRepositoryTask.getHandle(repositoryUrl, "" + taskId);
- }
-
- public boolean isDirty() {
- return isDirty;
- }
-
- public void setDirty(boolean isDirty) {
- this.isDirty = isDirty;
- }
-
- public RepositoryTaskData getTaskData() {
- return taskData;
- }
-
- public void setTaskData(RepositoryTaskData taskData) {
- this.taskData = taskData;
- // TODO: remove?
- if (taskData != null) {
- setDescription(HtmlStreamTokenizer.unescape(AbstractRepositoryTask.getTaskId(getHandleIdentifier())
- + ": " + taskData.getSummary()));
- }
- }
-
- public boolean isNotified() {
- return isNotifiedIncoming;
- }
-
- public void setNotified(boolean notified) {
- isNotifiedIncoming = notified;
- }
-
-
- public String getOwner() {
- return "<unknown>";
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java
deleted file mode 100644
index f9d40381c..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java
+++ /dev/null
@@ -1,109 +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.tasks.core;
-
-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;
-
- /**
- * Optional URL corresponding to the web resource associated with this container.
- */
- protected String url = null;
-
- 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();
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getUrl() {
- return url;
- }
-
- @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.core/src/org/eclipse/mylyn/tasks/core/AttributeContainer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AttributeContainer.java
deleted file mode 100644
index 09d32ea6b..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/AttributeContainer.java
+++ /dev/null
@@ -1,149 +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.tasks.core;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-
-/**
- * @author Rob Elves
- */
-public class AttributeContainer implements Serializable {
-
- public static final String ERROR_NO_ATTRIBUTE_FACTORY = "Attribute factory not available.";
-
- private static final long serialVersionUID = 3533078709450471836L;
-
- /** The keys for the report attributes */
- private ArrayList<String> attributeKeys;
-
- /** report attributes (status, resolution, etc.) */
- private HashMap<String, RepositoryTaskAttribute> attributes;
-
- transient private AbstractAttributeFactory attributeFactory;
-
- public AttributeContainer(AbstractAttributeFactory attributeFactory) {
- this.attributeFactory = attributeFactory;
- attributeKeys = new ArrayList<String>();
- attributes = new HashMap<String, RepositoryTaskAttribute>();
- }
-
- public void setAttributeFactory(AbstractAttributeFactory factory) {
- this.attributeFactory = factory;
- }
-
- public void addAttribute(String key, RepositoryTaskAttribute attribute) {
- if (attributeFactory == null) {
- MylarStatusHandler.log(ERROR_NO_ATTRIBUTE_FACTORY, this);
- return;
- }
- String mapped = attributeFactory.mapCommonAttributeKey(key);
- if (!attributes.containsKey(mapped)) {
- attributeKeys.add(mapped);
- }
- attributes.put(mapped, attribute);
- }
-
- public RepositoryTaskAttribute getAttribute(String key) {
- if (attributeFactory == null) {
- MylarStatusHandler.log(ERROR_NO_ATTRIBUTE_FACTORY, this);
- return null;
- }
- String mapped = attributeFactory.mapCommonAttributeKey(key);
- return attributes.get(mapped);
- }
-
- public void removeAttribute(Object key) {
- attributeKeys.remove(key);
- attributes.remove(key);
- }
-
- public List<RepositoryTaskAttribute> getAttributes() {
- ArrayList<RepositoryTaskAttribute> attributeEntries = new ArrayList<RepositoryTaskAttribute>(attributeKeys
- .size());
- for (Iterator<String> it = attributeKeys.iterator(); it.hasNext();) {
- String key = it.next();
- RepositoryTaskAttribute attribute = attributes.get(key);
- attributeEntries.add(attribute);
- }
- return attributeEntries;
- }
-
- public void removeAllAttributes() {
- attributeKeys.clear();
- attributes.clear();
- }
-
- public void addAttributeValue(String key, String value) {
- if (attributeFactory == null) {
- MylarStatusHandler.log(ERROR_NO_ATTRIBUTE_FACTORY, this);
- return;
- }
- RepositoryTaskAttribute attrib = getAttribute(key);
- if (attrib != null) {
- attrib.addValue(value);
- } else {
- attrib = attributeFactory.createAttribute(key);
- attrib.addValue(value);
- addAttribute(key, attrib);
- }
- }
-
- /**
- * sets a value on an attribute, if attribute doesn't exist, appropriate
- * attribute is created
- */
- public void setAttributeValue(String key, String value) {
- if (attributeFactory == null) {
- MylarStatusHandler.log(ERROR_NO_ATTRIBUTE_FACTORY, this);
- return;
- }
- RepositoryTaskAttribute attrib = getAttribute(key);
- if (attrib == null) {
- attrib = attributeFactory.createAttribute(key);
- addAttribute(key, attrib);
- }
- attrib.setValue(value);
- }
-
- public String getAttributeValue(String key) {
- if (attributeFactory == null) {
- MylarStatusHandler.log(ERROR_NO_ATTRIBUTE_FACTORY, this);
- return "";
- }
- String returnValue = "";
- RepositoryTaskAttribute attrib = getAttribute(key);
- if (attrib != null) {
- returnValue = attrib.getValue();
- }
- return returnValue;
- }
-
- public List<String> getAttributeValues(String key) {
- List<String> returnValue = new ArrayList<String>();
- if (attributeFactory == null) {
- MylarStatusHandler.log(ERROR_NO_ATTRIBUTE_FACTORY, this);
- return returnValue;
- }
- RepositoryTaskAttribute attrib = getAttribute(key);
- if (attrib != null) {
- returnValue = attrib.getValues();
- }
- return returnValue;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java
deleted file mode 100644
index 9f0f0fa20..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeActivityDelegate.java
+++ /dev/null
@@ -1,247 +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.tasks.core;
-
-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 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 int getEstimateTimeHours() {
- return task.getEstimateTimeHours();
- }
-
- public String getHandleIdentifier() {
- return task.getHandleIdentifier();
- }
-
- public String getTaskType() {
- return task.getTaskType();
- }
-
- 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 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.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java
deleted file mode 100644
index 9afd68e0c..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DateRangeContainer.java
+++ /dev/null
@@ -1,197 +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.tasks.core;
-
-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;
-
- 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 void remove(DateRangeActivityDelegate taskWrapper) {
- children.remove(taskWrapper);
- }
-
- 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 boolean isArchive() {
- return false;
- }
-
- public void setIsArchive(boolean isArchive) {
- // ignore
- }
-
- public String getPriority() {
- return "";
- }
-
- public void setHandleIdentifier(String id) {
- // ignore
- }
-
- public Set<ITask> getChildren() {
- return children;
- }
-
- 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.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java
deleted file mode 100644
index 7eef923f5..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/DelegatingTaskExternalizer.java
+++ /dev/null
@@ -1,561 +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.tasks.core;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.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
- * @author Ken Sueda (XML serialization support)
- * @author Steffen Pingel
- */
-public class DelegatingTaskExternalizer implements ITaskListExternalizer {
-
- private static final String DEFAULT_PRIORITY = Task.PriorityLevel.P3.toString();
-
- private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.S z";
-
- public static final String KEY_QUERY = "Query";
-
- public static final String KEY_QUERY_HIT = "QueryHit";
-
- public static final String KEY_QUERY_MAX_HITS = "MaxHits";
-
- public static final String KEY_QUERY_STRING = "QueryString";
-
- public static final String KEY_NOTIFIED_INCOMING = "NotifiedIncoming";
-
- public static final String KEY_LAST_REFRESH = "LastRefreshTimeStamp";
-
- public static final String KEY_LABEL = "Label";
-
- public static final String KEY_HANDLE = "Handle";
-
- public static final String KEY_REPOSITORY_URL = "RepositoryUrl";
-
- public static final String KEY_CATEGORY = "Category";
-
- public static final String VAL_ROOT = "Root";
-
- public static final String KEY_TASK = "Task";
-
- public static final String KEY_KIND = "Kind";
-
- public static final String KEY_TASK_CATEGORY = "Task" + KEY_CATEGORY;
-
- public static final String KEY_LINK = "Link";
-
- public static final String KEY_PLAN = "Plan";
-
- public static final String KEY_TIME_ESTIMATED = "Estimated";
-
- public static final String KEY_ISSUEURL = "IssueURL";
-
- public static final String KEY_NOTES = "Notes";
-
- public static final String KEY_ACTIVE = "Active";
-
- public static final String KEY_COMPLETE = "Complete";
-
- public static final String KEY_PRIORITY = "Priority";
-
- public static final String KEY_PATH = "Path";
-
- public static final String VAL_FALSE = "false";
-
- public static final String VAL_TRUE = "true";
-
- public static final String KEY_NAME = "Name";
-
- public static final String KEY_DATE_END = "EndDate";
-
- public static final String KEY_DATE_CREATION = "CreationDate";
-
- public static final String KEY_DATE_REMINDER = "ReminderDate";
-
- public static final String KEY_REMINDED = "Reminded";
-
- public static final String LABEL_AUTOMATIC = "<automatic>";
-
- /**
- * This element holds the date stamp recorded upon last
- * transition to a synchronized state.
- */
- public static final String KEY_LAST_MOD_DATE = "LastModified";
-
- public static final String KEY_DIRTY = "Dirty";
-
- public static final String KEY_SYNC_STATE = "offlineSyncState";
-
- private List<ITaskListExternalizer> delegateExternalizers = new ArrayList<ITaskListExternalizer>();
-
- /**
- * Set these on the TaskListWriter instead
- */
- public void setDelegateExternalizers(List<ITaskListExternalizer> externalizers) {
- this.delegateExternalizers = externalizers;
- }
-
- public Element createCategoryElement(AbstractTaskContainer category, Document doc, Element parent) {
- if (category instanceof TaskArchive) {
- return parent;
- } else {
- Element node = doc.createElement(getCategoryTagName());
- node.setAttribute(KEY_NAME, category.getDescription());
- parent.appendChild(node);
- return node;
- }
- }
-
- public boolean canCreateElementFor(ITask task) {
- return true;
- }
-
- public Element createTaskElement(ITask task, Document doc, Element parent) {
- Element node = doc.createElement(getTaskTagName());
- node.setAttribute(KEY_LABEL, task.getDescription());
- node.setAttribute(KEY_HANDLE, task.getHandleIdentifier());
-
- if (task.getContainer() != null) {
- if (task.getContainer().getHandleIdentifier().equals(TaskList.LABEL_ROOT)) {
- node.setAttribute(KEY_CATEGORY, VAL_ROOT);
- } else {
- node.setAttribute(KEY_CATEGORY, task.getContainer().getHandleIdentifier());
- }
- } else {
- // TODO: if/when subtasks are supported this should be handled
- }
-
- node.setAttribute(KEY_PRIORITY, task.getPriority());
- node.setAttribute(KEY_KIND, task.getTaskType());
-
- if (task.isCompleted()) {
- node.setAttribute(KEY_COMPLETE, VAL_TRUE);
- } else {
- node.setAttribute(KEY_COMPLETE, VAL_FALSE);
- }
- if (task.isActive()) {
- node.setAttribute(KEY_ACTIVE, VAL_TRUE);
- } else {
- node.setAttribute(KEY_ACTIVE, VAL_FALSE);
- }
-
- if (task.getUrl() != null) {
- node.setAttribute(KEY_ISSUEURL, task.getUrl());
- }
- node.setAttribute(KEY_NOTES, task.getNotes());
- node.setAttribute(KEY_TIME_ESTIMATED, "" + task.getEstimateTimeHours());
- node.setAttribute(KEY_DATE_END, formatExternDate(task.getCompletionDate()));
- node.setAttribute(KEY_DATE_CREATION, formatExternDate(task.getCreationDate()));
- node.setAttribute(KEY_DATE_REMINDER, formatExternDate(task.getReminderDate()));
- if (task.hasBeenReminded()) {
- node.setAttribute(KEY_REMINDED, VAL_TRUE);
- } else {
- node.setAttribute(KEY_REMINDED, VAL_FALSE);
- }
-
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask abstractTask = (AbstractRepositoryTask) task;
- if (abstractTask.getLastSyncDateStamp() != null) {
- node.setAttribute(KEY_LAST_MOD_DATE, abstractTask.getLastSyncDateStamp());
- }
-
- if(abstractTask.isNotified()) {
- node.setAttribute(KEY_NOTIFIED_INCOMING, VAL_TRUE);
- } else {
- node.setAttribute(KEY_NOTIFIED_INCOMING, VAL_FALSE);
- }
-
- node.setAttribute(KEY_SYNC_STATE, abstractTask.getSyncState().toString());
-
- if (abstractTask.isDirty()) {
- node.setAttribute(KEY_DIRTY, VAL_TRUE);
- } else {
- node.setAttribute(KEY_DIRTY, VAL_FALSE);
- }
- }
-
- for (ITask t : task.getChildren()) {
- createTaskElement(t, doc, node);
- }
- parent.appendChild(node);
- return node;
- }
-
- protected String formatExternDate(Date date) {
- if (date == null)
- return "";
- String f = DATE_FORMAT;
- SimpleDateFormat format = new SimpleDateFormat(f, Locale.ENGLISH);
- return format.format(date);
- }
-
- public boolean canReadCategory(Node node) {
- return node.getNodeName().equals(getCategoryTagName());
- }
-
- public void readCategory(Node node, TaskList taskList) throws TaskExternalizationException {
- boolean hasCaughtException = false;
- Element element = (Element) node;
-
- AbstractTaskContainer category;
- if (element.hasAttribute(KEY_NAME)) {
- category = new TaskCategory(element.getAttribute(KEY_NAME), taskList);
- taskList.internalAddCategory(category);
- } else {
- // LEGACY: registry categories did not have names
- category = taskList.getArchiveContainer();
- }
-
- NodeList list = node.getChildNodes();
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- boolean read = false;
- try {
- for (ITaskListExternalizer externalizer : delegateExternalizers) {
- // LEGACY: categories used to contain tasks
- if (externalizer.canReadTask(child)) {
- externalizer.readTask(child, taskList, category, null);
- read = true;
- }
- }
- if (!read && canReadTask(child)) {
- category.add(readTask(child, taskList, category, null));
- }
- } catch (Throwable t) {
- hasCaughtException = true;
- }
- }
- if (hasCaughtException) {
- throw new TaskExternalizationException("Failed to load all tasks");
- }
- }
-
- public boolean canReadTask(Node node) {
- return node.getNodeName().equals(getTaskTagName());
- }
-
- 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 task");
- }
- if (element.hasAttribute(KEY_LABEL)) {
- label = element.getAttribute(KEY_LABEL);
- } else {
- label = "Description was corrupted in stored tasklist";
- }
-
- Task task = new Task(handle, label, false);
- readTaskInfo(task, taskList, element, parent, category);
- return task;
- }
-
- protected void readTaskInfo(ITask task, TaskList taskList, Element element, ITask parent,
- AbstractTaskContainer legacyCategory) throws TaskExternalizationException {
-
- String categoryHandle = null;
- if (element.hasAttribute(KEY_CATEGORY)) {
- categoryHandle = element.getAttribute(KEY_CATEGORY);
- AbstractTaskContainer category = null;
- if (categoryHandle != null) {
- category = taskList.getContainerForHandle(categoryHandle);
- }
-
- if (category != null) {
- // if (category.equals(VAL_ROOT)) {
- // taskList.internalAddRootTask(task);
- // } else {
- taskList.internalAddTask(task, category);
- // }
- } else if (parent == null) {
- taskList.internalAddRootTask(task);
- }
- } else if (legacyCategory != null && !(legacyCategory instanceof TaskArchive)) { // &&
- // !legacyCategory.getHandleIdentifier().equals(TaskList.LABEL_ARCHIVE))
- // {
- task.setContainer(legacyCategory);
- legacyCategory.add(task);
- } else if (legacyCategory == null && parent == null) {
- if (task instanceof AbstractRepositoryTask) {
- taskList.internalAddTask(task, taskList.getArchiveContainer());
- } else {
- taskList.internalAddRootTask(task);
- }
- } else if (parent != null) {
- task.setParent(parent);
- } else {
- taskList.internalAddTask(task, taskList.getArchiveContainer());
- }
- if (element.hasAttribute(KEY_PRIORITY)) {
- task.setPriority(element.getAttribute(KEY_PRIORITY));
- } else {
- task.setPriority(DEFAULT_PRIORITY);
- }
-
- if (element.hasAttribute(KEY_KIND)) {
- task.setKind(element.getAttribute(KEY_KIND));
- }
-
- if (element.getAttribute(KEY_ACTIVE).compareTo(VAL_TRUE) == 0) {
- task.setActive(true);
- taskList.setActive(task, true);
- } else {
- task.setActive(false);
- }
- if (element.hasAttribute(KEY_ISSUEURL)) {
- task.setUrl(element.getAttribute(KEY_ISSUEURL));
- } else {
- task.setUrl("");
- }
- if (element.hasAttribute(KEY_NOTES)) {
- task.setNotes(element.getAttribute(KEY_NOTES));
- } else {
- task.setNotes("");
- }
-
- if (element.hasAttribute(KEY_TIME_ESTIMATED)) {
- String est = element.getAttribute(KEY_TIME_ESTIMATED);
- try {
- int estimate = Integer.parseInt(est);
- task.setEstimatedTimeHours(estimate);
- } catch (Exception e) {
- task.setEstimatedTimeHours(0);
- }
- } else {
- task.setEstimatedTimeHours(0);
- }
- // NOTE: do not change the order of complete and end date!!
- if (element.getAttribute(KEY_COMPLETE).compareTo(VAL_TRUE) == 0) {
- task.setCompleted(true);
- } else {
- task.setCompleted(false);
- }
- if (element.hasAttribute(KEY_DATE_END)) {
- task.setCompletionDate(getDateFromString(element.getAttribute(KEY_DATE_END)));
- } else {
- task.setCompletionDate(null);
- }
- if (element.hasAttribute(KEY_DATE_CREATION)) {
- task.setCreationDate(getDateFromString(element.getAttribute(KEY_DATE_CREATION)));
- } else {
- task.setCreationDate(Calendar.getInstance().getTime());
- }
- if (element.hasAttribute(KEY_DATE_REMINDER)) {
- task.setReminderDate(getDateFromString(element.getAttribute(KEY_DATE_REMINDER)));
- } else {
- task.setReminderDate(null);
- }
- if (element.hasAttribute(KEY_REMINDED) && element.getAttribute(KEY_REMINDED).compareTo(VAL_TRUE) == 0) {
- task.setReminded(true);
- } else {
- task.setReminded(false);
- }
-
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask abstractTask = (AbstractRepositoryTask) task;
- abstractTask.setCurrentlySynchronizing(false);
- if (element.hasAttribute(KEY_LAST_MOD_DATE) && !element.getAttribute(KEY_LAST_MOD_DATE).equals("")) {
- abstractTask.setLastSyncDateStamp(element.getAttribute(KEY_LAST_MOD_DATE));
- }
-
- if (VAL_TRUE.equals(element.getAttribute(KEY_DIRTY))) {
- abstractTask.setDirty(true);
- } else {
- abstractTask.setDirty(false);
- }
-
- if (VAL_TRUE.equals(element.getAttribute(KEY_NOTIFIED_INCOMING))) {
- abstractTask.setNotified(true);
- } else {
- abstractTask.setNotified(false);
- }
-
- try {
- readTaskData(abstractTask);
- } catch (Exception e) {
- MylarStatusHandler.log(e, "Failed to read bug report");
- }
-
- if (element.hasAttribute(KEY_SYNC_STATE)) {
- String syncState = element.getAttribute(KEY_SYNC_STATE);
- if (syncState.compareTo(RepositoryTaskSyncState.SYNCHRONIZED.toString()) == 0) {
- abstractTask.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
- } else if (syncState.compareTo(RepositoryTaskSyncState.INCOMING.toString()) == 0) {
- abstractTask.setSyncState(RepositoryTaskSyncState.INCOMING);
- } else if (syncState.compareTo(RepositoryTaskSyncState.OUTGOING.toString()) == 0) {
- abstractTask.setSyncState(RepositoryTaskSyncState.OUTGOING);
- } else if (syncState.compareTo(RepositoryTaskSyncState.CONFLICT.toString()) == 0) {
- abstractTask.setSyncState(RepositoryTaskSyncState.CONFLICT);
- }
- }
- }
-
- NodeList list = element.getChildNodes();
- for (int j = 0; j < list.getLength(); j++) {
- Node child = list.item(j);
- task.addSubTask(readTask(child, taskList, null, task));
- }
- }
-
- // TODO pull up implementation from BugzillaTaskExternalizer and TracTaskExternalizer
- protected void readTaskData(AbstractRepositoryTask task) {
- }
-
- protected Date getDateFromString(String dateString) {
- Date date = null;
- if ("".equals(dateString))
- return null;
- String formatString = DATE_FORMAT;
- SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH);
- try {
- date = format.parse(dateString);
- } catch (ParseException e) {
- MylarStatusHandler.fail(e, "Could not parse end date", false);
- }
- return date;
- }
-
- public String getCategoryTagName() {
- return KEY_TASK_CATEGORY;
- }
-
- public String getTaskTagName() {
- return KEY_TASK;
- }
-
- public boolean canCreateElementFor(AbstractRepositoryQuery query) {
- return true;
- }
-
- public Element createQueryElement(AbstractRepositoryQuery query, Document doc, Element parent) {
- String queryTagName = getQueryTagNameForElement(query);
- Element node = doc.createElement(queryTagName);
- node.setAttribute(KEY_NAME, query.getDescription());
- node.setAttribute(KEY_QUERY_MAX_HITS, query.getMaxHits() + "");
- node.setAttribute(KEY_QUERY_STRING, query.getUrl());
- node.setAttribute(KEY_REPOSITORY_URL, query.getRepositoryUrl());
- if (query.getLastRefreshTimeStamp() != null) {
- node.setAttribute(KEY_LAST_REFRESH, query.getLastRefreshTimeStamp());
- }
- for (AbstractQueryHit hit : query.getHits()) {
- try {
- Element element = null;
- for (ITaskListExternalizer externalizer : delegateExternalizers) {
- if (externalizer.canCreateElementFor(hit))
- element = externalizer.createQueryHitElement(hit, doc, node);
- }
- if (element == null)
- createQueryHitElement(hit, doc, node);
- } catch (Exception e) {
- MylarStatusHandler.log(e, e.getMessage());
- }
- }
- parent.appendChild(node);
- return node;
- }
-
- public boolean canReadQuery(Node node) {
- return false;
- }
-
- public AbstractRepositoryQuery readQuery(Node node, TaskList tlist) throws TaskExternalizationException {
- // doesn't know how to read any queries
- return null;
- }
-
- public String getQueryTagNameForElement(AbstractRepositoryQuery query) {
- return KEY_QUERY;
- }
-
- public String getQueryHitTagName() {
- return KEY_QUERY_HIT;
- }
-
- public boolean canCreateElementFor(AbstractQueryHit queryHit) {
- return true;
- }
-
- public Element createQueryHitElement(AbstractQueryHit queryHit, Document doc, Element parent) {
- Element node = doc.createElement(getQueryHitTagName());
- node.setAttribute(KEY_NAME, queryHit.getDescription());
- node.setAttribute(KEY_HANDLE, queryHit.getHandleIdentifier());
- node.setAttribute(KEY_PRIORITY, queryHit.getPriority());
- if (queryHit.isCompleted()) {
- node.setAttribute(KEY_COMPLETE, VAL_TRUE);
- } else {
- node.setAttribute(KEY_COMPLETE, VAL_FALSE);
- }
- if (queryHit.isNotified()) {
- node.setAttribute(KEY_NOTIFIED_INCOMING, VAL_TRUE);
- } else {
- node.setAttribute(KEY_NOTIFIED_INCOMING, VAL_FALSE);
- }
- parent.appendChild(node);
- return null;
- }
-
- public boolean canReadQueryHit(Node node) {
- return false;
- }
-
- public void readQueryHit(Node node, TaskList tlist, AbstractRepositoryQuery query)
- throws TaskExternalizationException {
- // doesn't know how to read a query hit
- }
-
- public void readQueryHitInfo(AbstractQueryHit hit, TaskList taskList, AbstractRepositoryQuery query, Element element)
- throws TaskExternalizationException {
- if (element.hasAttribute(KEY_NAME)) {
- hit.setDescription(element.getAttribute(KEY_NAME));
- }
- if (element.hasAttribute(KEY_PRIORITY)) {
- hit.setPriority(element.getAttribute(KEY_PRIORITY));
- }
-
- if (element.hasAttribute(KEY_NOTIFIED_INCOMING)
- && element.getAttribute(KEY_NOTIFIED_INCOMING).compareTo(VAL_TRUE) == 0) {
- hit.setNotified(true);
- } else {
- hit.setNotified(false);
- }
-
- ITask correspondingTask = taskList.getTask(hit.getHandleIdentifier());
- if (correspondingTask instanceof AbstractRepositoryTask) {
- hit.setCorrespondingTask((AbstractRepositoryTask) correspondingTask);
- }
-
- query.addHit(hit, taskList);
- }
-
- public List<ITaskListExternalizer> getDelegateExternalizers() {
- return delegateExternalizers;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IAttachmentHandler.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IAttachmentHandler.java
deleted file mode 100644
index d3e45c63a..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IAttachmentHandler.java
+++ /dev/null
@@ -1,40 +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.tasks.core;
-
-import java.io.File;
-import java.net.Proxy;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public interface IAttachmentHandler {
-
- public void uploadAttachment(TaskRepository repository, AbstractRepositoryTask task, String comment,
- String description, File file, String contentType, boolean isPatch, Proxy proxySettings) throws CoreException;
-
- public void downloadAttachment(TaskRepository taskRepository, AbstractRepositoryTask task,
- RepositoryAttachment attachment, File file, Proxy proxySettings) throws CoreException;
-
- public boolean canUploadAttachment(TaskRepository repository, AbstractRepositoryTask task);
-
- public boolean canDownloadAttachment(TaskRepository repository, AbstractRepositoryTask task);
-
- public boolean canDeprecate(TaskRepository repository, RepositoryAttachment attachment);
-
- /** To deprecate, change the attribute on the RepositoryAttachment and pass to this method */
- public void updateAttachment(TaskRepository repository, RepositoryAttachment attachment) throws CoreException;
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IOfflineTaskHandler.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IOfflineTaskHandler.java
deleted file mode 100644
index 9582cc139..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IOfflineTaskHandler.java
+++ /dev/null
@@ -1,43 +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.tasks.core;
-
-import java.io.UnsupportedEncodingException;
-import java.net.Proxy;
-import java.util.Date;
-import java.util.Set;
-
-import javax.security.auth.login.LoginException;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public interface IOfflineTaskHandler {
-
- /**
- * @return null if date cannot be parsed
- */
- public Date getDateForAttributeType(String attributeKey, String dateString);
-
- public AbstractAttributeFactory getAttributeFactory();
-
- public RepositoryTaskData downloadTaskData(AbstractRepositoryTask repositoryTask, TaskRepository repository, Proxy proxySettings) throws CoreException, LoginException;
-
- /**
- * returns all tasks if date is null or an error occurs
- */
- public abstract Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository,
- Set<AbstractRepositoryTask> tasks, Proxy proxySettings) throws CoreException, UnsupportedEncodingException;
- }
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryConstants.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryConstants.java
deleted file mode 100644
index ba6228360..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/IRepositoryConstants.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.core;
-
-/**
- * @author Mik Kersten
- */
-public interface IRepositoryConstants {
-
- public static final String OLD_PROPERTY_SYNCTIME = "synctime";
-
- public static final String PROPERTY_SYNCTIMESTAMP = "lastsynctimestamp";
-
- public static final String PROPERTY_TIMEZONE = "timezone";
-
- public static final String PROPERTY_ENCODING = "encoding";
-
- public static final String PROPERTY_VERSION = "version";
-
- public static final String PROPERTY_KIND = "kind";
-
- public static final String PROPERTY_URL = "url";
-
- public static final String PROPERTY_LABEL = "label";
-
- public static final String PROPERTY_DELIM = ":";
-
-// public static final String PROPERTY_MIGRATION060 = "migration060";
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java
deleted file mode 100644
index 31906424c..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITask.java
+++ /dev/null
@@ -1,99 +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
- *******************************************************************************/
-/*
- * Created on Jan 13, 2005
- */
-package org.eclipse.mylar.tasks.core;
-
-import java.util.Date;
-import java.util.Set;
-
-/**
- * @author Mik Kersten
- */
-public interface ITask extends ITaskListElement {
-
- public abstract String getHandleIdentifier();
-
- public abstract ITask getParent();
-
- public abstract void setParent(ITask parent);
-
- public abstract boolean isActive();
-
- public abstract void setActive(boolean active);
-
-// abstract void setDescription(String description);
-
- public String getTaskType();
-
- public void setKind(String kind);
-
- public abstract boolean isCompleted();
-
- public abstract void setCompleted(boolean completed);
-
- public abstract boolean hasValidUrl();
-
- public abstract void setUrl(String url);
-
- public abstract String getUrl();
-
- public abstract String getNotes();
-
- public abstract void setNotes(String notes);
-
- /**
- * TODO: change to millis
- */
- public abstract int getEstimateTimeHours();
-
- public abstract void setEstimatedTimeHours(int estimated);
-
- public abstract Set<ITask> getChildren();
-
- public abstract void addSubTask(ITask task);
-
- public abstract void removeSubTask(ITask task);
-
- public abstract void setPriority(String priority);
-
- public abstract void setContainer(AbstractTaskContainer category);
-
- /**
- * @return null if root task
- */
- public abstract AbstractTaskContainer getContainer();
-
- public abstract Date getCompletionDate();
-
- public abstract void setCompletionDate(Date date);
-
- public abstract Date getCreationDate();
-
- public abstract void setCreationDate(Date date);
-
- public abstract void setReminderDate(Date date);
-
- public abstract Date getReminderDate();
-
- /**
- * TODO: move
- */
- public abstract boolean hasBeenReminded();
-
- /**
- * TODO: move
- */
- public abstract void setReminded(boolean reminded);
-
- public abstract boolean isPastReminder();
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java
deleted file mode 100644
index e3907574f..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListChangeListener.java
+++ /dev/null
@@ -1,43 +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.tasks.core;
-
-
-/**
- * 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.core/src/org/eclipse/mylyn/tasks/core/ITaskListElement.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListElement.java
deleted file mode 100644
index 6dadf126c..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListElement.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.tasks.core;
-
-
-/**
- * @author Mik Kersten
- */
-public interface ITaskListElement {
-
- public abstract String getPriority();
-
- public abstract String getDescription();
-
-// public abstract void setDescription(String description);
-
- public abstract String getHandleIdentifier();
-
- public abstract void setHandleIdentifier(String id);
-
- /**
- * TODO: refactor to use repository kinds?
- */
-// public abstract boolean isLocal();
-
-}
-
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java
deleted file mode 100644
index 815b15e95..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/ITaskListExternalizer.java
+++ /dev/null
@@ -1,74 +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.tasks.core;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * Used to externalize things like tasks and bug reports along with the task
- * list so that information about them can be persisted across invocations.
- *
- * @author Mik Kersten
- * @author Ken Sueda
- *
- * TODO: consider merging tasks and categories
- */
-public interface ITaskListExternalizer {
-
- public abstract String getCategoryTagName();
-
- public abstract String getTaskTagName();
-
- public abstract String getQueryTagNameForElement(AbstractRepositoryQuery query);
-
- public abstract String getQueryHitTagName();
-
- /**
- * @return the element that was created, null if failed
- */
- public abstract Element createCategoryElement(AbstractTaskContainer category, Document doc, Element parent);
-
- public abstract boolean canCreateElementFor(ITask task);
-
- /**
- * @return the element that was created, null if failed
- */
- public abstract Element createTaskElement(ITask task, Document doc, Element parent);
-
- public abstract boolean canReadCategory(Node node);
-
- public abstract void readCategory(Node node, TaskList tlist) throws TaskExternalizationException;
-
- public abstract boolean canReadTask(Node node);
-
- public abstract ITask readTask(Node node, TaskList tlist, AbstractTaskContainer category, ITask parent)
- throws TaskExternalizationException;
-
- public abstract boolean canCreateElementFor(AbstractRepositoryQuery category);
-
- public abstract Element createQueryElement(AbstractRepositoryQuery query, Document doc, Element parent);
-
- public abstract boolean canReadQuery(Node node);
-
- public abstract AbstractRepositoryQuery readQuery(Node node, TaskList tlist) throws TaskExternalizationException;
-
- public abstract boolean canCreateElementFor(AbstractQueryHit queryHit);
-
- public abstract Element createQueryHitElement(AbstractQueryHit queryHit, Document doc, Element parent);
-
- public abstract boolean canReadQueryHit(Node node);
-
- public abstract void readQueryHit(Node node, TaskList tlist, AbstractRepositoryQuery query)
- throws TaskExternalizationException;
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java
deleted file mode 100644
index e94f48da4..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/QueryHitCollector.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * 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.tasks.core;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-
-/**
- * Collects QueryHits resulting from repository search
- *
- * @author Shawn Minto
- * @author Rob Elves (generalized from bugzilla)
- */
-public class QueryHitCollector {
-
- private List<AbstractQueryHit> results = new ArrayList<AbstractQueryHit>();
-
- /** The progress monitor for the search operation */
- private IProgressMonitor monitor = new NullProgressMonitor();
-
- /** The number of matches found */
- private int matchCount;
-
- /** The string to display to the user while querying */
- private static final String STARTING = "querying the server";
-
- /** The string to display to the user when we have 1 match */
- private static final String MATCH = "1 match";
-
- /** The string to display to the user when we have multiple or no matches */
- private static final String MATCHES = "{0} matches";
-
- /** The string to display to the user when the query is done */
- private static final String DONE = "done";
-
- private TaskList taskList;
-
- public QueryHitCollector(TaskList tasklist) {
- this.taskList = tasklist;
- }
-
- public void aboutToStart(int startMatchCount) throws CoreException {
- results.clear();
- matchCount = startMatchCount;
- monitor.setTaskName(STARTING);
- }
-
- public void accept(AbstractQueryHit hit) throws CoreException {
-
- ITask correspondingTask = taskList.getTask(hit.getHandleIdentifier());
- if (correspondingTask instanceof AbstractRepositoryTask) {
- hit.setCorrespondingTask((AbstractRepositoryTask) correspondingTask);
- }
-
- addMatch(hit);
- matchCount++;
-
- if (!getProgressMonitor().isCanceled()) {
- // if the operation is canceled finish with whatever data was
- // already found
- getProgressMonitor().subTask(getFormattedMatchesString(matchCount));
- getProgressMonitor().worked(1);
- }
- }
-
- public void done() {
- if (monitor != null && !monitor.isCanceled()) {
- // if the operation is cancelled, finish with the data that we
- // already have
- String matchesString = getFormattedMatchesString(matchCount);
- monitor.setTaskName(MessageFormat.format(DONE, new Object[] { matchesString }));
- monitor.done();
- }
-
- // Cut no longer used references because the collector might be re-used
- monitor = null;
- }
-
- protected String getFormattedMatchesString(int count) {
- if (count == 1) {
- return MATCH;
- }
- Object[] messageFormatArgs = { new Integer(count) };
- return MessageFormat.format(MATCHES, messageFormatArgs);
- }
-
- public IProgressMonitor getProgressMonitor() {
- return monitor;
- }
-
- public void setProgressMonitor(IProgressMonitor monitor) {
- this.monitor = monitor;
- }
-
- public void addMatch(AbstractQueryHit hit) {
- results.add(hit);
- }
-
- public List<AbstractQueryHit> getHits() {
- return results;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryAttachment.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryAttachment.java
deleted file mode 100644
index fe4da0faa..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryAttachment.java
+++ /dev/null
@@ -1,107 +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.tasks.core;
-
-import java.io.Serializable;
-
-
-/**
- * @author Rob Elves
- */
-public class RepositoryAttachment extends AttributeContainer implements Serializable {
-
- public RepositoryAttachment(AbstractAttributeFactory attributeFactory) {
- super(attributeFactory);
- }
-
- private static final long serialVersionUID = -9123545810321250785L;
-
- // /** Parser for dates in the report */
- // // TODO: this is repository specific so need to pull out
- // private static SimpleDateFormat creation_ts_date_format = new
- // SimpleDateFormat("yyyy-MM-dd HH:mm");
-
- private boolean isObsolete = false;
-
- // private Date created;
-
- private String creator = "";
-
- private boolean isPatch = false;
-
- public boolean isObsolete() {
- return isObsolete;
- }
-
- public void setObsolete(boolean isObsolete) {
- this.isObsolete = isObsolete;
- }
-
- /**
- * Get the time that this attachment was posted
- *
- * @return The attachment's creation timestamp
- */
- public String getDateCreated() {
- return getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_DATE);
- // if (created == null) {
- // // created = Calendar.getInstance().getTime();
- // try {
- // created =
- // creation_ts_date_format.parse(getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_DATE));
- // } catch (Exception e) {
- // }
- // }
- // return created;
- }
-
- public String getCreator() {
- return creator;
- }
-
- public void setCreator(String creator) {
- this.creator = creator;
- }
-
- public String getDescription() {
- return getAttributeValue(RepositoryTaskAttribute.DESCRIPTION);
- }
-
- public int getId() {
- try {
- return Integer.parseInt(getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_ID));
- } catch (NumberFormatException e) {
- return -1;
- }
- }
-
- public String getUrl() {
- return getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_URL);
- }
-
- public String getContentType() {
- // I've seen both "ctype" and "type" occur for this, investigate
- if (getAttribute(RepositoryTaskAttribute.ATTACHMENT_TYPE) != null) {
- return getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_TYPE);
- } else {
- return getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_CTYPE);
- }
- }
-
- public boolean isPatch() {
- return isPatch;
- }
-
- public void setPatch(boolean b) {
- isPatch = b;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskAttribute.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskAttribute.java
deleted file mode 100644
index 240544785..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskAttribute.java
+++ /dev/null
@@ -1,216 +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.tasks.core;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Class representing a report attribute
- *
- * @author Rob Elves
- */
-public class RepositoryTaskAttribute implements Serializable {
-
- private static final long serialVersionUID = 6959987055086133307L;
-
- public static final String USER_OWNER = "task.common.user.owner";
-
- public static final String USER_CC = "task.common.user.cc";
-
- public static final String COMMENT_TEXT = "task.common.comment.text";
-
- public static final String COMMENT_DATE = "task.common.comment.date";
-
- public static final String DESCRIPTION = "task.common.description";
-
- public static final String ATTACHMENT_ID = "task.common.attachment.id";
-
- public static final String ATTACHMENT_TYPE = "task.common.attachment.type";
-
- public static final String ATTACHMENT_CTYPE = "task.common.attachment.ctype";
-
- public static final String ATTACHMENT_DATE = "task.common.attachment.date";
-
- public static final String ATTACHMENT_URL = "task.common.attachment.url";
-
- public static final String ATTACHMENT_FILENAME = "filename";
-
- public static final String USER_ASSIGNED = "task.common.user.assigned";
-
- public static final String RESOLUTION = "task.common.resolution";
-
- public static final String STATUS = "task.common.status";
-
- public static final String PRIORITY = "task.common.priority";
-
- public static final String DATE_MODIFIED = "task.common.date.modified";
-
- public static final String USER_REPORTER = "task.common.user.reporter";
-
- public static final String SUMMARY = "task.common.summary";
-
- public static final String PRODUCT = "task.common.product";
-
- public static final String DATE_CREATION = "task.common.date.created";
-
- public static final String KEYWORDS = "task.common.keywords";
-
- public static final String ADD_SELF_CC = "task.common.addselfcc";
-
- private boolean hidden = false;
-
- private boolean isReadOnly = false;
-
- /** Attribute pretty printing name */
- private String name;
-
- /** Name of the option used when updating the attribute on the server */
- private String key;
-
- /** Legal values of the attribute */
- private LinkedHashMap<String, String> optionValues;
-
- /**
- * Attribute's values (selected or added)
- */
- private List<String> values = new ArrayList<String>();
-
-// public RepositoryTaskAttribute(String key, ) {
-// this(element.toString(), element.isHidden());
-// setID(element.getKeyString());
-// setReadOnly(element.isReadOnly());
-// }
-
- public RepositoryTaskAttribute(String key, String name, boolean hidden) {
- this.key = key;
- this.name = name;
- this.hidden = hidden;
- optionValues = new LinkedHashMap<String, String>();
- }
-
- public String getName() {
- return name;
- }
-
- public String getID() {
- return key;
- }
-
- public boolean isReadOnly() {
- return isReadOnly ;
- }
-
- public void setReadOnly(boolean readonly) {
- this.isReadOnly = readonly;
- }
-
- public Map<String, String> getOptionValues() {
- return optionValues;
- }
-
- public String getValue() {
- if (values.size() > 0) {
- return values.get(0);
- } else {
- return "";
- }
- }
-
- public List<String> getValues() {
- return values;
- }
-
- public void setValue(String value) {
- if(values.size() > 0) {
- values.set(0, value);
- } else {
- values.add(value);
- }
- }
-
- public void setValues(List<String> values) {
- values.clear();
- values.addAll(values);
- }
-
- public void addValue(String value) {
- values.add(value);
- }
-
- public void removeValue(String value) {
- if (values.contains(value)) {
- values.remove(values.indexOf(value));
- }
- }
-
- public void clearValues() {
- values.clear();
- }
-
-// /**
-// * Sets the name of the option used when updating the attribute on the
-// * server
-// *
-// * @param parameterName
-// * The name of the option when updating from the server
-// */
-// public void setID(String parameterName) {
-// this.id = parameterName;
-// }
-
- /**
- * Adds an attribute option value
- *
- * @param readableValue
- * The value displayed on the screen
- * @param parameterValue
- * The option value used when sending the form to the server
- */
- public void addOptionValue(String readableValue, String parameterValue) {
- optionValues.put(readableValue, parameterValue);
- }
-
- /**
- * Determine if the field was hidden or not
- *
- * @return True if the field was hidden
- */
- public boolean isHidden() {
- return hidden;
- }
-
- /**
- * Set whether the field was hidden in the bug
- *
- * @param b
- * Whether the field was hidden or not
- */
- public void setHidden(boolean b) {
- hidden = b;
- }
-
- public String toString() {
- return getValue();
- }
-
- public boolean hasOptions() {
- return optionValues.size() > 0;
- }
-
- public void clearOptions() {
- optionValues.clear();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskData.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskData.java
deleted file mode 100644
index 0eab892cc..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTaskData.java
+++ /dev/null
@@ -1,368 +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.tasks.core;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class RepositoryTaskData extends AttributeContainer implements Serializable {
-
- private static final long serialVersionUID = 2746931358107812373L;
-
- public static final String VAL_STATUS_NEW = "NEW";
-
- private String reportID;
-
- private boolean hasChanges = false;
-
- private String repositoryURL;
-
- protected String newComment = "";
-
- private List<TaskComment> taskComments = new ArrayList<TaskComment>();
-
- private List<RepositoryAttachment> attachments = new ArrayList<RepositoryAttachment>();
-
-
- /** 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 String charset = null;
-
- /** The repositoryOperations that can be done on the report */
- protected List<RepositoryOperation> repositoryOperations = new ArrayList<RepositoryOperation>();
-
- // private static final RepositoryTaskAttributeFactory attributeFactory =
- // new BugzillaAttributeFactory();
-
- // /** 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;
-
- /** Description of the bug */
- protected String description;
-
- /** Creation timestamp */
- protected Date created;
-
- /** Modification timestamp */
- protected Date lastModified = null;
-
- protected String repositoryKind;
-
- public RepositoryTaskData(AbstractAttributeFactory factory, String repositoryKind, String repositoryURL, String id) {
- super(factory);
- this.reportID = id;
- this.repositoryKind = repositoryKind;
- this.repositoryURL = 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 String getLabel() {
- return getSummary();
- }
-
- /**
- * Get the resolution of the bug
- *
- * @return The resolution of the bug
- */
- public String getResolution() {
- return getAttributeValue(RepositoryTaskAttribute.RESOLUTION);
- }
-
- /**
- * Get the status of the bug
- *
- * @return The bugs status
- */
- public String getStatus() {
- return getAttributeValue(RepositoryTaskAttribute.STATUS);
- }
-
- public String getLastModified() {
- return getAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED);
- }
-
- public void setSelectedOperation(RepositoryOperation o) {
- selectedOperation = o;
- }
-
- public RepositoryOperation getSelectedOperation() {
- return selectedOperation;
- }
-
- /**
- * 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(RepositoryTaskAttribute.USER_REPORTER);
- // return
- // getAttributeValue(BugzillaReportElement.REPORTER.getKeyString());
- }
-
- /**
- * 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 the summary for the bug
- *
- * @return The bugs summary
- */
- public String getSummary() {
- return getAttributeValue(RepositoryTaskAttribute.SUMMARY);
- // return
- // getAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString());
- }
-
- public void setSummary(String summary) {
- throw new NullPointerException("not impelmented");
- // setAttributeValue(RepositoryTaskAttribute.SHORT_DESC, summary);
- // setAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString(),
- // summary);
- }
-
- public String getProduct() {
- return getAttributeValue(RepositoryTaskAttribute.PRODUCT);
- // return
- // getAttributeValue(BugzillaReportElement.PRODUCT.getKeyString());
- }
-
- public boolean isLocallyCreated() {
- return false;
- }
-
-// public boolean isResolved() {
-// return isResolvedStatus(getStatus());
-// }
-
- /**
- * Get the date that the bug was created
- *
- * @return The bugs creation date
- */
- public String getCreated() {
- return getAttributeValue(RepositoryTaskAttribute.DATE_CREATION);
- }
-
- /**
- * 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(RepositoryTaskAttribute.KEYWORDS), ",", false);
- List<String> keywords = new ArrayList<String>();
- while (st.hasMoreTokens()) {
- String s = st.nextToken().trim();
- keywords.add(s);
- }
-
- return keywords;
- }
-
- /**
- * Add an operation to the bug
- *
- * @param o
- * The operation to add
- */
- public void addOperation(RepositoryOperation o) {
- repositoryOperations.add(o);
- }
-
- public List<String> getCC() {
- return getAttributeValues(RepositoryTaskAttribute.USER_CC);
- // return getAttributeValues(BugzillaReportElement.CC.getKeyString());
- }
-
- public void removeCC(String email) {
- removeAttributeValue(RepositoryTaskAttribute.USER_CC, email);
- // removeAttributeValue(BugzillaReportElement.CC.getKeyString(), email);
- }
-
- public String getAssignedTo() {
- return getAttributeValue(RepositoryTaskAttribute.USER_ASSIGNED);
- // return getAttributeValue(BugzillaReportElement.ASSIGNED_TO);
- }
-
- /**
- * Get the new comment that is to be added to the bug
- */
- public String getNewComment() {
- return newComment;
- }
-
- /**
- * Set the new comment that will be added to the bug
- */
- public void setNewComment(String newComment) {
- this.newComment = newComment;
- }
-
- public void addComment(TaskComment taskComment) {
- TaskComment preceding = null;
- if (taskComments.size() > 0) {
- // if there are some comments, get the last comment and set the next
- // value to be the new comment
- preceding = taskComments.get(taskComments.size() - 1);
- preceding.setNext(taskComment);
- }
- taskComment.setPrevious(preceding);
- taskComments.add(taskComment);
- }
-
- public List<TaskComment> getComments() {
- return taskComments;
- }
-
- public void setDescription(String description) {
- RepositoryTaskAttribute attribute = getDescriptionAttribute();
- if(attribute != null) {
- attribute.setValue(description);
- }
- }
-
- public String getDescription() {
- RepositoryTaskAttribute attribute = getDescriptionAttribute();
- return (attribute != null) ? attribute.getValue() : "";
- }
-
- public RepositoryTaskAttribute getDescriptionAttribute() {
- RepositoryTaskAttribute attribute = getAttribute(RepositoryTaskAttribute.DESCRIPTION);
- if (attribute != null) {
- return attribute;
- } else {
- List<TaskComment> coms = this.getComments();
- if (coms != null && coms.size() > 0) {
- return coms.get(0).getAttribute(RepositoryTaskAttribute.COMMENT_TEXT);
- }
- }
- return null;
- }
-
- public void addAttachment(RepositoryAttachment attachment) {
- attachments.add(attachment);
- }
-
- public List<RepositoryAttachment> getAttachments() {
- return attachments;
- }
-
- public String getId() {
- return reportID;
- }
-
- /**
- * @return the server for this report
- */
- public String getRepositoryUrl() {
- return repositoryURL;
- }
-
- public boolean hasLocalChanges() {
- return hasChanges;
- }
-
- public void setHasLocalChanges(boolean b) {
- hasChanges = b;
- }
-
- public List<String> getAttributeValues(String key) {
- RepositoryTaskAttribute attribute = getAttribute(key);
- if (attribute != null) {
- return attribute.getValues();
- }
- return new ArrayList<String>();
- }
-
- public void removeAttributeValue(String key, String value) {
- RepositoryTaskAttribute attrib = getAttribute(key);
- if (attrib != null) {
- attrib.removeValue(value);
- }
- }
-
- public String getRepositoryKind() {
- return repositoryKind;
- }
-
- @Override
- public void setAttributeFactory(AbstractAttributeFactory factory) {
- super.setAttributeFactory(factory);
- for (TaskComment taskComment : taskComments) {
- taskComment.setAttributeFactory(factory);
- }
- for (RepositoryAttachment attachment : attachments) {
- attachment.setAttributeFactory(factory);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTemplate.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTemplate.java
deleted file mode 100644
index 07023398b..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/RepositoryTemplate.java
+++ /dev/null
@@ -1,63 +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.tasks.core;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Eugene Kuleshov
- * @author Steffen Pingel
- */
-public class RepositoryTemplate {
-
- public final Map<String, String> genericAttributes = new HashMap<String, String>();
-
- public final String label;
-
- public final String repositoryUrl;
-
- public final String newTaskUrl;
-
- public final String taskPrefixUrl;
-
- public final String taskQueryUrl;
-
- public final String newAccountUrl;
-
- public final boolean anonymous;
-
- public final String version;
-
- public final boolean addAutomatically;
-
- public RepositoryTemplate(String label, String repositoryUrl, String version, String newTaskUrl, String taskPrefix,
- String taskQuery, String newAccountUrl, boolean anonymous, boolean addAutomatically) {
- this.label = label;
- this.repositoryUrl = repositoryUrl;
- this.newTaskUrl = newTaskUrl;
- this.taskPrefixUrl = taskPrefix;
- this.taskQueryUrl = taskQuery;
- this.newAccountUrl = newAccountUrl;
- this.version = version;
- this.anonymous = anonymous;
- this.addAutomatically = addAutomatically;
- }
-
- public void addAttribute(String name, String value) {
- genericAttributes.put(name, value);
- }
-
- public String getAttribute(String name) {
- return genericAttributes.get(name);
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java
deleted file mode 100644
index ec156016b..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/Task.java
+++ /dev/null
@@ -1,371 +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.tasks.core;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-
-/**
- * @author Mik Kersten
- */
-public class Task implements ITask {
-
- private static final String REPOSITORY_KIND_LOCAL = "local";
-
- public enum PriorityLevel {
- P1, P2, P3, P4, P5;
-
- @Override
- public String toString() {
- switch (this) {
- case P1:
- return "P1";
- case P2:
- return "P2";
- case P3:
- return "P3";
- case P4:
- return "P4";
- case P5:
- return "P5";
- default:
- return "P3";
- }
- }
-
- public String getDescription() {
- switch (this) {
- case P1:
- return "Very High";
- case P2:
- return "High";
- case P3:
- return "Normal";
- case P4:
- return "Low";
- case P5:
- return "Very Low";
- default:
- return "";
- }
- }
-
- public static PriorityLevel fromString(String string) {
- if (string == null)
- return null;
- if (string.equals("P1"))
- return P1;
- if (string.equals("P2"))
- return P2;
- if (string.equals("P3"))
- return P3;
- if (string.equals("P4"))
- return P4;
- if (string.equals("P5"))
- return P5;
- return P3;
- }
-
- public static PriorityLevel fromDescription(String string) {
- if (string == null)
- return null;
- if (string.equals("Very High"))
- return P1;
- if (string.equals("High"))
- return P2;
- if (string.equals("Normal"))
- return P3;
- if (string.equals("Low"))
- return P4;
- if (string.equals("Very Low"))
- return P5;
- return null;
- }
-
- }
-
- private boolean active = false;
-
- protected String handle = "-1";
-
- private boolean category = false;
-
- private boolean hasReminded = false;
-
- private String description;
-
- private String priority = PriorityLevel.P3.toString();
-
- private String notes = "";
-
- private int estimatedTimeHours = 1;
-
- private boolean completed;
-
- private String url = "";
-
- private AbstractTaskContainer parentCategory = null;
-
- private long timeActive = 0;
-
- private Date completionDate = null;
-
- private Date creationDate = null;
-
- private Date reminderDate = null;
-
- /**
- * @return null if root
- */
- private transient ITask parent;
-
- private Set<ITask> children = new HashSet<ITask>();
-
- protected String kind;
-
- @Override
- public String toString() {
- return description;
- }
-
- public Task(String handle, String label, boolean newTask) {
- this.handle = handle;
- this.description = label;
- if (newTask) {
- creationDate = new Date();
- }
- }
-
- public String getHandleIdentifier() {
- return handle;
- }
-
- public void setHandleIdentifier(String id) {
- this.handle = id;
- }
-
- public ITask getParent() {
- return parent;
- }
-
- public void setParent(ITask parent) {
- this.parent = parent;
- }
-
- /**
- * Package visible in order to prevent sets that don't update the index.
- */
- public void setActive(boolean active) {
- this.active = active;
- }
-
- public boolean isActive() {
- return active;
- }
-
- public String getToolTipText() {
- return getDescription();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof Task && obj != null) {
- return this.getHandleIdentifier().compareTo(((Task) obj).getHandleIdentifier()) == 0;
- } else {
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- return this.getHandleIdentifier().hashCode();
- }
-
- public boolean isCompleted() {
- return completed;
- }
-
- public void setCompleted(boolean completed) {
- this.completed = completed;
- if (completed) {
- completionDate = new Date();
- } else {
- completionDate = null;
- }
- }
-
- public boolean isCategory() {
- return category;
- }
-
- public void setIsCategory(boolean category) {
- this.category = category;
- }
-
- public String getPriority() {
- return priority;
- }
-
- public void setPriority(String priority) {
- this.priority = priority;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getUrl() {
- return url;
- }
-
- public String getNotes() {
- // TODO: removed check for null once xml updated.
- if (notes == null) {
- notes = "";
- }
- return notes;
- }
-
- public void setNotes(String notes) {
- this.notes = notes;
- }
-
- public long getElapsedTime() {
- return timeActive;
- }
-
- public void setElapsedTime(long elapsedTime) {
- if (elapsedTime >= 0) {
- this.timeActive = elapsedTime;
- } else {
- MylarStatusHandler.log("Attempt to set negative time on task: " + getDescription(), this);
- }
- }
-
- public int getEstimateTimeHours() {
- return estimatedTimeHours;
- }
-
- public void setEstimatedTimeHours(int estimated) {
- this.estimatedTimeHours = estimated;
- }
-
- public Set<ITask> getChildren() {
- return children;
- }
-
- public void addSubTask(ITask t) {
- children.add(t);
- }
-
- public void removeSubTask(ITask t) {
- children.remove(t);
- }
-
- public void setContainer(AbstractTaskContainer cat) {
- this.parentCategory = cat;
- }
-
- public AbstractTaskContainer getContainer() {
- return parentCategory;
- }
-
- public String getDescription() {
- return description;
- }
-
- public boolean isLocal() {
- return true;
- }
-
- public Date getCompletionDate() {
- return completionDate;
- }
-
- public void setReminderDate(Date date) {
- reminderDate = date;
- }
-
- public Date getReminderDate() {
- return reminderDate;
- }
-
- public boolean hasBeenReminded() {
- return hasReminded;
- }
-
- public void setReminded(boolean reminded) {
- this.hasReminded = reminded;
- }
-
- public Date getCreationDate() {
- if (creationDate == null)
- creationDate = new Date();
- return creationDate;
- }
-
- public void setCreationDate(Date date) {
- this.creationDate = date;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void setCompletionDate(Date completionDate) {
- this.completionDate = completionDate;
- }
-
- public boolean isPastReminder() {
- if (reminderDate == null) {
- return false;
- } else {
- Date now = new Date();
- if (reminderDate.compareTo(now) < 0) {
- return true;
- } else {
- return false;
- }
- }
- }
-
- public boolean hasValidUrl() {
- String taskUrl = getUrl();
- if (taskUrl != null && !taskUrl.equals("") && !taskUrl.equals("http://") && !taskUrl.equals("https://")) {
- try {
- new URL(taskUrl);
- return true;
- } catch (MalformedURLException e) {
- return false;
- }
- }
- return false;
- }
-
- public String getRepositoryKind() {
- return REPOSITORY_KIND_LOCAL;
- }
-
- public String getTaskType() {
- return kind;
- }
-
- public void setKind(String kind) {
- this.kind = kind;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java
deleted file mode 100644
index a00571346..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskArchive.java
+++ /dev/null
@@ -1,46 +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.tasks.core;
-
-
-
-/**
- * @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.core/src/org/eclipse/mylyn/tasks/core/TaskComment.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskComment.java
deleted file mode 100644
index 9d9f56a27..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskComment.java
+++ /dev/null
@@ -1,185 +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.tasks.core;
-
-import java.io.Serializable;
-
-/**
- * A comment posted on a bug.
- *
- * @author Rob Elves (revisions for bug 136219)
- */
-public class TaskComment extends AttributeContainer implements Serializable {
-
- private static final long serialVersionUID = -1760372869047050979L;
-
- // /** Parser for dates in the report */
- // public static SimpleDateFormat creation_ts_date_format = new
- // SimpleDateFormat("yyyy-MM-dd HH:mm");
-
- /** Comment's bug */
- private final RepositoryTaskData bug;
-
- /** Comment's number */
- private final int number;
-
- // /** Comment's creation timestamp */
- // private Date created;
-
- /** Preceding comment */
- private TaskComment previous;
-
- /** Following comment */
- private TaskComment next;
-
- private boolean hasAttachment;
-
- private int attachmentId;
-
- public TaskComment(AbstractAttributeFactory attributeFactory, RepositoryTaskData report, int num) {
- super(attributeFactory);
- this.bug = report;
- this.number = num;
- }
-
- /**
- * Get the bug that this comment is associated with
- *
- * @return The bug that this comment is associated with
- */
- public RepositoryTaskData getBug() {
- return bug;
- }
-
- /**
- * Get this comment's number
- *
- * @return This comment's number
- */
- public int getNumber() {
- return number;
- }
-
- /**
- * Get the time that this comment was created
- *
- * @return The comments creation timestamp
- */
- public String getCreated() {
- return getAttributeValue(RepositoryTaskAttribute.COMMENT_DATE);
- // TaskRepository repository =
- // MylarTaskListPlugin.getRepositoryManager().getRepository(bug.getRepositoryKind(),
- // bug.getRepositoryUrl());
- // TimeZone timeZone = TimeZone.getDefault();
- // if(repository != null) {
- // timeZone = TimeZone.getTimeZone(repository.getTimeZoneId());
- // }
- // if (created == null) {
- // created = Calendar.getInstance().getTime();
- // try {
- // creation_ts_date_format.setTimeZone(timeZone);
- // created =
- // creation_ts_date_format.parse(getAttributeValue(RepositoryTaskAttribute.COMMENT_DATE));
- // } catch (Exception e) {
- // // ignore
- // // MylarStatusHandler.log("Comment creation date parse error,
- // // setting to NOW.", Comment.class);
- // }
- // }
- // return created;
- }
-
- /**
- * Get the author of the comment
- *
- * @return The comments author
- */
- public String getAuthor() {
- return getAttributeValue(RepositoryTaskAttribute.USER_OWNER);
- }
-
- /**
- * Get the authors real name
- *
- * @return Returns author's name, or <code>null</code> if not known
- */
- public String getAuthorName() {
- // TODO: Currently we don't get the real name from the xml.
- // Need retrieve these names somehow
- return getAuthor();
- }
-
- /**
- * Get the text contained in the comment
- *
- * @return The comments text
- */
- public String getText() {
- return getAttributeValue(RepositoryTaskAttribute.COMMENT_TEXT);
- }
-
- /**
- * Get the next comment for the bug
- *
- * @return Returns the following comment, or <code>null</code> if the last
- * one.
- */
- public TaskComment getNext() {
- return next;
- }
-
- /**
- * Set the next comment for the bug
- *
- * @param next
- * The comment that is after this one
- */
- protected void setNext(TaskComment next) {
- this.next = next;
- }
-
- /**
- * Get the previous comment
- *
- * @return Returns preceding comment, or <code>null</code> if the first
- * one
- */
- public TaskComment getPrevious() {
- return previous;
- }
-
- /**
- * Seth the previous comment for the bug
- *
- * @param previous
- * The comment that is before this one
- */
- protected void setPrevious(TaskComment previous) {
- this.previous = previous;
- }
-
- public void setHasAttachment(boolean b) {
- this.hasAttachment = b;
- }
-
- public boolean hasAttachment() {
- return hasAttachment;
- }
-
- public void setAttachmentId(int attachmentID) {
- this.attachmentId = attachmentID;
- }
-
- public int getAttachmentId() {
- return attachmentId;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java
deleted file mode 100644
index d032d678a..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskList.java
+++ /dev/null
@@ -1,532 +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.tasks.core;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-
-/**
- * TODO: some asymetry left between query containers and other task containers
- *
- * @author Mik Kersten
- */
-public class TaskList {
-
- public static final String LABEL_ROOT = "Root (automatic)";
-
- private List<ITaskListChangeListener> changeListeners = new ArrayList<ITaskListChangeListener>();
-
- private Map<String, ITask> tasks;
-
- private TaskArchive archiveContainer;
-
- private TaskCategory rootCategory;
-
- private Set<AbstractTaskContainer> categories;
-
- private Set<AbstractRepositoryQuery> queries;
-
- private List<ITask> activeTasks;
-
- public TaskList() {
- reset();
- }
-
- /**
- * Public for testing.
- */
- public void reset() {
- tasks = new HashMap<String, ITask>();
- archiveContainer = new TaskArchive(this);
- rootCategory = new TaskCategory(LABEL_ROOT, this);
- categories = new HashSet<AbstractTaskContainer>();
- queries = new HashSet<AbstractRepositoryQuery>();
- activeTasks = new ArrayList<ITask>();
-
- categories.add(archiveContainer);
- }
-
- public void addTask(ITask task) {
- addTask(task, archiveContainer);
- }
-
- public void addTask(ITask task, AbstractTaskContainer category) {
- tasks.put(task.getHandleIdentifier(), task);
- if (category != null) {
- category.add(task);
- task.setContainer(category);
- } else {
- rootCategory.add(task);
- task.setContainer(rootCategory);
- }
- for (ITaskListChangeListener listener : changeListeners) {
- listener.taskAdded(task);
- }
- }
-
- public void refactorRepositoryUrl(Object oldUrl, String newUrl) {
- for (ITask task : new ArrayList<ITask>(tasks.values())) {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- if (oldUrl.equals(AbstractRepositoryTask.getRepositoryUrl(repositoryTask.getHandleIdentifier()))) {
- tasks.remove(repositoryTask.getHandleIdentifier());
- String id = AbstractRepositoryTask.getTaskId(repositoryTask.getHandleIdentifier());
- String newHandle = AbstractRepositoryTask.getHandle(newUrl, id);
- repositoryTask.setHandleIdentifier(newHandle);
- tasks.put(newHandle, repositoryTask);
- }
- }
- }
-
- for (AbstractRepositoryQuery query : queries) {
- if (query.getRepositoryUrl().equals(oldUrl)) {
- query.setRepositoryUrl(newUrl);
- for (AbstractQueryHit hit : query.getHits()) {
- hit.setRepositoryUrl(newUrl);
- }
- for (ITaskListChangeListener listener : changeListeners) {
- listener.containerInfoChanged(query);
- }
- }
- }
- }
-
- public void moveToRoot(ITask task) {
- moveToContainer(rootCategory, task);
- }
-
- public void moveToContainer(AbstractTaskContainer toContainer, ITask task) {
- if (!tasks.containsKey(task.getHandleIdentifier())) {
- tasks.put(task.getHandleIdentifier(), task);
- }
-
- AbstractTaskContainer fromContainer = task.getContainer();
- if (fromContainer instanceof AbstractTaskContainer) {
- ((AbstractTaskContainer) fromContainer).remove(task);
- }
- if (toContainer != null) {
- internalAddTask(task, toContainer);
- } else {
- internalAddTask(task, archiveContainer);
- }
- for (ITaskListChangeListener listener : changeListeners) {
- listener.taskMoved(task, fromContainer, toContainer);
- }
- }
-
- public void addCategory(AbstractTaskContainer category) {
- categories.add(category);
- for (ITaskListChangeListener listener : changeListeners) {
- listener.containerAdded(category);
- }
- }
-
- public void removeFromCategory(TaskCategory category, ITask task) {
- moveToContainer(archiveContainer, task);
- }
-
- public void removeFromRoot(ITask task) {
- moveToContainer(archiveContainer, task);
- }
-
- public void renameTask(Task task, String description) {
- task.setDescription(description);
- for (ITaskListChangeListener listener : changeListeners) {
- listener.localInfoChanged(task);
- }
- }
-
- public void renameContainer(AbstractTaskContainer container, String newDescription) {
- if (!(container instanceof TaskArchive)) {
- if (queries.remove(container)) {
- container.setDescription(newDescription);
- if (container instanceof AbstractRepositoryQuery) {
- this.addQuery((AbstractRepositoryQuery) container);
- }
- } else if (categories.remove(container)) {
- container.setDescription(newDescription);
- this.addCategory(container);
- }
- }
- for (ITaskListChangeListener listener : changeListeners) {
- listener.containerInfoChanged(container);
- }
- }
-
- public void addQuery(AbstractRepositoryQuery query) {
- queries.add(query);
- for (ITaskListChangeListener listener : changeListeners) {
- listener.containerAdded(query);
- }
- }
-
- /**
- * TODO: refactor around querying containers for their tasks
- *
- * Task is removed from all containers: root, archive, category, and tasks
- * catchall (Currently no support for deletion of subtasks)
- */
- public void deleteTask(ITask task) {
- archiveContainer.remove(task);
- rootCategory.remove(task);
- if (task.getContainer() != null) {
- task.getContainer().remove(task);
- task.setContainer(null);
- }
- tasks.remove(task.getHandleIdentifier());
- for (ITaskListChangeListener listener : changeListeners) {
- listener.taskDeleted(task);
- }
- }
-
- public void deleteCategory(AbstractTaskContainer category) {
- for (ITask task : category.getChildren()) {
- rootCategory.add(task);
- }
- categories.remove(category);
- for (ITaskListChangeListener listener : changeListeners) {
- listener.containerDeleted(category);
- }
- }
-
- public void deleteQuery(AbstractRepositoryQuery query) {
- queries.remove(query);
- for (ITaskListChangeListener listener : changeListeners) {
- listener.containerDeleted(query);
- }
- }
-
- public void markComplete(ITask task, boolean complete) {
- task.setCompleted(complete);
- for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) {
- listener.localInfoChanged(task);
- }
- }
-
- public void addChangeListener(ITaskListChangeListener listener) {
- changeListeners.add(listener);
- }
-
- public void removeChangeListener(ITaskListChangeListener listener) {
- changeListeners.remove(listener);
- }
-
- /**
- * NOTE: Only public so that other externalizers can use it
- */
- public void internalAddCategory(AbstractTaskContainer cat) {
- categories.add(cat);
- }
-
- public void internalAddTask(ITask task, AbstractTaskContainer container) {
- tasks.put(task.getHandleIdentifier(), task);
- if (container != null) {
- task.setContainer(container);
- container.add(task);
- } else {
- task.setContainer(rootCategory);
- rootCategory.add(task);
- }
- }
-
- public void internalAddRootTask(ITask task) {
- internalAddTask(task, rootCategory);
- }
-
- public void internalAddQuery(AbstractRepositoryQuery query) {
- queries.add(query);
- }
-
- public void setActive(ITask task, boolean active) {
- task.setActive(active);
- if (active && !activeTasks.contains(task)) {
- activeTasks.add(task);
- } else if (!active) {
- activeTasks.remove(task);
- }
- }
-
- // private boolean deleteTaskHelper(Set<ITask> tasks, ITask toDelete) {
- // for (ITask task : tasks) {
- // if (task.getHandleIdentifier().equals(toDelete.getHandleIdentifier())) {
- // tasks.remove(task);
- // return true;
- // } else {
- // if (deleteTaskHelper(task.getChildren(), toDelete))
- // return true;
- // }
- // }
- // return false;
- // }
-
- public List<ITask> getActiveTasks() {
- return activeTasks;
- }
-
- /**
- * HACK: returns first
- *
- * @return
- */
- public ITask getActiveTask() {
- if (activeTasks.size() > 0) {
- return activeTasks.get(0);
- } else {
- return null;
- }
- }
-
- public Set<ITask> getRootTasks() {
- return rootCategory.getChildren();
- }
-
- public Set<AbstractTaskContainer> getCategories() {
- return categories;
- }
-
- public List<AbstractTaskContainer> getUserCategories() {
- List<AbstractTaskContainer> included = new ArrayList<AbstractTaskContainer>();
- for (AbstractTaskContainer category : categories) {
- if (!category.getDescription().endsWith(DelegatingTaskExternalizer.LABEL_AUTOMATIC)) {
- included.add(category);
- }
- }
- return included;
- }
-
- public Set<AbstractRepositoryQuery> getQueries() {
- return queries;
- }
-
- public int findLargestTaskHandle() {
- int max = 0;
- max = Math.max(largestTaskHandleHelper(tasks.values()), max);
- for (AbstractTaskContainer cat : getTaskContainers()) {
- max = Math.max(largestTaskHandleHelper(cat.getChildren()), max);
- }
- return max;
- }
-
- private int largestTaskHandleHelper(Collection<ITask> tasks) {
- int ihandle = 0;
- int max = 0;
- for (ITask task : tasks) {
- if (!(task instanceof AbstractRepositoryTask)) {
- String string = task.getHandleIdentifier().substring(task.getHandleIdentifier().lastIndexOf('-') + 1,
- task.getHandleIdentifier().length());
- try {
- ihandle = Integer.parseInt(string);
- } catch (NumberFormatException nfe) {
- }
- }
- max = Math.max(ihandle, max);
- ihandle = largestTaskHandleHelper(task.getChildren());
- max = Math.max(ihandle, max);
- }
- return max;
- }
-
- public Set<ITaskListElement> getRootElements() {
- Set<ITaskListElement> roots = new HashSet<ITaskListElement>();
- for (ITask task : rootCategory.getChildren())
- roots.add(task);
- for (AbstractTaskContainer cat : categories)
- roots.add(cat);
- for (AbstractRepositoryQuery query : queries)
- roots.add(query);
- return roots;
- }
-
- public Collection<ITask> getAllTasks() {
- return tasks.values();
- }
-
- public Set<AbstractTaskContainer> getTaskContainers() {
- Set<AbstractTaskContainer> containers = new HashSet<AbstractTaskContainer>();
- for (AbstractTaskContainer container : categories) {
- if (container instanceof TaskCategory || container instanceof TaskArchive) {
- containers.add((AbstractTaskContainer) container);
- }
- }
- return containers;
- }
-
- public AbstractRepositoryQuery getQueryForHandle(String handle) {
- if (handle == null) {
- return null;
- }
- for (AbstractRepositoryQuery query : queries) {
- if (query.findQueryHit(handle) != null) {
- return query;
- }
- }
- return null;
- }
-
- /**
- * NOTE: will only return first occurrence of the hit in the first category
- * it is matched in.
- */
- public AbstractQueryHit getQueryHitForHandle(String handle) {
- if (handle != null) {
- for (AbstractRepositoryQuery query : queries) {
- AbstractQueryHit foundHit = query.findQueryHit(handle);
- if (foundHit!= null) {
- return foundHit;
- }
- }
- }
- return null;
- }
-
- public boolean isEmpty() {
- boolean archiveIsEmpty = getCategories().size() == 1
- && getCategories().iterator().next().equals(archiveContainer)
- && archiveContainer.getChildren().isEmpty();
- return getAllTasks().size() == 0 && archiveIsEmpty && getQueries().size() == 0;
- }
-
- public ITask getTask(String handleIdentifier) {
- return tasks.get(handleIdentifier);
- }
-
- public AbstractTaskContainer getContainerForHandle(String categoryHandle) {
- for (AbstractTaskContainer cat : categories) {
- if (cat instanceof AbstractTaskContainer) {
- if (cat.getHandleIdentifier().equals(categoryHandle)) {
- return (AbstractTaskContainer) cat;
- }
- }
- }
- return null;
- }
-
- public TaskCategory getRootCategory() {
- return rootCategory;
- }
-
- public TaskArchive getArchiveContainer() {
- return archiveContainer;
- }
-
- /** if handle == null or no queries found an empty set is returned * */
- public Set<AbstractRepositoryQuery> getQueriesForHandle(String handle) {
- if (handle == null) {
- return Collections.emptySet();
- }
- Set<AbstractRepositoryQuery> queriesForHandle = new HashSet<AbstractRepositoryQuery>();
- for (AbstractRepositoryQuery query : queries) {
- if (query.findQueryHit(handle) != null) {
- queriesForHandle.add(query);
- }
- }
- return queriesForHandle;
- }
-
- /**
- * return all queries for the given repository url
- */
- public Set<AbstractRepositoryQuery> getRepositoryQueries(String repositoryUrl) {
- Set<AbstractRepositoryQuery> repositoryQueries = new HashSet<AbstractRepositoryQuery>();
- if (repositoryUrl != null) {
- for (AbstractRepositoryQuery query : queries) {
- if (query.getRepositoryUrl().equals(repositoryUrl)) {
- repositoryQueries.add(query);
- }
- }
- }
- return repositoryQueries;
- }
-
- /**
- * return all tasks for the given repository url
- */
- public Set<AbstractRepositoryTask> getRepositoryTasks(String repositoryUrl) {
- Set<AbstractRepositoryTask> repositoryTasks = new HashSet<AbstractRepositoryTask>();
- if (repositoryUrl != null) {
- for (ITask task : tasks.values()) {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- if (repositoryTask.getRepositoryUrl().equals(repositoryUrl)) {
- repositoryTasks.add(repositoryTask);
- }
- }
- }
- }
- return repositoryTasks;
- }
-
- /** if handle == null or no query hits found an empty set is returned * */
- public Set<AbstractQueryHit> getQueryHitsForHandle(String handle) {
- if (handle == null) {
- return Collections.emptySet();
- }
- Set<AbstractQueryHit> hitsForHandle = new HashSet<AbstractQueryHit>();
- for (AbstractRepositoryQuery query : queries) {
- AbstractQueryHit foundHit = query.findQueryHit(handle);
- if (foundHit != null) {
- hitsForHandle.add(foundHit);
- }
- }
- return hitsForHandle;
- }
-
- /**
- * Exposed for unit testing
- *
- * @return unmodifiable collection of ITaskActivityListeners
- */
- public List<ITaskListChangeListener> getChangeListeners() {
- return Collections.unmodifiableList(changeListeners);
- }
-
- /**
- * TODO: refactor into task deltas?
- */
- public void notifyLocalInfoChanged(ITask task) {
- for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) {
- try {
- listener.localInfoChanged(task);
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "notification failed for: " + listener, false);
- }
- }
- }
-
- public void notifyRepositoryInfoChanged(ITask task) {
- for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) {
- try {
- listener.repositoryInfoChanged(task);
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "notification failed for: " + listener, false);
- }
- }
- }
-
- public void notifyContainerUpdated(AbstractTaskContainer container) {
- for (ITaskListChangeListener listener : new ArrayList<ITaskListChangeListener>(changeListeners)) {
- try {
- listener.containerInfoChanged(container);
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "notification failed for: " + listener, false);
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java
deleted file mode 100644
index af430c4ec..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java
+++ /dev/null
@@ -1,273 +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.tasks.core;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TimeZone;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-
-/**
- * Note that task repositories use Strings for storing time stamps because using
- * Date objects led to the following problems:
- * <ul>
- * <li>Often we are unable to get the time zone of the repository so
- * interpreting the date string correctly doesn't work.</li>
- * <li>Even if we do know the time zone information the local clock may be
- * wrong. This can cause lost incoming when asking the repository for all
- * changes since date X.</li>
- * <li>The solution we have come up with thus far is not to interpret the date
- * as a DATE object but rather simply use the date string given to us by the
- * repository itself.</li>
- * </ul>
- *
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskRepository {
-
- public static final String DEFAULT_CHARACTER_ENCODING = "UTF-8";
-
- public static final String AUTH_PASSWORD = "org.eclipse.mylar.tasklist.repositories.password"; //$NON-NLS-1$
-
- public static final String AUTH_USERNAME = "org.eclipse.mylar.tasklist.repositories.username"; //$NON-NLS-1$
-
- public static final String NO_VERSION_SPECIFIED = "unknown";
-
- private static final String AUTH_SCHEME = "Basic";
-
- private static final String AUTH_REALM = "";
-
- private static final URL DEFAULT_URL;
-
- static {
- URL u = null;
- try {
- u = new URL("http://eclipse.org/mylar");
- } catch (Exception ex) {
- // TODO ?
- }
- DEFAULT_URL = u;
- }
-
- private Map<String, String> properties = new HashMap<String, String>();
-
- /**
- * for testing purposes
- */
- public TaskRepository(String kind, String serverUrl) {
- this(kind, serverUrl, NO_VERSION_SPECIFIED);
- }
-
- /**
- * for testing purposes sets repository time zone to local default time zone
- * sets character encoding to DEFAULT_CHARACTER_ENCODING
- */
- public TaskRepository(String kind, String serverUrl, String version) {
- this(kind, serverUrl, version, DEFAULT_CHARACTER_ENCODING, TimeZone.getDefault().getID());
- }
-
- public TaskRepository(String kind, String serverUrl, String version, String encoding, String timeZoneId) {
- this.properties.put(IRepositoryConstants.PROPERTY_KIND, kind);
- this.properties.put(IRepositoryConstants.PROPERTY_URL, serverUrl);
- this.properties.put(IRepositoryConstants.PROPERTY_VERSION, version);
- this.properties.put(IRepositoryConstants.PROPERTY_ENCODING, encoding);
- this.properties.put(IRepositoryConstants.PROPERTY_TIMEZONE, timeZoneId);
- }
-
- public TaskRepository(String kind, String serverUrl, Map<String, String> properties) {
- this.properties.put(IRepositoryConstants.PROPERTY_KIND, kind);
- this.properties.put(IRepositoryConstants.PROPERTY_URL, serverUrl);
- this.properties.putAll(properties);
- }
-
- public String getUrl() {
- return properties.get(IRepositoryConstants.PROPERTY_URL);
- }
-
- public void setUrl(String newUrl) {
- properties.put(IRepositoryConstants.PROPERTY_URL, newUrl);
- }
-
- public boolean hasCredentials() {
- String username = getUserName();
- String password = getPassword();
- return username != null && username.length() > 0 && password != null && password.length() > 0;
- }
-
- @SuppressWarnings("unchecked")
- public String getUserName() {
- Map<String, String> map = getAuthInfo();
- if (map != null && map.containsKey(AUTH_USERNAME)) {
- return map.get(AUTH_USERNAME);
- } else {
- return null;
- }
- }
-
- @SuppressWarnings("unchecked")
- public String getPassword() {
- Map<String, String> map = getAuthInfo();
- if (map != null && map.containsKey(AUTH_PASSWORD)) {
- return map.get(AUTH_PASSWORD);
- } else {
- return null;
- }
- }
-
- @SuppressWarnings("unchecked")
- public void setAuthenticationCredentials(String username, String password) {
- Map<String, String> map = getAuthInfo();
-
- if (map == null) {
- map = new java.util.HashMap<String, String>();
- }
-
- if (username != null) {
- map.put(AUTH_USERNAME, username);
- }
- if (password != null) {
- map.put(AUTH_PASSWORD, password);
- }
- try {
- // write the map to the keyring
- try {
- Platform.addAuthorizationInfo(new URL(getUrl()), AUTH_REALM, AUTH_SCHEME, map);
- } catch (MalformedURLException ex) {
- Platform.addAuthorizationInfo(DEFAULT_URL, getUrl(), AUTH_SCHEME, map);
- }
- } catch (CoreException e) {
- MylarStatusHandler.fail(e, "could not set authorization", true);
- }
- }
-
- public void flushAuthenticationCredentials() {
- try {
- try {
- Platform.flushAuthorizationInfo(new URL(getUrl()), AUTH_REALM, AUTH_SCHEME);
- } catch (MalformedURLException ex) {
- Platform.flushAuthorizationInfo(DEFAULT_URL, getUrl(), AUTH_SCHEME);
- }
- } catch (CoreException e) {
- MylarStatusHandler.fail(e, "could not set authorization", true);
- }
- }
-
- private Map getAuthInfo() {
- try {
- return Platform.getAuthorizationInfo(new URL(getUrl()), AUTH_REALM, AUTH_SCHEME);
- } catch (MalformedURLException ex) {
- return Platform.getAuthorizationInfo(DEFAULT_URL, getUrl(), AUTH_SCHEME);
- }
- }
-
- @Override
- public boolean equals(Object object) {
- if (object instanceof TaskRepository && getUrl() != null) {
- return getUrl().equals(((TaskRepository) object).getUrl());
- } else {
- return super.equals(object);
- }
- }
-
- @Override
- public int hashCode() {
- if (getUrl() != null) {
- return getUrl().hashCode();
- } else {
- return super.hashCode();
- }
- }
-
- public String toString() {
- return getUrl();
- }
-
- public String getKind() {
- return properties.get(IRepositoryConstants.PROPERTY_KIND);
- }
-
- public String getVersion() {
- final String version = properties.get(IRepositoryConstants.PROPERTY_VERSION);
- return version == null || "".equals(version) ? NO_VERSION_SPECIFIED : version;
- }
-
- public void setVersion(String ver) {
- properties.put(IRepositoryConstants.PROPERTY_VERSION, ver == null ? NO_VERSION_SPECIFIED : ver);
- }
-
- public String getCharacterEncoding() {
- final String encoding = properties.get(IRepositoryConstants.PROPERTY_ENCODING);
- return encoding == null || "".equals(encoding) ? DEFAULT_CHARACTER_ENCODING : encoding;
- }
-
- /**
- * for testing purposes
- */
- public void setCharacterEncoding(String characterEncoding) {
- properties.put(IRepositoryConstants.PROPERTY_ENCODING, characterEncoding == null ? DEFAULT_CHARACTER_ENCODING
- : characterEncoding);
- }
-
- public String getTimeZoneId() {
- final String timeZoneId = properties.get(IRepositoryConstants.PROPERTY_TIMEZONE);
- return timeZoneId == null || "".equals(timeZoneId) ? TimeZone.getDefault().getID() : timeZoneId;
- }
-
- public void setTimeZoneId(String timeZoneId) {
- this.properties.put(IRepositoryConstants.PROPERTY_TIMEZONE, timeZoneId == null ? TimeZone.getDefault().getID()
- : timeZoneId);
- }
-
- public String getSyncTimeStamp() {
- return this.properties.get(IRepositoryConstants.PROPERTY_SYNCTIMESTAMP);
- }
-
- /**
- * ONLY for use by IRepositoryConstants. To set the sync time call
- * IRepositoryConstants.setSyncTime(repository, date);
- */
- public void setSyncTimeStamp(String syncTime) {
- this.properties.put(IRepositoryConstants.PROPERTY_SYNCTIMESTAMP, syncTime);
- }
-
- public void setRepositoryLabel(String repositoryLabel) {
- this.properties.put(IRepositoryConstants.PROPERTY_LABEL, repositoryLabel);
- }
-
- public String getRepositoryLabel() {
- return this.properties.get(IRepositoryConstants.PROPERTY_LABEL);
- }
-
- public Map<String, String> getProperties() {
- return this.properties;
- }
-
- public String getProperty(String name) {
- return this.properties.get(name);
- }
-
- public void setProperty(String name, String value) {
- this.properties.put(name, value);
- }
-
- public boolean hasProperty(String name) {
- String value = getProperty(name);
- return value != null && value.trim().length() > 0;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryFilter.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryFilter.java
deleted file mode 100644
index 5f2dca42d..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryFilter.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.tasks.core;
-
-
-/**
- * Task repository filter to build list of repositories with required capabilities.
- *
- * @author Eugene Kleshov
- */
-public interface TaskRepositoryFilter {
-
- public static TaskRepositoryFilter ALL = new TaskRepositoryFilter() {
- public boolean accept(TaskRepository repository, AbstractRepositoryConnector connector) {
- return true;
- }
- };
-
- public static TaskRepositoryFilter CAN_CREATE_NEW_TASK = new TaskRepositoryFilter() {
- public boolean accept(TaskRepository repository, AbstractRepositoryConnector connector) {
- return connector.canCreateNewTask(repository);
- }
- };
-
- public static TaskRepositoryFilter CAN_CREATE_TASK_FROM_KEY = new TaskRepositoryFilter() {
- public boolean accept(TaskRepository repository, AbstractRepositoryConnector connector) {
- return connector.canCreateTaskFromKey(repository);
- }
- };
-
- boolean accept(TaskRepository repository, AbstractRepositoryConnector connector);
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java
deleted file mode 100644
index ac6ea6ced..000000000
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java
+++ /dev/null
@@ -1,319 +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.tasks.core;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.core.TaskRepositoriesExternalizer;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskRepositoryManager {
-
- public static final String OLD_REPOSITORIES_FILE = "repositories.xml";
-
- public static final String DEFAULT_REPOSITORIES_FILE = "repositories.xml.zip";
-
- public static final String PREF_REPOSITORIES = "org.eclipse.mylar.tasklist.repositories.";
-
- private Map<String, AbstractRepositoryConnector> repositoryConnectors = new HashMap<String, AbstractRepositoryConnector>();
-
- private Map<String, Set<TaskRepository>> repositoryMap = new HashMap<String, Set<TaskRepository>>();
-
- private Set<ITaskRepositoryListener> listeners = new HashSet<ITaskRepositoryListener>();
-
- private Set<TaskRepository> orphanedRepositories = new HashSet<TaskRepository>();
-
- public static final String MESSAGE_NO_REPOSITORY = "No repository available, please add one using the Task Repositories view.";
-
- public static final String PREFIX_LOCAL = "local-";
-
- private TaskRepositoriesExternalizer externalizer = new TaskRepositoriesExternalizer();
-
- private TaskList taskList;
-
- public TaskRepositoryManager(TaskList taskList) {
- this.taskList = taskList;
- }
-
- public Collection<AbstractRepositoryConnector> getRepositoryConnectors() {
- return Collections.unmodifiableCollection(repositoryConnectors.values());
- }
-
- public AbstractRepositoryConnector getRepositoryConnector(String kind) {
- return repositoryConnectors.get(kind);
- }
-
- public void addRepositoryConnector(AbstractRepositoryConnector repositoryConnector) {
- if (!repositoryConnectors.values().contains(repositoryConnector)) {
- repositoryConnector.init(taskList);
- repositoryConnectors.put(repositoryConnector.getRepositoryType(), repositoryConnector);
- }
- }
-
- public void addRepository(TaskRepository repository, String repositoryFilePath) {
- Set<TaskRepository> repositories;
- if (!repositoryMap.containsKey(repository.getKind())) {
- repositories = new HashSet<TaskRepository>();
- repositoryMap.put(repository.getKind(), repositories);
- } else {
- repositories = repositoryMap.get(repository.getKind());
- }
- repositories.add(repository);
- saveRepositories(repositoryFilePath);
- for (ITaskRepositoryListener listener : listeners) {
- listener.repositoryAdded(repository);
- }
- }
-
- public void removeRepository(TaskRepository repository, String repositoryFilePath) {
- Set<TaskRepository> repositories = repositoryMap.get(repository.getKind());
- if (repositories != null) {
- repository.flushAuthenticationCredentials();
- repositories.remove(repository);
- }
- saveRepositories(repositoryFilePath);
- for (ITaskRepositoryListener listener : listeners) {
- listener.repositoryRemoved(repository);
- }
- }
-
- public void addListener(ITaskRepositoryListener listener) {
- listeners.add(listener);
- }
-
- public void removeListener(ITaskRepositoryListener listener) {
- listeners.remove(listener);
- }
-
- public TaskRepository getRepository(String kind, String urlString) {
- if (repositoryMap.containsKey(kind)) {
- for (TaskRepository repository : repositoryMap.get(kind)) {
- if (repository.getUrl().equals(urlString)) {
- return repository;
- }
- }
- }
- return null;
- }
-
- /**
- * @return first repository that matches the given url
- */
- public TaskRepository getRepository(String urlString) {
- for (String kind: repositoryMap.keySet()) {
- for (TaskRepository repository : repositoryMap.get(kind)) {
- if (repository.getUrl().equals(urlString)) {
- return repository;
- }
- }
- }
- return null;
- }
-
- /**
- * @return the first connector to accept the URL
- */
- public AbstractRepositoryConnector getRepositoryForTaskUrl(String url) {
- for (AbstractRepositoryConnector connector : getRepositoryConnectors()) {
- if (connector.getRepositoryUrlFromTaskUrl(url) != null) {
- return connector;
- }
- }
- return null;
- }
-
- public Set<TaskRepository> getRepositories(String kind) {
- if (repositoryMap.containsKey(kind)) {
- return repositoryMap.get(kind);
- } else {
- return Collections.emptySet();
- }
- }
-
- public List<TaskRepository> getAllRepositories() {
- List<TaskRepository> repositories = new ArrayList<TaskRepository>();
- for (AbstractRepositoryConnector repositoryConnector : repositoryConnectors.values()) {
- if (repositoryMap.containsKey(repositoryConnector.getRepositoryType())) {
- repositories.addAll(repositoryMap.get(repositoryConnector.getRepositoryType()));
- }
- }
- return repositories;
- }
-
- public TaskRepository getRepositoryForActiveTask(String repositoryKind, TaskList taskList) {
- List<ITask> activeTasks = taskList.getActiveTasks();
- if (activeTasks.size() == 1) {
- ITask activeTask = activeTasks.get(0);
- if (activeTask instanceof AbstractRepositoryTask) {
- String repositoryUrl = AbstractRepositoryTask.getRepositoryUrl(activeTask.getHandleIdentifier());
- for (TaskRepository repository : getRepositories(repositoryKind)) {
- if (repository.getUrl().equals(repositoryUrl)) {
- return repository;
- }
- }
- }
- }
- return null;
- }
-
- /**
- * TODO: implement default support, this just returns first found
- */
- public TaskRepository getDefaultRepository(String kind) {
- // HACK: returns first repository found
- if (repositoryMap.containsKey(kind)) {
- for (TaskRepository repository : repositoryMap.get(kind)) {
- return repository;
- }
- } else {
- Collection values = repositoryMap.values();
- if (!values.isEmpty()) {
- HashSet repoistorySet = (HashSet) values.iterator().next();
- return (TaskRepository) repoistorySet.iterator().next();
- }
- }
- return null;
- }
-
- public Map<String, Set<TaskRepository>> readRepositories(String repositoriesFilePath) {
-
- repositoryMap.clear();
- orphanedRepositories.clear();
- loadRepositories(repositoriesFilePath);
-
- for (ITaskRepositoryListener listener : listeners) {
- listener.repositoriesRead();
- }
- return repositoryMap;
- }
-
- private void loadRepositories(String repositoriesFilePath) {
- try {
-// String dataDirectory = TasksUiPlugin.getDefault().getDataDirectory();
- File repositoriesFile = new File(repositoriesFilePath);
-
- // Will only load repositories for which a connector exists
- for (AbstractRepositoryConnector repositoryConnector : repositoryConnectors.values()) {
- repositoryMap.put(repositoryConnector.getRepositoryType(), new HashSet<TaskRepository>());
- }
- if (repositoriesFile.exists()) {
- Set<TaskRepository> repositories = externalizer.readRepositoriesFromXML(repositoriesFile);
- if (repositories != null && repositories.size() > 0) {
- for (TaskRepository repository : repositories) {
- if (repositoryMap.containsKey(repository.getKind())) {
- repositoryMap.get(repository.getKind()).add(repository);
- } else {
- orphanedRepositories.add(repository);
- }
- }
- }
- }
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "could not load repositories", false);
- }
- }
-
- /**
- * for testing purposes
- */
- public void setVersion(TaskRepository repository, String version, String repositoriesFilePath) {
- repository.setVersion(version);
- saveRepositories(repositoriesFilePath);
- }
-
- /**
- * for testing purposes
- */
- public void setEncoding(TaskRepository repository, String encoding, String repositoriesFilePath) {
- repository.setCharacterEncoding(encoding);
- saveRepositories(repositoriesFilePath);
- }
-
- /**
- * for testing purposes
- */
- public void setTimeZoneId(TaskRepository repository, String timeZoneId, String repositoriesFilePath) {
- repository.setTimeZoneId(timeZoneId);
- saveRepositories(repositoriesFilePath);
- }
-
- public void setSyncTime(TaskRepository repository, String syncTime, String repositoriesFilePath) {
- repository.setSyncTimeStamp(syncTime);
- saveRepositories(repositoriesFilePath);
-
- // String prefIdSyncTime = repository.getUrl() + PROPERTY_DELIM +
- // PROPERTY_SYNCTIMESTAMP;
- // if (repository.getSyncTimeStamp() != null) {
- // MylarTaskListPlugin.getMylarCorePrefs().setValue(prefIdSyncTime,
- // repository.getSyncTimeStamp());
- // }
- }
-
- public boolean saveRepositories(String destinationPath) {
- if (!Platform.isRunning()) {// || TasksUiPlugin.getDefault() == null) {
- return false;
- }
- Set<TaskRepository> repositoriesToWrite = new HashSet<TaskRepository>(getAllRepositories());
- // if for some reason a repository is added/changed to equal one in the
- // orphaned set the orphan is discarded
- for (TaskRepository repository : orphanedRepositories) {
- if (!repositoriesToWrite.contains(repository)) {
- repositoriesToWrite.add(repository);
- }
- }
-
- try {
-// String dataDirectory = TasksUiPlugin.getDefault().getDataDirectory();
-// File repositoriesFile = new File(dataDirectory + File.separator + TasksUiPlugin.DEFAULT_REPOSITORIES_FILE);
- File repositoriesFile = new File(destinationPath);
- externalizer.writeRepositoriesToXML(repositoriesToWrite, repositoriesFile);
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "could not save repositories", false);
- return false;
- }
- return true;
- }
-
- /**
- * For testing.
- */
- public void clearRepositories(String repositoriesFilePath) {
- repositoryMap.clear();
- orphanedRepositories.clear();
- saveRepositories(repositoriesFilePath);
- // for (AbstractRepositoryConnector repositoryConnector :
- // repositoryConnectors.values()) {
- // String prefId = PREF_REPOSITORIES +
- // repositoryConnector.getRepositoryType();
- // MylarTaskListPlugin.getMylarCorePrefs().setValue(prefId, "");
- // }
- }
-
- public void notifyRepositorySettingsChagned(TaskRepository repository) {
- for (ITaskRepositoryListener listener : listeners) {
- listener.repositorySettingsChanged(repository);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index fbd5e0a79..000000000
--- a/org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,303 +0,0 @@
-#Tue Jun 20 10:25:00 PDT 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 5e612caf2..000000000
--- a/org.eclipse.mylyn.tasks.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Tue Jun 20 10:25:00 PDT 2006
-eclipse.preferences.version=1
-formatter_profile=_Mylar based on Eclipse [built-in]
-formatter_settings_version=10
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"></template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2004 - 2006 Mylar committers and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ignore\r\n${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ignore</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template></templates>
diff --git a/org.eclipse.mylyn.tasks.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 44f3c513d..000000000
--- a/org.eclipse.mylyn.tasks.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,26 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Tasks Tests Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.tasks.tests;singleton:=true
-Bundle-Version: 0.0.0
-Bundle-Activator: org.eclipse.mylar.tasks.tests.MylarTasksTestsPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.junit,
- org.eclipse.mylar.context.core,
- org.eclipse.mylar.core.tests,
- org.eclipse.jdt.core,
- org.eclipse.core.resources,
- org.eclipse.ui,
- org.eclipse.mylar.tasks.ui,
- org.eclipse.mylar.context.ui,
- org.eclipse.mylar.tasks.core,
- org.eclipse.mylar.monitor,
- org.eclipse.ui.forms,
- org.eclipse.mylar.resources.tests
-Eclipse-AutoStart: true
-Bundle-ClassPath: mylar-tasklist-tests.jar
-Export-Package: org.eclipse.mylar.tasks.tests,
- org.eclipse.mylar.tasks.tests.connector
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.tasks.tests/plugin.xml b/org.eclipse.mylyn.tasks.tests/plugin.xml
deleted file mode 100644
index 30ad05809..000000000
--- a/org.eclipse.mylyn.tasks.tests/plugin.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-
- <extension
- id="org.eclipse.mylar.jira.repository"
- name="JIRA Repository"
- point="org.eclipse.mylar.tasks.ui.repositories">
-
- <connectorCore
- class="org.eclipse.mylar.tasks.tests.connector.MockRepositoryConnector"
- id="org.eclipse.mylar.tasklist.tests.repositories"
- name="Mock Repository Client"
- type="mock"/>
- <externalizer
- class="org.eclipse.mylar.tasks.tests.connector.MockRepositoryExternalizer"
- id="org.eclipse.mylar.tasklist.tests.externalizer"/>
- </extension>
-
-</plugin>
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/AllTasksTests.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/AllTasksTests.java
deleted file mode 100644
index e5bb4514b..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/AllTasksTests.java
+++ /dev/null
@@ -1,52 +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.tasks.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author Mik Kersten
- */
-public class AllTasksTests {
-
- public static Test suite() {
- TestSuite suite = new TestSuite("Test for org.eclipse.mylar.tasklist.tests");
-
- // $JUnit-BEGIN$
- suite.addTestSuite(ProjectRepositoryAssociationTest.class);
- suite.addTestSuite(TaskListDataMigrationTest.class);
- suite.addTestSuite(TaskPlanningEditorTest.class);
- suite.addTestSuite(TaskListManagerTest.class);
- suite.addTestSuite(RepositoryTaskSynchronizationTest.class);
- suite.addTestSuite(TaskRepositoryManagerTest.class);
- suite.addTestSuite(TaskRepositoriesExternalizerTest.class);
- suite.addTestSuite(TaskListContentProviderTest.class);
- suite.addTestSuite(TaskListBackupManagerTest.class);
- suite.addTestSuite(TableSorterTest.class);
- suite.addTestSuite(TaskKeyComparatorTest.class);
- suite.addTestSuite(TaskTest.class);
- suite.addTestSuite(TaskListUiTest.class);
- suite.addTestSuite(TaskListDnDTest.class);
- suite.addTestSuite(TaskDataExportTest.class);
- suite.addTestSuite(TaskDataImportTest.class);
- suite.addTestSuite(BackgroundSaveTest.class);
- suite.addTestSuite(TaskActivityViewTest.class);
- suite.addTestSuite(TaskAttachmentActionsTest.class);
- suite.addTestSuite(RepositorySettingsPageTest.class);
- // suite.addTestSuite(RetrieveTitleFromUrlTest.class);
- suite.addTestSuite(TaskHistoryTest.class);
- suite.addTestSuite(UrlConnectionUtilTest.class);
- // $JUnit-END$
- return suite;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/BackgroundSaveTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/BackgroundSaveTest.java
deleted file mode 100644
index 663424e5b..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/BackgroundSaveTest.java
+++ /dev/null
@@ -1,61 +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.tasks.tests;
-
-import java.io.File;
-import java.io.IOException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasks.ui.util.BackgroundSaveTimer;
-import org.eclipse.mylar.internal.tasks.ui.util.TaskListSaveManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * Tests the mechanism for saving the task data periodically. If this test fails
- * unexpectedly, try adjusting the timing.
- *
- * @author Wesley Coelho
- * @author Mik Kersten (rewrite)
- */
-public class BackgroundSaveTest extends TestCase {
-
- private BackgroundSaveTimer saveTimer;
-
- private TaskListSaveManager policy;
-
- protected void setUp() throws Exception {
- super.setUp();
- policy = TasksUiPlugin.getDefault().getTaskListSaveManager();
-
- saveTimer = new BackgroundSaveTimer(TasksUiPlugin.getDefault().getTaskListSaveManager());
- saveTimer.setSaveIntervalMillis(50);
- saveTimer.start();
- TasksUiPlugin.getDefault().getTaskListSaveManager().setForceBackgroundSave(true);
- }
-
- protected void tearDown() throws Exception {
- saveTimer.stop();
- super.tearDown();
- TasksUiPlugin.getDefault().getTaskListSaveManager().setForceBackgroundSave(false);
- }
-
- public void testBackgroundSave() throws InterruptedException, IOException {
- if (System.getProperty("os.name").toLowerCase().contains("linux")) {
- System.out.println("> BackgroundSaveTest.testBackgroundSave() not run on Linux due to IO concurrency");
- } else {
- File file = TasksUiPlugin.getTaskListManager().getTaskListFile();
- long previouslyModified = file.lastModified();
- policy.saveTaskList(true);
- assertTrue(file.lastModified() > previouslyModified);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ProjectRepositoryAssociationTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ProjectRepositoryAssociationTest.java
deleted file mode 100644
index 09faefe2d..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ProjectRepositoryAssociationTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylar.resources.tests.ResourceTestUtil;
-import org.eclipse.mylar.resources.tests.TestProject;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- */
-public class ProjectRepositoryAssociationTest extends TestCase {
-
- private static final String REPOSITORY_URL = "http://mylar.eclipse.org/bugs222";
-
- private static final String REPOSITORY_KIND = "bugzilla";
-
- private TestProject projectWrapper;
-
- protected void setUp() throws Exception {
- super.setUp();
- projectWrapper = new TestProject(this.getClass().getName());
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- ResourceTestUtil.deleteProject(projectWrapper.getProject());
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- public void testRepositoryForProject() throws CoreException {
- assertNull(TasksUiPlugin.getDefault().getRepositoryForResource(projectWrapper.getProject(), true));
- TaskRepository repository = new TaskRepository(REPOSITORY_KIND, REPOSITORY_URL);
- TasksUiPlugin.getRepositoryManager().addRepository(repository,
- TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TasksUiPlugin.getDefault().setRepositoryForResource(projectWrapper.getProject(), repository);
- TaskRepository returnedRepository = TasksUiPlugin.getDefault().getRepositoryForResource(
- projectWrapper.getProject(), true);
- assertNotNull(returnedRepository);
- assertEquals(REPOSITORY_KIND, returnedRepository.getKind());
- assertEquals(REPOSITORY_URL, returnedRepository.getUrl());
- }
-
- public void testRepositoryForFolder() throws CoreException {
- IFolder folder = projectWrapper.createFolder("testFolder");
- assertTrue(folder.exists());
- assertNull(TasksUiPlugin.getDefault().getRepositoryForResource(folder, true));
- TaskRepository repository = new TaskRepository(REPOSITORY_KIND, REPOSITORY_URL);
- TasksUiPlugin.getRepositoryManager().addRepository(repository,
- TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TasksUiPlugin.getDefault().setRepositoryForResource(folder, repository);
- TaskRepository returnedRepository = TasksUiPlugin.getDefault().getRepositoryForResource(
- folder, true);
- assertNotNull(returnedRepository);
- assertEquals(REPOSITORY_KIND, returnedRepository.getKind());
- assertEquals(REPOSITORY_URL, returnedRepository.getUrl());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositorySettingsPageTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositorySettingsPageTest.java
deleted file mode 100644
index 939ab1973..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositorySettingsPageTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryUi;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Steffen Pingel
- */
-public class RepositorySettingsPageTest extends TestCase {
-
- public void testNeedsEncoding() {
- TaskRepository repository = new TaskRepository("kind", "http://localhost/");
- repository.setCharacterEncoding("UTF-8");
-
- MockRepositorySettingsPage page = new MockRepositorySettingsPage(new MockRepositoryUi());
- page.setNeedsEncoding(true);
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- page.createControl(shell);
- page.setVisible(true);
-
- TaskRepository repository2 = page.createTaskRepository();
- assertEquals("UTF-8", repository2.getCharacterEncoding());
- }
-
- public void testNeedsEncodingFalse() {
- MockRepositorySettingsPage page = new MockRepositorySettingsPage(new MockRepositoryUi());
- page.setNeedsEncoding(false);
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- page.createControl(shell);
- page.setVisible(true);
-
- page.createTaskRepository();
- }
-
- public void testNeedsAnonyoumousLoginFalse() {
- MockRepositorySettingsPage page = new MockRepositorySettingsPage(new MockRepositoryUi());
- page.setNeedsAnonymousLogin(false);
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- page.createControl(shell);
- page.setVisible(true);
-
- assertNull(page.getAnonymousButton());
- }
-
- public void testNeedsAnonyoumousLoginNoRepository() {
- MockRepositorySettingsPage page = new MockRepositorySettingsPage(new MockRepositoryUi());
- page.setNeedsAnonymousLogin(true);
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- page.createControl(shell);
- page.setVisible(true);
-
- assertNotNull(page.getAnonymousButton());
-
- assertFalse(page.getAnonymousButton().getSelection());
- assertTrue(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
- assertTrue(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
- assertEquals("", page.getUserName());
- assertEquals("", page.getPassword());
- }
-
- public void testNeedsAnonyoumousLogin() {
- TaskRepository repository = new TaskRepository("kind", "http://localhost/");
- MockRepositorySettingsPage page = new MockRepositorySettingsPage(new MockRepositoryUi());
- page.setNeedsAnonymousLogin(true);
- page.setRepository(repository);
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- page.createControl(shell);
- page.setVisible(true);
-
- assertNotNull(page.getAnonymousButton());
-
- assertTrue(page.getAnonymousButton().getSelection());
- assertFalse(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
- assertFalse(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
- assertEquals("", page.getUserName());
- assertEquals("", page.getPassword());
-
- page.getAnonymousButton().setSelection(false);
- page.getAnonymousButton().notifyListeners(SWT.Selection, new Event());
- assertTrue(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
- assertTrue(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
- page.getUserNameEditor().setStringValue("user");
- page.getPasswordEditor().setStringValue("password");
- assertEquals("user", page.getUserName());
- assertEquals("password", page.getPassword());
-
- page.getAnonymousButton().setSelection(true);
- page.getAnonymousButton().notifyListeners(SWT.Selection, new Event());
- assertFalse(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
- assertFalse(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
- assertEquals("", page.getUserName());
- assertEquals("", page.getPassword());
-
- page.getAnonymousButton().setSelection(false);
- page.getAnonymousButton().notifyListeners(SWT.Selection, new Event());
- assertTrue(page.getUserNameEditor().getTextControl(page.getParent()).isEnabled());
- assertTrue(page.getPasswordEditor().getTextControl(page.getParent()).isEnabled());
- assertEquals("user", page.getUserNameEditor().getStringValue());
- assertEquals("password", page.getPasswordEditor().getStringValue());
- assertEquals("user", page.getUserName());
- assertEquals("password", page.getPassword());
- }
-
- private class MockRepositorySettingsPage extends AbstractRepositorySettingsPage {
-
- private Composite parent;
-
- public MockRepositorySettingsPage(AbstractRepositoryConnectorUi repositoryUi) {
- super("title", "description", repositoryUi);
- }
-
- @Override
- protected void createAdditionalControls(Composite parent) {
- this.parent = parent;
- }
-
- @Override
- protected boolean isValidUrl(String name) {
- // ignore
- return false;
- }
-
- @Override
- protected void validateSettings() {
- // ignore
- }
-
- Button getAnonymousButton() {
- return anonymousButton;
- }
-
- StringFieldEditor getUserNameEditor() {
- return userNameEditor;
- }
-
- StringFieldEditor getPasswordEditor() {
- return passwordEditor;
- }
-
- Composite getParent() {
- return parent;
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositoryTaskSynchronizationTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositoryTaskSynchronizationTest.java
deleted file mode 100644
index b127588c1..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RepositoryTaskSynchronizationTest.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests;
-
-import java.io.UnsupportedEncodingException;
-import java.net.Proxy;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Set;
-
-import javax.security.auth.login.LoginException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.tests.connector.MockAttributeFactory;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryConnector;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryTask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- */
-public class RepositoryTaskSynchronizationTest extends TestCase {
-
- private static final String DATE_STAMP_3 = "2006-06-21 15:29:42";
-
- private static final String DATE_STAMP_2 = "2006-06-21 15:29:41";
-
- private static final String DATE_STAMP_1 = "2006-06-21 15:29:40";
-
- private static final String HANDLE1 = "handle1";
-
- private static final String URL1 = "http://www.eclipse.org/mylar";
-
- private TestRepositoryConnector connector = new TestRepositoryConnector();
-
- private TestOfflineTaskHandler handler = new TestOfflineTaskHandler();
-
- private RepositoryTaskData newData;
-
- protected void setUp() throws Exception {
- super.setUp();
- TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testHasIncoming() {
- AbstractRepositoryTask task = new MockRepositoryTask(HANDLE1);
- RepositoryTaskData taskData = new RepositoryTaskData(new MockAttributeFactory(), connector.getRepositoryType(),
- URL1, "1");
- //assertTrue(TasksUiPlugin.getSynchronizationManager().checkHasIncoming(task, taskData));
- task.setLastSyncDateStamp("never");
- assertTrue(TasksUiPlugin.getSynchronizationManager().checkHasIncoming(task, taskData));
- taskData.setAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED, "2006-06-21 15:29:39");
- assertTrue(TasksUiPlugin.getSynchronizationManager().checkHasIncoming(task, taskData));
- taskData.setAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED, DATE_STAMP_1);
- assertTrue(TasksUiPlugin.getSynchronizationManager().checkHasIncoming(task, taskData));
- task.setLastSyncDateStamp("2006-06-21 15:29:39");
- assertTrue(TasksUiPlugin.getSynchronizationManager().checkHasIncoming(task, taskData));
- task.setLastSyncDateStamp(DATE_STAMP_1);
- assertFalse(TasksUiPlugin.getSynchronizationManager().checkHasIncoming(task, taskData));
- }
-
- public void testIncomingToIncoming() {
- /*
- * - Synchronize task with incoming changes - Make another change using
- * browser - Open report in tasklist (editor opens with old 'new' data
- * and background sync occurs) - Incoming status set again on task due
- * to 2nd occurrence of new incoming data
- */
-
- // Test unforced
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.INCOMING,
- RepositoryTaskSyncState.INCOMING);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_2, task.getTaskData().getLastModified());
- // and again...
-
- RepositoryTaskData taskData3 = new RepositoryTaskData(new MockAttributeFactory(), connector.getRepositoryType(), URL1, "1");
- taskData3.setAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED, DATE_STAMP_3);
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, taskData3, false);
- // last modified stamp not updated until user synchronizes (newdata == olddata)
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- assertEquals(DATE_STAMP_3, task.getTaskData().getLastModified());
-
- // Should keep INCOMING state state since new data has same date samp and sych is not forced.
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, taskData3, false);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- assertEquals(DATE_STAMP_3, task.getTaskData().getLastModified());
- }
-
- public void testIncomingToSynchronized() {
- // When not forced, tasks with incoming state should remain in incoming state if
- // if new data has same date stamp as old data.
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.INCOMING,
- RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-
- // Test forced (should move to synced state if new data has same date stamp)
- task = primeTaskAndRepository(RepositoryTaskSyncState.INCOMING, RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-
- // Test forced with remote incoming
- task = primeTaskAndRepository(RepositoryTaskSyncState.INCOMING, RepositoryTaskSyncState.INCOMING);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(DATE_STAMP_2, task.getLastSyncDateStamp());
-
- }
-
-// public void testIncomingToSynchronizedWithVoidSyncTime() {
-// // IF the last sync time (modified timestamp on task) is null, this can result
-// // in the editor refresh/repoen going into an infinite loops since the task never
-// // gets to a synchronized state if the last mod time isn't set. It is now being set
-// // if found to be null.
-// AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.INCOMING,
-// RepositoryTaskSyncState.SYNCHRONIZED);
-// assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-// task.setLastSyncDateStamp(null);
-// TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
-// assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
-// assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-//
-// TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
-// assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
-// assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-// }
-
- /*
- * public void testIncomingToConflict() { // invalid }
- */
-
- /*
- * public void testIncomingToOutgoing() { // invalid }
- */
-
- public void testSynchronizedToIncoming() {
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.SYNCHRONIZED,
- RepositoryTaskSyncState.INCOMING);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_2, task.getTaskData().getLastModified());
- // assertEquals(DATE_STAMP_2, task.getLastModifiedDateStamp());
- }
-
- public void testSynchronizedToSynchronized() {
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.SYNCHRONIZED,
- RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- }
-
- /*
- * public void testSynchronizedToConflict() { // invalid }
- */
-
- public void testSynchronizedToOutgoing() {
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.SYNCHRONIZED,
- RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-
- task.getTaskData().setNewComment("new comment");
- task.getTaskData().setHasLocalChanges(true);
-
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, task.getTaskData(), false);
- assertEquals(RepositoryTaskSyncState.OUTGOING, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- }
-
- public void testConflictToIncoming() {
- // Forced
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.CONFLICT,
- RepositoryTaskSyncState.INCOMING);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_2, task.getTaskData().getLastModified());
- // assertEquals(DATE_STAMP_2, task.getLastModifiedDateStamp());
- }
-
- public void testConflictToSynchonized() {
- // Forced
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.CONFLICT,
- RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- }
-
- /*
- * public void testConflictToConflict() { // ui involved }
- */
-
- /*
- * public void testConflictToOutgoing() { // invalid? }
- */
-
- public void testOutgoingToIncoming() {
- // Forced
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.OUTGOING,
- RepositoryTaskSyncState.INCOMING);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- assertEquals(DATE_STAMP_2, task.getTaskData().getLastModified());
- // assertEquals(DATE_STAMP_2, task.getLastModifiedDateStamp());
- }
-
- public void testOutgoingToSynchronized() {
- // Forced
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.OUTGOING,
- RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
-
- // Forced with Incoming (user submits a report)
- task = primeTaskAndRepository(RepositoryTaskSyncState.OUTGOING, RepositoryTaskSyncState.INCOMING);
- task.setTaskData(null);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, true);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- assertEquals(DATE_STAMP_2, task.getLastSyncDateStamp());
- }
-
- /*
- * public void testOutgoingToConflict() { // ui required }
- */
-
- public void testOutgoingToOutgoing() {
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.OUTGOING,
- RepositoryTaskSyncState.SYNCHRONIZED);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(task, newData, false);
- assertEquals(RepositoryTaskSyncState.OUTGOING, task.getSyncState());
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- }
-
- public void testMarkRead() {
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.INCOMING,
- RepositoryTaskSyncState.SYNCHRONIZED);
- task.setLastSyncDateStamp(null);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- TasksUiPlugin.getSynchronizationManager().setTaskRead(task, true);
- assertEquals(DATE_STAMP_1, task.getLastSyncDateStamp());
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- }
-
- public void testMarkUnread() {
- AbstractRepositoryTask task = primeTaskAndRepository(RepositoryTaskSyncState.SYNCHRONIZED,
- RepositoryTaskSyncState.SYNCHRONIZED);
- task.setLastSyncDateStamp(null);
- assertEquals(RepositoryTaskSyncState.SYNCHRONIZED, task.getSyncState());
- TasksUiPlugin.getSynchronizationManager().setTaskRead(task, false);
- assertEquals(RepositoryTaskSyncState.INCOMING, task.getSyncState());
- }
-
- private class TestOfflineTaskHandler implements IOfflineTaskHandler {
-
- private final String DATE_FORMAT_2 = "yyyy-MM-dd HH:mm:ss";
-
- private final SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_2);
-
- public AbstractAttributeFactory getAttributeFactory() {
- // ignore
- return null;
- }
-
- public Date getDateForAttributeType(String attributeKey, String dateString) {
-
- try {
- return format.parse(dateString);
- } catch (ParseException e) {
- return null;
- }
- }
-
- public Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository,
- Set<AbstractRepositoryTask> tasks, Proxy proxySettings) throws CoreException, UnsupportedEncodingException {
- return null;
- }
-
- public RepositoryTaskData downloadTaskData(AbstractRepositoryTask repositoryTask, TaskRepository repository,
- Proxy proxySettings) throws CoreException, LoginException {
- return null;
- }
-
- }
-
- private class TestRepositoryConnector extends MockRepositoryConnector {
-
- @Override
- public IOfflineTaskHandler getOfflineTaskHandler() {
- return handler;
- }
-
- // @Override
- // protected void removeOfflineTaskData(RepositoryTaskData bug) {
- // // ignore
- // }
- //
- // @Override
- // public void saveOffline(RepositoryTaskData taskData) {
- // // ignore
- // }
-
- // @Override
- // protected RepositoryTaskData
- // loadOfflineTaskData(AbstractRepositoryTask repositoryTask) {
- // return repositoryTask.getTaskData();
- // }
-
- }
-
- private AbstractRepositoryTask primeTaskAndRepository(RepositoryTaskSyncState localState,
- RepositoryTaskSyncState remoteState) {
- RepositoryTaskData taskData = null;
- AbstractRepositoryTask task = new MockRepositoryTask(HANDLE1);
-
- taskData = new RepositoryTaskData(new MockAttributeFactory(), connector.getRepositoryType(), URL1, "1");
- taskData.setAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED, DATE_STAMP_1);
- task.setLastSyncDateStamp(DATE_STAMP_1);
- task.setTaskData(taskData);
- task.setSyncState(localState);
-
- newData = new RepositoryTaskData(new MockAttributeFactory(), connector.getRepositoryType(), URL1, "1");
-
- switch (remoteState) {
- case CONFLICT:
- case INCOMING:
- newData.setAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED, DATE_STAMP_2);
- break;
- case SYNCHRONIZED:
- newData.setAttributeValue(RepositoryTaskAttribute.DATE_MODIFIED, DATE_STAMP_1);
- break;
- default:
- fail("Remote repository can only be INCOMING or SYNCHRONIZED wrt the local task.");
-
- }
-
- return task;
-
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RetrieveTitleFromUrlTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RetrieveTitleFromUrlTest.java
deleted file mode 100644
index 96279315a..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/RetrieveTitleFromUrlTest.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.tasks.tests;
-
-import java.lang.reflect.InvocationTargetException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.tasks.ui.RetrieveTitleFromUrlJob;
-
-/**
- * @author Mik Kersten
- */
-public class RetrieveTitleFromUrlTest extends TestCase {
-
- // XXX broken due to hang that causes the scheduled job to never complete
- public void testRetrieve() throws InterruptedException, InvocationTargetException {
- final String url = "http://eclipse.org/mylar/index.php";
- final String knownTitle = "Mylar Technology Project";
-
- RetrieveTitleFromUrlJob job = new RetrieveTitleFromUrlJob(url) {
-
- public void setTitle(String title) {
- assertEquals(knownTitle, title);
- }
- };
- job.run(new NullProgressMonitor());
-
- assertTrue(job.isTitleRetrieved());
- assertEquals(knownTitle, job.getPageTitle());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TableSorterTest.java
deleted file mode 100644
index 9c1744ac8..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/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.tasks.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListTableSorter;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.core.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/tasks/tests/TaskActivityViewTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityViewTest.java
deleted file mode 100644
index 808146a04..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskActivityViewTest.java
+++ /dev/null
@@ -1,535 +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.tasks.tests;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.core.InteractionEvent;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.tasks.core.DateRangeActivityDelegate;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @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 = TasksUiPlugin.getTaskListManager().getTaskList();
- }
-
- protected void tearDown() throws Exception {
-// MylarTaskListPlugin.getTaskListManager().readExistingOrCreateNewList();
- TasksUiPlugin.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);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task2);
-
- // test this week
- DateRangeContainer thisWeekActivity = TasksUiPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(thisWeekActivity);
- assertEquals(0, thisWeekActivity.getChildren().size());
- assertEquals(0, thisWeekActivity.getTotalElapsed());
- Calendar thisWeekCalendarStart = GregorianCalendar.getInstance();
- thisWeekCalendarStart.setTime(thisWeekActivity.getStart().getTime());
- Calendar thisWeekCalendarStop = GregorianCalendar.getInstance();
- thisWeekCalendarStop.setTime(thisWeekActivity.getStart().getTime());
- thisWeekCalendarStop.add(Calendar.MILLISECOND, 2);
- assertTrue(thisWeekActivity.includes(thisWeekCalendarStart));
-
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- thisWeekCalendarStart.getTime(), thisWeekCalendarStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- thisWeekCalendarStop.getTime(), thisWeekCalendarStop.getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(1, thisWeekActivity.getChildren().size());
- assertEquals(thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime(),
- thisWeekActivity.getTotalElapsed());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.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_DELTA_ACTIVATED, 2f, thisWeekCalendarStart
- .getTime(), thisWeekCalendarStart.getTime());
- event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2.getHandleIdentifier(),
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, thisWeekCalendarStop
- .getTime(), thisWeekCalendarStop.getTime());
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(2, thisWeekActivity.getChildren().size());
-
- // test Past
- DateRangeContainer pastActivity = TasksUiPlugin.getTaskListManager().getActivityPast();
- assertNotNull(pastActivity);
- assertEquals(0, pastActivity.getChildren().size());
-
- InteractionEvent event3 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- pastActivity.getStart().getTime(), pastActivity.getStart().getTime());
- InteractionEvent event4 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- pastActivity.getEnd().getTime(), pastActivity.getEnd().getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event3);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event4);
- assertEquals(1, pastActivity.getChildren().size());
-
- // test Future
- DateRangeContainer futureActivity = TasksUiPlugin.getTaskListManager().getActivityFuture();
- assertNotNull(futureActivity);
- assertEquals(0, futureActivity.getChildren().size());
-
- InteractionEvent event5 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- futureActivity.getStart().getTime(), futureActivity.getStart().getTime());
- InteractionEvent event6 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- futureActivity.getEnd().getTime(), futureActivity.getEnd().getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event5);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event6);
- assertEquals(1, futureActivity.getChildren().size());
-
- // test Next week activity
- DateRangeContainer activityNextWeek = TasksUiPlugin.getTaskListManager().getActivityNextWeek();
- assertNotNull(activityNextWeek);
- assertEquals(0, activityNextWeek.getChildren().size());
-
- InteractionEvent event7 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- activityNextWeek.getStart().getTime(), activityNextWeek.getStart().getTime());
- InteractionEvent event8 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- activityNextWeek.getEnd().getTime(), activityNextWeek.getEnd().getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event7);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event8);
- assertEquals(1, activityNextWeek.getChildren().size());
-
- // test Previous week activity
- DateRangeContainer activityPreviousWeek = TasksUiPlugin.getTaskListManager().getActivityPrevious();
- assertNotNull(activityPreviousWeek);
- assertEquals(0, activityPreviousWeek.getChildren().size());
-
- InteractionEvent event9 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- activityPreviousWeek.getStart().getTime(), activityPreviousWeek.getStart().getTime());
- InteractionEvent event10 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- activityPreviousWeek.getEnd().getTime(), activityPreviousWeek.getEnd().getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event9);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event10);
- assertEquals(1, activityPreviousWeek.getChildren().size());
- }
-
- /**
- * Some 'attention' events when all tasks are inactive
- * @author Yuri Baburov (burchik@gmail.com)
- */
- public void testTaskListManagerActivity2(){
- ITask task1 = new Task("task 1", "Task 1", true);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
- DateRangeContainer thisWeekActivity = TasksUiPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(thisWeekActivity);
- assertEquals(0, thisWeekActivity.getChildren().size());
- assertEquals(0, thisWeekActivity.getTotalElapsed());
- thisWeekActivity.getStart().setTimeInMillis(1149490800000L); // Start of the week Jun 5 2006 - Jun 11 2006, NOVST
- thisWeekActivity.getEnd().setTimeInMillis(1150095600000L); // End of the week
-
- Date time1 = new Date(1149911820812L); // Sat Jun 10 10:57:00 NOVST 2006 - task 1 - activated
- Date time2 = new Date(1149911820812L); // Sat Jun 10 10:57:00 NOVST 2006 - task 1 - deactivated
- Date time3 = new Date(1149911840812L); // Sat Jun 10 10:57:20 NOVST 2006 - attention - deactivated
- Date time4 = new Date(1149911941765L); // Sat Jun 10 10:59:01 NOVST 2006 - attention - activated
- Date time5 = new Date(1149911948953L); // Sat Jun 10 10:59:08 NOVST 2006 - task 1 - activated
- Date time6 = new Date(1149911988781L); // Sat Jun 10 10:59:48 NOVST 2006 - task 1 - deactivated
-
- String task1handle = task1.getHandleIdentifier();
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1handle,
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, time1, time1);
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1handle,
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time2, time2);
- InteractionEvent event3 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time3, time3);
- InteractionEvent event4 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, time4, time4);
- InteractionEvent event5 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1handle,
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, time5, time5);
- InteractionEvent event6 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1handle,
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time6, time6);
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event3);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event4);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event5);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event6);
- assertEquals(1, thisWeekActivity.getChildren().size());
- long expectedTotalTime = time6.getTime() - time5.getTime() + time2.getTime() - time1.getTime();
- assertEquals(expectedTotalTime, thisWeekActivity.getTotalElapsed());
- assertEquals(expectedTotalTime, TasksUiPlugin.getTaskListManager().getElapsedTime(task1));
- assertEquals(expectedTotalTime, thisWeekActivity.getElapsed(new DateRangeActivityDelegate(thisWeekActivity,
- task1, null, null)));
- }
-
- /**
- * Task with some inner 'attention' events
- * @author Yuri Baburov (burchik@gmail.com)
- */
- public void testTaskListManagerActivity3(){
- ITask task1 = new Task("task 1", "Task 1", true);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
- DateRangeContainer thisWeekActivity = TasksUiPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(thisWeekActivity);
- assertEquals(0, thisWeekActivity.getChildren().size());
- assertEquals(0, thisWeekActivity.getTotalElapsed());
- thisWeekActivity.getStart().setTimeInMillis(1149490800000L); // Start of the week Jun 5 2006 - Jun 11 2006, NOVST
- thisWeekActivity.getEnd().setTimeInMillis(1150095600000L); // End of the week
-
- Date time1 = new Date(1150007053171L); // Sun Jun 11 13:24:13 NOVST 2006 - task 1 - activated
- Date time2 = new Date(1150007263468L); // Sun Jun 11 13:27:43 NOVST 2006 - attention - deactivated
- Date time3 = new Date(1150021535953L); // Sun Jun 11 17:25:35 NOVST 2006 - attention - activated
- Date time4 = new Date(1150021658500L); // Sun Jun 11 17:27:38 NOVST 2006 - attention - deactivated
- Date time5 = new Date(1150031089250L); // Sun Jun 11 20:04:49 NOVST 2006 - attention - activated
- Date time6 = new Date(1150031111578L); // Sun Jun 11 20:05:11 NOVST 2006 - attention - deactivated
- Date time7 = new Date(1150031111578L); // Sun Jun 11 20:05:11 NOVST 2006 - task 1 - deactivated
-
- String task1handle = task1.getHandleIdentifier();
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1handle,
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, time1, time1);
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time2, time2);
- InteractionEvent event3 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, time3, time3);
- InteractionEvent event4 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time4, time4);
- InteractionEvent event5 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, time5, time5);
- InteractionEvent event6 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", "attention",
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time6, time6);
- InteractionEvent event7 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1handle,
- "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, time7, time7);
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event3);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event4);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event5);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event6);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event7);
- assertEquals(1, thisWeekActivity.getChildren().size());
- long expectedTotalTime =
- time6.getTime() - time5.getTime() +
- time4.getTime() - time3.getTime() +
- time2.getTime() - time1.getTime();
- assertEquals(expectedTotalTime, thisWeekActivity.getTotalElapsed());
- assertEquals(expectedTotalTime, thisWeekActivity.getElapsed(new DateRangeActivityDelegate(thisWeekActivity,
- task1, null, null)));
- }
-
- public void testTaskListManagerInactivity() {
-
- ITask task1 = new Task("task 1", "Task 1", true);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
-
- DateRangeContainer activityThisWeek = TasksUiPlugin.getTaskListManager().getActivityThisWeek();
- assertNotNull(activityThisWeek);
- assertEquals(0, activityThisWeek.getChildren().size());
-
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- activityThisWeek.getStart().getTime(), activityThisWeek.getStart().getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_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_ATTENTION, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime());
- InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE_ATTENTION, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, inactivityEnd.getTime(), inactivityEnd.getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2);
- TasksUiPlugin.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);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
-
- DateRangeContainer activityThisWeek = TasksUiPlugin.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_DELTA_ACTIVATED, 2f,
- taskActivationStart.getTime(), taskActivationStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- taskActivationStop.getTime(), taskActivationStop.getTime());
-
- InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE_ATTENTION, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime());
- InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE_ATTENTION, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, inactivityStop.getTime(), inactivityStop.getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2);
- TasksUiPlugin.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);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
-
- DateRangeContainer activityThisWeek = TasksUiPlugin.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_DELTA_ACTIVATED, 2f,
- taskActivationStart.getTime(), taskActivationStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- taskActivationStop.getTime(), taskActivationStop.getTime());
-
- InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE_ATTENTION, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime());
- InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind",
- MylarContextManager.ACTIVITY_HANDLE_ATTENTION, "originId", "navigatedRelation",
- MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f, inactivityStop.getTime(), inactivityStop.getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
- TasksUiPlugin.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)));
- }
-
- public void testResetAndRollOver() {
-
- DateRangeContainer pastWeeks = TasksUiPlugin.getTaskListManager().getActivityPast();
- DateRangeContainer previousWeek = TasksUiPlugin.getTaskListManager().getActivityPrevious();
- DateRangeContainer thisWeek = TasksUiPlugin.getTaskListManager().getActivityThisWeek();
- DateRangeContainer nextWeek = TasksUiPlugin.getTaskListManager().getActivityNextWeek();
- DateRangeContainer futureWeeks = TasksUiPlugin.getTaskListManager().getActivityFuture();
-
- assertTrue(thisWeek.isPresent());
- assertTrue(nextWeek.isFuture());
-
- long pastStartTime = pastWeeks.getEnd().getTimeInMillis();
- long previousStartTime = previousWeek.getStart().getTimeInMillis();
- long thisWeekStartTime = thisWeek.getStart().getTimeInMillis();
- long nextStartTime = nextWeek.getStart().getTimeInMillis();
- long futureStartTime = futureWeeks.getStart().getTimeInMillis();
-
- Calendar pastWeeksTaskStart = Calendar.getInstance();
- pastWeeksTaskStart.setTimeInMillis(pastStartTime - 10);
- assertTrue(pastWeeks.includes(pastWeeksTaskStart));
-
- Calendar previousWeekTaskStart = Calendar.getInstance();
- previousWeekTaskStart.setTimeInMillis(previousStartTime + 10);
- assertTrue(previousWeek.includes(previousWeekTaskStart));
-
- Calendar thisWeekTaskStart = Calendar.getInstance();
- thisWeekTaskStart.setTimeInMillis(thisWeekStartTime + 10);
- assertTrue(thisWeek.includes(thisWeekTaskStart));
-
- Calendar thisWeekTaskStop = Calendar.getInstance();
- thisWeekTaskStop.setTimeInMillis(thisWeek.getEnd().getTimeInMillis() - 10);
- assertTrue(thisWeek.includes(thisWeekTaskStop));
-
- Calendar nextWeekTaskStart = Calendar.getInstance();
- nextWeekTaskStart.setTimeInMillis(nextStartTime + 10);
- assertTrue(nextWeek.includes(nextWeekTaskStart));
-
- Calendar futureWeekTaskStart = Calendar.getInstance();
- futureWeekTaskStart.setTimeInMillis(futureStartTime + 10);
- assertTrue(futureWeeks.includes(futureWeekTaskStart));
-
- ITask task1 = new Task("task 1", "Task 1", true);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
- InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_ACTIVATED, 2f,
- thisWeekTaskStart.getTime(), thisWeekTaskStart.getTime());
- InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1
- .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DELTA_DEACTIVATED, 2f,
- thisWeekTaskStop.getTime(), thisWeekTaskStop.getTime());
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
- assertEquals(1, thisWeek.getChildren().size());
- assertEquals(thisWeekTaskStop.getTime().getTime() - thisWeekTaskStart.getTime().getTime(),
- thisWeek.getTotalElapsed());
-
- // ROLL OVER
- TasksUiPlugin.getTaskListManager().startTime = new Date(nextWeek.getStart().getTimeInMillis() + 10);
- TasksUiPlugin.getTaskListManager().resetAndRollOver();
-
-
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event1);
- TasksUiPlugin.getTaskListManager().parseInteractionEvent(event2);
-
-
- DateRangeContainer newPastWeeks = TasksUiPlugin.getTaskListManager().getActivityPast();
- DateRangeContainer newPreviousWeek = TasksUiPlugin.getTaskListManager().getActivityPrevious();
- DateRangeContainer newThisWeek = TasksUiPlugin.getTaskListManager().getActivityThisWeek();
- DateRangeContainer newNextWeek = TasksUiPlugin.getTaskListManager().getActivityNextWeek();
- //DateRangeContainer newFutureWeeks = MylarTaskListPlugin.getTaskListManager().getActivityFuture();
-
- assertTrue(newPastWeeks.includes(previousWeekTaskStart));
- assertTrue(newPreviousWeek.includes(thisWeekTaskStart));
- assertTrue(newThisWeek.includes(nextWeekTaskStart));
- assertTrue(newNextWeek.includes(futureWeekTaskStart));
-
- assertFalse(newThisWeek.includes(thisWeekTaskStart));
- assertFalse(newThisWeek.isPresent());
- assertTrue(newThisWeek.isFuture());
-
- assertEquals(1, newPreviousWeek.getChildren().size());
- assertEquals(thisWeekTaskStop.getTime().getTime() - thisWeekTaskStart.getTime().getTime(),
- newPreviousWeek.getTotalElapsed());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java
deleted file mode 100644
index 5c8e13059..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java
+++ /dev/null
@@ -1,161 +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.tasks.tests;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.InteractionEvent;
-import org.eclipse.mylar.context.tests.AbstractContextTest;
-import org.eclipse.mylar.internal.context.core.MylarContext;
-import org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataExportWizard;
-import org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataExportWizardPage;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Test case for the Task Export Wizard
- *
- * @author Wesley Coelho
- * @author Mik Kersten (fixes)
- */
-public class TaskDataExportTest extends AbstractContextTest {
-
- private TaskDataExportWizard wizard = null;
-
- private TaskDataExportWizardPage wizardPage = null;
-
- private File destinationDir = null;
-
- private ITask task1 = null;
-
- private TaskListManager manager = TasksUiPlugin.getTaskListManager();
-
- private MylarContext mockContext;
-
- protected void setUp() throws Exception {
- super.setUp();
-
- removeFiles(new File(TasksUiPlugin.getDefault().getDataDirectory()));
-
- // Create the export wizard
- wizard = new TaskDataExportWizard();
- wizard.addPages();
- wizard.createPageControls(new Shell());
- wizardPage = (TaskDataExportWizardPage) wizard.getPage(TaskDataExportWizardPage.PAGE_NAME);
- assertNotNull(wizardPage);
-
- // Create test export destination directory
- destinationDir = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator + "TestDir");
- if(destinationDir.exists()) {
- removeFiles(destinationDir);
- } else {
- destinationDir.mkdir();
- }
- assertTrue(destinationDir.exists());
-
- // Create a task and context with an interaction event to be saved
- task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "Export Test Task", true);
- manager.getTaskList().moveToRoot(task1);
- mockContext = ContextCorePlugin.getContextManager().loadContext(task1.getHandleIdentifier());
- InteractionEvent event = new InteractionEvent(InteractionEvent.Kind.EDIT, "structureKind", "handle", "originId");
- mockContext.parseEvent(event);
- ContextCorePlugin.getContextManager().activateContext(mockContext);
-
- // Save the context file and check that it exists
- ContextCorePlugin.getContextManager().saveContext(mockContext.getHandleIdentifier());
- File taskFile = ContextCorePlugin.getContextManager().getFileForContext(task1.getHandleIdentifier());
- assertTrue(ContextCorePlugin.getContextManager().hasContext(task1.getHandleIdentifier()));
- assertTrue(taskFile.exists());
- }
-
- protected void tearDown() throws Exception {
- removeFiles(destinationDir);
- destinationDir.delete();
- assertFalse(destinationDir.exists());
- ContextCorePlugin.getContextManager().deactivateContext(mockContext.getHandleIdentifier());
- super.tearDown();
- }
-
- /**
- * Tests the wizard when it has been asked to export all task data to a zip
- * file
- */
- public void testExportAllToZip() throws Exception {
-
- // Set parameters in the wizard to simulate a user setting them and
- // clicking "Finish"
- wizardPage.setParameters(true, true, true, true, true, destinationDir.getPath());
- wizard.performFinish();
-
- // Check that the task list file was exported
- File destZipFile = new File(destinationDir + File.separator + TaskDataExportWizard.getZipFileName());
- assertTrue(destZipFile.exists());
- ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(destZipFile));
- ArrayList<String> entries = new ArrayList<String>();
-
- ZipEntry entry = zipInputStream.getNextEntry();
- while (entry != null) {
- entries.add(entry.getName());
- entry = zipInputStream.getNextEntry();
- }
- zipInputStream.close();
- assertEquals(2, entries.size());
- assertTrue(entries.contains("tasklist.xml.zip"));
- assertTrue(entries.contains("contexts/local-1.xml.zip"));
- }
-
- // /** Tests the wizard when it has been asked to export all task data */
- // public void testExportAll() {
- //
- // // Set parameters in the wizard to simulate a user setting them and
- // // clicking "Finish"
- // wizardPage.setParameters(true, true, true, true, false,
- // destinationDir.getPath());
- // wizard.performFinish();
- //
- // // Check that the task list file was exported
- // File destTaskListFile = new File(destinationDir + File.separator +
- // TasksUiPlugin.OLD_TASK_LIST_FILE);
- // assertTrue(destTaskListFile.exists());
- //
- // // Check that the activity history file was exported
- // File destActivationHistoryFile = new File(destinationDir + File.separator
- // + MylarContextManager.CONTEXT_HISTORY_FILE_NAME +
- // MylarContextManager.OLD_CONTEXT_FILE_EXTENSION);
- // assertTrue(destActivationHistoryFile.exists());
- //
- // // Check that the task context file created in setUp() was exported
- // File destTaskContextFile =
- // ContextCorePlugin.getContextManager().getFileForContext(task1.getHandleIdentifier());
- // // File destTaskContextFile = new File(destinationDir + File.separator +
- // // task1.getContextPath() + MylarContextManager.CONTEXT_FILE_EXTENSION);
- // assertTrue(destTaskContextFile.exists());
- // }
-
- private void removeFiles(File root) {
- if (root.isDirectory()) {
- for (File file : root.listFiles()) {
- if (file.isDirectory()) {
- removeFiles(file);
- }
- file.delete();
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataImportTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataImportTest.java
deleted file mode 100644
index 2bd9bf949..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskDataImportTest.java
+++ /dev/null
@@ -1,165 +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.tasks.tests;
-
-import java.io.File;
-import java.util.Collection;
-
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.tests.AbstractContextTest;
-import org.eclipse.mylar.internal.context.core.MylarContext;
-import org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataImportWizard;
-import org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataImportWizardPage;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Test case for the Task Import Wizard
- *
- * @author Rob Elves
- */
-public class TaskDataImportTest extends AbstractContextTest {
-
- private TaskDataImportWizard wizard = null;
-
- private TaskDataImportWizardPage wizardPage = null;
-
- private String sourceDir = "testdata/taskdataimporttest";
-
- private File sourceDirFile = null;
-
- private String sourceZipPath = "testdata/taskdataimporttest/mylardata-2006-02-16.zip";
-
- private File sourceZipFile = null;
-
- private TaskListManager manager = TasksUiPlugin.getTaskListManager();
-
- protected void setUp() throws Exception {
- super.setUp();
-
- // Create the import wizard
- wizard = new TaskDataImportWizard();
- wizard.addPages();
- wizard.createPageControls(new Shell());
- wizardPage = (TaskDataImportWizardPage) wizard.getPage(TaskDataImportWizardPage.PAGE_NAME);
- assertNotNull(wizardPage);
-
- manager.resetTaskList();
- assertTrue(manager.getTaskList().getRootElements().size() == 1);
-
- sourceDirFile = TaskTestUtil.getLocalFile(sourceDir);
- assertTrue(sourceDirFile.exists());
- sourceZipFile = TaskTestUtil.getLocalFile(sourceZipPath);
- assertTrue(sourceZipFile.exists());
-
- // make sure no tasks and categories exist prior to import tests
- assertEquals(1, manager.getTaskList().getTaskContainers().size());
- ContextCorePlugin.getContextManager().getActivityHistoryMetaContext().reset();
- }
-
- protected void tearDown() throws Exception {
- ContextCorePlugin.getContextManager().resetActivityHistory();
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TasksUiPlugin.getTaskListManager().resetTaskList();
- super.tearDown();
- }
-
- /** Tests the wizard when it has been asked to import task data from folder */
- public void testImportFromAllFromFolder() {
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- MylarContext historyContext = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext();
- assertNotNull(taskList);
- assertNotNull(historyContext);
- assertTrue(taskList.getAllTasks().size() == 0);
- assertTrue(historyContext.getInteractionHistory().size() == 0);
- assertEquals(0, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
-
- wizardPage.setParameters(true, true, true, true, false, sourceDirFile.getPath(), "");
- wizard.performFinish();
-
- Collection<ITask> tasks = taskList.getAllTasks();
- assertTrue(tasks.size() > 0);
- for (ITask task : tasks) {
- assertTrue(ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier()));
- }
- historyContext = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext();
- assertNotNull(historyContext);
- assertTrue(historyContext.getInteractionHistory().size() > 0);
- assertEquals(2, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
- }
-
- /**
- * Tests the wizard when it has been asked to import all task data from a
- * zip file
- */
- public void testImportRepositoriesZip() {
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- MylarContext historyContext = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext();
- assertNotNull(taskList);
- assertNotNull(historyContext);
- assertTrue(taskList.getAllTasks().size() == 0);
- assertTrue(historyContext.getInteractionHistory().size() == 0);
- assertEquals(0, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
-
- wizardPage.setParameters(true, true, true, true, true, "", sourceZipFile.getPath());
- wizard.performFinish();
-
- Collection<ITask> tasks = taskList.getAllTasks();
- assertEquals(2, tasks.size());
- for (ITask task : tasks) {
- assertTrue(ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier()));
- }
- historyContext = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext();
- assertNotNull(historyContext);
- assertTrue(historyContext.getInteractionHistory().size() > 0);
- assertEquals(2, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
- }
-
-
- /**
- * Tests the wizard when it has been asked to import all task data from a
- * zip file
- */
- public void testImportOverwritesAllTasks() {
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- MylarContext historyContext = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext();
- assertNotNull(taskList);
- assertNotNull(historyContext);
- assertTrue(taskList.getAllTasks().size() == 0);
- assertTrue(historyContext.getInteractionHistory().size() == 0);
- assertEquals(0, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
-
- Task task1 = new Task("handle", "label", true);
- taskList.addTask(task1);
- Collection<ITask> tasks = taskList.getAllTasks();
- assertEquals(1, tasks.size());
-
- wizardPage.setParameters(true, true, true, true, true, "", sourceZipFile.getPath());
- wizard.performFinish();
-
- tasks = taskList.getAllTasks();
- assertEquals(2, tasks.size());
- assertTrue(!taskList.getAllTasks().contains(task1));
- for (ITask task : tasks) {
- assertTrue(ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier()));
- }
- historyContext = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext();
- assertNotNull(historyContext);
- assertTrue(historyContext.getInteractionHistory().size() > 0);
- assertEquals(2, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
-
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java
deleted file mode 100644
index 0fd98f4dc..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java
+++ /dev/null
@@ -1,256 +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.tasks.tests;
-
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.actions.PreviousTaskDropDownAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskActivateAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskDeactivateAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskNavigateDropDownAction.TaskNavigateAction;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskActivationHistory;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PartInitException;
-
-/**
- * @author Wes Coelho
- * @author Rob Elves
- */
-public class TaskHistoryTest extends TestCase {
-
- protected TaskListManager manager = TasksUiPlugin.getTaskListManager();
-
- protected TaskActivationHistory history;
-
- protected TaskListView taskView = null;
-
- protected Task task1 = null;
-
- protected Task task2 = null;
-
- protected Task task3 = null;
-
- protected Task task4 = null;
-
- protected Task task5 = null;
-
- protected void setUp() throws Exception {
- super.setUp();
-
- try {
- TasksUiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(
- "org.eclipse.mylar.tasks.ui.views.TaskListView");
- } catch (PartInitException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- fail("View not initialized");
- }
-
- assertNotNull(TaskListView.getFromActivePerspective());
- taskView = TaskListView.getFromActivePerspective();
-
- resetHistory();
-
- task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- manager.getTaskList().moveToRoot(task1);
-
- task2 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 2", true);
- manager.getTaskList().moveToRoot(task2);
-
- task3 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 3", true);
- manager.getTaskList().moveToRoot(task3);
-
- task4 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 4", true);
- manager.getTaskList().moveToRoot(task4);
-
- task5 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 5", true);
- manager.getTaskList().moveToRoot(task5);
-
- history = manager.getTaskActivationHistory();
- }
-
- private void resetHistory() {
- manager.getTaskActivationHistory().clear();
- ContextCorePlugin.getContextManager().resetActivityHistory();
- }
-
- /**
- * Tests the next task and previous task navigation.
- */
- public void testBasicHistoryNavigation() {
- (new TaskActivateAction()).run(task1);
- history.addTask(task1);
- (new TaskActivateAction()).run(task2);
- history.addTask(task2);
- (new TaskActivateAction()).run(task3);
- history.addTask(task3);
-
- assertTrue(task3.isActive());
- assertFalse(task2.isActive());
-
- taskView.getPreviousTaskAction().run();
- assertTrue(task2.isActive());
-
- taskView.getPreviousTaskAction().run();
- assertTrue(task1.isActive());
-
- taskView.getPreviousTaskAction().run();
- assertTrue(task1.isActive());
-
- // taskView.getPreviousTaskAction().run();
- // assertTrue(task1.isActive());
- //
- // taskView.getPreviousTaskAction().run();
- // assertTrue(task1.isActive());
-
- // taskView.getNextTaskAction().run();
- // assertTrue(task2.isActive());
- //
- // taskView.getNextTaskAction().run();
- // assertTrue(task3.isActive());
- //
- // taskView.getNextTaskAction().run();
- // assertTrue(task3.isActive());
- //
- // taskView.getPreviousTaskAction().run();
- // assertTrue(task2.isActive());
- //
- // taskView.getNextTaskAction().run();
- // assertTrue(task3.isActive());
- //
- // (new TaskActivateAction()).run(task4);
- // history.addTask(task4); // Simulate clicking on it rather
- // // than navigating next or previous
- // assertTrue(task4.isActive());
- //
- // taskView.getNextTaskAction().run();
- // assertTrue(task4.isActive());
- //
- // taskView.getPreviousTaskAction().run();
- // assertTrue(task3.isActive());
- //
- // taskView.getNextTaskAction().run();
- // assertTrue(task4.isActive());
-
- }
-
- /**
- * Tests navigation to previous/next tasks that are chosen from a list
- * rather than being sequentially navigated
- */
- public void testArbitraryHistoryNavigation() {
-
- resetHistory();
-
- // Simulate activating the tasks by clicking rather than
- // navigating previous/next
- (new TaskActivateAction()).run(task1);
- history.addTask(task1);
- (new TaskActivateAction()).run(task2);
- history.addTask(task2);
- (new TaskActivateAction()).run(task3);
- history.addTask(task3);
- (new TaskActivateAction()).run(task4);
- history.addTask(task4);
-
- assertTrue(task4.isActive());
- //TaskActivationHistory taskHistory = taskView.getTaskActivationHistory();
- List<ITask> prevHistoryList = history.getPreviousTasks();
-
- // Check that the previous history list looks right
- assertTrue(prevHistoryList.size() >= 3);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task3);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task2);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task1);
-
- // Get a task from the list and activate it
- PreviousTaskDropDownAction prevAction = new PreviousTaskDropDownAction(taskView, history);
- TaskNavigateAction navigateAction = prevAction.new TaskNavigateAction(task2);
- navigateAction.run();
- assertTrue(task2.isActive());
-
- // Now check that the next and prev lists look right
- prevHistoryList = history.getPreviousTasks();
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task2);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task4);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task3);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task1);
-
- // Activation of task outside of history navigation tool
- history.addTask(task3);
- prevHistoryList = history.getPreviousTasks();
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task3);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task2);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task4);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task1);
-
- // Pick a task from drop down history
- navigateAction = prevAction.new TaskNavigateAction(task4);
- navigateAction.run();
- assertTrue(task4.isActive());
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task4);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task3);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task2);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task1);
-
- // Hit previous task button
- taskView.getPreviousTaskAction().run();
- assertTrue(task3.isActive());
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task4);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task3);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task2);
- assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task1);
-
- (new TaskDeactivateAction()).run(task3);
-
- // List<ITask> nextHistoryList = taskHistory.getNextTasks();
- // assertTrue(nextHistoryList.get(0) == task3);
- // assertTrue(nextHistoryList.get(1) == task4);
- //
- // // Navigate to a next item
- // NextTaskDropDownAction nextAction = new
- // NextTaskDropDownAction(taskView, taskHistory);
- // navigateAction = nextAction.new TaskNavigateAction(task4);
- // navigateAction.run();
- // taskHistory.navigatedToTask(task4);
- //
- // assertTrue(task4.isActive());
- //
- // // Check that the prev and next lists look right
- // nextHistoryList = taskHistory.getNextTasks();
- // prevHistoryList = taskHistory.getPreviousTasks();
- // assertTrue(nextHistoryList.size() == 0);
- // assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task3);
- // assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task2);
- // assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task1);
- //
- // // Check that a deactivated task appears first on the history list
- // (new TaskActivateAction()).run(task5);
- // (new TaskDeactivateAction()).run(task5);
- // taskView.addTaskToHistory(task5);
- // prevHistoryList = taskHistory.getPreviousTasks();
- // assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task5);
-
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskKeyComparatorTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskKeyComparatorTest.java
deleted file mode 100644
index ad9fb1fe6..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/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.tasks.tests;
-
-import java.util.Arrays;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasks.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/tasks/tests/TaskListBackupManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListBackupManagerTest.java
deleted file mode 100644
index b4143f72b..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListBackupManagerTest.java
+++ /dev/null
@@ -1,99 +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.tasks.tests;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasks.ui.TaskListBackupManager;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- */
-public class TaskListBackupManagerTest extends TestCase {
-
- private Task task1;
-
- protected void setUp() throws Exception {
- super.setUp();
- task1 = new Task("handle", "label", true);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task1);
- TasksUiPlugin.getTaskListManager().activateTask(task1);
- TasksUiPlugin.getTaskListManager().deactivateTask(task1);
- TasksUiPlugin.getTaskListManager().saveTaskList();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- // MylarTaskListPlugin.getMylarCorePrefs().setValue(TaskListPreferenceConstants.BACKUP_AUTOMATICALLY,
- // false);
- }
-
- public void testAutoBackupDisabled() throws InterruptedException {
- TaskListBackupManager backupManager = TasksUiPlugin.getDefault().getBackupManager();
- // MylarTaskListPlugin.getMylarCorePrefs().setValue(TaskListPreferenceConstants.BACKUP_AUTOMATICALLY,
- // false);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_SCHEDULE, 1);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_LAST, 0f);
- assertEquals(0, TasksUiPlugin.getDefault().getPreferenceStore()
- .getLong(TaskListPreferenceConstants.BACKUP_LAST));
- backupManager.start(5);
- Thread.sleep(3000);
- assertEquals(0, TasksUiPlugin.getDefault().getPreferenceStore()
- .getLong(TaskListPreferenceConstants.BACKUP_LAST));
- }
-
- public void testAutoBackupEnabled() throws InterruptedException, InvocationTargetException, IOException {
- TaskListBackupManager backupManager = TasksUiPlugin.getDefault().getBackupManager();
- String backupFolder = TasksUiPlugin.getDefault().getBackupFolderPath();
- // String backupFolder =
- // MylarTaskListPlugin.getMylarCorePrefs().getDefaultString(
- // TaskListPreferenceConstants.BACKUP_FOLDER);
- File backupFileFolder = new File(backupFolder);
- deleteBackupFolder(backupFileFolder);
- // MylarTaskListPlugin.getMylarCorePrefs().setValue(TaskListPreferenceConstants.BACKUP_FOLDER,
- // backupFolder);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_SCHEDULE, 1);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_LAST, 0f);
- // MylarTaskListPlugin.getMylarCorePrefs().setValue(TaskListPreferenceConstants.BACKUP_AUTOMATICALLY,
- // true);
- backupManager.backupNow(true);
- assertFalse(TasksUiPlugin.getDefault().getPreferenceStore().getLong(TaskListPreferenceConstants.BACKUP_LAST) == 0);
- assertTrue(backupFileFolder.exists());
- assertTrue(backupFileFolder.isDirectory());
- assertTrue(backupFileFolder.listFiles().length == 1);
-
- // Test removal of old backups
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_MAXFILES, 0);
- backupManager.removeOldBackups(backupFileFolder);
- assertEquals(0, backupFileFolder.listFiles().length);
-
- // TODO: Test that OLDEST backups are deleted first.
-
- }
-
- private void deleteBackupFolder(File backupFileFolder) {
- if (backupFileFolder.exists()) {
- for (File file : backupFileFolder.listFiles()) {
- file.delete();
- }
- backupFileFolder.delete();
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDataMigrationTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDataMigrationTest.java
deleted file mode 100644
index 2894bf5d7..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDataMigrationTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests;
-
-import java.io.File;
-import java.net.URLEncoder;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.tasks.ui.TaskListDataMigration;
-
-/**
- * @author Rob Elves
- */
-public class TaskListDataMigrationTest extends TestCase {
-
- private String sourceDir = "testdata/tasklistdatamigrationtest";
- private File sourceDirFile;
- private TaskListDataMigration migrator;
-
- protected void setUp() throws Exception {
- super.setUp();
- sourceDirFile = TaskTestUtil.getLocalFile(sourceDir);
- assertNotNull(sourceDirFile);
- deleteAllFiles(sourceDirFile);
- migrator = new TaskListDataMigration(sourceDirFile);
- assertTrue(sourceDirFile.exists());
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- deleteAllFiles(sourceDirFile);
- }
-
- public void testOldTasklistMigration() throws Exception {
- File oldTasklistFile = new File(sourceDirFile, "tasklist.xml");
- oldTasklistFile.createNewFile();
- assertTrue(new File(sourceDirFile, "tasklist.xml").exists());
- assertTrue(!new File(sourceDirFile, "tasklist.xml.zip").exists());
- assertTrue(migrator.migrateTaskList(new NullProgressMonitor()));
- assertFalse(new File(sourceDirFile, "tasklist.xml").exists());
- assertFalse(!new File(sourceDirFile, "tasklist.xml.zip").exists());
- }
-
-
- public void testOldRepositoriesMigration() throws Exception {
- File oldRepositoriesFile = new File(sourceDirFile, "repositories.xml");
- oldRepositoriesFile.createNewFile();
- assertTrue(new File(sourceDirFile, "repositories.xml").exists());
- assertTrue(!new File(sourceDirFile, "repositories.xml.zip").exists());
- assertTrue(migrator.migrateRepositoriesData(new NullProgressMonitor()));
- assertFalse(new File(sourceDirFile, "repositories.xml").exists());
- assertTrue(new File(sourceDirFile, "repositories.xml.zip").exists());
- }
-
- public void testOldContextMigration() throws Exception {
- String contextFileName1 = URLEncoder.encode("http://oldcontext1.xml", MylarContextManager.CONTEXT_FILENAME_ENCODING);
- String contextFileName2 = URLEncoder.encode("http://oldcontext2.xml", MylarContextManager.CONTEXT_FILENAME_ENCODING);
- String contextFileName3 = "task-1.xml";
- File oldContextFile1 = new File(sourceDirFile, contextFileName1);
- oldContextFile1.createNewFile();
- File oldContextFile2 = new File(sourceDirFile, contextFileName2);
- oldContextFile2.createNewFile();
- File oldContextFile3 = new File(sourceDirFile, contextFileName3);
- oldContextFile3.createNewFile();
- File contextFolder = new File(sourceDirFile, MylarContextManager.CONTEXTS_DIRECTORY);
- assertTrue(!contextFolder.exists());
- assertTrue(migrator.migrateTaskContextData(new NullProgressMonitor()));
- assertFalse(oldContextFile1.exists());
- assertFalse(oldContextFile2.exists());
- assertFalse(oldContextFile3.exists());
- assertTrue(contextFolder.exists());
- assertTrue(new File(contextFolder, contextFileName1+".zip").exists());
- assertTrue(new File(contextFolder, contextFileName2+".zip").exists());
- assertTrue(new File(contextFolder, contextFileName3+".zip").exists());
- }
-
- public void testOldActivityMigration() throws Exception {
- File oldActivityFile = new File(sourceDirFile, MylarContextManager.OLD_CONTEXT_HISTORY_FILE_NAME+MylarContextManager.OLD_CONTEXT_FILE_EXTENSION);
- oldActivityFile.createNewFile();
- File contextFolder = new File(sourceDirFile, MylarContextManager.CONTEXTS_DIRECTORY);
- assertTrue(!contextFolder.exists());
- assertTrue(migrator.migrateActivityData(new NullProgressMonitor()));
- assertFalse(oldActivityFile.exists());
- assertTrue(contextFolder.exists());
- assertTrue(new File(contextFolder, MylarContextManager.CONTEXT_HISTORY_FILE_NAME+MylarContextManager.CONTEXT_FILE_EXTENSION).exists());
- }
-
-
- private void deleteAllFiles(File folder) {
- for (File file: folder.listFiles()) {
- if(file.isDirectory()) {
- deleteAllFiles(file);
- file.delete();
- } else {
- file.delete();
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDnDTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDnDTest.java
deleted file mode 100644
index 3c9e54b06..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListDnDTest.java
+++ /dev/null
@@ -1,77 +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.tasks.tests;
-
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListDropAdapter;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class TaskListDnDTest extends TestCase {
-
- private TaskListDropAdapter dropAdapter;
-
- private TaskListManager manager;
-
- @Override
- protected void setUp() throws Exception {
- manager = TasksUiPlugin.getTaskListManager();
- manager.resetTaskList();
-
- TreeViewer viewer = TaskListView.getFromActivePerspective().getViewer();
- assertNotNull(viewer);
- dropAdapter = new TaskListDropAdapter(viewer);
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- manager.resetTaskList();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- assertNull(manager.getTaskList().getActiveTask());
- }
-
- public void testisUrl() {
- String url = "http://eclipse.org";
- String title = "Title";
- String urlData = url + "\n" + title;
- assertFalse(dropAdapter.isUrl(title));
- assertTrue(dropAdapter.isUrl(url));
- assertTrue(dropAdapter.isUrl(urlData));
- }
-
- public void testUrlDrop() {
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- String url = "http://eclipse.org/mylar";
- String title = "Mylar Technology Project";
- String urlData = url + "\n" + title;
-
- dropAdapter.performDrop(urlData);
- Set<ITask> tasks = manager.getTaskList().getRootTasks();
- assertNotNull(tasks);
- assertEquals(1, tasks.size());
- assertEquals(url, tasks.iterator().next().getUrl());
-
- // TODO: Failing due to asynchronous retrieval of title from url
- // assertEquals(title, tasks.get(0).getDescription(false));
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java
deleted file mode 100644
index 5e5122663..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java
+++ /dev/null
@@ -1,649 +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.tasks.tests;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.ScheduledTaskListSynchJob;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasks.ui.TaskListSynchronizationScheduler;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.tests.connector.MockQueryHit;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryConnector;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryQuery;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryTask;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListManagerTest extends TestCase {
-
- private static final String MOCK_REPOSITORY_URL = "http://mock.repository";
-
- private TaskListManager manager;
-
- private TaskRepository repository;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getTaskListManager();
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
-
- repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, MOCK_REPOSITORY_URL);
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- manager.resetTaskList();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- TasksUiPlugin.getRepositoryManager().removeRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- public void testSingleTaskDeletion() {
- MockRepositoryTask task = new MockRepositoryTask("mock-1");
- manager.getTaskList().moveToRoot(task);
- manager.saveTaskList();
-
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals(1, manager.getTaskList().getAllTasks().size());
-
- manager.getTaskList().deleteTask(task);
- assertEquals(0, manager.getTaskList().getAllTasks().size());
-
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- }
-
- public void testMigrateTaskContextFiles() throws IOException {
- File fileA = ContextCorePlugin.getContextManager().getFileForContext("http://a-1");
- fileA.createNewFile();
- fileA.deleteOnExit();
- assertTrue(fileA.exists());
- manager.refactorRepositoryUrl("http://a", "http://b");
- File fileB = ContextCorePlugin.getContextManager().getFileForContext("http://b-1");
- assertTrue(fileB.exists());
- assertFalse(fileA.exists());
- }
-
- public void testMigrateQueryUrlHandles() {
- AbstractRepositoryQuery query = new MockRepositoryQuery("mquery", manager.getTaskList());
- query.setRepositoryUrl("http://foo.bar");
- query.setUrl("http://foo.bar/b");
- manager.getTaskList().addQuery(query);
- manager.refactorRepositoryUrl("http://foo.bar", "http://bar.baz");
- AbstractRepositoryQuery changedQuery = manager.getTaskList().getRepositoryQueries("http://bar.baz").iterator().next();
- assertEquals("http://bar.baz/b", changedQuery.getUrl());
- }
-
- public void testMigrateQueryHandles() {
- AbstractRepositoryQuery query = new MockRepositoryQuery("mquery", manager.getTaskList());
- query.setRepositoryUrl("http://a");
- manager.getTaskList().addQuery(query);
- manager.refactorRepositoryUrl("http://a", "http://b");
- assertFalse(manager.getTaskList().getRepositoryQueries("http://b").isEmpty());
- assertTrue(manager.getTaskList().getRepositoryQueries("http://a").isEmpty());
- }
-
- public void testMigrateTaskHandles() {
- AbstractRepositoryTask task = new MockRepositoryTask("http://a-123");
- manager.getTaskList().addTask(task);
- manager.refactorRepositoryUrl("http://a", "http://b");
- assertNull(manager.getTaskList().getTask("http://a-123"));
- assertNotNull(manager.getTaskList().getTask("http://b-123"));
- }
-
- public void testIsActiveToday() {
- ITask task = new Task("1", "task-1", true);
- assertFalse(manager.isReminderToday(task));
-
- task.setReminderDate(new Date());
- assertFalse(manager.isReminderToday(task));
-
- task.setReminded(true);
- assertFalse(manager.isReminderToday(task));
- task.setReminded(true);
-
- Calendar inAnHour = Calendar.getInstance();
- inAnHour.set(Calendar.HOUR_OF_DAY, inAnHour.get(Calendar.HOUR_OF_DAY) + 1);
- inAnHour.getTime();
- task.setReminderDate(inAnHour.getTime());
- Calendar tomorrow = Calendar.getInstance();
- manager.setSecheduledIn(tomorrow, 1);
- assertEquals(-1, inAnHour.compareTo(tomorrow));
-
- assertTrue(manager.isReminderToday(task));
- }
-
- public void testSchedulePastEndOfMonth() {
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.MONTH, Calendar.SEPTEMBER);
- calendar.set(Calendar.DAY_OF_MONTH, 30);
- manager.setSecheduledIn(calendar, 1);
- assertEquals("Should be October", Calendar.OCTOBER, calendar.get(Calendar.MONTH));
- }
-
- public void testIsCompletedToday() {
- ITask task = new Task("1", "task-1", true);
- task.setCompleted(true);
- task.setCompletionDate(new Date());
- assertTrue(manager.isCompletedToday(task));
-
- MockRepositoryTask mockTask = new MockRepositoryTask(MOCK_REPOSITORY_URL+"-1");
- manager.getTaskList().addTask(mockTask);
- mockTask.setCompleted(true);
- mockTask.setCompletionDate(new Date());
- assertFalse(manager.isCompletedToday(mockTask));
-
- mockTask = new MockRepositoryTask(MOCK_REPOSITORY_URL+"-2");
- manager.getTaskList().addTask(mockTask);
- mockTask.setCompleted(true);
- mockTask.setCompletionDate(new Date());
- repository.setAuthenticationCredentials("testUser", "testPassword");
- mockTask.setOwner("testUser");
- assertTrue(manager.isCompletedToday(mockTask));
-
- }
-
- public void testMoveCategories() {
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- Task task1 = new Task("t1", "t1", true);
-
- TaskCategory cat1 = new TaskCategory("cat1", manager.getTaskList());
- manager.getTaskList().addCategory(cat1);
- TaskCategory cat2 = new TaskCategory("cat2", manager.getTaskList());
- manager.getTaskList().addCategory(cat2);
-
- manager.getTaskList().moveToContainer(cat1, task1);
- assertEquals(1, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
- assertEquals(0, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
-
- manager.getTaskList().moveToContainer(cat2, task1);
- assertEquals(0, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
- assertEquals(1, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
- }
-
- public void testMoveToRoot() {
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- Task task1 = new Task("t1", "t1", true);
- manager.getTaskList().moveToRoot(task1);
- assertEquals(1, manager.getTaskList().getRootTasks().size());
- assertEquals(TaskList.LABEL_ROOT, task1.getContainer().getHandleIdentifier());
-
- TaskCategory cat1 = new TaskCategory("c1", manager.getTaskList());
- manager.getTaskList().addCategory(cat1);
-
- manager.getTaskList().moveToContainer(cat1, task1);
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- assertEquals(cat1, task1.getContainer());
-
- manager.getTaskList().moveToRoot(task1);
- assertEquals(1, manager.getTaskList().getRootTasks().size());
- assertEquals(0, cat1.getChildren().size());
- assertEquals(TaskList.LABEL_ROOT, task1.getContainer().getHandleIdentifier());
- }
-
- public void testEmpty() {
- manager.resetTaskList();
- assertTrue(manager.getTaskList().isEmpty());
- manager.getTaskList().internalAddRootTask(new Task("", "", true));
- assertFalse(manager.getTaskList().isEmpty());
- }
-
- public void testCategoryPersistance() {
- MockRepositoryTask task = new MockRepositoryTask("bug-1");
- TaskCategory category = new TaskCategory("cat", manager.getTaskList());
- manager.getTaskList().addCategory(category);
- manager.getTaskList().moveToContainer(category, task);
- assertNotNull(manager.getTaskList());
- assertEquals(2, manager.getTaskList().getCategories().size());
-
- manager.saveTaskList();
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals("" + manager.getTaskList().getCategories(), 2, manager.getTaskList().getCategories().size());
- assertEquals(1, manager.getTaskList().getAllTasks().size());
- }
-
- public void testDeleteCategory() {
- assertNotNull(manager.getTaskList());
- assertEquals(1, manager.getTaskList().getCategories().size());
- TaskCategory category = new TaskCategory("cat", manager.getTaskList());
- manager.getTaskList().addCategory(category);
- assertEquals(2, manager.getTaskList().getCategories().size());
- manager.getTaskList().deleteCategory(category);
- assertEquals(1, manager.getTaskList().getCategories().size());
- }
-
- public void testDeleteCategoryMovesTasksToRoot() {
- ITask task = new MockRepositoryTask("mock-delete");
- TaskCategory category = new TaskCategory("mock-cat", manager.getTaskList());
- manager.getTaskList().addTask(task, category);
- manager.getTaskList().addCategory(category);
- assertEquals(0, manager.getTaskList().getRootCategory().getChildren().size());
- manager.getTaskList().deleteCategory(category);
- assertEquals(1, manager.getTaskList().getRootCategory().getChildren().size());
- }
-
- public void testRenameCategory() {
-
- assertNotNull(manager.getTaskList());
-
- TaskCategory category = new TaskCategory("cat", manager.getTaskList());
- manager.getTaskList().addCategory(category);
- assertEquals(2, manager.getTaskList().getCategories().size());
- String newDesc = "newDescription";
- manager.getTaskList().renameContainer(category, newDesc);
- AbstractTaskContainer container = manager.getTaskList().getContainerForHandle(newDesc);
- assertNotNull(container);
- assertEquals(newDesc, container.getDescription());
- manager.getTaskList().deleteCategory(container);
- assertEquals(1, manager.getTaskList().getCategories().size());
- }
-
- public void testDeleteCategoryAfterRename() {
- String newDesc = "newDescription";
- assertNotNull(manager.getTaskList());
- assertEquals(1, manager.getTaskList().getCategories().size());
- TaskCategory category = new TaskCategory("cat", manager.getTaskList());
- manager.getTaskList().addCategory(category);
- assertEquals(2, manager.getTaskList().getCategories().size());
- manager.getTaskList().renameContainer(category, newDesc);
- manager.getTaskList().deleteCategory(category);
- assertEquals(1, manager.getTaskList().getCategories().size());
- }
-
- public void testCreateSameCategoryName() {
- assertNotNull(manager.getTaskList());
- assertEquals(1, manager.getTaskList().getCategories().size());
- TaskCategory category = new TaskCategory("cat", manager.getTaskList());
- manager.getTaskList().addCategory(category);
- assertEquals(2, manager.getTaskList().getCategories().size());
- TaskCategory category2 = new TaskCategory("cat", manager.getTaskList());
- manager.getTaskList().addCategory(category2);
- assertEquals(2, manager.getTaskList().getCategories().size());
- AbstractTaskContainer container = manager.getTaskList().getContainerForHandle("cat");
- assertEquals(container, category);
- }
-
- public void testDeleteRootTask() {
- ITask task = new Task("task-1", "label", true);
- manager.getTaskList().addTask(task);
- manager.getTaskList().internalAddRootTask(task);
- manager.getTaskList().deleteTask(task);
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
- }
-
- public void testDeleteFromCategory() {
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
- assertEquals(1, manager.getTaskList().getCategories().size());
-
- ITask task = new Task("task-1", "label", true);
- TaskCategory category = new TaskCategory("handleAndDescription", manager.getTaskList());
- manager.getTaskList().addTask(task);
- assertEquals(1, manager.getTaskList().getArchiveContainer().getChildren().size());
-
- manager.getTaskList().addCategory(category);
- manager.getTaskList().moveToContainer(category, task);
- assertEquals(2, manager.getTaskList().getCategories().size());
- assertEquals(1, category.getChildren().size());
- assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
- assertEquals(1, manager.getTaskList().getAllTasks().size());
- assertEquals(0, manager.getTaskList().getRootTasks().size());
-
- manager.getTaskList().deleteTask(task);
- assertEquals(0, manager.getTaskList().getAllTasks().size());
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
- assertEquals(0, category.getChildren().size());
- }
-
- public void testDeleteRepositoryTask() {
- String repositoryUrl = "http://somewhere.com";
- repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, repositoryUrl);
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- MockRepositoryTask task = new MockRepositoryTask(repositoryUrl + "-1");
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- taskList.moveToRoot(task);
- MockRepositoryQuery query = new MockRepositoryQuery("query", taskList);
- MockQueryHit hit = new MockQueryHit(repositoryUrl, task.getDescription(), "1");
- hit.setCorrespondingTask(task);
- query.addHit(new MockQueryHit(repositoryUrl, task.getDescription(), "1"), manager.getTaskList());
- taskList.addQuery(query);
- assertEquals(1, taskList.getAllTasks().size());
- assertEquals(1, taskList.getRootTasks().size());
- taskList.deleteTask(task);
- assertEquals(0, taskList.getAllTasks().size());
- assertEquals(0, taskList.getRootTasks().size());
- }
-
- public void testArchiveRepositoryTaskExternalization() {
- MockRepositoryTask repositoryTask = new MockRepositoryTask("bug-1");
- repositoryTask.setKind("kind");
- manager.getTaskList().addTask(repositoryTask);
- assertEquals(1, manager.getTaskList().getArchiveContainer().getChildren().size());
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- manager.saveTaskList();
-
- manager.resetTaskList();
- manager.readExistingOrCreateNewList();
- assertEquals(1, manager.getTaskList().getArchiveContainer().getChildren().size());
- assertEquals(0, manager.getTaskList().getRootTasks().size());
- }
-
- public void testRepositoryTasksAndCategoriesMultiRead() {
- TaskCategory cat1 = new TaskCategory("Category 1", manager.getTaskList());
- manager.getTaskList().addCategory(cat1);
-
- MockRepositoryTask reportInCat1 = new MockRepositoryTask("task-123");
- manager.getTaskList().moveToContainer(cat1, reportInCat1);
- assertEquals(cat1, reportInCat1.getContainer());
-
- manager.saveTaskList();
- assertNotNull(manager.getTaskList());
- manager.resetTaskList();
- // manager.getTaskList().clear();
- // manager.setTaskList(new TaskList());
- manager.readExistingOrCreateNewList();
-
- // read once
- Set<AbstractTaskContainer> readCats = manager.getTaskList().getTaskContainers();
- assertTrue(manager.getTaskList().getCategories().contains(cat1));
- Iterator<AbstractTaskContainer> iterator = readCats.iterator();
- AbstractTaskContainer readCat1 = iterator.next();
- assertEquals(cat1, readCat1);
- assertEquals(1, readCat1.getChildren().size());
-
- manager.saveTaskList();
- assertNotNull(manager.getTaskList());
- manager.resetTaskList();
- // manager.getTaskList().clear();
- // manager.setTaskList(new TaskList());
- manager.readExistingOrCreateNewList();
-
- // read again
- readCats = manager.getTaskList().getTaskContainers();
- 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);
- manager.getTaskList().moveToRoot(task1);
- rootTasks.add(task1);
- Task sub1 = new Task(manager.genUniqueTaskHandle(), "sub 1", true);
- task1.addSubTask(sub1);
- sub1.setParent(task1);
- Task task2 = new Task(manager.genUniqueTaskHandle(), "task 2", true);
- manager.getTaskList().moveToRoot(task2);
- rootTasks.add(task2);
-
- Set<TaskCategory> categories = new HashSet<TaskCategory>();
- Set<ITask> cat1Contents = new HashSet<ITask>();
- TaskCategory cat1 = new TaskCategory("Category 1", manager.getTaskList());
- manager.getTaskList().addCategory(cat1);
- categories.add(cat1);
- Task task3 = new Task(manager.genUniqueTaskHandle(), "task 3", true);
- manager.getTaskList().moveToContainer(cat1, task3);
- cat1Contents.add(task3);
- assertEquals(cat1, task3.getContainer());
- Task sub2 = new Task(manager.genUniqueTaskHandle(), "sub 2", true);
- task3.addSubTask(sub2);
- sub2.setParent(task3);
- Task task4 = new Task(manager.genUniqueTaskHandle(), "task 4", true);
- manager.getTaskList().moveToContainer(cat1, task4);
- cat1Contents.add(task4);
-
- MockRepositoryTask reportInCat1 = new MockRepositoryTask("task-123");
- manager.getTaskList().moveToContainer(cat1, reportInCat1);
- assertEquals(cat1, reportInCat1.getContainer());
- cat1Contents.add(reportInCat1);
-
- MockRepositoryTask reportInRoot = new MockRepositoryTask("task-124");
- manager.getTaskList().moveToRoot(reportInRoot);
- rootTasks.add(reportInRoot);
-
- assertEquals("" + manager.getTaskList().getRootElements(), 5, manager.getTaskList().getRootElements().size());
-
- manager.saveTaskList();
- assertNotNull(manager.getTaskList());
- manager.resetTaskList();
- // manager.getTaskList().clear();
- // TaskList list = new TaskList();
- // manager.setTaskList(list);
- manager.readExistingOrCreateNewList();
-
- assertNotNull(manager.getTaskList());
- 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());
- }
- if (task.equals(reportInRoot)) {
- assertEquals(reportInRoot.getDescription(), task.getDescription());
- }
- }
-
- Set<AbstractTaskContainer> readCats = manager.getTaskList().getTaskContainers();
- assertTrue(manager.getTaskList().getCategories().contains(cat1));
- Iterator<AbstractTaskContainer> iterator = readCats.iterator();
- AbstractTaskContainer readCat1 = iterator.next();
- assertEquals(cat1, readCat1);
- assertEquals(cat1Contents, readCat1.getChildren());
- }
-
- public void testExternalizationOfHandlesWithDash() {
- Set<ITask> rootTasks = new HashSet<ITask>();
-
- String handle = AbstractRepositoryTask.getHandle("http://url/repo-location", 1);
- Task task1 = new Task(handle, "task 1", true);
- manager.getTaskList().moveToRoot(task1);
- rootTasks.add(task1);
-
- manager.saveTaskList();
- assertNotNull(manager.getTaskList());
- manager.resetTaskList();
- assertTrue(manager.readExistingOrCreateNewList());
-
- assertNotNull(manager.getTaskList());
- assertEquals(rootTasks, manager.getTaskList().getRootTasks());
- }
-
- public void testScheduledRefreshJob() throws InterruptedException {
- int counter = 3;
- ScheduledTaskListSynchJob.resetCount();
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED, true);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_MILISECONDS, 1000L);
- assertEquals(0, ScheduledTaskListSynchJob.getCount());
- TaskListSynchronizationScheduler manager = new TaskListSynchronizationScheduler(false);
- manager.startSynchJob();
- Thread.sleep(3000);
- assertTrue(ScheduledTaskListSynchJob.getCount() + " smaller than " + counter, ScheduledTaskListSynchJob
- .getCount() >= counter);
- manager.cancelAll();
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED, false);
- }
-
- public void testgetQueriesAndHitsForHandle() {
-
- MockQueryHit hit1 = new MockQueryHit("repositoryURL", "description1", "1");
- MockQueryHit hit2 = new MockQueryHit("repositoryURL", "description2", "2");
- MockQueryHit hit3 = new MockQueryHit("repositoryURL", "description3", "3");
-
- MockQueryHit hit1twin = new MockQueryHit("repositoryURL", "description1", "1");
- MockQueryHit hit2twin = new MockQueryHit("repositoryURL", "description2", "2");
- MockQueryHit hit3twin = new MockQueryHit("repositoryURL", "description3", "3");
-
- MockRepositoryQuery query1 = new MockRepositoryQuery("query1", manager.getTaskList());
- MockRepositoryQuery query2 = new MockRepositoryQuery("query2", manager.getTaskList());
-
- query1.addHit(hit1, manager.getTaskList());
- query1.addHit(hit2, manager.getTaskList());
- query1.addHit(hit3, manager.getTaskList());
- assertEquals(query1.getHits().size(), 3);
-
- query2.addHit(hit1twin, manager.getTaskList());
- query2.addHit(hit2twin, manager.getTaskList());
- query2.addHit(hit3twin, manager.getTaskList());
- assertEquals(query2.getHits().size(), 3);
-
- manager.getTaskList().addQuery(query1);
- manager.getTaskList().addQuery(query2);
-
- TaskList taskList = manager.getTaskList();
- Set<AbstractRepositoryQuery> queriesReturned = taskList.getQueriesForHandle(AbstractRepositoryTask.getHandle(
- "repositoryURL", 1));
- assertNotNull(queriesReturned);
- assertEquals(2, queriesReturned.size());
- assertTrue(queriesReturned.contains(query1));
- assertTrue(queriesReturned.contains(query2));
-
- Set<AbstractQueryHit> hitsReturned = taskList.getQueryHitsForHandle(AbstractRepositoryTask.getHandle(
- "repositoryURL", 2));
- assertNotNull(hitsReturned);
- assertEquals(1, hitsReturned.size());
- assertTrue(hitsReturned.contains(hit2));
- assertTrue(hitsReturned.contains(hit2twin));
-
- }
-
- public void testQueryHitHasParent() {
- MockQueryHit hit1 = new MockQueryHit(MOCK_REPOSITORY_URL, "description1", "1");
- assertNull(hit1.getParent());
- MockRepositoryQuery query1 = new MockRepositoryQuery("query1", manager.getTaskList());
- query1.addHit(hit1, manager.getTaskList());
- assertEquals(query1, hit1.getParent());
-
- }
-
- public void testUpdateQueryHits() {
-
- MockQueryHit hit1 = new MockQueryHit("repositoryURL", "description1", "1");
- MockQueryHit hit2 = new MockQueryHit("repositoryURL", "description2", "2");
- MockQueryHit hit3 = new MockQueryHit("repositoryURL", "description3", "3");
-
- MockQueryHit hit1twin = new MockQueryHit("repositoryURL", "description1", "1");
- MockQueryHit hit2twin = new MockQueryHit("repositoryURL", "description2", "2");
- MockQueryHit hit3twin = new MockQueryHit("repositoryURL", "description3", "3");
-
- MockRepositoryQuery query1 = new MockRepositoryQuery("query1", manager.getTaskList());
-
- query1.addHit(hit1, manager.getTaskList());
- query1.addHit(hit2, manager.getTaskList());
- query1.addHit(hit3, manager.getTaskList());
- assertEquals(3, query1.getHits().size());
- List<AbstractQueryHit> newHits = new ArrayList<AbstractQueryHit>();
- query1.updateHits(newHits, manager.getTaskList());
- assertEquals(0, query1.getHits().size());
- newHits.add(hit1);
- newHits.add(hit2);
- query1.updateHits(newHits, manager.getTaskList());
- assertEquals(2, query1.getHits().size());
- hit1.setNotified(true);
- newHits.clear();
- newHits.add(hit1twin);
- newHits.add(hit2twin);
- newHits.add(hit3twin);
- query1.updateHits(newHits, manager.getTaskList());
- assertEquals(3, query1.getHits().size());
- assertTrue(query1.getHits().contains(hit1twin));
- assertTrue(query1.getHits().contains(hit2twin));
- assertTrue(query1.getHits().contains(hit3twin));
- for (AbstractQueryHit hit : query1.getHits()) {
- if (hit.equals(hit1twin)) {
- assertTrue(hit.isNotified());
- } else {
- assertFalse(hit.isNotified());
- }
- }
- }
-
- public void testgetRepositoryTasks() {
-
- String repositoryUrl = "https://bugs.eclipse.org/bugs";
-
- String bugNumber = "106939";
-
- MockRepositoryTask task1 = new MockRepositoryTask(repositoryUrl + "-" + bugNumber);
- manager.getTaskList().addTask(task1);
-
- MockRepositoryTask task2 = new MockRepositoryTask("https://unresolved-" + bugNumber);
- manager.getTaskList().addTask(task2);
-
- TaskList taskList = manager.getTaskList();
- assertEquals(2, taskList.getAllTasks().size());
- Set<AbstractRepositoryTask> tasksReturned = taskList.getRepositoryTasks(repositoryUrl);
- assertNotNull(tasksReturned);
- assertEquals(1, tasksReturned.size());
- assertTrue(tasksReturned.contains(task1));
- }
-
- public void testAllTasksDeactivation() {
- Task task1 = new Task("task1", "description1", true);
- Task task2 = new Task("task2", "description2", true);
- TaskList taskList = manager.getTaskList();
- taskList.addTask(task1);
- taskList.addTask(task2);
- assertTrue(taskList.getActiveTasks().isEmpty());
-
- manager.activateTask(task2);
- assertEquals(Collections.singletonList(task2), taskList.getActiveTasks());
-
- manager.deactivateAllTasks();
- assertTrue(taskList.getActiveTasks().isEmpty());
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java
deleted file mode 100644
index bdb8feca3..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java
+++ /dev/null
@@ -1,300 +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.tasks.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.mylar.internal.tasks.core.WebTask;
-import org.eclipse.mylar.internal.tasks.ui.TaskPriorityFilter;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskCompleteAction;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.PartInitException;
-
-/**
- * Tests TaskListView's filtering mechanism.
- *
- * @author Ken Sueda
- *
- */
-public class TaskListUiTest extends TestCase {
-
- private TaskCategory cat1 = null;
-
- private Task cat1task1 = null;
-
- private Task cat1task2 = null;
-
- private Task cat1task3 = null;
-
- private Task cat1task4 = null;
-
- private Task cat1task5 = null;
-
- private Task cat1task1sub1 = null;
-
- private TaskCategory cat2 = null;
-
- private Task cat2task1 = null;
-
- private Task cat2task2 = null;
-
- private Task cat2task3 = null;
-
- private Task cat2task4 = null;
-
- private Task cat2task5 = null;
-
- private Task cat2task1sub1 = null;
-
- private final static int CHECK_COMPLETE_FILTER = 1;
-
- private final static int CHECK_INCOMPLETE_FILTER = 2;
-
- private final static int CHECK_PRIORITY_FILTER = 3;
-
- public void setUp() throws PartInitException {
- try {
- TasksUiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(
- "org.eclipse.mylar.tasks.ui.views.TaskListView");
- TaskListManager manager = TasksUiPlugin.getTaskListManager();
- cat1 = new TaskCategory("First Category", manager.getTaskList());
-
- cat1task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- cat1task1.setPriority(Task.PriorityLevel.P1.toString());
- cat1task1.setCompleted(true);
- cat1task1.setContainer(cat1);
- manager.getTaskList().moveToContainer(cat1, cat1task1);
-
- cat1task1sub1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "sub task 1", true);
- cat1task1sub1.setPriority(Task.PriorityLevel.P1.toString());
- cat1task1sub1.setCompleted(true);
- cat1task1sub1.setParent(cat1task1);
- cat1task1.addSubTask(cat1task1sub1);
-
- cat1task2 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 2", true);
- cat1task2.setPriority(Task.PriorityLevel.P2.toString());
- cat1task2.setContainer(cat1);
- manager.getTaskList().moveToContainer(cat1, cat1task2);
-
- cat1task3 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 3", true);
- cat1task3.setPriority(Task.PriorityLevel.P3.toString());
- cat1task3.setCompleted(true);
- cat1task3.setContainer(cat1);
- manager.getTaskList().moveToContainer(cat1, cat1task3);
-
- cat1task4 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 4", true);
- cat1task4.setPriority(Task.PriorityLevel.P4.toString());
- cat1task4.setContainer(cat1);
- manager.getTaskList().moveToContainer(cat1, cat1task4);
-
- cat1task5 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 5", true);
- cat1task5.setPriority(Task.PriorityLevel.P5.toString());
- cat1task5.setCompleted(true);
- cat1task5.setContainer(cat1);
- manager.getTaskList().moveToContainer(cat1, cat1task5);
-
- manager.getTaskList().addCategory(cat1);
- assertEquals(cat1.getChildren().size(), 5);
-
- cat2 = new TaskCategory("Second Category", manager.getTaskList());
-
- cat2task1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- cat2task1.setPriority(Task.PriorityLevel.P1.toString());
- cat2task1.setContainer(cat2);
- manager.getTaskList().moveToContainer(cat2, cat2task1);
-
- cat2task1sub1 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "sub task 1", true);
- cat2task1sub1.setPriority(Task.PriorityLevel.P1.toString());
- cat2task1sub1.setParent(cat2task1);
- cat2task1.addSubTask(cat2task1sub1);
-
- cat2task2 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 2", true);
- cat2task2.setPriority(Task.PriorityLevel.P2.toString());
- cat2task2.setCompleted(true);
- cat2task2.setContainer(cat2);
- manager.getTaskList().moveToContainer(cat2, cat2task2);
-
- cat2task3 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 3", true);
- cat2task3.setPriority(Task.PriorityLevel.P3.toString());
- cat2task3.setContainer(cat2);
- manager.getTaskList().moveToContainer(cat2, cat2task3);
-
- cat2task4 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 4", true);
- cat2task4.setPriority(Task.PriorityLevel.P4.toString());
- cat2task4.setCompleted(true);
- cat2task4.setContainer(cat2);
- manager.getTaskList().moveToContainer(cat2, cat2task4);
-
- cat2task5 = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), "task 5", true);
- cat2task5.setPriority(Task.PriorityLevel.P5.toString());
- cat2task5.setContainer(cat2);
- manager.getTaskList().moveToContainer(cat2, cat2task5);
-
- manager.getTaskList().addCategory(cat2);
- manager.saveTaskList();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void tearDown() {
- // clear everything
- }
-
- public void testMarkWebTaskCompleted() {
- TaskListView view = TaskListView.getFromActivePerspective();
- assertNotNull(view);
- WebTask webTask = new WebTask("1", "1", "", "", "web");
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(webTask,
- TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory());
- view.getViewer().refresh();
- // Arrays.asList(view.getViewer().getVisibleExpandedElements());
- assertFalse(webTask.isCompleted());
- ArrayList<ITaskListElement> tasks = new ArrayList<ITaskListElement>();
- tasks.add(webTask);
- new MarkTaskCompleteAction(tasks).run();
- assertTrue(webTask.isCompleted());
- }
-
- public void testUiFilter() {
- try {
- assertNotNull(TaskListView.getFromActivePerspective());
- TreeViewer viewer = TaskListView.getFromActivePerspective().getViewer();
- TaskListView.getFromActivePerspective().addFilter(
- TaskListView.getFromActivePerspective().getCompleteFilter());
- viewer.refresh();
- viewer.expandAll();
- TreeItem[] items = viewer.getTree().getItems();
- assertTrue(checkFilter(CHECK_COMPLETE_FILTER, items));
- TaskListView.getFromActivePerspective().removeFilter(
- TaskListView.getFromActivePerspective().getCompleteFilter());
-
- TaskPriorityFilter filter = (TaskPriorityFilter) TaskListView.getFromActivePerspective()
- .getPriorityFilter();
- filter.displayPrioritiesAbove("P2");
- TaskListView.getFromActivePerspective().addFilter(filter);
- viewer.refresh();
- viewer.expandAll();
- items = viewer.getTree().getItems();
-
- // check priority tasks
- assertTrue(checkFilter(CHECK_PRIORITY_FILTER, items));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Tests that TaskEditors remove all listeners when closed
- */
- public void testListenersRemoved() {
-
- int numListenersBefore = 0;
- int numListenersDuring = 0;
- int numListenersAfter = 0;
-
- TaskListManager manager = TasksUiPlugin.getTaskListManager();
- List<ITaskListChangeListener> listeners = manager.getTaskList().getChangeListeners();
- numListenersBefore = listeners.size();
-
- // open a task in editor
- // cat1task1.setForceSyncOpen(true);
- TaskUiUtil.openEditor(cat1task1, false, true);
- // cat1task1.openTaskInEditor(false);
- // cat1task2.setForceSyncOpen(true);
- // cat1task2.openTaskInEditor(false);
- TaskUiUtil.openEditor(cat1task2, false, true);
-
- listeners = manager.getTaskList().getChangeListeners();
- numListenersDuring = listeners.size();
-
- assertEquals(numListenersDuring, numListenersBefore + 2);
-
- TasksUiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
-
- listeners = manager.getTaskList().getChangeListeners();
- numListenersAfter = listeners.size();
- assertEquals(numListenersBefore, numListenersAfter);
-
- }
-
- public boolean checkFilter(int type, TreeItem[] items) {
- switch (type) {
- case CHECK_COMPLETE_FILTER:
- return checkCompleteIncompleteFilter(items, false);
- case CHECK_INCOMPLETE_FILTER:
- return checkCompleteIncompleteFilter(items, true);
- case CHECK_PRIORITY_FILTER:
- return checkPriorityFilter(items);
- default:
- return false;
- }
- }
-
- public boolean checkCompleteIncompleteFilter(TreeItem[] items, boolean checkComplete) {
- assertEquals(2, items.length);
- int count = 0;
- for (int i = 0; i < items.length; i++) {
- assertTrue(items[i].getData() instanceof TaskCategory);
- TreeItem[] sub = items[i].getItems();
- for (int j = 0; j < sub.length; j++) {
- assertTrue(sub[j].getData() instanceof ITask);
- ITask task = (ITask) sub[j].getData();
- if (checkComplete) {
- assertTrue(task.isCompleted());
- } else {
- assertFalse(task.isCompleted());
- }
- count++;
- }
- }
- assertTrue(count == 5);
- return true;
- }
-
- public boolean checkPriorityFilter(TreeItem[] items) {
- assertTrue(items.length == 2);
- int p2Count = 0;
- int p1Count = 0;
- for (int i = 0; i < items.length; i++) {
- assertTrue(items[i].getData() instanceof TaskCategory);
- TreeItem[] sub = items[i].getItems();
- for (int j = 0; j < sub.length; j++) {
- assertTrue(sub[j].getData() instanceof ITask);
- ITask task = (ITask) sub[j].getData();
- assertTrue(task.getPriority().equals("P2") || task.getPriority().equals("P1"));
- if (task.getPriority().equals("P2")) {
- p2Count++;
- } else {
- p1Count++;
- }
- }
- }
- assertEquals(2, p1Count);
- assertEquals(2, p2Count);
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskPlanningEditorTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskPlanningEditorTest.java
deleted file mode 100644
index 8e67fa1b3..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskPlanningEditorTest.java
+++ /dev/null
@@ -1,120 +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.tasks.tests;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.TaskPlanningEditor;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-
-import junit.framework.TestCase;
-
-/**
- * @author Rob Elves
- */
-public class TaskPlanningEditorTest extends TestCase {
-
- private static final String MOCK_LABEL = "label";
-
- private static final String MOCK_HANDLE = "handle";
-
- private static final String DESCRIPTION = "description";
-
- private static final String NEW_DESCRIPTION = "new description";
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeAllEditors(false);
- TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TasksUiPlugin.getTaskListManager().resetTaskList();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- super.tearDown();
- }
-
-
- public void testDirtyOnEdit() {
- Task task = new Task(MOCK_HANDLE, MOCK_LABEL, true);
- task.setDescription(DESCRIPTION);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
- TaskUiUtil.openEditor(task, false, true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- assertTrue(page.getActiveEditor() instanceof MylarTaskEditor);
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- assertTrue(taskEditor.getActivePageInstance() instanceof TaskPlanningEditor);
- TaskPlanningEditor editor = (TaskPlanningEditor) taskEditor.getActivePageInstance();
- assertFalse(editor.isDirty());
- editor.setNotes("notes");
- assertTrue(editor.isDirty());
- editor.doSave(new NullProgressMonitor());
- assertFalse(editor.isDirty());
- editor.setDescription(NEW_DESCRIPTION);
- assertTrue(editor.isDirty());
- editor.doSave(new NullProgressMonitor());
- assertEquals(NEW_DESCRIPTION, task.getDescription());
- assertFalse(editor.isDirty());
- }
-
- public void testNotDirtyOnRename() {
- Task task = new Task(MOCK_HANDLE, MOCK_LABEL, true);
- task.setDescription(DESCRIPTION);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
- TaskUiUtil.openEditor(task, false, true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- assertTrue(page.getActiveEditor() instanceof MylarTaskEditor);
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- assertTrue(taskEditor.getActivePageInstance() instanceof TaskPlanningEditor);
- TaskPlanningEditor editor = (TaskPlanningEditor) taskEditor.getActivePageInstance();
- assertFalse(editor.isDirty());
- assertEquals(DESCRIPTION, editor.getDescription());
- TasksUiPlugin.getTaskListManager().getTaskList().renameTask(task, NEW_DESCRIPTION);
- assertEquals(NEW_DESCRIPTION, task.getDescription());
- editor.updateTaskData(task);
- assertEquals(NEW_DESCRIPTION, editor.getFormTitle());
- assertEquals(NEW_DESCRIPTION, editor.getDescription());
- assertFalse(editor.isDirty());
- }
-
- /**
- * Test that if editor is dirty and external rename happens
- * editor remains dirty
- */
- public void testRenameInDirtyState() {
- Task task = new Task(MOCK_HANDLE, MOCK_LABEL, true);
- task.setDescription(DESCRIPTION);
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
- TaskUiUtil.openEditor(task, false, true);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- assertTrue(page.getActiveEditor() instanceof MylarTaskEditor);
- MylarTaskEditor taskEditor = (MylarTaskEditor) page.getActiveEditor();
- assertTrue(taskEditor.getActivePageInstance() instanceof TaskPlanningEditor);
- TaskPlanningEditor editor = (TaskPlanningEditor) taskEditor.getActivePageInstance();
- assertFalse(editor.isDirty());
- editor.setDescription(NEW_DESCRIPTION);
- assertTrue(editor.isDirty());
- TasksUiPlugin.getTaskListManager().getTaskList().renameTask(task, NEW_DESCRIPTION+"2");
- assertEquals(NEW_DESCRIPTION+"2", task.getDescription());
- editor.updateTaskData(task);
- assertEquals(NEW_DESCRIPTION+"2", editor.getFormTitle());
- assertEquals(NEW_DESCRIPTION+"2", editor.getDescription());
- assertTrue(editor.isDirty());
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoriesExternalizerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoriesExternalizerTest.java
deleted file mode 100644
index eb47c4dc1..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoriesExternalizerTest.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.tasks.tests;
-
-import java.io.File;
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasks.core.TaskRepositoriesExternalizer;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Rob Elves
- */
-public class TaskRepositoriesExternalizerTest extends TestCase {
-
- private Set<TaskRepository> taskRepositories = new HashSet<TaskRepository>();
-
- private static final String REP_TYPE = "bugzilla";
-
- private static final String REPURL1 = "http://somewhere1";
- private static final String REPURL2 = "http://somewhere2";
-
- private static final String TIMEZONE = "test time zone";
- private static final String VERSION = "test version";
- private static final String ENCODING = "test encoding";
- private static final String TIMESTAMP = "test time stamp";
-
- private static final String SUFFIX = "2";
-
- private TaskRepository repository1;
- private TaskRepository repository2;
-
- protected void setUp() throws Exception {
- repository1 = new TaskRepository(REP_TYPE, REPURL1);
- repository2 = new TaskRepository("bugzilla", REPURL2);
-
- repository1.setTimeZoneId(TIMEZONE);
- repository1.setVersion(VERSION);
- repository1.setCharacterEncoding(ENCODING);
- repository1.setSyncTimeStamp(TIMESTAMP);
- taskRepositories.add(repository1);
-
- repository2.setTimeZoneId(TIMEZONE + SUFFIX);
- repository2.setVersion(VERSION+ SUFFIX);
- repository2.setCharacterEncoding(ENCODING+ SUFFIX);
- repository2.setSyncTimeStamp(TIMESTAMP+ SUFFIX);
- taskRepositories.add(repository2);
- }
-
- public void testExternalization() {
- TaskRepositoriesExternalizer externalizer = new TaskRepositoriesExternalizer();
- String path = "repositories.xml";
- File file = new File(path);
- file.deleteOnExit();
- externalizer.writeRepositoriesToXML(taskRepositories, file);
- taskRepositories.clear();
- assertEquals(0, taskRepositories.size());
- taskRepositories = externalizer.readRepositoriesFromXML(file);
- assertEquals(2, taskRepositories.size());
- taskRepositories.contains(repository1);
- taskRepositories.contains(repository2);
- for (TaskRepository repository: taskRepositories) {
- if(repository.getUrl().equals(REPURL1)) {
- assertEquals(TIMEZONE, repository.getTimeZoneId());
- assertEquals(VERSION, repository.getVersion());
- assertEquals(ENCODING, repository.getCharacterEncoding());
- assertEquals(TIMESTAMP, repository.getSyncTimeStamp());
- } else if(repository.getUrl().equals(REPURL2)) {
- assertEquals(TIMEZONE+ SUFFIX, repository.getTimeZoneId());
- assertEquals(VERSION+ SUFFIX, repository.getVersion());
- assertEquals(ENCODING+ SUFFIX, repository.getCharacterEncoding());
- assertEquals(TIMESTAMP+ SUFFIX, repository.getSyncTimeStamp());
- }
- }
-
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java
deleted file mode 100644
index b71562cfa..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java
+++ /dev/null
@@ -1,202 +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.tasks.tests;
-
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.tests.connector.MockRepositoryConnector;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskRepositoryManagerTest extends TestCase {
-
- private static final String DEFAULT_KIND = MockRepositoryConnector.REPOSITORY_KIND;
-
- private static final String DEFAULT_URL = "http://eclipse.org";
-
- private static final String ANOTHER_URL = "http://codehaus.org";
-
- private TaskRepositoryManager manager;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- manager = TasksUiPlugin.getRepositoryManager();
- assertNotNull(manager);
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- if (manager != null) {
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
- }
-
- public void testHandles() {
- String url = "http://foo.bar";
- String id = "123";
- String handle = AbstractRepositoryTask.getHandle(url, id);
- assertEquals(url, AbstractRepositoryTask.getRepositoryUrl(handle));
- assertEquals(id, AbstractRepositoryTask.getTaskId(handle));
-// assertEquals(123, AbstractRepositoryTask.getTaskIdAsInt(handle));
- }
-
- public void testMultipleNotAdded() throws MalformedURLException {
- TaskRepository repository = new TaskRepository(DEFAULT_KIND, DEFAULT_URL);
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TaskRepository repository2 = new TaskRepository(DEFAULT_KIND, DEFAULT_URL);
- manager.addRepository(repository2, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(1, manager.getAllRepositories().size());
- }
-
- public void testGet() throws MalformedURLException {
- assertEquals("", TasksUiPlugin.getDefault().getPreferenceStore().getString(TaskRepositoryManager.PREF_REPOSITORIES));
-
- TaskRepository repository = new TaskRepository(DEFAULT_KIND, DEFAULT_URL);
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(repository, manager.getRepository(DEFAULT_KIND, DEFAULT_URL));
- assertNull(manager.getRepository(DEFAULT_KIND, "foo"));
- assertNull(manager.getRepository("foo", DEFAULT_URL));
- }
-
- public void testConnectorAddition() {
- AbstractRepositoryConnector connector = new MockRepositoryConnector();
- manager.addRepositoryConnector(connector);
- assertNotNull(manager.getRepositoryConnector(connector.getRepositoryType()));
- }
-
- public void testRepositoryPersistance() throws MalformedURLException {
- // assertEquals("",
- // MylarTaskListPlugin.getMylarCorePrefs().getString(TaskRepositoryManager.PREF_REPOSITORIES));
-
- TaskRepository repository1 = new TaskRepository("bugzilla", "http://bugzilla");
- TaskRepository repository2 = new TaskRepository("jira", "http://jira");
- manager.addRepository(repository1, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- manager.addRepository(repository2, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- // assertNotNull(MylarTaskListPlugin.getMylarCorePrefs().getString(TaskRepositoryManager.PREF_REPOSITORIES));
-
- List<TaskRepository> repositoryList = new ArrayList<TaskRepository>();
- repositoryList.add(repository2);
- repositoryList.add(repository1);
- manager.readRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- // NOTE: different conditions for running with and without the JIRA
- // Connector
- if (manager.getRepositoryConnectors().size() > 1) {
- assertTrue(manager.getAllRepositories().contains(repository1));
- assertTrue(manager.getAllRepositories().contains(repository2));
- // assertEquals(repositoryList, manager.getAllRepositories());
- } else {
- // TODO there is something wrong with this
- assertEquals("all: " + manager.getAllRepositories(), 1, manager.getAllRepositories().size());
- }
- }
-
- public void testRepositoryAttributePersistance() throws MalformedURLException {
- assertEquals("", TasksUiPlugin.getDefault().getPreferenceStore().getString(TaskRepositoryManager.PREF_REPOSITORIES));
-
- String version = "123";
- String encoding = "UTF-16";
- String fakeTimeZone = "nowhere";
- Date now = new Date();
- String dateString = now.toString();
-
- TaskRepository repository1 = new TaskRepository("bugzilla", "http://bugzilla");
- repository1.setVersion(version);
- repository1.setCharacterEncoding(encoding);
- repository1.setTimeZoneId(fakeTimeZone);
- repository1.setSyncTimeStamp(dateString);
- manager.addRepository(repository1, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- manager.readRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- TaskRepository temp = manager.getRepository(repository1.getKind(), repository1.getUrl());
- assertNotNull(temp);
- assertEquals(version, temp.getVersion());
- assertEquals(encoding, temp.getCharacterEncoding());
- assertEquals(fakeTimeZone, temp.getTimeZoneId());
- assertEquals(dateString, temp.getSyncTimeStamp());
-
- }
-
- public void testRepositoryPersistanceAfterDelete() throws MalformedURLException {
-
- TaskRepository repository = new TaskRepository(DEFAULT_KIND, DEFAULT_URL);
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertNotNull(manager.getRepository(repository.getKind(), repository.getUrl()));
-
- TaskRepository repository2 = new TaskRepository(DEFAULT_KIND, ANOTHER_URL);
- manager.addRepository(repository2, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertNotNull(manager.getRepository(repository2.getKind(), repository2.getUrl()));
-
- manager.removeRepository(repository2, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- assertNull(manager.getRepository(repository2.getKind(), repository2.getUrl()));
- }
-
- public void testRepositoryWithUnnownUrlHandler() {
- TaskRepository repository = new TaskRepository("eclipse.technology.mylar",
- "nntp://news.eclipse.org/eclipse.technology.mylar");
-
- repository.setAuthenticationCredentials("testUser", "testPassword");
-
- assertEquals("testUser", repository.getUserName());
- assertEquals("testPassword", repository.getPassword());
- }
-
- public void testRepositoryWithCustomAttributes() throws Exception {
-
- // Note: if a connector doesn't exist the associated repositories are not loaded (orphaned)
- // causing this test to fail.
- AbstractRepositoryConnector connector = new MockRepositoryConnector();
- manager.addRepositoryConnector(connector);
-
- TaskRepository repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, "http://jroller.com/page/eu");
- repository.setProperty("owner", "euxx");
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- manager.readRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- TaskRepository temp = manager.getRepository(repository.getKind(), repository.getUrl());
- assertNotNull(temp);
- assertEquals("euxx", temp.getProperty("owner"));
- }
-
- public void testRepositoryPersistanceSameUrl() throws MalformedURLException {
- TaskRepository repository1 = new TaskRepository("bugzilla", "http://repository");
- TaskRepository repository2 = new TaskRepository("jira", "http://repository");
- manager.addRepository(repository1, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- manager.addRepository(repository2, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- assertEquals(2, manager.getAllRepositories().size());
-
- List<TaskRepository> repositoryList = new ArrayList<TaskRepository>();
- repositoryList.add(repository2);
- repositoryList.add(repository1);
- manager.readRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- assertEquals(1, manager.getAllRepositories().size());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskTest.java
deleted file mode 100644
index 3777affc4..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/TaskTest.java
+++ /dev/null
@@ -1,48 +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.tasks.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.tasks.core.Task;
-
-/**
- * @author Mik Kersten
- */
-public class TaskTest extends TestCase {
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testUrl() {
- Task task = new Task("handle", "label", true);
- task.setUrl("http://eclipse.org/mylar/doc.php");
- assertTrue(task.hasValidUrl());
-
- task.setUrl("http://");
- assertFalse(task.hasValidUrl());
-
- task.setUrl("https://");
- assertFalse(task.hasValidUrl());
-
- task.setUrl("");
- assertFalse(task.hasValidUrl());
-
- task.setUrl(null);
- assertFalse(task.hasValidUrl());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/UrlConnectionUtilTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/UrlConnectionUtilTest.java
deleted file mode 100644
index df86e73ad..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/UrlConnectionUtilTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-
-public class UrlConnectionUtilTest extends TestCase {
-
- public void testUrlParsers() {
- String url = "https://example.com:444/folder/file.txt";
- assertEquals(444, WebClientUtil.getPort(url));
- assertEquals("example.com", WebClientUtil.getDomain(url));
- assertEquals("/folder/file.txt", WebClientUtil.getRequestPath(url));
-
- url = "http://example.com/";
- assertEquals(80, WebClientUtil.getPort(url));
- assertEquals("example.com", WebClientUtil.getDomain(url));
- assertEquals("/", WebClientUtil.getRequestPath(url));
-
- url = "https://example.com:321";
- assertEquals(321, WebClientUtil.getPort(url));
- assertEquals("example.com", WebClientUtil.getDomain(url));
- assertEquals("", WebClientUtil.getRequestPath(url));
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockAttributeFactory.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockAttributeFactory.java
deleted file mode 100644
index 831ac5dd0..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockAttributeFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests.connector;
-
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-
-
-
-/**
- * @author Rob Elves
- */
-public class MockAttributeFactory extends AbstractAttributeFactory {
-
- private static final long serialVersionUID = 7713746838934802731L;
-
- @Override
- public boolean getIsHidden(String key) {
- // ignore
- return false;
- }
-
- @Override
- public String getName(String key) {
- // ignore
- return key;
- }
-
- @Override
- public boolean isReadOnly(String key) {
- // ignore
- return false;
- }
-
- @Override
- public String mapCommonAttributeKey(String key) {
- return key;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockQueryHit.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockQueryHit.java
deleted file mode 100644
index e5283b3c8..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockQueryHit.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests.connector;
-
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-
-/**
- * @author Rob Elves
- */
-public class MockQueryHit extends AbstractQueryHit {
-
- AbstractRepositoryTask task = null;
-
- public MockQueryHit(String repositoryUrl, String description, String id) {
- super(repositoryUrl, description, id);
- }
-
- @Override
- public AbstractRepositoryTask getCorrespondingTask() {
- return task;
- }
-
- @Override
- public AbstractRepositoryTask getOrCreateCorrespondingTask() {
- return task;
- }
-
- @Override
- public boolean isCompleted() {
- return task.isCompleted();
- }
-
- @Override
- public void setCorrespondingTask(AbstractRepositoryTask task) {
- this.task = task;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryConnector.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryConnector.java
deleted file mode 100644
index 8e04d95a4..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryConnector.java
+++ /dev/null
@@ -1,104 +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.tasks.tests.connector;
-
-import java.net.Proxy;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class MockRepositoryConnector extends AbstractRepositoryConnector {
-
- public static final String REPOSITORY_KIND = "mock";
-
- @Override
- public boolean canCreateNewTask(TaskRepository repository) {
- // ignore
- return false;
- }
-
- @Override
- public boolean canCreateTaskFromKey(TaskRepository repository) {
- // ignore
- return false;
- }
-
- @Override
- public ITask createTaskFromExistingKey(TaskRepository repository, String id, Proxy proxySettings) throws CoreException {
- // ignore
- return null;
- }
-
- @Override
- public IAttachmentHandler getAttachmentHandler() {
- // ignore
- return null;
- }
-
- @Override
- public String getLabel() {
- return "Mock Repository (for unit tests)";
- }
-
- @Override
- public IOfflineTaskHandler getOfflineTaskHandler() {
- // ignore
- return null;
- }
-
- @Override
- public String getRepositoryType() {
- return REPOSITORY_KIND;
- }
-
- @Override
- public String getRepositoryUrlFromTaskUrl(String url) {
- // ignore
- return null;
- }
-
- @Override
- public List<String> getSupportedVersions() {
- // ignore
- return null;
- }
-
- @Override
- public void updateAttributes(TaskRepository repository, Proxy proxySettings, IProgressMonitor monitor) throws CoreException {
- // ignore
- }
-
- @Override
- public void updateTaskState(AbstractRepositoryTask repositoryTask) {
- // ignore
- }
-
- @Override
- public IStatus performQuery(AbstractRepositoryQuery query, TaskRepository repository, Proxy proxySettings, IProgressMonitor monitor, QueryHitCollector resultCollector) {
- return null;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryExternalizer.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryExternalizer.java
deleted file mode 100644
index abcc319a5..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryExternalizer.java
+++ /dev/null
@@ -1,60 +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.tasks.tests.connector;
-
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.DelegatingTaskExternalizer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.w3c.dom.Node;
-
-/**
- * @author Mik Kersten
- */
-public class MockRepositoryExternalizer extends DelegatingTaskExternalizer {
-
- @Override
- public boolean canCreateElementFor(AbstractRepositoryQuery query) {
- return query instanceof MockRepositoryQuery;
- }
-
- @Override
- public boolean canCreateElementFor(ITask task) {
- return task instanceof MockRepositoryTask;
- }
-
- @Override
- public boolean canCreateElementFor(AbstractQueryHit queryHit) {
- return false;
- }
-
- @Override
- public boolean canReadCategory(Node node) {
- return false;
- }
-
- @Override
- public boolean canReadQuery(Node node) {
- return false;
- }
-
- @Override
- public boolean canReadQueryHit(Node node) {
- return false;
- }
-
- @Override
- public boolean canReadTask(Node node) {
- return false;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryTask.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryTask.java
deleted file mode 100644
index 4378e8e1a..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryTask.java
+++ /dev/null
@@ -1,44 +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.tasks.tests.connector;
-
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-
-/**
- * @author Mik Kersten
- */
-public class MockRepositoryTask extends AbstractRepositoryTask {
-
- private String ownerId;
-
- public MockRepositoryTask(String handle) {
- super(handle, "label for " + handle, true);
- }
-
- @Override
- public String getRepositoryKind() {
- return "mock";
- }
-
- public void setOwner(String ownerId) {
- this.ownerId = ownerId;
- }
-
- public String getOwner() {
- if(ownerId == null) {
- return super.getOwner();
- } else {
- return ownerId;
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryUi.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryUi.java
deleted file mode 100644
index bf9c0c0db..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryUi.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.tests.connector;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-
-/**
- * @author Mik Kersten
- */
-public class MockRepositoryUi extends AbstractRepositoryConnectorUi {
-
- @Override
- public IWizard getNewTaskWizard(TaskRepository taskRepository, IStructuredSelection selection) {
- // ignore
- return null;
- }
-
- @Override
- public String getRepositoryType() {
- return "mock";
- }
-
- @Override
- public AbstractRepositorySettingsPage getSettingsPage() {
- // ignore
- return null;
- }
-
- @Override
- public boolean hasRichEditor() {
- // ignore
- return false;
- }
-
- @Override
- public boolean hasSearchPage() {
- return false;
- }
-
- @Override
- public IWizard getQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) {
- // ignore
- return null;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 12b2c1a0d..000000000
--- a/org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,303 +0,0 @@
-#Mon Feb 13 11:20:15 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 7f90fdfc1..000000000
--- a/org.eclipse.mylyn.tasks.ui/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Thu Sep 14 09:00:04 PDT 2006
-eclipse.preferences.version=1
-formatter_profile=_Mylar based on Eclipse [built-in]
-formatter_settings_version=10
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"></template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2004 - 2006 Mylar committers and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template></templates>
diff --git a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index e340dc347..000000000
--- a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,35 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Tasks UI Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.tasks.ui;singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Activator: org.eclipse.mylar.tasks.ui.TasksUiPlugin
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.ui.forms,
- org.eclipse.jface.text,
- org.eclipse.mylar.context.core,
- org.eclipse.update.core,
- org.eclipse.ui.browser,
- org.eclipse.ui.editors,
- org.eclipse.ui.views,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.mylar.tasks.core,
- org.eclipse.mylar.monitor,
- org.eclipse.core.resources,
- org.eclipse.ui.ide,
- org.eclipse.search
-Eclipse-AutoStart: true
-Bundle-Vendor: Eclipse.org
-Export-Package: org.eclipse.mylar.internal.tasks.ui,
- org.eclipse.mylar.internal.tasks.ui.search,
- org.eclipse.mylar.internal.tasks.ui.actions,
- org.eclipse.mylar.internal.tasks.ui.editors,
- org.eclipse.mylar.internal.tasks.ui.planner,
- org.eclipse.mylar.internal.tasks.ui.preferences,
- org.eclipse.mylar.internal.tasks.ui.util,
- org.eclipse.mylar.internal.tasks.ui.views,
- org.eclipse.mylar.internal.tasks.ui.wizards,
- org.eclipse.mylar.tasks.ui
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-repository-context.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-repository-context.gif
deleted file mode 100644
index cf4b159cc..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-repository-context.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/repositories.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/repositories.gif
deleted file mode 100644
index d5562226d..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/repositories.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif
deleted file mode 100644
index 6ab2668f7..000000000
--- a/org.eclipse.mylyn.tasks.ui/icons/eview16/task-list.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml
deleted file mode 100644
index 161ec23f0..000000000
--- a/org.eclipse.mylyn.tasks.ui/plugin.xml
+++ /dev/null
@@ -1,617 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
- <extension-point id="providers" name="Tasklist Providers" schema="schema/providers.exsd"/>
- <extension-point id="repositories" name="Task Repositories" schema="schema/repositories.exsd"/>
- <extension-point id="editors" name="Task Editors" schema="schema/editors.exsd"/>
- <extension-point id="templates" name="templates" schema="schema/templates.exsd"/>
-
- <extension
- point="org.eclipse.mylar.context.core.bridges">
- <contextStore class="org.eclipse.mylar.internal.tasks.ui.WorkspaceAwareContextStore"/>
- </extension>
-
- <extension point="org.eclipse.ui.views">
- <category name="Mylar" id="org.eclipse.mylar"/>
- </extension>
-
- <extension point="org.eclipse.ui.newWizards">
- <category name="Mylar" id="org.eclipse.mylar.wizards"/>
- </extension>
-
- <extension
- name="Mylar Task List Startup (required)"
- point="org.eclipse.ui.startup">
- </extension>
-
- <!--
- <extension
- id="org.eclipse.mylar.helpDocs"
- name="Mylar Help"
- point="org.eclipse.help.toc">
- <toc
- file="doc/toc.xml"
- primary="false">
- </toc>
- </extension>
- -->
-
- <extension point="org.eclipse.ui.newWizards">
- <wizard
- canFinishEarly="true"
- category="org.eclipse.mylar.wizards"
- class="org.eclipse.mylar.internal.tasks.ui.wizards.NewLocalTaskWizard"
- hasPages="false"
- icon="icons/etool16/task-new.gif"
- id="org.eclipse.mylar.tasks.ui.wizard.new.task"
- name="Task"/>
- <wizard
- canFinishEarly="true"
- category="org.eclipse.mylar.wizards"
- class="org.eclipse.mylar.internal.tasks.ui.wizards.NewLocalCategoryWizard"
- hasPages="false"
- icon="icons/etool16/category-new.gif"
- id="org.eclipse.mylar.tasks.ui.wizard.new.category"
- name="Category">
- </wizard>
- <wizard
- category="org.eclipse.mylar.wizards"
- class="org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskWizard"
- icon="icons/etool16/task-repository-new.gif"
- id="org.eclipse.mylar.tasks.ui.wizard.new.repository.task"
- name="Repository Task"/>
- <wizard
- category="org.eclipse.mylar.wizards"
- class="org.eclipse.mylar.internal.tasks.ui.wizards.NewQueryWizard"
- icon="icons/etool16/query-new.gif"
- id="org.eclipse.mylar.tasks.ui.wizard.new.query"
- name="Query"/>
- <wizard
- category="org.eclipse.mylar.wizards"
- class="org.eclipse.mylar.internal.tasks.ui.planner.TaskActivityWizard"
- icon="icons/eview16/task-list.gif"
- id="org.eclipse.mylar.tasks.ui.activity.report"
- name="Task Activity Report (Experimental)">
- </wizard>
- </extension>
-
- <extension
- point="org.eclipse.ui.importWizards">
- <wizard
- category="org.eclipse.mylar.tasklist.importcategory"
- class="org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataImportWizard"
- icon="icons/eview16/task-list.gif"
- id="org.eclipse.mylar.tasklist.ui.importWizard"
- name="Mylar Task Data">
- <description>
- 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.tasks.ui.wizards.TaskDataExportWizard"
- icon="icons/eview16/task-list.gif"
- id="org.eclipse.mylar.tasklist.ui.exportWizard"
- name="Mylar Task Data">
- <description>
- Export Mylar task data files to the file system.
- </description>
- </wizard>
- <category
- id="org.eclipse.mylar.tasklist.exportcategory"
- name="Mylar"/>
- </extension>
-
- <extension point="org.eclipse.ui.decorators">
- <decorator
- class="org.eclipse.mylar.internal.tasks.ui.RepositoryTaskDecorator"
- id="org.eclipse.mylar.tasklist.ui.decorator.repositories"
- label="Mylar Repository Task Decorator"
- lightweight="true"
- state="true">
- <description>
- Mylar Repository Task Decorator
- </description>
- <enablement>
- <or>
- <objectClass
- name="org.eclipse.mylar.tasks.core.ITaskListElement">
- </objectClass>
- <objectClass
- name="org.eclipse.mylar.tasks.core.TaskRepository">
- </objectClass>
- </or>
- </enablement>
- </decorator>
- </extension>
-
-
- <extension
- point="org.eclipse.ui.views">
- <view
- allowMultiple="true"
- category="org.eclipse.mylar"
- class="org.eclipse.mylar.internal.tasks.ui.views.TaskListView"
- icon="icons/eview16/task-list.gif"
- id="org.eclipse.mylar.tasks.ui.views.TaskListView"
- name="Task List"/>
- <view
- id="org.eclipse.mylar.tasklist.repositories"
- allowMultiple="false"
- category="org.eclipse.mylar"
- class="org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView"
- icon="icons/eview16/repositories.gif"
- name="Task Repositories">
- </view>
- <view
- allowMultiple="false"
- category="org.eclipse.mylar"
- class="org.eclipse.mylar.internal.tasks.ui.views.TaskActivityView"
- icon="icons/eview16/task-activity.gif"
- id="org.eclipse.mylar.tasklist.activity"
- name="Task Activity (Experimental)"/>
- </extension>
-
- <extension
- point="org.eclipse.ui.editors">
- <editor
- class="org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor"
- contributorClass="org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorActionContributor"
- icon="icons/etool16/task.gif"
- id="org.eclipse.mylar.tasklist.ui.taskEditor"
- name="Task Editor"/>
- <editor
- icon="icons/etool16/task.gif"
- class="org.eclipse.mylar.internal.tasks.ui.editors.CategoryEditor"
- name="Category Editor"
- id="org.eclipse.mylar.tasklist.ui.catEditor"/>
- <editor
- class="org.eclipse.mylar.internal.tasks.ui.planner.TaskActivityEditorPart"
- contributorClass="org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorActionContributor"
- icon="icons/eview16/task-list.gif"
- id="org.eclipse.mylar.tasklist.ui.planner.editor"
- name="Mylar Task Planner"/>
- </extension>
-
- <extension point="org.eclipse.ui.perspectiveExtensions">
- <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">
- <viewShortcut id="org.eclipse.mylar.tasks.ui.views.TaskListView"/>
- <view
- closeable="true"
- id="org.eclipse.mylar.tasks.ui.views.TaskListView"
- moveable="true"
- ratio="0.5"
- relationship="top"
- relative="org.eclipse.ui.views.ContentOutline"
- visible="true"/>
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.task">
- </newWizardShortcut>
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.task">
- </newWizardShortcut>
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.repository.task">
- </newWizardShortcut>
- </perspectiveExtension>
- <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaBrowsingPerspective">
- <viewShortcut id="org.eclipse.mylar.tasks.ui.views.TaskListView"/>
- </perspectiveExtension>
- <perspectiveExtension
- targetID="org.eclipse.ui.resourcePerspective">
- <viewShortcut id="org.eclipse.mylar.tasks.ui.views.TaskListView"/>
- <view
- id="org.eclipse.mylar.tasks.ui.views.TaskListView"
- relationship="left"
- relative="org.eclipse.ui.views.TaskList"
- >
- </view>
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.task">
- </newWizardShortcut>
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.repository.task">
- </newWizardShortcut>
- </perspectiveExtension>
- <perspectiveExtension
- targetID="org.eclipse.mylar.tasklist.ui.perspectives.planning">
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.task">
- </newWizardShortcut>
- <newWizardShortcut
- id="org.eclipse.mylar.tasks.ui.wizard.new.repository.task">
- </newWizardShortcut>
- </perspectiveExtension>
-
- <perspectiveExtension targetID="org.eclipse.team.cvs.ui.cvsPerspective">
- <view
- id="org.eclipse.mylar.tasklist.repositories"
- ratio="0.7"
- relationship="bottom"
- relative="org.eclipse.team.ccvs.ui.RepositoriesView"
- visible="true"/>
- <viewShortcut id="org.eclipse.mylar.tasklist.repositories"/>
- </perspectiveExtension>
- <perspectiveExtension targetID="org.tigris.subversion.subclipse.ui.svnPerspective">
- <view
- id="org.eclipse.mylar.tasklist.repositories"
- ratio="0.7"
- relationship="bottom"
- relative="org.tigris.subversion.subclipse.ui.repository.RepositoriesView"
- visible="true"/>
- <viewShortcut id="org.eclipse.mylar.tasklist.repositories"/>
- </perspectiveExtension>
- <perspectiveExtension targetID="org.eclipse.team.ui.TeamSynchronizingPerspective">
- <view
- id="org.eclipse.mylar.tasklist.repositories"
- ratio="0.7"
- relationship="bottom"
- relative="org.eclipse.team.sync.views.SynchronizeView"
- visible="true"/>
- <viewShortcut id="org.eclipse.mylar.tasklist.repositories"/>
- </perspectiveExtension>
- </extension>
-
- <extension point="org.eclipse.ui.viewActions">
- <viewContribution
- id="org.eclipse.mylar.tasklist.actions.view"
- targetID="org.eclipse.mylar.tasks.ui.views.TaskListView">
-
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.NewRepositoryTaskAction"
- enablesFor="*"
- icon="icons/etool16/task-repository-new.gif"
- id="org.eclipse.mylar.tasklist.new.repositorytask"
- label="New Repository Task"
- style="push"
- toolbarPath="reports"
- tooltip="New Repository Task">
- </action>
-
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.SynchronizeAllAction"
- enablesFor="*"
- icon="icons/etool16/repository-synchronize.gif"
- id="org.eclipse.mylar.tasklist.synchronize"
- label="Synchronize All"
- menubarPath="additions"
- tooltip="Synchronize All Tasks and Queries">
- </action>
- <!--
- <action
- class="org.eclipse.mylar.internal.tasklist.ui.actions.CopyDetailsAction"
- id="org.eclipse.mylar.tasklist.copy.details"
- label="Copy Details"
- style="push"/>
- -->
- </viewContribution>
- </extension>
-
- <extension point="org.eclipse.ui.popupMenus">
- <viewerContribution
- id="org.eclipse.mylar.tasklist.ui.viewerContribution"
- targetID="org.eclipse.mylar.tasks.ui.views.TaskListView">
-
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.SynchronizeSelectedAction"
- definitionId="org.eclipse.ui.file.refresh"
- enablesFor="*"
- icon="icons/etool16/repository-synchronize.gif"
- id="org.eclipse.mylar.tasklist.synchronize.selected"
- label="Synchronize"
- menubarPath="reports"
- tooltip="Synchronize with Repository">
- <enablement>
- <or>
- <objectClass name="org.eclipse.mylar.tasks.core.AbstractQueryHit"/>
- <objectClass name="org.eclipse.mylar.tasks.core.AbstractRepositoryQuery"/>
- <objectClass name="org.eclipse.mylar.tasks.core.AbstractRepositoryTask"/>
- <objectClass name="org.eclipse.mylar.tasks.core.AbstractTaskContainer"/>
- </or>
- </enablement>
- </action>
-
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.AddRepositoryTaskAction"
- enablesFor="*"
- icon="icons/etool16/task-repository.gif"
- id="org.eclipse.mylar.tasklist.actions.addQuery"
- menubarPath="reports"
- label="Add Existing Task"
- style="push"
- tooltip="Add Existing Task">
- </action>
-
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.NewRepositoryTaskAction"
- enablesFor="*"
- icon="icons/etool16/task-repository-new.gif"
- id="org.eclipse.mylar.tasklist.new.repositorytask"
- label="New Repository Task"
- menubarPath="reports"
- tooltip="New Repository Task"/>
-
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.NewQueryAction"
- enablesFor="*"
- icon="icons/etool16/query-new.gif"
- id="org.eclipse.mylar.tasklist.actions.addQuery"
- menubarPath="reports"
- label="New Query"
- style="push"
- tooltip="New Query">
- </action>
- </viewerContribution>
-
- </extension>
-
- <extension point="org.eclipse.ui.preferencePages">
- <page
- name="Mylar"
- class="org.eclipse.mylar.internal.tasks.ui.preferences.MylarPreferencePage"
- id="org.eclipse.mylar.ui.preferences">
- <keywordReference id="org.eclipse.mylar.tasks.keywords"/>
- </page>
- <page
- name="Tasks"
- class="org.eclipse.mylar.internal.tasks.ui.preferences.TasksPreferencePage"
- id="org.eclipse.mylar.tasklist.ui.preferences"
- category="org.eclipse.mylar.ui.preferences">
- <keywordReference id="org.eclipse.mylar.tasks.keywords"/>
- </page>
- </extension>
-
- <extension
- point="org.eclipse.ui.keywords">
- <keyword
- label="mylar tasks"
- id="org.eclipse.mylar.tasks.keywords"/>
- </extension>
-
-
-
-<!--
- <extension point="org.eclipse.ui.commands">
- <command
- name="Mylar Tasks"
- description="Open Mylar Tasks View"
- categoryId="org.eclipse.ui.category.views"
- id="org.eclipse.mylar.tasklist.ui.views.TaskListView">
- </command>
- </extension>
- -->
- <extension point="org.eclipse.ui.bindings">
- <key
- sequence="M2+M3+Q M"
- contextId="org.eclipse.ui.contexts.window"
- commandId="org.eclipse.ui.views.showView"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
- <parameter
- id="org.eclipse.ui.views.showView.viewId"
- value="org.eclipse.mylar.tasks.ui.views.TaskListView"/>
- </key>
- </extension>
-
- <extension
- point="org.eclipse.ui.themes">
- <themeElementCategory
- id="org.eclipse.mylar.tasklist.ui.presentation"
- label="Mylar"/>
- <colorDefinition
- categoryId="org.eclipse.mylar.tasklist.ui.presentation"
- id="org.eclipse.mylar.tasklist.ui.colors.foreground.overdue"
- isEditable="true"
- label="Tasks - Overdue"
- value="198,4,38">
- <description>
- Text color for overdue tasks.
- </description>
- </colorDefinition>
- <colorDefinition
- categoryId="org.eclipse.mylar.tasklist.ui.presentation"
- id="org.eclipse.mylar.tasklist.ui.colors.foreground.today.scheduled"
- isEditable="true"
- label="Tasks - Scheduled for Today"
- value="32,21,223">
- <description>
- Text color for tasks scheduled for today.
- </description>
- </colorDefinition>
- <colorDefinition
- categoryId="org.eclipse.mylar.tasklist.ui.presentation"
- id="org.eclipse.mylar.tasklist.ui.colors.foreground.thisweek.scheduled"
- isEditable="true"
- label="Tasks - Scheduled for This Week"
- value="0,0,0">
- <description>
- Text color for tasks scheduled for this week
- </description>
- </colorDefinition>
- <colorDefinition
- categoryId="org.eclipse.mylar.tasklist.ui.presentation"
- id="org.eclipse.mylar.tasklist.ui.colors.foreground.today.completed"
- isEditable="true"
- label="Tasks - Completed Today"
- value="107,169,128">
- <description>
- Text color for tasks completed.
- </description>
- </colorDefinition>
- <colorDefinition
- categoryId="org.eclipse.mylar.tasklist.ui.presentation"
- id="org.eclipse.mylar.tasklist.ui.colors.background.category"
- isEditable="true"
- label="Categories - Background"
- value="234,233,237">
- <description>
- Background color of Task List categories and queries.
- </description>
- </colorDefinition>
-
- <fontDefinition
- categoryId="org.eclipse.mylar.tasklist.ui.presentation"
- id="org.eclipse.mylar.tasklist.ui.fonts.task.editor.comment"
- isEditable="true"
- label="Task Editor - Notes and Comments"
- value="Tahoma-regular-10">
- <description>
- Text font used for task editor text areas.
- </description>
- </fontDefinition>
- </extension>
- <!-- defaultsTo="org.eclipse.jface.dialogfont"-->
-
-
-
- <extension
- point="org.eclipse.ui.perspectives">
- <perspective
- class="org.eclipse.mylar.internal.tasks.ui.PlanningPerspectiveFactory"
- icon="icons/eview16/task-activity.gif"
- id="org.eclipse.mylar.tasklist.ui.perspectives.planning"
- name="Planning"/>
- </extension>
-
-
- <extension point="org.eclipse.mylar.tasks.ui.providers">
- <dynamicPopupMenu class="org.eclipse.mylar.internal.tasks.ui.TaskReminderMenuContributor"/>
- <dynamicPopupMenu class="org.eclipse.mylar.internal.tasks.ui.TaskStatusMenuContributor"/>
- <dynamicPopupMenu class="org.eclipse.mylar.internal.tasks.ui.MoveToCategoryMenuContributor"/>
- </extension>
- <extension
- point="org.eclipse.mylar.tasks.ui.editors">
- <hyperlinkDetector
- class="org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorUrlHyperlinkDetector"
- id="org.eclipse.mylar.tasklist.hyperlinkdetector.url"/>
- </extension>
- <extension
- point="org.eclipse.mylar.context.core.handlers">
- <status class="org.eclipse.mylar.internal.tasks.ui.RepositoryAwareStatusHandler"/>
- </extension>
-
- <extension
- point="org.eclipse.ui.actionSets">
- <actionSet
- id="org.eclipse.mylar.tasks.navigation"
- label="Task Navigation"
- visible="true">
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.DeactivateAllTasksAction"
- definitionId="org.eclipse.mylar.tasks.command.deactivateAllTasks"
- id="org.eclipse.mylar.tasks.ui.deactivateAllTasks"
- label="&amp;Deactivate Task"
- menubarPath="navigate/open.ext3"
- style="push"/>
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.ActivateTaskAction"
- definitionId="org.eclipse.mylar.tasks.command.activateTask"
- id="org.eclipse.mylar.tasks.ui.switchTask"
- label="&amp;Activate Task..."
- menubarPath="navigate/open.ext3"
- style="push"/>
- <action
- class="org.eclipse.mylar.internal.tasks.ui.actions.OpenTaskAction"
- definitionId="org.eclipse.mylar.tasks.command.openTask"
- icon="icons/etool16/open-task.gif"
- id="org.eclipse.mylar.tasks.ui.openTask"
- label="Open Tas&amp;k..."
- menubarPath="navigate/open.ext3"
- style="push"
- toolbarPath="org.eclipse.search.searchActionSet/Search"
- tooltip="Open Task"/>
- </actionSet>
- </extension>
- <extension
- point="org.eclipse.ui.commands">
- <command
- categoryId="org.eclipse.ui.category.navigate"
- id="org.eclipse.mylar.tasks.command.openTask"
- name="Open Task"/>
- <command
- categoryId="org.eclipse.ui.category.navigate"
- id="org.eclipse.mylar.tasks.command.activateTask"
- name="Activate Task"/>
- <command
- categoryId="org.eclipse.ui.category.navigate"
- id="org.eclipse.mylar.tasks.command.deactivateAllTasks"
- name="Deactivate Task"/>
- </extension>
- <extension
- point="org.eclipse.ui.bindings">
- <key
- commandId="org.eclipse.mylar.tasks.command.openTask"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
- sequence="M1+M2+F11"/>
- <key
- commandId="org.eclipse.mylar.tasks.command.activateTask"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
- sequence="M1+M2+F12"/>
- <key
- commandId="org.eclipse.mylar.tasks.command.deactivateAllTasks"
- schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
- sequence="M1+M2+F9"/>
- </extension>
- <extension
- id="BugzillaSearchPage"
- point="org.eclipse.search.searchResultViewPages">
- <viewPage
- class="org.eclipse.mylar.internal.tasks.ui.search.RepositorySearchResultView"
- searchResultClass="org.eclipse.mylar.internal.tasks.ui.search.RepositorySearchResult"
- id="org.eclipse.mylar.internal.tasks.ui.search.RepositorySearchResultView"/>
-<!-- id="org.eclipse.mylar.bugzilla.BugzillaSearchResultPage"/>-->
- </extension>
- <extension
- id="org.eclipse.mylar.tasks.ui.repositorySearchPage"
- name="Task Search Page"
- point="org.eclipse.search.searchPages">
- <page
- class="org.eclipse.mylar.internal.tasks.ui.TaskSearchPage"
- enabled="true"
- icon="icons/elcl16/task-search.gif"
- id="org.eclipse.mylar.tasks.ui.core.search.page"
- label="Task Search"
- tabPosition="999"/>
- </extension>
- <extension
- point="org.eclipse.ui.propertyPages">
- <page
- adaptable="true"
- class="org.eclipse.mylar.tasks.ui.properties.ProjectTaskRepositoryPage"
- id="org.eclipse.mylar.tasks.ui.project.repository"
- name="Task Repository"
- objectClass="org.eclipse.core.resources.IProject"/>
- </extension>
-
-</plugin>
-
- <!--
- <extension
- point="org.eclipse.mylar.tasklist.editors">
- <hyperlinkDetector class="org.eclipse.ui.internal.editors.text.URLHyperlinkDetector"/>
- </extension>
- -->
-
- <!--<extension
- point="org.eclipse.mylar.tasklist.editors">
- <hyperlinkListener
- class="org.eclipse.mylar.internal.tasklist.ui.TaskHyperlinkAdapter"
- id="org.eclipse.mylar.tasklist.hyperlinkLister.task"
- type="task"/>
- </extension>-->
-
-<!--
- <action
- label="Go Into Category"
- tooltip="Go Into Category"
- menubarPath="tasks"
- id="org.eclipse.mylar.tasklist.actions.category.gointo"
- class="org.eclipse.mylar.tasklist.ui.actions.GoIntoAction"
- icon="icons/etool16/go-into.gif"
- enablesFor="1"/>
--->
diff --git a/org.eclipse.mylyn.tasks.ui/schema/editors.exsd b/org.eclipse.mylyn.tasks.ui/schema/editors.exsd
deleted file mode 100644
index 5bd6099c5..000000000
--- a/org.eclipse.mylyn.tasks.ui/schema/editors.exsd
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.mylar.tasks.ui">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.mylar.tasks.ui" id="editors" name="Task Editors"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="editorFactory" minOccurs="1" maxOccurs="unbounded"/>
- <element ref="hyperlinkDetector"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="editorFactory">
- <complexType>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.mylar.internal.tasklist.ui.ITaskEditorFactory"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="hyperlinkDetector">
- <complexType>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.jface.text.hyperlink.IHyperlinkDetector"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- [Enter the first release in which this extension point appears.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- [Enter extension point usage example here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- [Enter API information here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="implementation"/>
- </appInfo>
- <documentation>
- [Enter information about supplied implementation of this extension point.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
-</schema>
diff --git a/org.eclipse.mylyn.tasks.ui/schema/providers.exsd b/org.eclipse.mylyn.tasks.ui/schema/providers.exsd
deleted file mode 100644
index 19a7b0201..000000000
--- a/org.eclipse.mylyn.tasks.ui/schema/providers.exsd
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.mylar.tasks.ui">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.mylar.tasks.ui" id="providers" name="Task UI Providers"/>
- </appInfo>
- <documentation>
- Currently only a work-around for creating a dynamic popupo menu.
- </documentation>
- </annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="dynamicPopupMenu" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="dynamicPopupMenu">
- <complexType>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute kind="java"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="implementation"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
-</schema>
diff --git a/org.eclipse.mylyn.tasks.ui/schema/repositories.exsd b/org.eclipse.mylyn.tasks.ui/schema/repositories.exsd
deleted file mode 100644
index 3ddcfa6bb..000000000
--- a/org.eclipse.mylyn.tasks.ui/schema/repositories.exsd
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.mylar.tasks.ui">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.mylar.tasks.ui" id="repositories" name="Repositories"/>
- </appInfo>
- <documentation>
- [Enter description of this extension point.]
- </documentation>
- </annotation>
-
- <element name="extension">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- </annotation>
- <complexType>
- <sequence>
- <element ref="connectorCore"/>
- <element ref="externalizer"/>
- <element ref="connectorUi"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="externalizer">
- <annotation>
- <appInfo>
- <meta.element labelAttribute="name"/>
- </appInfo>
- <documentation>
- (no description available)
- </documentation>
- </annotation>
- <complexType>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.mylar.provisional.tasklist.ITaskListExternalizer"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="connectorCore">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- </annotation>
- <complexType>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="type" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="connectorUi">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- </annotation>
- <complexType>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.mylar.tasks.ui.AbstractConnectorUi"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- </annotation>
- </attribute>
- <attribute name="brandingIcon" type="string">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- <appInfo>
- <meta.attribute kind="resource"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- </annotation>
- </attribute>
- <attribute name="overlayIcon" type="string">
- <annotation>
- <documentation>
- (no description available)
- </documentation>
- <appInfo>
- <meta.attribute kind="resource"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- [Enter the first release in which this extension point appears.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- [Enter extension point usage example here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- [Enter API information here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="implementation"/>
- </appInfo>
- <documentation>
- [Enter information about supplied implementation of this extension point.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
-</schema>
diff --git a/org.eclipse.mylyn.tasks.ui/schema/templates.exsd b/org.eclipse.mylyn.tasks.ui/schema/templates.exsd
deleted file mode 100644
index a6d2c66af..000000000
--- a/org.eclipse.mylyn.tasks.ui/schema/templates.exsd
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.mylar.tasks.ui">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.mylar.tasks.ui" id="templates" name="templates"/>
- </appInfo>
- <documentation>
- Templates describing default parameters for new repository configurations.
- </documentation>
- </annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="repository" minOccurs="1" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="repository">
- <complexType>
- <sequence>
- <element ref="attribute" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="label" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="urlRepository" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="repositoryKind" type="string" use="required">
- <annotation>
- <documentation>
- Connector Kind, as declared by the Connector (e.g. &quot;bugzilla&quot;).
- </documentation>
- </annotation>
- </attribute>
- <attribute name="version" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="urlNewAccount" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="urlNewTask" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="urlTask" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="urlTaskQuery" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="addAutomatically" type="boolean">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="anonymous" type="boolean">
- <annotation>
- <documentation>
- True if an anonymous login is accepted for this repository.
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="attribute">
- <complexType>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="value" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- [Enter the first release in which this extension point appears.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- [Enter extension point usage example here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- [Enter API information here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="implementation"/>
- </appInfo>
- <documentation>
- [Enter information about supplied implementation of this extension point.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
-</schema>
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ComboSelectionDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ComboSelectionDialog.java
deleted file mode 100644
index c92e1874d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ComboSelectionDialog.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.mylar.internal.tasks.ui;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * General purpose dialog for selecting an item from a combo box.
- *
- * @author This was (essentially) copied from Eclipse's internal implementation
- * by Wesley Coelho
- */
-public class ComboSelectionDialog extends Dialog {
-
- private String fSelection = null;
-
- private final String fShellTitle;
-
- private final String fLabelText;
-
- private final String[] fAllowedStrings;
-
- private final int fInitialSelectionIndex;
-
- private int fSelectedIndex = -1;
-
- public ComboSelectionDialog(Shell parentShell, String shellTitle, String labelText, String[] comboStrings,
- int initialSelectionIndex) {
- super(parentShell);
- fShellTitle = shellTitle;
- fLabelText = labelText;
- fAllowedStrings = comboStrings;
- fInitialSelectionIndex = initialSelectionIndex;
- }
-
- public String getSelectedString() {
- return fSelection;
- }
-
- /*
- * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected Control createDialogArea(Composite parent) {
- getShell().setText(fShellTitle);
-
- Composite composite = (Composite) super.createDialogArea(parent);
- Composite innerComposite = new Composite(composite, SWT.NONE);
- innerComposite.setLayoutData(new GridData());
- GridLayout gl = new GridLayout();
- gl.numColumns = 2;
- innerComposite.setLayout(gl);
-
- Label label = new Label(innerComposite, SWT.NONE);
- label.setText(fLabelText);
- label.setLayoutData(new GridData());
-
- final Combo combo = new Combo(innerComposite, SWT.READ_ONLY);
- for (int i = 0; i < fAllowedStrings.length; i++) {
- combo.add(fAllowedStrings[i]);
- }
- combo.select(fInitialSelectionIndex);
- fSelection = combo.getItem(combo.getSelectionIndex());
- GridData gd = new GridData();
- gd.widthHint = convertWidthInCharsToPixels(getMaxStringLength());
- combo.setLayoutData(gd);
- combo.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- fSelection = combo.getItem(combo.getSelectionIndex());
- fSelectedIndex = combo.getSelectionIndex();
- }
- });
- applyDialogFont(composite);
- return composite;
- }
-
- /**
- * Returns the array index of the selected string or -1 if no string was
- * selected.
- */
- public int getSelectedIndex() {
- return fSelectedIndex;
- }
-
- private int getMaxStringLength() {
- int max = 0;
- for (int i = 0; i < fAllowedStrings.length; i++) {
- max = Math.max(max, fAllowedStrings[i].length());
- }
- return max;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskEditorFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskEditorFactory.java
deleted file mode 100644
index 96505f05e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskEditorFactory.java
+++ /dev/null
@@ -1,37 +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.tasks.ui;
-
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-
-/**
- * @author Mik Kersten
- */
-public interface ITaskEditorFactory {
-
- public IEditorPart createEditor(MylarTaskEditor parentEditor);
-
- public IEditorInput createEditorInput(ITask task);
-
- public boolean providesOutline();
-
- public String getTitle();
-
- public void notifyEditorActivationChange(IEditorPart editor);
-
- public boolean canCreateEditorFor(ITask task);
-
- public boolean canCreateEditorFor(IEditorInput input);
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotification.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotification.java
deleted file mode 100644
index 46bd19d9f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ITaskListNotification.java
+++ /dev/null
@@ -1,37 +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.tasks.ui;
-
-import java.util.Date;
-
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Rob Elves
- */
-public interface ITaskListNotification extends Comparable {
-
- public void openTask();
-
- public String getDescription();
-
- public String getLabel();
-
- public Image getNotificationIcon();
-
- public Image getOverlayIcon();
-
- public Date getDate();
-
- public void setDate(Date date);
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/MoveToCategoryMenuContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/MoveToCategoryMenuContributor.java
deleted file mode 100644
index 10108a9f0..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/MoveToCategoryMenuContributor.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class MoveToCategoryMenuContributor implements IDynamicSubMenuContributor {
-
- private static final String LABEL = "Move to";
-
- public MenuManager getSubMenuManager(final List<ITaskListElement> selectedElements) {
- final MenuManager subMenuManager = new MenuManager(LABEL);
-
- subMenuManager.setVisible(selectedElements.size() > 0 && !(selectedElements.get(0) instanceof AbstractTaskContainer || selectedElements.get(0) instanceof AbstractRepositoryQuery));
-
- for (final AbstractTaskContainer category : TasksUiPlugin.getTaskListManager().getTaskList()
- .getCategories()) {
- if (!category.equals(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer())) {
- Action action = new Action() {
- @Override
- public void run() {
- for (ITaskListElement element : selectedElements) {
- if (element instanceof ITask) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(category,
- (ITask) element);
- } else if (element instanceof AbstractQueryHit) {
- ITask task = ((AbstractQueryHit) element).getCorrespondingTask();
- if (task != null) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(category,
- task);
- }
- }
- }
- }
- };
- action.setText(category.getDescription());
- action.setImageDescriptor(TaskListImages.CATEGORY);
- if (selectedElements.size() == 1 && selectedElements.get(0) instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) selectedElements.get(0);
- if (hit.getCorrespondingTask() == null) {
- action.setEnabled(false);
- }
- }
- subMenuManager.add(action);
- }
- }
- return subMenuManager;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OfflineTaskManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OfflineTaskManager.java
deleted file mode 100644
index 72bd7c9bf..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/OfflineTaskManager.java
+++ /dev/null
@@ -1,707 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * Class to persist the data for the offline reports list
- */
-public class OfflineTaskManager {
-
- /** The file that the offline reports are written to */
- private File file;
-
-
- private ArrayList<RepositoryTaskData> backingList = new ArrayList<RepositoryTaskData>();
-
- /** A list of offline reports */
- private List<RepositoryTaskData> list = Collections.synchronizedList(backingList);
-
- /** The bug id of the most recently created offline report. */
- protected int latestNewBugId = 0;
-
- // private boolean updateLocalCopy = false;
-
- /**
- * Constructor that reads the offline reports data persisted in the plugin's
- * state directory, if it exists.
- *
- * @param file
- * The file where the offline reports are persisted
- * @throws IOException
- * Error opening or closing the offline reports file
- * @throws ClassNotFoundException
- * @throws ClassNotFoundException
- * Error deserializing objects from the offline reports file
- */
- public OfflineTaskManager(File file, boolean read) throws IOException, ClassNotFoundException {
- this.file = file;
- if (read && file.exists()) {
- readFile();
- }
- }
-
- /**
- * Add a RepositoryTaskData to the offline reports file
- *
- * @param entry
- * The bug to add
- */
- public void add(final RepositoryTaskData entry) throws CoreException {
- int index = -1;
- if ((index = find(entry.getRepositoryUrl(), entry.getId())) >= 0) {
-
- list.remove(index);
-
- list.add(entry);
- writeFile();
-
- } else {
- list.add(entry);
- writeFile();
- }
- }
-
- // /**
- // * Add an offline report to the offline reports list
- // *
- // * @param entry
- // * The bug to add
- // */
- // public RepositoryTaskSyncState add(final RepositoryTaskData entry,
- // boolean forceSync) throws CoreException {
- //
- // RepositoryTaskSyncState status = RepositoryTaskSyncState.SYNCHRONIZED;
- // //
- // // try {
- // //
- // // String handle =
- // AbstractRepositoryTask.getHandle(entry.getRepositoryUrl(),
- // entry.getId());
- // // ITask task =
- // MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle);
- // //
- // // if (task != null && task instanceof AbstractRepositoryTask) {
- // // AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- // //
- // // TaskRepository repository =
- // MylarTaskListPlugin.getRepositoryManager().getRepository(
- // // repositoryTask.getRepositoryKind(),
- // repositoryTask.getRepositoryUrl());
- // //
- // // if (repository == null) {
- // // throw new Exception("No repository associated with task. Unable to
- // retrieve timezone information.");
- // // }
- // //
- // // TimeZone repositoryTimeZone =
- // DateUtil.getTimeZone(repository.getTimeZoneId());
- //
- // int index = -1;
- // if ((index = find(entry.getRepositoryUrl(), entry.getId())) >= 0) {
- // //RepositoryTaskData oldBug = list.get(index);
- //
- // // if (repositoryTask.getLastSynchronized() == null
- // // || entry.getLastModified(repositoryTimeZone)
- // // .compareTo(repositoryTask.getLastSynchronized()) > 0 || forceSync) {
- // //
- // // if (oldBug.hasChanges()) {
- // //
- // // PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- // // public void run() {
- // // updateLocalCopy = MessageDialog
- // // .openQuestion(
- // // null,
- // // "Update Local Copy",
- // // "Local copy of Report "
- // // + entry.getId()
- // // + " on "
- // // + entry.getRepositoryUrl()
- // // + " has changes.\nWould you like to override local changes? \n\nNote:
- // if you select No, only the new comment will be saved with the updated
- // bug, all other changes will be lost.");
- // // }
- // // });
- // //
- // // if (!updateLocalCopy) {
- // // ((RepositoryTaskData) entry).setNewComment(((RepositoryTaskData)
- // oldBug).getNewComment());
- // // ((RepositoryTaskData) entry).setHasChanged(true);
- // // status = RepositoryTaskSyncState.CONFLICT;
- // // } else {
- // // ((RepositoryTaskData) entry).setHasChanged(false);
- // // status = RepositoryTaskSyncState.SYNCHRONIZED;
- // // }
- // // } else {
- // // if (forceSync) {
- // // status = RepositoryTaskSyncState.SYNCHRONIZED;
- // // } else {
- // // status = RepositoryTaskSyncState.INCOMING;
- // // }
- // // }
- // list.remove(index);
- // // if (entry.hasChanges() && status != RepositoryTaskSyncState.CONFLICT)
- // {
- // // status = RepositoryTaskSyncState.OUTGOING;
- // // }
- // list.add(entry);
- // writeFile();
- //
- // } else {
- // // report doesn't exist in offline reports
- // list.add(entry);
- // writeFile();
- // }
- // //repositoryTask.setLastSynchronized(entry.getLastModified(repositoryTimeZone));
- // // }
- // // } catch (Exception e) {
- // // e.printStackTrace();
- // // IStatus runtimestatus = new Status(IStatus.ERROR,
- // MylarTaskListPlugin.PLUGIN_ID, IStatus.OK,
- // // "failed to add offline report", e);
- // // throw new CoreException(runtimestatus);
- // // }
- // return status;
- // }
-
- // /**
- // * Add an offline report to the offline reports list
- // *
- // * @param entry
- // * The bug to add
- // */
- // public RepositoryTaskSyncState add(final RepositoryTaskData entry,
- // boolean forceSync) throws CoreException {
- //
- // RepositoryTaskSyncState status = RepositoryTaskSyncState.SYNCHRONIZED;
- //
- // try {
- //
- // String handle =
- // AbstractRepositoryTask.getHandle(entry.getRepositoryUrl(),
- // entry.getId());
- // ITask task =
- // MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle);
- //
- // if (task != null && task instanceof AbstractRepositoryTask) {
- // AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- //
- // TaskRepository repository =
- // MylarTaskListPlugin.getRepositoryManager().getRepository(
- // repositoryTask.getRepositoryKind(), repositoryTask.getRepositoryUrl());
- //
- // if (repository == null) {
- // throw new Exception("No repository associated with task. Unable to
- // retrieve timezone information.");
- // }
- //
- // TimeZone repositoryTimeZone =
- // DateUtil.getTimeZone(repository.getTimeZoneId());
- //
- // int index = -1;
- // if ((index = find(entry.getRepositoryUrl(), entry.getId())) >= 0) {
- // RepositoryTaskData oldBug = list.get(index);
- //
- // if (repositoryTask.getLastSynchronized() == null
- // || entry.getLastModified(repositoryTimeZone)
- // .compareTo(repositoryTask.getLastSynchronized()) > 0 || forceSync) {
- //
- // if (oldBug.hasChanges()) {
- //
- // PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- // public void run() {
- // updateLocalCopy = MessageDialog
- // .openQuestion(
- // null,
- // "Update Local Copy",
- // "Local copy of Report "
- // + entry.getId()
- // + " on "
- // + entry.getRepositoryUrl()
- // + " has changes.\nWould you like to override local changes? \n\nNote: if
- // you select No, only the new comment will be saved with the updated bug,
- // all other changes will be lost.");
- // }
- // });
- //
- // if (!updateLocalCopy) {
- // ((RepositoryTaskData) entry).setNewComment(((RepositoryTaskData)
- // oldBug).getNewComment());
- // ((RepositoryTaskData) entry).setHasChanged(true);
- // status = RepositoryTaskSyncState.CONFLICT;
- // } else {
- // ((RepositoryTaskData) entry).setHasChanged(false);
- // status = RepositoryTaskSyncState.SYNCHRONIZED;
- // }
- // } else {
- // if (forceSync) {
- // status = RepositoryTaskSyncState.SYNCHRONIZED;
- // } else {
- // status = RepositoryTaskSyncState.INCOMING;
- // }
- // }
- // list.remove(index);
- // if (entry.hasChanges() && status != RepositoryTaskSyncState.CONFLICT) {
- // status = RepositoryTaskSyncState.OUTGOING;
- // }
- // list.add(entry);
- // writeFile();
- // }
- // } else {
- // // report doesn't exist in offline reports
- // list.add(entry);
- // writeFile();
- // }
- // repositoryTask.setLastSynchronized(entry.getLastModified(repositoryTimeZone));
- // }
- // } catch (Exception e) {
- // e.printStackTrace();
- // IStatus runtimestatus = new Status(IStatus.ERROR,
- // MylarTaskListPlugin.PLUGIN_ID, IStatus.OK,
- // "failed to add offline report", e);
- // throw new CoreException(runtimestatus);
- // }
- // return status;
- // }
-
- // DO NOT REMOVE
- // /**
- // * Add an offline report to the offline reports list
- // *
- // * @param entry
- // * The bug to add
- // */
- // public BugzillaOfflineStatus add(BugzillaReport entry, boolean
- // saveChosen) throws CoreException {
- //
- // BugzillaOfflineStatus status = BugzillaOfflineStatus.SAVED;
- //
- // try {
- //
- // // check for bug and do a compare
- // int index = -1;
- // if ((index = find(entry.getRepositoryUrl(), entry.getId())) >= 0) {
- // BugzillaReport oldBug = list.get(index);
- // if (oldBug instanceof BugzillaReport && entry instanceof BugzillaReport
- // && !saveChosen) {
- // 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));
- // final BugzillaCompareInput in = new BugzillaCompareInput(config);
- // oldBug.setOfflineState(true);
- // in.setLeft((BugzillaReport) oldBug);
- // in.setRight((BugzillaReport) entry);
- // in.setTitle("Bug #" + oldBug.getId());
- //
- // try {
- // in.run(null);
- // // running in new job inside a job causes shell to popup
- // // up, losing focus
- // // PlatformUI.getWorkbench().getProgressService().run(true,
- // // true, in);
- // } catch (InterruptedException x) {
- // // cancelled by user
- // // TODO: Check how errors are handled
- // return BugzillaOfflineStatus.ERROR;
- // } catch (InvocationTargetException x) {
- // BugzillaPlugin.log(x);
- // MessageDialog.openError(null, "Compare Failed",
- // x.getTargetException().getMessage());
- // return BugzillaOfflineStatus.ERROR;
- // }
- //
- // ITask dirtyTask = getDirtyTask(oldBug);
- //
- //
- // if (in.getCompareResult() == null) {
- // status = BugzillaOfflineStatus.SAVED;
- // } else if (oldBug.hasChanges() || dirtyTask != null) {
- // if (!MessageDialog
- // .openQuestion(
- // null,
- // "Update Local Copy",
- // "Local copy of Report "
- // + entry.getId() + " on "+entry.getRepositoryUrl()
- // + " has changes.\nWould you like to override local changes? \n\nNote: if
- // you select No, only the new comment will be saved with the updated bug,
- // all other changes will be lost.")) {
- // ((BugzillaReport) entry).setNewComment(((BugzillaReport)
- // oldBug).getNewComment());
- // ((BugzillaReport) entry).setHasChanged(true);
- // status = BugzillaOfflineStatus.CONFLICT;
- // } else {
- // ((BugzillaReport) entry).setHasChanged(false);
- // status = BugzillaOfflineStatus.SAVED;
- // }
- // if(dirtyTask != null) {
- // TaskUiUtil.closeEditorInActivePage(dirtyTask);
- // TaskUiUtil.openEditor(dirtyTask, false);
- // }
- // } else {
- // DiffNode node = (DiffNode) in.getCompareResult();
- // IDiffElement[] children = node.getChildren();
- // if (children.length != 0) {
- // for (IDiffElement element : children) {
- // if (((DiffNode) element).getKind() == Differencer.CHANGE) {
- // if(reopenEditors(oldBug)) {
- // status = BugzillaOfflineStatus.SAVED;
- // } else {
- // status = BugzillaOfflineStatus.SAVED_WITH_INCOMMING_CHANGES;
- // }
- // break;
- // }
- // }
- // } else {
- // status = BugzillaOfflineStatus.SAVED; // do we
- // // ever get
- // // here?
- // }
- // }
- //
- // // Display.getDefault().asyncExec(new Runnable(){
- // // public void run() {
- // //
- // // CompareUI.openCompareDialog(in);
- // // }
- // // });
- // }
- // list.remove(index);
- // }
- // if (entry.hasChanges() && status != BugzillaOfflineStatus.CONFLICT) {
- // status = BugzillaOfflineStatus.SAVED_WITH_OUTGOING_CHANGES;
- // }
- // // add the entry to the list and write the file to disk
- // list.add(entry);
- // writeFile();
- // } catch (Exception e) {
- // e.printStackTrace();
- // IStatus runtimestatus = new Status(IStatus.ERROR,
- // BugzillaUiPlugin.PLUGIN_ID, IStatus.OK,
- // "failed to add offline report", e);
- // throw new CoreException(runtimestatus);
- // }
- // return status;
- // }
-
- /**
- * Updates the offline reports list. Used when existing offline reports are
- * modified and saved.
- */
- public void update() {
- // check for bug and do a compare
- writeFile();
- }
-
- /**
- * @return The id that a new offline bug should use. The value changes each
- * time this method is called.
- */
- public String getNextOfflineBugId() {
- latestNewBugId++;
- return ""+latestNewBugId;
- }
-
- /**
- * Find a bug in the offline reports list.
- *
- * @param id
- * The bug id that we are looking for
- * @return The index of the bug in the array if it exists, else -1. Locally
- * created bugs are ignored.
- */
- public int find(String repositoryUrl, String id) {
- for (int i = 0; i < list.size(); i++) {
- RepositoryTaskData currBug = list.get(i);
- if (currBug != null && currBug.getRepositoryUrl() != null
- && (currBug.getRepositoryUrl().equals(repositoryUrl) && currBug.getId().equals(id))
- && !currBug.isLocallyCreated())
- return i;
- }
- return -1;
- }
-
- // TODO: move to plugin
- public static RepositoryTaskData findBug(String repositoryUrl, String taskId) {
- int location = TasksUiPlugin.getDefault().getOfflineReportsFile().find(repositoryUrl, taskId);
- if (location != -1) {
- return TasksUiPlugin.getDefault().getOfflineReportsFile().elements().get(location);
- }
- return null;
- }
-
- /**
- * Get the list of offline reports
- *
- * @return The list of offline reports
- */
- public List<RepositoryTaskData> elements() {
- return Collections.unmodifiableList(list);
- }
-
- /**
- * Write the offline reports to disk
- */
- private synchronized void writeFile() {
-
- synchronized (file) {
-
- ObjectOutputStream out = null;
- try {
- out = new ObjectOutputStream(new FileOutputStream(file));
-
- // Write the size of the list so that we can read it back in
- // easier
- out.writeInt(list.size());
-
- out.writeInt(latestNewBugId);
-
- // write each element in the array list
- for (int i = 0; i < list.size(); i++) {
- RepositoryTaskData item = list.get(i);
- out.writeObject(item);
- }
- out.close();
- } catch (IOException e) {
- // put up a message and log the error if there is a problem
- // writing
- // to the file
- MylarStatusHandler.fail(e, "Could not write to offline reports file.", false);
- } finally {
- if (out != null) {
- try {
- out.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
- }
-
- /**
- * Read the offline reports in from the file on disk
- *
- * @throws IOException
- * Error opening or closing the offline reports file
- * @throws ClassNotFoundException
- * @throws ClassNotFoundException
- * Error deserializing objects from the offline reports file
- */
- private void readFile() throws IOException, ClassNotFoundException {
-
- synchronized (file) {
-
- ObjectInputStream in = null;
- try {
- in = new ObjectInputStream(new FileInputStream(file));
-
- // get the number of offline reports in the file
- int size = in.readInt();
-
- // get the bug id of the most recently created offline report
- latestNewBugId = in.readInt();
-
- // read in each of the offline reports in the file
- for (int nX = 0; nX < size; nX++) {
- RepositoryTaskData item = null;
-
- item = (RepositoryTaskData) in.readObject();
-
- if (item != null) {
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(item.getRepositoryKind());
- if (connector != null && connector.getOfflineTaskHandler() != null) {
- AbstractAttributeFactory factory = connector.getOfflineTaskHandler().getAttributeFactory();
- if (factory != null) {
- item.setAttributeFactory(factory);
- }
- }
- list.add(item);
- }
- }
- } finally {
- in.close();
- }
- }
- }
-
- /**
- * Remove some bugs from the offline reports list
- *
- * @param indicesToRemove
- * An array of the indicies of the bugs to be removed
- */
- public void remove(List<RepositoryTaskData> sel) {
- list.removeAll(sel);
-
- // rewrite the file so that the data is persistant
- writeFile();
- }
-
- /**
- * Remove all of the items in the offline reports menu
- */
- public void removeAll() {
- list.clear();
-
- // rewrite the file so that the data is persistant
- writeFile();
- }
-
-}
-// /**
-// * Function to sort the offline reports list
-// * @param sortOrder The way to sort the bugs in the offline reports list
-// */
-// public void sort(int sortOrder) {
-// IBugzillaBug[] a = list.toArray(new IBugzillaBug[list.size()]);
-//
-// // decide which sorting method to use and sort the offline reports
-// switch(sortOrder) {
-// case ID_SORT:
-// Arrays.sort(a, new SortID());
-// lastSel = ID_SORT;
-// break;
-// case TYPE_SORT:
-// Arrays.sort(a, new SortType());
-// lastSel = TYPE_SORT;
-// break;
-// }
-//
-// // remove all of the elements from the list so that we can re-add
-// // them in a sorted order
-// list.clear();
-//
-// // add the sorted elements to the list and the table
-// for (int j = 0; j < a.length; j++) {
-// add(a[j]);
-// }
-// }
-
-// /**
-// * Inner class to sort by bug id
-// */
-// private class SortID implements Comparator<IBugzillaBug> {
-// public int compare(IBugzillaBug f1, IBugzillaBug f2) {
-// Integer id1 = f1.getId();
-// Integer id2 = f2.getId();
-//
-// if(id1 != null && id2 != null)
-// return id1.compareTo(id2);
-// else if(id1 == null && id2 != null)
-// return -1;
-// else if(id1 != null && id2 == null)
-// return 1;
-// else
-// return 0;
-// }
-// }
-//
-// /**
-// * Inner class to sort by bug type (locally created or from the server)
-// */
-// private class SortType implements Comparator<IBugzillaBug> {
-// public int compare(IBugzillaBug f1, IBugzillaBug f2) {
-// boolean isLocal1 = f1.isLocallyCreated();
-// boolean isLocal2 = f2.isLocallyCreated();
-//
-// if (isLocal1 && !isLocal2) {
-// return -1;
-// }
-// else if (!isLocal1 && isLocal2) {
-// return 1;
-// }
-//
-// // If they are both the same type, sort by ID
-// Integer id1 = f1.getId();
-// Integer id2 = f2.getId();
-//
-// if(id1 != null && id2 != null)
-// return id1.compareTo(id2);
-// else if(id1 == null && id2 != null)
-// return -1;
-// else if(id1 != null && id2 == null)
-// return 1;
-// else
-// return 0;
-// }
-// }
-
-// /**
-// * Saves the given report to the offlineReportsFile, or, if it already
-// * exists in the file, updates it.
-// *
-// * @param bug
-// * The bug to add/update.
-// */
-// public static void saveOffline(IBugzillaBug bug, boolean saveChosen) throws
-// CoreException {
-// OfflineTaskManager file = BugzillaPlugin.getDefault().getOfflineReports();
-// // If there is already an offline report for this bug, update the file.
-// if (bug.isSavedOffline()) {
-// file.update();
-// }
-// // If this bug has not been saved offline before, add it to the file.
-// else {
-// 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;
-// }
-// file.add(bug, saveChosen);
-// bug.setOfflineState(true);
-// // file.sort(OfflineTaskManager.lastSel);
-// }
-// }
-
-// public static List<IBugzillaBug> getOfflineBugs() {
-// OfflineTaskManager file = BugzillaPlugin.getDefault().getOfflineReports();
-// return file.elements();
-// }
-//
-// /**
-// * Removes the given report from the offlineReportsFile.
-// *
-// * @param bug
-// * The report to remove.
-// */
-// public static void removeReport(IBugzillaBug bug) {
-// ArrayList<IBugzillaBug> bugList = new ArrayList<IBugzillaBug>();
-// bugList.add(bug);
-// BugzillaPlugin.getDefault().getOfflineReports().remove(bugList);
-// }
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryAwareStatusHandler.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryAwareStatusHandler.java
deleted file mode 100644
index 7aab3da9d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryAwareStatusHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.mylar.context.core.IStatusHandler;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- */
-public class RepositoryAwareStatusHandler implements IStatusHandler {
-
- protected static final String ERROR_MESSAGE = "Please report the following error by following the bugs link at:\n"
- + "http://eclipse.org/mylar\n\n"
- + "For details on this error please open the PDE Runtime -> Error Log view";
-
- // TODO: implement option to report bug
- public void notify(final Status status, boolean informUser) {
- if (informUser && Platform.isRunning()) {
- try {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- Shell shell = null;
- if (PlatformUI.getWorkbench() != null
- && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) {
- shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- }
- ErrorDialog.openError(shell, "Mylar Error", ERROR_MESSAGE, status);
- }
- });
- } catch (Throwable t) {
- status.getException().printStackTrace();
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryTaskDecorator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryTaskDecorator.java
deleted file mode 100644
index 2e87f973c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RepositoryTaskDecorator.java
+++ /dev/null
@@ -1,101 +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.tasks.ui;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class RepositoryTaskDecorator implements ILightweightLabelDecorator {
-
- public void decorate(Object element, IDecoration decoration) {
- if (element instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery)element;
- String repositoryUrl = query.getRepositoryUrl();
- if (repositoryUrl != null) {
- try {
- URL url = new URL(repositoryUrl);
- decoration.addSuffix(" [" + url.getHost() + "]");
- } catch (MalformedURLException e) {
- decoration.addSuffix(" [ <unknown host> ]");
- }
- }
- if (query.isSynchronizing()) {
- decoration.addOverlay(TaskListImages.OVERLAY_SYNCHRONIZING, IDecoration.TOP_LEFT);
- }
- } else if (element instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask task = (AbstractRepositoryTask)element;
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(task.getRepositoryKind());
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- task.getRepositoryKind());
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(task.getRepositoryKind(), task.getRepositoryUrl());
- if (!connectorUi.hasRichEditor()) {
- decoration.addOverlay(TaskListImages.OVERLAY_WEB, IDecoration.BOTTOM_LEFT);
- } else if (connector != null && connector.hasRepositoryContext(repository, task)) {
- decoration.addOverlay(TaskListImages.OVERLAY_REPOSITORY_CONTEXT, IDecoration.BOTTOM_LEFT);
- } else {
- decoration.addOverlay(TaskListImages.OVERLAY_REPOSITORY, IDecoration.BOTTOM_LEFT);
- }
- if (task.isSynchronizing()) {
- decoration.addOverlay(TaskListImages.OVERLAY_SYNCHRONIZING, IDecoration.TOP_LEFT);
- }
- } else if (element instanceof AbstractQueryHit) {
- ITask correspondingTask = ((AbstractQueryHit)element).getCorrespondingTask();
- decorate(correspondingTask, decoration);
- } else if (element instanceof ITask) {
- String url = ((ITask)element).getUrl();
- if (url != null && !url.trim().equals("") && !url.equals("http://")) {
- decoration.addOverlay(TaskListImages.OVERLAY_WEB, IDecoration.BOTTOM_LEFT);
- }
- } else if (element instanceof TaskRepository) {
- ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(((TaskRepository)element).getKind());
- if (overlay != null) {
- decoration.addOverlay(overlay, IDecoration.BOTTOM_RIGHT);
- }
- }
- }
-
- 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.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RetrieveTitleFromUrlJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RetrieveTitleFromUrlJob.java
deleted file mode 100644
index 0479357bf..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/RetrieveTitleFromUrlJob.java
+++ /dev/null
@@ -1,118 +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.tasks.ui;
-
-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.mylar.context.core.MylarStatusHandler;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.TitleEvent;
-import org.eclipse.swt.browser.TitleListener;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * Waits for the title from the browser
- *
- * @author Wesley Coelho
- * @author Mik Kersten
- */
-public abstract class RetrieveTitleFromUrlJob extends Job implements TitleListener {
-
- public static final String LABEL_TITLE = "Retrieving description from URL";
-
- private final static long MAX_WAIT_TIME_MILLIS = 1000 * 10; // (10 Seconds)
-
- private final static long SLEEP_INTERVAL_MILLIS = 500;
-
- private String url = null;
-
- private String pageTitle = null;
-
- private boolean retrievalFailed = false;
-
- private long timeWaitedMillis = 0;
-
- boolean ignoreChangeCall = false;
-
- private boolean titleRetrieved = false;
-
- public RetrieveTitleFromUrlJob(String url) {
- super(LABEL_TITLE);
- this.url = url;
- }
-
- protected abstract void setTitle(String pageTitle);
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
-
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- final Shell shell = new Shell(Display.getDefault());
- shell.setVisible(false);
- Browser browser = new Browser(shell, SWT.NONE);
- browser.addTitleListener(RetrieveTitleFromUrlJob.this);
- browser.setUrl(url);
- }
- });
-
- while (pageTitle == null && !retrievalFailed && (timeWaitedMillis <= MAX_WAIT_TIME_MILLIS)) {
- try {
- Thread.sleep(SLEEP_INTERVAL_MILLIS);
- } catch (InterruptedException e) {
- MylarStatusHandler.fail(e, "Thread interrupted during sleep", false);
- }
- timeWaitedMillis += SLEEP_INTERVAL_MILLIS;
- }
-
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- if (pageTitle == null) {
- pageTitle = url;
- titleRetrieved = false;
- } else {
- titleRetrieved = true;
- }
- setTitle(pageTitle);
- }
- });
- return Status.OK_STATUS;
- }
-
- public void changed(TitleEvent event) {
- if (!ignoreChangeCall) {
- if (event.title.equals(url)) {
- return;
- } else {
- ignoreChangeCall = true;
- if (event.title.equals(url + "/") || event.title.equals("Object not found!")
- || event.title.equals("No page to display") || event.title.equals("Cannot find server")
- || event.title.equals("Invalid Bug ID")) {
- retrievalFailed = true;
- } else {
- pageTitle = event.title;
- }
- }
- }
- }
-
- public boolean isTitleRetrieved() {
- return titleRetrieved;
- }
-
- public String getPageTitle() {
- return pageTitle;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduledTaskListSynchJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduledTaskListSynchJob.java
deleted file mode 100644
index 99d4af97c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ScheduledTaskListSynchJob.java
+++ /dev/null
@@ -1,143 +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.tasks.ui;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- */
-public class ScheduledTaskListSynchJob extends Job {
-
- private static final String LABEL_TASK = "Task Repository Synchronization";
-
- private static final String JOB_NAME = "Synchronizing repository tasks";
-
- private long scheduleDelay = 1000 * 60 * 20;// 20 minutes default
-
- private TaskList taskList = null;
-
- private static long count = 0;
-
- private TaskListManager taskListManager;
-
- private List<TaskRepository> repositories = null;
-
- public ScheduledTaskListSynchJob(long schedule, TaskListManager taskListManager) {
- super(JOB_NAME);
- this.scheduleDelay = schedule;
- this.taskListManager = taskListManager;
- this.setSystem(true);
- this.setPriority(Job.BUILD);
- }
-
- public ScheduledTaskListSynchJob(TaskListManager taskListManager) {
- super(JOB_NAME);
- this.taskListManager = taskListManager;
- this.setPriority(Job.BUILD);
- this.scheduleDelay = -1;
- }
-
- public IStatus run(IProgressMonitor monitor) {
- try {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
-
- taskList = taskListManager.getTaskList();
- if (repositories == null) {
- repositories = TasksUiPlugin.getRepositoryManager().getAllRepositories();
- }
- monitor.beginTask(LABEL_TASK, repositories.size());
-
- for (final TaskRepository repository : repositories) {
- if (monitor.isCanceled()) {
- scheduleDelay = -1;
- throw new OperationCanceledException();
- }
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(repository.getKind());
- if (connector == null) {
- monitor.worked(1);
- continue;
- }
-
- Set<AbstractRepositoryQuery> queries = Collections.unmodifiableSet(taskList
- .getRepositoryQueries(repository.getUrl()));
- if (queries.size() > 0) {
- if (connector != null) {
- JobChangeAdapter jobAdapter = new JobChangeAdapter() {
- @Override
- public void done(IJobChangeEvent event) {
- TasksUiPlugin.getSynchronizationManager().synchronizeChanged(connector, repository);
- }
- };
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, queries, jobAdapter, Job.DECORATE, 0, false);
- }
- } else {
- TasksUiPlugin.getSynchronizationManager().synchronizeChanged(connector, repository);
- }
- monitor.worked(1);
- }
- } finally {
- count++;
- if (count == Long.MAX_VALUE)
- count = 0;
- if (monitor != null) {
- monitor.done();
- }
- }
- return Status.OK_STATUS;
- }
-
- public void setSchedule(long schedule) {
- this.scheduleDelay = schedule;
- }
-
- public void setRepositories(List<TaskRepository> repositories) {
- this.repositories = repositories;
- }
-
- /**
- * for testing purposes
- */
- public static long getCount() {
- return count;
- }
-
- /** for testing */
- public static void resetCount() {
- count = 0;
- }
-
- public long getScheduleDelay() {
- return scheduleDelay;
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskArchiveFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskArchiveFilter.java
deleted file mode 100644
index 41136b68e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/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.tasks.ui;
-
-import org.eclipse.mylar.tasks.core.TaskArchive;
-
-/**
- * @author Mik Kersten
- */
-public class TaskArchiveFilter extends AbstractTaskListFilter {
-
- 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/tasks/ui/TaskCompletionFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskCompletionFilter.java
deleted file mode 100644
index 651c191a7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/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.tasks.ui;
-
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.ITask;
-
-/**
- * @author Mik Kersten
- */
-public class TaskCompletionFilter extends AbstractTaskListFilter {
-
- 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 !hit.isCompleted();
- }
- }
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java
deleted file mode 100644
index 47d0351de..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListBackupManager.java
+++ /dev/null
@@ -1,211 +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.tasks.ui;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.util.TaskDataExportJob;
-import org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataExportWizard;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * @author Rob Elves
- */
-public class TaskListBackupManager implements IPropertyChangeListener {
-
- private static final String TITLE_TASKLIST_BACKUP = "Tasklist Backup";
-
- private static final String BACKUP_JOB_NAME = "Scheduled task data backup";
-
- public static final String BACKUP_FAILURE_MESSAGE = "Could not backup task data. Check backup preferences.\n";
-
- private static final long SECOND = 1000;
-
- private static final long MINUTE = 60 * SECOND;
-
- private static final long HOUR = 60 * MINUTE;
-
- private static final long DAY = 24 * HOUR;
-
- private Timer timer;
-
- public TaskListBackupManager() {
-// boolean enabled = MylarTaskListPlugin.getMylarCorePrefs().getBoolean(
-// TaskListPreferenceConstants.BACKUP_AUTOMATICALLY);
-// if (enabled) {
- int days = TasksUiPlugin.getDefault().getPreferenceStore().getInt(TaskListPreferenceConstants.BACKUP_SCHEDULE);
- if (days > 0) {
- start(MINUTE);
- }
- }
-
- public void start(long delay) {
- timer = new Timer();
- timer.schedule(new CheckBackupRequired(), delay, HOUR);
- }
-
- public void stop() {
- timer.cancel();
- }
-
- public void propertyChange(PropertyChangeEvent event) {
-// if (event.getProperty().equals(TaskListPreferenceConstants.BACKUP_AUTOMATICALLY)) {
-// if ((Boolean) event.getNewValue() == true) {
-// start(MINUTE);
-// } else {
-// stop();
-// }
-// }
- }
-
- public void backupNow(boolean synchronous) {
-// String destination = MylarTaskListPlugin.getMylarCorePrefs().getString(
-// TaskListPreferenceConstants.BACKUP_FOLDER);
- String destination = TasksUiPlugin.getDefault().getBackupFolderPath();
-
- File backupFolder = new File(destination);
- if (!backupFolder.exists()) {
- backupFolder.mkdir();
- }
-
- removeOldBackups(backupFolder);
-
- String fileName = TaskDataExportWizard.getZipFileName();
-
- if (!synchronous) {
-
- ExportJob export = new ExportJob(destination, fileName);
- export.schedule();
-
- } else {
-
- final TaskDataExportJob backupJob = new TaskDataExportJob(destination, true, fileName);
-
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
- try {
- service.run(true, false, backupJob);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_LAST,
- new Date().getTime());
- } catch (InterruptedException e) {
- // ignore
- } catch (InvocationTargetException e) {
- MessageDialog.openError(null, TITLE_TASKLIST_BACKUP, BACKUP_FAILURE_MESSAGE);
- }
-
- }
- }
-
- /** public for testing purposes */
- public void removeOldBackups(File folder) {
-
- int maxBackups = TasksUiPlugin.getDefault().getPreferenceStore().getInt(TaskListPreferenceConstants.BACKUP_MAXFILES);
-
- File[] files = folder.listFiles();
- ArrayList<File> backupFiles = new ArrayList<File>();
- for (File file : files) {
- if (file.getName().startsWith(TaskDataExportWizard.ZIP_FILE_PREFIX)) {
- backupFiles.add(file);
- }
- }
-
- File[] backupFileArray = backupFiles.toArray(new File[backupFiles.size()]);
-
- if (backupFileArray != null && backupFileArray.length > 0) {
- Arrays.sort(backupFileArray, new Comparator<File>() {
- public int compare(File file1, File file2) {
- return new Long((file1).lastModified()).compareTo(new Long((file2).lastModified()));
- }
-
- });
-
- int toomany = backupFileArray.length - maxBackups;
- if (toomany > 0) {
- for (int x = 0; x < toomany; x++) {
- if(backupFileArray[x] != null) {
- backupFileArray[x].delete();
- }
- }
- }
- }
- }
-
- class CheckBackupRequired extends TimerTask {
-
- @Override
- public void run() {
- if (!Platform.isRunning() || ContextCorePlugin.getDefault() == null) {
- return;
- } else {
- long lastBackup = TasksUiPlugin.getDefault().getPreferenceStore().getLong(
- TaskListPreferenceConstants.BACKUP_LAST);
- int days = TasksUiPlugin.getDefault().getPreferenceStore().getInt(TaskListPreferenceConstants.BACKUP_SCHEDULE);
- long waitPeriod = days * DAY;
- final long now = new Date().getTime();
-
- if ((now - lastBackup) > waitPeriod) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- backupNow(false);
- }
- });
- }
- }
- }
- }
-
- static class ExportJob extends Job {
-
- final TaskDataExportJob backupJob;
-
- public ExportJob(String destination, String filename) {
- super(BACKUP_JOB_NAME);
- backupJob = new TaskDataExportJob(destination, true, filename);
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- if (Platform.isRunning()) {
- backupJob.run(monitor);
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_LAST,
- new Date().getTime());
- }
- } catch (InvocationTargetException e) {
- MessageDialog
- .openError(null, BACKUP_JOB_NAME,
- "Error occured during scheduled tasklist backup.\nCheck settings on Tasklist preferences page.");
- } catch (InterruptedException e) {
- return Status.CANCEL_STATUS;
- }
- return Status.OK_STATUS;
- }
-
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListColorsAndFonts.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListColorsAndFonts.java
deleted file mode 100644
index 062867edb..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListColorsAndFonts.java
+++ /dev/null
@@ -1,113 +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.tasks.ui;
-
-import java.lang.reflect.Field;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-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_LABEL_CAUTION = new Color(Display.getDefault(), 200, 10, 30);
-
- public static final Color COLOR_HYPERLINK = new Color(Display.getDefault(), 0, 0, 255);
-
- public static final Color COLOR_SPELLING_ERROR = new Color(Display.getDefault(), 255, 0, 0);
-
- public static final Font BOLD = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);
-
- public static final Font ITALIC = JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT);
-
- public static Font STRIKETHROUGH;
-
- public static final String THEME_COLOR_TASKLIST_CATEGORY = "org.eclipse.mylar.tasklist.ui.colors.background.category";
-
- public static final String THEME_COLOR_TASK_OVERDUE = "org.eclipse.mylar.tasklist.ui.colors.foreground.overdue";
-
- public static final String THEME_COLOR_TASK_THISWEEK_SCHEDULED = "org.eclipse.mylar.tasklist.ui.colors.foreground.thisweek.scheduled";
-
- public static final String THEME_COLOR_TASK_TODAY_SCHEDULED = "org.eclipse.mylar.tasklist.ui.colors.foreground.today.scheduled";
-
- public static final String THEME_COLOR_TASK_TODAY_COMPLETED = "org.eclipse.mylar.tasklist.ui.colors.foreground.today.completed";
-
- static {
- Font defaultFont = JFaceResources.getFontRegistry().get(JFaceResources.DEFAULT_FONT);
- FontData[] defaultData = defaultFont.getFontData();
- if (defaultData != null && defaultData.length == 1) {
- FontData data = new FontData(defaultData[0].getName(), defaultData[0].getHeight(), defaultData[0]
- .getStyle());
-
- // NOTE: Windowx XP only, for: data.data.lfStrikeOut = 1;
- try {
- Field dataField = data.getClass().getDeclaredField("data");
- Object dataObject = dataField.get(data);
- Class clazz = dataObject.getClass().getSuperclass();
- Field strikeOutFiled = clazz.getDeclaredField("lfStrikeOut");
- strikeOutFiled.set(dataObject, (byte) 1);
- STRIKETHROUGH = new Font(Display.getCurrent(), data);
- } catch (Throwable t) {
- // Linux or other platform
- STRIKETHROUGH = defaultFont;
- }
- } else {
- STRIKETHROUGH = defaultFont;
- }
- }
-
- /**
- * NOTE: disposal of JFaceResources fonts handled by registry.
- */
- public static void dispose() {
- if (STRIKETHROUGH != null && !STRIKETHROUGH.isDisposed()) {
- STRIKETHROUGH.dispose();
- }
- BACKGROUND_ARCHIVE.dispose();
- COLOR_LABEL_CAUTION.dispose();
- COLOR_GRAY_LIGHT.dispose();
- COLOR_TASK_COMPLETED.dispose();
- COLOR_TASK_ACTIVE.dispose();
- COLOR_HYPERLINK.dispose();
- COLOR_SPELLING_ERROR.dispose();
- }
-
-
- public static boolean isTaskListTheme(String property) {
- if (property == null) {
- return false;
- } else {
- return property.equals(TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY)
- || property.equals(TaskListColorsAndFonts.THEME_COLOR_TASK_OVERDUE)
- || property.equals(TaskListColorsAndFonts.THEME_COLOR_TASK_TODAY_COMPLETED)
- || property.equals(TaskListColorsAndFonts.THEME_COLOR_TASK_TODAY_SCHEDULED)
- || property.equals(TaskListColorsAndFonts.THEME_COLOR_TASK_THISWEEK_SCHEDULED);
- }
- }
-
-
- public static final String TASK_EDITOR_FONT = "org.eclipse.mylar.tasklist.ui.fonts.task.editor.comment";
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListImages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListImages.java
deleted file mode 100644
index 8c93e0926..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListImages.java
+++ /dev/null
@@ -1,236 +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
- *******************************************************************************/
-/*
- * Created on Apr 20, 2004
- */
-package org.eclipse.mylar.internal.tasks.ui;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListImages {
-
- private static ImageRegistry imageRegistry;
-
- private static final String T_ELCL = "elcl16";
-
- private static final String T_EVIEW = "eview16";
-
- private static final String T_TOOL = "etool16";
-
- private static final String T_WIZBAN = "wizban";
-
- public static final Point SIZE = new Point(16, 16);
-
- private static final URL baseURL = TasksUiPlugin.getDefault().getBundle().getEntry("/icons/");
-
- public static final ImageDescriptor TASKLIST = create("eview16", "task-list.gif");
-
- public static final ImageDescriptor REPOSITORY = create("eview16", "repository.gif");
-
- public static final ImageDescriptor REPOSITORY_NEW = create("etool16", "repository-new.gif");
-
- public static final ImageDescriptor REPOSITORIES = create("eview16", "repositories.gif");
-
- public static final ImageDescriptor REMOVE = create(T_ELCL, "remove.gif");
-
- public static final ImageDescriptor FILTER_COMPLETE = create(T_ELCL, "filter-complete.gif");
-
- public static final ImageDescriptor FILTER_ARCHIVE = create(T_ELCL, "filter-archive.gif");
-
- public static final ImageDescriptor FILTER_PRIORITY = create(T_ELCL, "filter-priority.gif");
-
- public static final ImageDescriptor COLOR_PALETTE = create(T_ELCL, "color-palette.gif");
-
- public static final ImageDescriptor TASK = createSize(create(T_TOOL, "task.gif"), SIZE);
-
- public static final ImageDescriptor TASK_COMPLETED = createSize(create(T_TOOL, "task-completed.gif"), SIZE);
-
- public static final ImageDescriptor TASK_NOTES = createSize(create(T_TOOL, "task-notes.gif"), SIZE);
-
- public static final ImageDescriptor TASK_REPOSITORY_NOTES = createSize(create(T_TOOL, "task-repository-notes.gif"), SIZE);
-
- public static final ImageDescriptor TASK_REPOSITORY_COMPLETED = createSize(create(T_TOOL, "task-repository-completed.gif"), SIZE);
-
- public static final ImageDescriptor TASK_NEW = create(T_TOOL, "task-new.gif");
-
- public static final ImageDescriptor OVERLAY_WEB = create(T_TOOL, "overlay-web.gif");
-
- public static final ImageDescriptor OVERLAY_SYNCHRONIZING = create(T_EVIEW, "overlay-synchronizing.gif");
-
- public static final ImageDescriptor TASK_WEB = createWithOverlay(TASK, OVERLAY_WEB, false, true);
-
- public static final ImageDescriptor TASK_WEB_REMOTE = create(T_TOOL, "overlay-web.gif");
-
- public static final ImageDescriptor CATEGORY = createSize(create(T_TOOL, "category.gif"), SIZE);
-
- public static final ImageDescriptor CATEGORY_NEW = create(T_TOOL, "category-new.gif");
-
- public static final ImageDescriptor CATEGORY_ARCHIVE = createSize(create(T_TOOL, "category-archive.gif"), SIZE);
-
- public static final ImageDescriptor TASK_REMOTE = createSize(create(T_TOOL, "task-remote.gif"), SIZE);
-
- public static final ImageDescriptor TASK_REPOSITORY = create(T_TOOL, "task-repository.gif");
-
- public static final ImageDescriptor TASK_REPOSITORY_NEW = create(T_TOOL, "task-repository-new.gif");
-
- public static final ImageDescriptor COMMENT = create(T_TOOL, "comment.gif");
-
- public static final ImageDescriptor PERSON = create(T_TOOL, "person.gif");
-
- public static final ImageDescriptor CONTEXT_ATTACH = create(T_TOOL, "context-attach.gif");
-
- public static final ImageDescriptor OVERLAY_INCOMMING = create(T_EVIEW, "overlay-incoming.gif");
-
- public static final ImageDescriptor OVERLAY_OUTGOING = create(T_EVIEW, "overlay-outgoing.gif");
-
- public static final ImageDescriptor OVERLAY_CONFLICT = create(T_EVIEW, "overlay-conflicting.gif");
-
- public static final ImageDescriptor OVERLAY_REPOSITORY = create(T_EVIEW, "overlay-repository.gif");
-
- public static final ImageDescriptor OVERLAY_REPOSITORY_CONTEXT = create(T_EVIEW, "overlay-repository-context.gif");
-
- public static final ImageDescriptor STATUS_NORMAL = create(T_EVIEW, "status-normal.gif");
-
- public static final ImageDescriptor STATUS_CONTEXT = create(T_EVIEW, "status-server-context.gif");
-
- public static final ImageDescriptor STATUS_NORMAL_INCOMING = createWithOverlay(
- STATUS_NORMAL,
- OVERLAY_INCOMMING, true, true);
-
- public static final ImageDescriptor STATUS_NORMAL_OUTGOING = createWithOverlay(
- STATUS_NORMAL,
- OVERLAY_OUTGOING, true, true);
-
- public static final ImageDescriptor STATUS_NORMAL_CONFLICT = createWithOverlay(
- STATUS_NORMAL,
- OVERLAY_CONFLICT, true, true);
-
- public static final ImageDescriptor STATUS_CONTEXT_INCOMING = createWithOverlay(
- STATUS_CONTEXT,
- OVERLAY_INCOMMING, true, true);
-
- public static final ImageDescriptor STATUS_CONTEXT_OUTGOING = createWithOverlay(
- STATUS_CONTEXT,
- OVERLAY_OUTGOING, true, true);
-
- public static final ImageDescriptor STATUS_CONTEXT_CONFLICT = createWithOverlay(
- STATUS_CONTEXT,
- OVERLAY_CONFLICT, true, true);
-
- public static final ImageDescriptor QUERY = createSize(create(T_TOOL, "query.gif"), SIZE);
-
- public static final ImageDescriptor QUERY_NEW = create(T_TOOL, "query-new.gif");
-
- public static final ImageDescriptor REPOSITORY_SYNCHRONIZE = create(T_TOOL, "repository-synchronize.gif");
-
- public static final ImageDescriptor NAVIGATE_PREVIOUS = create(T_TOOL, "navigate-previous.gif");
-
- public static final ImageDescriptor NAVIGATE_NEXT = create(T_TOOL, "navigate-next.gif");
-
- public static final ImageDescriptor COPY = create(T_TOOL, "copy.png");
-
- public static final ImageDescriptor GO_UP = create(T_TOOL, "go-up.gif");
-
- public static final ImageDescriptor GO_INTO = create(T_TOOL, "go-into.gif");
-
- public static final ImageDescriptor TASK_ACTIVE = createSize(create(T_TOOL, "task-active.gif"), SIZE);
-
- public static final ImageDescriptor TASK_INACTIVE = createSize(create(T_TOOL, "task-inactive.gif"), SIZE);
-
- public static final ImageDescriptor TASK_INACTIVE_CONTEXT = createSize(create(T_TOOL, "task-context.gif"),
- SIZE);
-
- public static final ImageDescriptor TASK_COMPLETE = create(T_TOOL, "task-complete.gif");
-
- public static final ImageDescriptor TASK_INCOMPLETE = create(T_TOOL, "task-incomplete.gif");
-
- public static final ImageDescriptor COLLAPSE_ALL = create(T_ELCL, "collapseall.png");
-
- public static final ImageDescriptor NOTIFICATION_CLOSE = create(T_EVIEW, "notification-close.gif");
-
- public static final ImageDescriptor EXPAND_ALL = create(T_ELCL, "expandall.gif");
-
- public static final ImageDescriptor PRIORITY_1 = createSize(create(T_EVIEW, "priority-1.gif"), SIZE);
-
- public static final ImageDescriptor PRIORITY_2 = createSize(create(T_EVIEW, "priority-2.gif"), SIZE);
-
- public static final ImageDescriptor PRIORITY_3 = createSize(create(T_EVIEW, "priority-3.gif"), SIZE);
-
- public static final ImageDescriptor PRIORITY_4 = createSize(create(T_EVIEW, "priority-4.gif"), SIZE);
-
- public static final ImageDescriptor PRIORITY_5 = createSize(create(T_EVIEW, "priority-5.gif"), SIZE);
-
- public static final ImageDescriptor CALENDAR = create(T_EVIEW, "task-activity.gif");
-
- public static final ImageDescriptor BANNER_REPOSITORY = create(T_WIZBAN, "banner-repository.gif");
-
- public static final ImageDescriptor BANNER_REPOSITORY_CONTEXT = create(T_WIZBAN, "banner-repository-context.gif");
-
- private static ImageDescriptor create(String prefix, String name) {
- try {
- return ImageDescriptor.createFromURL(makeIconFileURL(prefix, name));
- } catch (MalformedURLException e) {
- return ImageDescriptor.getMissingImageDescriptor();
- }
- }
-
- private static ImageDescriptor createSize(ImageDescriptor base, Point size) {
- return new TaskListImageDescriptor(base, size);
- }
-
- private static ImageDescriptor createWithOverlay(ImageDescriptor base, ImageDescriptor overlay, boolean top,
- boolean left) {
- return new TaskListImageDescriptor(base, overlay, top, left);
- }
-
- private static URL makeIconFileURL(String prefix, String name) throws MalformedURLException {
- if (baseURL == null)
- throw new MalformedURLException();
-
- StringBuffer buffer = new StringBuffer(prefix);
- buffer.append('/');
- buffer.append(name);
- return new URL(baseURL, buffer.toString());
- }
-
- private static ImageRegistry getImageRegistry() {
- if (imageRegistry == null) {
- imageRegistry = new ImageRegistry();
- }
-
- return imageRegistry;
- }
-
- /**
- * Lazily initializes image map.
- */
- public static Image getImage(ImageDescriptor imageDescriptor) {
- ImageRegistry imageRegistry = getImageRegistry();
-
- Image image = imageRegistry.get("" + imageDescriptor.hashCode());
- if (image == null) {
- image = imageDescriptor.createImage();
- imageRegistry.put("" + imageDescriptor.hashCode(), image);
- }
- return image;
- }
-}
-
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java
deleted file mode 100644
index 01fb8776a..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationIncoming.java
+++ /dev/null
@@ -1,115 +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.tasks.ui;
-
-import java.util.Date;
-
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- */
-public class TaskListNotificationIncoming implements ITaskListNotification {
-
- private final AbstractRepositoryTask task;
-
- private String description = null;
-
- private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(),
- PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator());
-
- private Date date;
-
- public TaskListNotificationIncoming(AbstractRepositoryTask task) {
- this.task = task;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getLabel() {
- return labelProvider.getText(task);
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public void openTask() {
-
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- }
- });
-
- }
-
- public Image getNotificationIcon() {
- return labelProvider.getImage(task);
- }
-//
-// public synchronized void setNotified(boolean notified) {
-// task.setNotified(true);
-// }
-//
-// public synchronized boolean isNotified() {
-// return task.isNotified();
-// }
-
- public boolean equals(Object o) {
- if (!(o instanceof TaskListNotificationIncoming)) {
- return false;
- }
- TaskListNotificationIncoming notification = (TaskListNotificationIncoming) o;
- return notification.getTask().equals(task);
- }
-
- private ITask getTask() {
- return task;
- }
-
- public int hashCode() {
- return task.hashCode();
- }
-
- public Image getOverlayIcon() {
- return TaskListImages.getImage(TaskListImages.OVERLAY_INCOMMING);
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public int compareTo(Object anotherNotification) throws ClassCastException {
- if (!(anotherNotification instanceof ITaskListNotification))
- throw new ClassCastException("A ITaskListNotification object expected.");
- Date anotherDate = ((ITaskListNotification) anotherNotification).getDate();
- if(date != null && anotherDate != null) {
- return date.compareTo(anotherDate);
- } else if(date == null) {
- return -1;
- } else {
- return 1;
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java
deleted file mode 100644
index ef4309803..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationManager.java
+++ /dev/null
@@ -1,215 +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.tasks.ui;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-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.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.events.ShellListener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- */
-public class TaskListNotificationManager implements IPropertyChangeListener {
-
- private static final String CLOSE_NOTIFICATION_JOB = "Close Notification Job";
-
- private static final String OPEN_NOTIFICATION_JOB = "Open Notification Job";
-
- private static final long CLOSE_POPUP_DELAY = 1000 * 12;
-
- private static final long OPEN_POPUP_DELAY = 1000 * 60;
-
- private static final boolean runSystem = true;
-
- private TaskListNotificationPopup popup;
-
- private Set<ITaskListNotification> notifications = new HashSet<ITaskListNotification>();
-
- private Set<ITaskListNotification> currentlyNotifying = Collections.synchronizedSet(notifications);
-
- private List<ITaskListNotificationProvider> notificationProviders = new ArrayList<ITaskListNotificationProvider>();
-
- private Job openJob = new Job(OPEN_NOTIFICATION_JOB) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
-
- if (!PlatformUI.getWorkbench().getDisplay().isDisposed()) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- @SuppressWarnings("unchecked")
- public void run() {
- if ((popup != null && popup.close()) || popup == null) {
- closeJob.cancel();
- collectNotifications();
- //setNotified();
- synchronized (TaskListNotificationManager.class) {
- if (currentlyNotifying.size() > 0) {
- popup = new TaskListNotificationPopup(new Shell(PlatformUI.getWorkbench()
- .getDisplay()));
- ArrayList toDisplay = new ArrayList<ITaskListNotification>(currentlyNotifying);
- Collections.sort(toDisplay);
- popup.setContents(toDisplay);
- cleanNotified();
- popup.setBlockOnOpen(false);
- popup.open();
- closeJob.setSystem(runSystem);
- closeJob.schedule(CLOSE_POPUP_DELAY);
- popup.getShell().addShellListener(SHELL_LISTENER);
- }
- }
- }
-
- }
- });
- }
- } finally {
- schedule(OPEN_POPUP_DELAY);
- }
-
- if (monitor.isCanceled())
- return Status.CANCEL_STATUS;
-
- return Status.OK_STATUS;
- }
-
- };
-
- private Job closeJob = new Job(CLOSE_NOTIFICATION_JOB) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if (!PlatformUI.getWorkbench().getDisplay().isDisposed()) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (popup != null) {
- synchronized (popup) {
- popup.close();
- }
- }
- }
- });
- }
- if (monitor.isCanceled())
- return Status.CANCEL_STATUS;
-
- return Status.OK_STATUS;
- }
-
- };
-
- 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.setSystem(runSystem);
- 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 setNotified() {
-// for (ITaskListNotification notification : currentlyNotifying) {
-// notification.setNotified(true);
-// }
-// }
-
- private void cleanNotified() {
- currentlyNotifying.clear();
- }
-
- /** public for testing */
- public void collectNotifications() {
- for (ITaskListNotificationProvider provider : notificationProviders) {
- currentlyNotifying.addAll(provider.getNotifications());
- }
- }
-
- public void startNotification(long initialStartupTime) {
- if (TasksUiPlugin.getDefault().getPreferenceStore().getBoolean(TaskListPreferenceConstants.NOTIFICATIONS_ENABLED)) {
- if (!openJob.cancel()) {
- try {
- openJob.join();
- } catch (InterruptedException e) {
- // ignore
- }
- }
- openJob.setSystem(runSystem);
- openJob.schedule(initialStartupTime);
- }
- }
-
- public void stopNotification() {
- openJob.cancel();
- closeJob.cancel();
- if (popup != null) {
- popup.close();
- }
- }
-
- public void addNotificationProvider(ITaskListNotificationProvider notification_provider) {
- notificationProviders.add(notification_provider);
- }
-
- public void removeNotificationProvider(ITaskListNotificationProvider notification_provider) {
- notificationProviders.remove(notification_provider);
- }
-
- /**
- * public for testing purposes
- */
- public Set<ITaskListNotification> getNotifications() {
- synchronized (TaskListNotificationManager.class) {
- return currentlyNotifying;
- }
- }
-
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(TaskListPreferenceConstants.NOTIFICATIONS_ENABLED)) {
- if ((Boolean)event.getNewValue() == true) {
- startNotification(OPEN_POPUP_DELAY);
- } else {
- stopNotification();
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationPopup.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationPopup.java
deleted file mode 100644
index 7bf063e00..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationPopup.java
+++ /dev/null
@@ -1,206 +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.tasks.ui;
-
-import java.util.List;
-
-import org.eclipse.jface.dialogs.PopupDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-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.Hyperlink;
-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 String NOTIFICATIONS_HIDDEN = " more changes...";
-
- private static final int NUM_NOTIFICATIONS_TO_DISPLAY = 3;
-
- private static final String MYLAR_NOTIFICATION_LABEL = "Mylar Notification";
-
- private FormToolkit toolkit;
-
- private Form form;
-
- private Rectangle bounds;
-
- private List<ITaskListNotification> notifications;
-
- private Composite sectionClient;
-
- public TaskListNotificationPopup(Shell parent) {
- super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, false, false, false, false, null, null);
- }
-
- 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(2, false));
- int count = 0;
- for (final ITaskListNotification notification : notifications) {
- if (count < NUM_NOTIFICATIONS_TO_DISPLAY) {
- Label notificationLabelIcon = toolkit.createLabel(sectionClient, "");
- notificationLabelIcon.setImage(notification.getOverlayIcon());
- ImageHyperlink link = toolkit.createImageHyperlink(sectionClient, SWT.BEGINNING | SWT.WRAP);
- link.setText(notification.getLabel());
- link.setImage(notification.getNotificationIcon());
- link.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- notification.openTask();
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- if (window != null) {
- Shell windowShell = window.getShell();
- if (windowShell != null) {
- windowShell.setMaximized(true);
- windowShell.open();
- }
- }
- }
- });
-
- String descriptionText = null;
- if (notification.getDescription() != null && notification.getDescription().length() > 40) {
- String truncated = notification.getDescription().substring(0, 35);
- descriptionText = truncated + "...";
- } else if (notification.getDescription() != null) {
- descriptionText = notification.getDescription();
- }
- if (descriptionText != null) {
- Label descriptionLabel = toolkit.createLabel(sectionClient, descriptionText);
- GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(descriptionLabel);
- }
- } else {
- int numNotificationsRemain = notifications.size() - count;
- Hyperlink remainingHyperlink = toolkit.createHyperlink(sectionClient, numNotificationsRemain+NOTIFICATIONS_HIDDEN, SWT.NONE);
- GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(remainingHyperlink);
- remainingHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- TaskListView.getFromActivePerspective().setFocus();
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- if (window != null) {
- Shell windowShell = window.getShell();
- if (windowShell != null) {
- windowShell.setMaximized(true);
- windowShell.open();
- }
- }
- }});
- break;
- }
- count++;
- }
-
- section.setClient(sectionClient);
-
- Composite buttonsComposite = toolkit.createComposite(section);
- section.setTextClient(buttonsComposite);
- buttonsComposite.setLayout(new RowLayout());
- buttonsComposite.setBackground(section.getTitleBarBackground());
- final ImageHyperlink closeHyperlink = toolkit.createImageHyperlink(buttonsComposite, SWT.NONE);
- // closeHyperlink.setBackgroundMode(SWT.INHERIT_FORCE);
- closeHyperlink.setBackground(section.getTitleBarBackground());
- closeHyperlink.setImage(TaskListImages.getImage(TaskListImages.NOTIFICATION_CLOSE));
- closeHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- close();
- }
- });
-
- 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/tasks/ui/TaskListNotificationQueryIncoming.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.java
deleted file mode 100644
index 23b45ca82..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationQueryIncoming.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.internal.tasks.ui;
-
-import java.util.Date;
-
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- */
-public class TaskListNotificationQueryIncoming implements ITaskListNotification {
-
- private final AbstractQueryHit hit;
-
- private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(),
- PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator());
-
- private Date date;
-
- public TaskListNotificationQueryIncoming(AbstractQueryHit hit) {
- this.hit = hit;
- }
-
- public String getDescription() {
- return hit.getDescription();
- }
-
- public String getLabel() {
- if (labelProvider.getText(hit).length() > 40) {
- String truncated = labelProvider.getText(hit).substring(0, 35);
- return truncated + "...";
- }
- return labelProvider.getText(hit);
- }
-
- public void openTask() {
-
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
- TaskUiUtil.refreshAndOpenTaskListElement(hit);
- }
- });
-
- }
-
- public Image getNotificationIcon() {
- return labelProvider.getImage(hit);
- }
-
- public boolean equals(Object o) {
- if (!(o instanceof TaskListNotificationQueryIncoming)) {
- return false;
- }
- TaskListNotificationQueryIncoming notification = (TaskListNotificationQueryIncoming) o;
- return notification.getDescription().equals(hit.getDescription());
- }
-
- public int hashCode() {
- return hit.getDescription().hashCode();
- }
-
- public Image getOverlayIcon() {
- return TaskListImages.getImage(TaskListImages.OVERLAY_INCOMMING);
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public int compareTo(Object anotherNotification) throws ClassCastException {
- if (!(anotherNotification instanceof ITaskListNotification))
- throw new ClassCastException("A ITaskListNotification object expected.");
- Date anotherDate = ((ITaskListNotification) anotherNotification).getDate();
- if(date != null && anotherDate != null) {
- return date.compareTo(anotherDate);
- } else if(date == null) {
- return -1;
- } else {
- return 1;
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java
deleted file mode 100644
index bb5620655..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListNotificationReminder.java
+++ /dev/null
@@ -1,104 +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.tasks.ui;
-
-import java.util.Date;
-
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- */
-public class TaskListNotificationReminder implements ITaskListNotification {
-
- private final ITask task;
-
- private DecoratingLabelProvider labelProvider = new DecoratingLabelProvider(new TaskElementLabelProvider(),
- PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator());
-
- private Date date;
-
- public TaskListNotificationReminder(ITask task) {
- this.task = task;
- }
-
- public String getDescription() {
- return null;
- }
-
- public String getLabel() {
- if (labelProvider.getText(task).length() > 40) {
- String truncated = labelProvider.getText(task).substring(0, 35);
- return truncated + "...";
- }
- return labelProvider.getText(task);
- }
-
- public void openTask() {
-
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- }
- });
-
- }
-
- public Image getNotificationIcon() {
- return labelProvider.getImage(task);
- }
-
- public Image getOverlayIcon() {
- return TaskListImages.getImage(TaskListImages.CALENDAR);
- }
-
- public boolean equals(Object o) {
- if (!(o instanceof TaskListNotificationReminder)) {
- return false;
- }
- TaskListNotificationReminder notification = (TaskListNotificationReminder) o;
- return notification.getTask().equals(task);
- }
-
- private ITask getTask() {
- return task;
- }
-
- public int hashCode() {
- return task.hashCode();
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public int compareTo(Object anotherNotification) throws ClassCastException {
- if (!(anotherNotification instanceof ITaskListNotification))
- throw new ClassCastException("A ITaskListNotification object expected.");
- Date anotherDate = ((ITaskListNotification) anotherNotification).getDate();
- if(date != null && anotherDate != null) {
- return date.compareTo(anotherDate);
- } else if(date == null) {
- return -1;
- } else {
- return 1;
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListPreferenceConstants.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListPreferenceConstants.java
deleted file mode 100644
index 85f00683d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskListPreferenceConstants.java
+++ /dev/null
@@ -1,71 +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.tasks.ui;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListPreferenceConstants {
-
- public static final String PLANNER_WIZARD_ID = "org.eclipse.mylar.tasklist.ui.planner.wizard";
-
- public static final String PLANNER_EDITOR_ID = "org.eclipse.mylar.tasklist.ui.planner.editor";
-
- public static final String REPORT_OPEN_EDITOR = "org.eclipse.mylar.tasklist.report.open.editor";
-
- public static final String REPORT_OPEN_INTERNAL = "org.eclipse.mylar.tasklist.report.open.internal";
-
- public static final String REPORT_DISABLE_INTERNAL = "org.eclipse.mylar.tasklist.report.disable.internal";
-
- public static final String REPORT_OPEN_EXTERNAL = "org.eclipse.mylar.tasklist.report.open.external";
-
- public static final String MULTIPLE_ACTIVE_TASKS = "org.eclipse.mylar.tasklist.active.multipe";
-
- public static final String COPY_TASK_DATA = "org.eclipse.mylar.tasklist.preferences.copyTaskData";
-
- public static final String TASK_EDITOR_ID = "org.eclipse.mylar.tasklist.ui.taskEditor";
-
- public static final String CATEGORY_EDITOR_ID = "org.eclipse.mylar.tasklist.ui.catEditor";
-
- public static final String SELECTED_PRIORITY = "org.eclipse.mylar.tasklist.filter.priority";
-
- public static final String FILTER_COMPLETE_MODE = "org.eclipse.mylar.tasklist.filter.complete";
-
- public static final String FILTER_ARCHIVE_MODE = "org.eclipse.mylar.tasklist.filter.archive";
-
- public static final String FILTER_INCOMPLETE_MODE = "org.eclipse.mylar.tasklist.filter.incomplete";
-
- public static final String SAVE_TASKLIST_MODE = "org.eclipse.mylar.tasklist.save.mode";
-
- public static final String PREVIOUS_SAVE_DATE = "org.eclipse.mylar.tasklist.save.last";
-
- public static final String CONTEXTS_MIGRATED = "org.eclipse.mylar.tasklist.repositories.migrated.single";
-
- public static final String REPOSITORY_SYNCH_SCHEDULE_ENABLED = "org.eclipse.mylar.tasklist.repositories.synch.schedule";
-
- public static final String REPOSITORY_SYNCH_SCHEDULE_MILISECONDS = "org.eclipse.mylar.tasklist.repositories.synch.schedule.miliseconds";
-
- public static final String NOTIFICATIONS_ENABLED = "org.eclipse.mylar.tasklist.notifications.enabled";
-
- public static final String BACKUP_SCHEDULE = "org.eclipse.mylar.tasklist.backup.schedule";
-
- public static final String BACKUP_LAST = "org.eclipse.mylar.tasklist.backup.lastarchived";
-
- public static final String BACKUP_MAXFILES = "org.eclipse.mylar.tasklist.backup.maxfiles";
-
- public static final String PLANNING_STARTHOUR = "org.eclipse.mylar.tasklist.planning.starthour";
-
- public static final String PLANNING_ENDHOUR = "org.eclipse.mylar.tasklist.planning.endhour";
-
- public static final String ACTIVATE_ON_OPEN = "org.eclipse.mylar.tasks.ui.activate.onopen";
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskPriorityFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskPriorityFilter.java
deleted file mode 100644
index c42535e2e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskPriorityFilter.java
+++ /dev/null
@@ -1,61 +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.tasks.ui;
-
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-
-/**
- * @author Mik Kersten
- * @author Ken Sueda
- */
-public class TaskPriorityFilter extends AbstractTaskListFilter {
-
- private static final String PRIORITY_PREFIX = "P";
-
- private String priorityLevel = Task.PriorityLevel.P5.toString();
-
- public TaskPriorityFilter() {
- displayPrioritiesAbove(TaskListView.getCurrentPriorityLevel());
- }
-
- public void displayPrioritiesAbove(String level) {
- priorityLevel = level;
- }
-
- public boolean select(Object element) {
- if (element instanceof ITaskListElement) {
- if (element instanceof AbstractQueryHit && ((AbstractQueryHit) element).getCorrespondingTask() != null) {
- element = ((AbstractQueryHit) element).getCorrespondingTask();
- }
-
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- if (shouldAlwaysShow(task)) {
- return true;
- }
- }
- String priority = ((ITaskListElement) element).getPriority();
- if (priority == null || !(priority.startsWith(PRIORITY_PREFIX))) {
- return true;
- }
- if (priorityLevel.compareTo(((ITaskListElement) element).getPriority()) >= 0) {
- return true;
- }
- return false;
- }
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskReminderMenuContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskReminderMenuContributor.java
deleted file mode 100644
index 0389552e8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskReminderMenuContributor.java
+++ /dev/null
@@ -1,243 +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.tasks.ui;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.internal.tasks.ui.planner.DateSelectionDialog;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePicker;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * TODO: this has bloated, reafactor
- *
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class TaskReminderMenuContributor implements IDynamicSubMenuContributor {
-
- private static final String LABEL_REMINDER = "Schedule";
-
- private static final String LABEL_TODAY = "Today";
-
- private static final String LABEL_NEXT_WEEK = "Next Week";
-
- private static final String LABEL_FUTURE = "Two Weeks";
-
- private static final String LABEL_CALENDAR = "Choose Date...";
-
- private static final String LABEL_CLEAR = "Clear";
-
- @SuppressWarnings("deprecation")
- public MenuManager getSubMenuManager(final List<ITaskListElement> selectedElements) {
-
- final MenuManager subMenuManager = new MenuManager(LABEL_REMINDER);
-
- subMenuManager.setVisible(selectedElements.size() > 0 && !(selectedElements.get(0) instanceof AbstractTaskContainer || selectedElements.get(0) instanceof AbstractRepositoryQuery));
-
- ITask selectedTask = null;
- if (selectedElements.size() == 1) {
- ITaskListElement selectedElement = selectedElements.get(0);
- if (selectedElement instanceof ITask) {
- selectedTask = (ITask) selectedElement;
- } else if (selectedElement instanceof AbstractQueryHit) {
- if (((AbstractQueryHit) selectedElement).getCorrespondingTask() != null) {
- selectedTask = ((AbstractQueryHit) selectedElement).getCorrespondingTask();
- }
- }
- }
- final ITask singleTask = selectedTask;
- final List<ITask> tasks = new ArrayList<ITask>();
- for (ITaskListElement selectedElement : selectedElements) {
- if (selectedElement instanceof ITask) {
- tasks.add((ITask) selectedElement);
- } else if (selectedElement instanceof AbstractQueryHit) {
- if (((AbstractQueryHit) selectedElement).getCorrespondingTask() != null) {
- tasks.add(((AbstractQueryHit) selectedElement).getCorrespondingTask());
- }
- }
- }
-
- Action action = new Action() {
- @Override
- public void run() {
- Calendar reminderCalendar = GregorianCalendar.getInstance();
- TasksUiPlugin.getTaskListManager().setScheduledToday(reminderCalendar);
- for (ITask task : tasks) {
- TasksUiPlugin.getTaskListManager().setReminder(task, reminderCalendar.getTime());
- }
- }
- };
- action.setText(LABEL_TODAY);
- action.setEnabled(canSchedule(singleTask, tasks));
- subMenuManager.add(action);
- if (singleTask != null) {
- if (TasksUiPlugin.getTaskListManager().isReminderToday(singleTask)) {
- action.setChecked(true);
- }
- }
- subMenuManager.add(new Separator());
-
- final int today = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
- boolean reachedEndOfWeek = false;
- for (int i = today + 1; i <= 8 && !reachedEndOfWeek; i++) {
- final int day = i;
- action = new Action() {
- @Override
- public void run() {
- Calendar reminderCalendar = GregorianCalendar.getInstance();
- int dueIn = day - today;
- TasksUiPlugin.getTaskListManager().setSecheduledIn(reminderCalendar, dueIn);
- for (ITask task : tasks) {
- TasksUiPlugin.getTaskListManager().setReminder(task, reminderCalendar.getTime());
- }
- }
- };
- getDayLabel(i, action);
- if (singleTask != null) {
- if (singleTask != null && singleTask.getReminderDate() != null) {
- int tasksCheduledOn = singleTask.getReminderDate().getDay();
- if (TasksUiPlugin.getTaskListManager().isReminderThisWeek(singleTask)) {
- if (tasksCheduledOn + 1 == day) {
- action.setChecked(true);
- } else if (tasksCheduledOn == 0 && day == 8) {
- action.setChecked(true);
- }
- }
- }
- }
- action.setEnabled(canSchedule(singleTask, tasks));
- subMenuManager.add(action);
- }
-
- subMenuManager.add(new Separator());
-
- action = new Action() {
- @Override
- public void run() {
- for (ITask task : tasks) {
- TasksUiPlugin.getTaskListManager().setReminder(task,
- TasksUiPlugin.getTaskListManager().getActivityNextWeek().getStart().getTime());
- }
- }
- };
- action.setText(LABEL_NEXT_WEEK);
- action.setEnabled(canSchedule(singleTask, tasks));
- if (singleTask != null) {
- if (TasksUiPlugin.getTaskListManager().isReminderAfterThisWeek(singleTask)
- && !TasksUiPlugin.getTaskListManager().isReminderLater(singleTask)) {
- action.setChecked(true);
- }
- }
- subMenuManager.add(action);
-
- action = new Action() {
- @Override
- public void run() {
- for (ITask task : tasks) {
- TasksUiPlugin.getTaskListManager().setReminder(task,
- TasksUiPlugin.getTaskListManager().getActivityFuture().getStart().getTime());
- }
- }
- };
- action.setText(LABEL_FUTURE);
- action.setEnabled(canSchedule(singleTask, tasks));
- if (singleTask != null) {
- if (TasksUiPlugin.getTaskListManager().isReminderLater(singleTask)) {
- action.setChecked(true);
- }
- }
- subMenuManager.add(action);
-
- subMenuManager.add(new Separator());
-
- action = new Action() {
- @Override
- public void run() {
- Calendar theCalendar = GregorianCalendar.getInstance();
- if (singleTask != null && singleTask.getReminderDate() != null) {
- theCalendar.setTime(singleTask.getReminderDate());
- }
- DateSelectionDialog reminderDialog = new DateSelectionDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- theCalendar, DatePicker.TITLE_DIALOG);
- int result = reminderDialog.open();
- if (result == Window.OK) {
- for (ITask task : tasks) {
- TasksUiPlugin.getTaskListManager().setReminder(task, reminderDialog.getDate());
- }
- }
- }
- };
- action.setText(LABEL_CALENDAR);
- action.setEnabled(canSchedule(singleTask, tasks));
- subMenuManager.add(action);
-
- action = new Action() {
- @Override
- public void run() {
- for (ITask task : tasks) {
- TasksUiPlugin.getTaskListManager().setReminder(task, null);
- }
- }
- };
- action.setText(LABEL_CLEAR);
- action.setEnabled(tasks.size() > 0);
- subMenuManager.add(action);
- return subMenuManager;
- }
-
- private void getDayLabel(int i, Action action) {
- switch (i) {
- case Calendar.MONDAY:
- action.setText("Monday");
- break;
- case Calendar.TUESDAY:
- action.setText("Tuesday");
- break;
- case Calendar.WEDNESDAY:
- action.setText("Wednesday");
- break;
- case Calendar.THURSDAY:
- action.setText("Thursday");
- break;
- case Calendar.FRIDAY:
- action.setText("Friday");
- break;
- case Calendar.SATURDAY:
- action.setText("Saturday");
- break;
- case 8:
- action.setText("Sunday");
- break;
- default:
- break;
- }
- }
-
- private boolean canSchedule(ITask singleTask, List<ITask> tasks) {
- return (singleTask != null && !singleTask.isCompleted())
- || tasks.size() > 0;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java
deleted file mode 100644
index e88f4d0bb..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskSearchPage.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.DialogPage;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.search.ui.ISearchPage;
-import org.eclipse.search.ui.ISearchPageContainer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Group;
-
-/**
- * @author Rob Elves
- */
-public class TaskSearchPage extends DialogPage implements ISearchPage {
-
- private static final String TITLE_REPOSITORY_SEARCH = "Repository Search";
-
- private static final String PAGE_NAME = "TaskSearchPage";
-
- private static final String STORE_REPO_ID = PAGE_NAME + ".REPO";
-
- private Combo repositoryCombo;
-
- private TaskRepository repository;
-
- private Composite fParentComposite;
-
- private IDialogSettings fDialogSettings;
-
- private int currentPageIndex = -1;
-
- private boolean firstView = true;
-
- private WizardPage[] queryPages;
-
- private ISearchPageContainer pageContainer;
-
- public boolean performAction() {
- saveDialogSettings();
- return ((ISearchPage) queryPages[currentPageIndex]).performAction();
- }
-
- public void setContainer(ISearchPageContainer container) {
- this.pageContainer = container;
- }
-
- public void createControl(Composite parent) {
- fParentComposite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(1, false);
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- fParentComposite.setLayout(layout);
- GridData gd = new GridData(GridData.FILL_BOTH);
- fParentComposite.setLayoutData(gd);
- createRepositoryGroup(fParentComposite);
- this.setControl(fParentComposite);
- }
-
- 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 = 1;
- group.setLayoutData(gd);
-
- repositoryCombo = new Combo(group, SWT.SINGLE | SWT.BORDER);
- repositoryCombo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- displayQueryPage(repositoryCombo.getSelectionIndex());
- }
- });
- gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- repositoryCombo.setLayoutData(gd);
- }
-
- private WizardPage createPage(TaskRepository repository) {
- if (repository != null) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- repository.getKind());
- if (connectorUi != null) {
- WizardPage searchPage = connectorUi.getSearchPage(repository, null);
- if (searchPage != null) {
- ((ISearchPage) searchPage).setContainer(pageContainer);
- searchPage.createControl(fParentComposite);
- return searchPage;
- } else {
- // Search page not available
- }
- }
- }
- return null;
- }
-
- private void displayQueryPage(int pageIndex) {
- if (currentPageIndex == pageIndex || pageIndex < 0)
- return;
-
- // TODO: if repository == null display invalid page?
- if (currentPageIndex != -1 && queryPages[currentPageIndex] != null) {
- queryPages[currentPageIndex].setVisible(false);
- GridData data = (GridData) queryPages[currentPageIndex].getControl().getLayoutData();
- data.exclude = true;
- queryPages[currentPageIndex].getControl().setLayoutData(data);
- }
-
- if (queryPages[pageIndex] == null) {
- String repositoryUrl = repositoryCombo.getItem(pageIndex);
- repository = TasksUiPlugin.getRepositoryManager().getRepository(repositoryUrl);
- if (repository != null) {
- queryPages[pageIndex] = createPage(repository);
- }
- }
-
- if (queryPages[pageIndex] != null) {
- GridData data = (GridData) queryPages[pageIndex].getControl().getLayoutData();
- data.exclude = false;
- queryPages[pageIndex].getControl().setLayoutData(data);
- queryPages[pageIndex].setVisible(true);
- }
-
- currentPageIndex = pageIndex;
- fParentComposite.getParent().layout(true, true);
- }
-
- @Override
- public void setVisible(boolean visible) {
- if (firstView) {
- List<TaskRepository> repositories = TasksUiPlugin.getRepositoryManager().getAllRepositories();
- List<TaskRepository> searchableRepositories = new ArrayList<TaskRepository>();
- for (TaskRepository repository : repositories) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- repository.getKind());
- if (connectorUi != null && connectorUi.hasSearchPage()) {
- searchableRepositories.add(repository);
- }
- }
-
- String[] repositoryUrls = new String[searchableRepositories.size()];
- int i = 0;
- int indexToSelect = 0;
- for (Iterator<TaskRepository> iter = searchableRepositories.iterator(); iter.hasNext();) {
- TaskRepository currRepsitory = iter.next();
- if (repository != null && repository.equals(currRepsitory)) {
- indexToSelect = i;
- }
- repositoryUrls[i] = currRepsitory.getUrl();
- i++;
- }
-
- IDialogSettings settings = getDialogSettings();
- if (repositoryCombo != null) {
- repositoryCombo.setItems(repositoryUrls);
- if (repositoryUrls.length == 0) {
- MessageDialog.openInformation(Display.getCurrent().getActiveShell(), TITLE_REPOSITORY_SEARCH,
- TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
- } else {
- String selectRepo = settings.get(STORE_REPO_ID);
- if (selectRepo != null && repositoryCombo.indexOf(selectRepo) > -1) {
- repositoryCombo.select(repositoryCombo.indexOf(selectRepo));
- repository = TasksUiPlugin.getRepositoryManager().getRepository(repositoryCombo.getText());
- if (repository == null) {
-
- // TODO: Display no repository error
-
- // repository =
- // TasksUiPlugin.getRepositoryManager().getDefaultRepository(
- // BugzillaCorePlugin.REPOSITORY_KIND);
- }
- } else {
- repositoryCombo.select(indexToSelect);
- }
-
- // TODO: Create one page per connector and repopulate based
- // on
- // repository
- queryPages = new AbstractRepositoryQueryPage[repositoryUrls.length];
- displayQueryPage(repositoryCombo.getSelectionIndex());
- // updateAttributesFromRepository(repositoryCombo.getText(),
- // null, false);
- }
- }
- firstView = false;
- }
-
- if(queryPages == null) {
- pageContainer.setPerformActionEnabled(false);
- }
-
- super.setVisible(visible);
- }
-
- public IDialogSettings getDialogSettings() {
- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings();
- fDialogSettings = settings.getSection(PAGE_NAME);
- if (fDialogSettings == null)
- fDialogSettings = settings.addNewSection(PAGE_NAME);
- return fDialogSettings;
- }
-
- private void saveDialogSettings() {
- IDialogSettings settings = getDialogSettings();
- settings.put(STORE_REPO_ID, repositoryCombo.getText());
- }
-
- @Override
- public void dispose() {
- if (queryPages != null) {
- for (WizardPage page : queryPages) {
- if (page != null) {
- page.dispose();
- }
- }
- }
- super.dispose();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskStatusMenuContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskStatusMenuContributor.java
deleted file mode 100644
index 95e9fc199..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskStatusMenuContributor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskCompleteAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskIncompleteAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskReadAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskUnreadAction;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-
-/**
- * @author Rob Elves
- */
-public class TaskStatusMenuContributor implements IDynamicSubMenuContributor {
-
- private static final String LABEL = "Mark";
-
- public MenuManager getSubMenuManager(final List<ITaskListElement> selectedElements) {
- final MenuManager subMenuManager = new MenuManager(LABEL);
- Action action = new MarkTaskCompleteAction(selectedElements);
- subMenuManager.add(action);
- action = new MarkTaskIncompleteAction(selectedElements);
- subMenuManager.add(action);
- subMenuManager.add(new Separator());
- action = new MarkTaskReadAction(selectedElements);
- subMenuManager.add(action);
- action = new MarkTaskUnreadAction(selectedElements);
- subMenuManager.add(action);
- return subMenuManager;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskUiUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskUiUtil.java
deleted file mode 100644
index 478a84478..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskUiUtil.java
+++ /dev/null
@@ -1,304 +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.tasks.ui;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.editors.CategoryEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorInput;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DateRangeActivityDelegate;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.browser.IWebBrowser;
-import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
-import org.eclipse.ui.internal.browser.WebBrowserPreference;
-import org.eclipse.ui.internal.browser.WorkbenchBrowserSupport;
-
-/**
- * @author Mik Kersten
- */
-public class TaskUiUtil {
-
- /**
- * TODO: move
- */
- public static Image getImageForPriority(Task.PriorityLevel priorityLevel) {
- if (priorityLevel == null) {
- return null;
- }
- switch (priorityLevel) {
- case P1:
- return TaskListImages.getImage(TaskListImages.PRIORITY_1);
- case P2:
- return TaskListImages.getImage(TaskListImages.PRIORITY_2);
- case P3:
- return TaskListImages.getImage(TaskListImages.PRIORITY_3);
- case P4:
- return TaskListImages.getImage(TaskListImages.PRIORITY_4);
- case P5:
- return TaskListImages.getImage(TaskListImages.PRIORITY_5);
- default:
- return null;
- }
- }
-
- public static void closeEditorInActivePage(ITask task) {
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- if (window == null) {
- return;
- }
- IWorkbenchPage page = window.getActivePage();
- if (page == null) {
- return;
- }
- IEditorInput input = new TaskEditorInput(task, false);
- IEditorPart editor = page.findEditor(input);
- if (editor != null) {
- page.closeEditor(editor, false);
- }
- }
-
-
- public static boolean openRepositoryTask(TaskRepository repository, String taskId) {
- boolean opened = false;
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(AbstractRepositoryTask.getHandle(repository.getUrl(), taskId));
- if(task != null) {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- opened = true;
- } else {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(repository.getKind());
- if(connectorUi != null) {
- connectorUi.openRemoteTask(repository.getUrl(), taskId);
- opened = true;
- }
- }
- return opened;
- }
-
- /**
- * Either pass in a repository and id, or fullUrl, or all of them
- */
- public static boolean openRepositoryTask(String repositoryUrl, String taskId, String fullUrl) {
- boolean opened = false;
- String handle = AbstractRepositoryTask.getHandle(repositoryUrl, taskId);
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(handle);
- if (task == null) {
- // search for it
- for (ITask currTask : TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks()) {
- if (currTask instanceof AbstractRepositoryTask) {
- String currUrl = ((AbstractRepositoryTask) currTask).getUrl();
- if (currUrl != null && currUrl.equals(fullUrl)) {
- task = currTask;
- break;
- }
- }
- }
- }
- if (task != null) {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- opened = true;
- } else {
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryForTaskUrl(
- fullUrl);
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- connector.getRepositoryType());
-
- if (connector != null) {
- connectorUi.openRemoteTask(repositoryUrl, taskId);
- opened = true;
- }
- }
- if (!opened) {
- TaskUiUtil.openUrl(fullUrl);
- opened = true;
- }
- return opened;
- }
-
- public static void refreshAndOpenTaskListElement(ITaskListElement element) {
- if (element instanceof ITask || element instanceof AbstractQueryHit
- || element instanceof DateRangeActivityDelegate) {
- final ITask task;
- if (element instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit) element).getOrCreateCorrespondingTask();
- } else if (element instanceof DateRangeActivityDelegate) {
- task = ((DateRangeActivityDelegate) element).getCorrespondingTask();
- } else {
- task = (ITask) element;
- }
-
- if (task instanceof AbstractRepositoryTask) {
- final AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- String repositoryKind = repositoryTask.getRepositoryKind();
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(repositoryKind);
-
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(repositoryKind,
- repositoryTask.getRepositoryUrl());
- if (repository == null) { // || !connector.validate(repository)) {
- return;
- }
-
- if (connector != null)
- if (repositoryTask.getTaskData() != null) {
- TaskUiUtil.openEditor(task, false, false);
- TasksUiPlugin.getSynchronizationManager().setTaskRead(repositoryTask, true);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, repositoryTask, false, null);
- } else {
- Job refreshJob = TasksUiPlugin.getSynchronizationManager().synchronize(connector, repositoryTask, true,
- new JobChangeAdapter() {
- public void done(IJobChangeEvent event) {
- TaskUiUtil.openEditor(task, false);
- }
- });
- if (refreshJob == null) {
- TaskUiUtil.openEditor(task, false);
- }
- }
- } else {
- TaskUiUtil.openEditor(task, false);
- }
- } else if (element instanceof TaskCategory) {
- TaskUiUtil.openEditor((AbstractTaskContainer) element);
- } else if (element instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery) element;
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- query.getRepositoryKind());
- connectorUi.openEditQueryDialog(query);
- }
- }
-
- public static void openEditor(final ITask task, boolean newTask) {
- openEditor(task, true, newTask);
- }
-
- /**
- * Set asyncExec false for testing purposes.
- */
- public static void openEditor(final ITask task, boolean asyncExec, boolean newTask) {
-
- final IEditorInput editorInput = new TaskEditorInput(task, newTask);
-
- if (asyncExec) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- openEditor(editorInput, TaskListPreferenceConstants.TASK_EDITOR_ID, page);
- }
- });
- } else {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- openEditor(editorInput, TaskListPreferenceConstants.TASK_EDITOR_ID, page);
- }
- }
-
- public static IEditorPart openEditor(IEditorInput input, String editorId, IWorkbenchPage page) {
- try {
- return page.openEditor(input, editorId);
- } catch (PartInitException e) {
- MylarStatusHandler.fail(e, "Open for editor failed: " + input + ", id: " + editorId, true);
- }
- return null;
- }
-
- public static void openEditor(AbstractTaskContainer category) {
- final IEditorInput input = new CategoryEditorInput(category);
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- openEditor(input, TaskListPreferenceConstants.CATEGORY_EDITOR_ID, page);
- }
- });
- }
-
- public static void openUrl(String url) {
- try {
- if (WebBrowserPreference.getBrowserChoice() == WebBrowserPreference.EXTERNAL) {
- try {
- IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
- support.getExternalBrowser().openURL(new URL(url));
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "could not open task url", true);
- }
- } else {
- IWebBrowser browser = null;
- int flags = 0;
- if (WorkbenchBrowserSupport.getInstance().isInternalWebBrowserAvailable()) {
- flags = WorkbenchBrowserSupport.AS_EDITOR | WorkbenchBrowserSupport.LOCATION_BAR
- | WorkbenchBrowserSupport.NAVIGATION_BAR;
-
- } else {
- flags = WorkbenchBrowserSupport.AS_EXTERNAL | WorkbenchBrowserSupport.LOCATION_BAR
- | WorkbenchBrowserSupport.NAVIGATION_BAR;
- }
- String title = "Browser";
- browser = WorkbenchBrowserSupport.getInstance().createBrowser(flags,
- TasksUiPlugin.PLUGIN_ID + title, null, null);
- browser.openURL(new URL(url));
- }
- } catch (PartInitException e) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "Browser init error",
- "Browser could not be initiated");
- } catch (MalformedURLException e) {
- MessageDialog.openError(Display.getDefault().getActiveShell(), "URL not found", "URL Could not be opened");
- }
- }
-
- public static List<MylarTaskEditor> getActiveRepositoryTaskEditors() {
- List<MylarTaskEditor> repositoryTaskEditors = new ArrayList<MylarTaskEditor>();
- IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
- for (IWorkbenchWindow window : windows) {
- IEditorReference[] editorReferences = window.getActivePage().getEditorReferences();
- for (int i = 0; i < editorReferences.length; i++) {
- IEditorPart editor = editorReferences[i].getEditor(false);
- if (editor instanceof MylarTaskEditor) {
- MylarTaskEditor taskEditor = (MylarTaskEditor) editor;
- if (taskEditor.getEditorInput() instanceof TaskEditorInput) {
- TaskEditorInput input = (TaskEditorInput) taskEditor.getEditorInput();
- if (input.getTask() instanceof AbstractRepositoryTask) {
- repositoryTaskEditors.add((MylarTaskEditor) editor);
- }
- }
- }
- }
- }
- return repositoryTaskEditors;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksReminderDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksReminderDialog.java
deleted file mode 100644
index f15ab8f6c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksReminderDialog.java
+++ /dev/null
@@ -1,267 +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.tasks.ui;
-
-import java.text.DateFormat;
-import java.util.Date;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-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.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-
-/**
- * @author Ken Sueda
- */
-public class TasksReminderDialog extends Dialog {
- private List<ITask> tasks = null;
-
- private Table table = null;
-
- private TableViewer tableViewer = null;
-
- private String[] columnNames = new String[] { "Description", "Priority", "Reminder Day" };
-
- private static final int DISMISS_ALL_ID = 200;
-
- private static final int DISMISS_ID = 201;
-
- private static final int SNOOZE_ID = 202;
-
- private static final String DISMISS_ALL_LABEL = "Dismiss All";
-
- private static final String DISMISS_LABEL = "Dismiss Selected";
-
- private static final String SNOOZE_ALL_LABEL = "Remind tommorrow";
-
- private static long DAY = 24 * 3600 * 1000;
-
- public TasksReminderDialog(Shell parentShell, List<ITask> remTasks) {
- super(parentShell);
- tasks = remTasks;
- setShellStyle(SWT.CLOSE | SWT.MIN | SWT.MODELESS | SWT.BORDER | SWT.TITLE);
- }
-
- @Override
- protected void configureShell(Shell shell) {
- super.configureShell(shell);
- shell.setText("Reminders");
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite composite = (Composite) super.createDialogArea(parent);
- setBlockOnOpen(false);
- GridLayout gl = new GridLayout(1, false);
- composite.setLayout(gl);
- GridData data = new GridData(GridData.FILL_BOTH);
- composite.setLayoutData(data);
-
- Composite container = new Composite(composite, SWT.NONE);
- gl = new GridLayout(1, false);
- container.setLayout(gl);
- createTable(container);
- createTableViewer();
-
- return composite;
- }
-
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, DISMISS_ALL_ID, DISMISS_ALL_LABEL, false);
- createButton(parent, DISMISS_ID, DISMISS_LABEL, false);
- createButton(parent, SNOOZE_ID, SNOOZE_ALL_LABEL, true);
- }
-
- private void createTable(Composite parent) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
- table = new Table(parent, style);
- GridLayout tlayout = new GridLayout();
- table.setLayout(tlayout);
- GridData wd = new GridData(GridData.FILL_BOTH);
- wd.heightHint = 300;
- table.setLayoutData(wd);
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- TableColumn column = new TableColumn(table, SWT.LEFT, 0);
- column.setText(columnNames[0]);
- column.setWidth(180);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- tableViewer.setSorter(new ReminderTaskSorter(ReminderTaskSorter.DESCRIPTION));
-
- }
- });
-
- column = new TableColumn(table, SWT.LEFT, 1);
- column.setText(columnNames[1]);
- column.setWidth(50);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- tableViewer.setSorter(new ReminderTaskSorter(ReminderTaskSorter.PRIORITY));
- }
- });
-
- column = new TableColumn(table, SWT.LEFT, 2);
- column.setText(columnNames[2]);
- column.setWidth(100);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- tableViewer.setSorter(new ReminderTaskSorter(ReminderTaskSorter.DATE));
- }
- });
- }
-
- private void createTableViewer() {
- tableViewer = new TableViewer(table);
- tableViewer.setUseHashlookup(true);
- tableViewer.setContentProvider(new ReminderTasksContentProvider());
- tableViewer.setLabelProvider(new ReminderTasksLabelProvider());
- tableViewer.setInput(tasks);
- }
-
- protected void buttonPressed(int buttonId) {
- if (buttonId == DISMISS_ALL_ID) {
- for (ITask t : tasks) {
- t.setReminded(true);
- }
- okPressed();
- } else if (buttonId == DISMISS_ID) {
- Object sel = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
- if (sel != null && sel instanceof ITask) {
- ITask t = (ITask) sel;
- t.setReminded(true);
- tasks.remove(t);
- if (tasks.isEmpty()) {
- okPressed();
- } else {
- tableViewer.refresh();
- }
- }
- } else if (buttonId == SNOOZE_ID) {
- Object sel = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
- if (sel != null && sel instanceof ITask) {
- ITask t = (ITask) sel;
- t.setReminded(false);
- t.setReminderDate(new Date(new Date().getTime() + DAY));
- tasks.remove(t);
- if (tasks.isEmpty()) {
- okPressed();
- } else {
- tableViewer.refresh();
- }
- }
- }
- super.buttonPressed(buttonId);
- }
-
- private class ReminderTasksContentProvider implements IStructuredContentProvider {
-
- public Object[] getElements(Object inputElement) {
- return tasks.toArray();
- }
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
- }
-
- private static class ReminderTasksLabelProvider extends LabelProvider implements ITableLabelProvider {
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
-
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- switch (columnIndex) {
- case 0:
- return task.getDescription();
- case 1:
- return task.getPriority();
- case 2:
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getReminderDate());
- }
- }
- return null;
- }
-
- }
-
- private static class ReminderTaskSorter extends ViewerSorter {
-
- public final static int DESCRIPTION = 1;
-
- public final static int PRIORITY = 2;
-
- public final static int DATE = 3;
-
- private int criteria;
-
- public ReminderTaskSorter(int criteria) {
- super();
- this.criteria = criteria;
- }
-
- @Override
- public int compare(Viewer viewer, Object obj1, Object obj2) {
- ITask t1 = (ITask) obj1;
- ITask t2 = (ITask) obj2;
-
- switch (criteria) {
- case DESCRIPTION:
- return compareDescription(t1, t2);
- case PRIORITY:
- return comparePriority(t1, t2);
- case DATE:
- return compareDate(t1, t2);
- default:
- return 0;
- }
- }
-
- private int compareDescription(ITask task1, ITask task2) {
- return task1.getDescription().compareTo(task2.getDescription());
- }
-
- private int comparePriority(ITask task1, ITask task2) {
- return task1.getPriority().compareTo(task2.getPriority());
- }
-
- private int compareDate(ITask task1, ITask task2) {
- return task2.getReminderDate().compareTo(task1.getReminderDate());
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java
deleted file mode 100644
index 25c11876f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/WorkspaceAwareContextStore.java
+++ /dev/null
@@ -1,44 +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.tasks.ui;
-
-import java.io.File;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.context.core.AbstractContextStore;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.ui.TaskListDataMigration;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class WorkspaceAwareContextStore extends AbstractContextStore {
-
- public WorkspaceAwareContextStore() {
- migrateFrom06Format();
- }
-
- public File getRootDirectory() {
- return new File(TasksUiPlugin.getDefault().getDataDirectory());
- }
-
- private void migrateFrom06Format() {
- File dataDir = new File(TasksUiPlugin.getDefault().getDataDirectory());
- try {
- new TaskListDataMigration(dataDir).run(new NullProgressMonitor());
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Error occurred while migrating mylar data", false);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryAction.java
deleted file mode 100644
index 3fc03626f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryAction.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-
-/**
- * Abstract action used to take care of autodetecting repository based on current selection
- *
- * @author Eugene Kuleshov
- */
-public abstract class AbstractRepositoryAction extends Action implements IViewActionDelegate {
-
- private IStructuredSelection selection;
-
- public void init(IViewPart view) {
- // ignore
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- if(selection instanceof IStructuredSelection) {
- this.selection = (IStructuredSelection) selection;
- } else {
- this.selection = null;
- }
- }
-
- public IStructuredSelection getSelection() {
- return this.selection;
- }
-
-}
-
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryTasksAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryTasksAction.java
index 5f18a5738..5dbaa0546 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryTasksAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractRepositoryTasksAction.java
@@ -37,14 +37,6 @@ public abstract class AbstractRepositoryTasksAction extends Action {
if (repositoryTask != null) {
performActionOnTask(repositoryTask);
}
- } else if (element instanceof AbstractTaskContainer) {
- AbstractTaskContainer container = (AbstractTaskContainer) element;
- for (ITask iTask : container.getChildren()) {
- if (iTask instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) iTask;
- performActionOnTask(repositoryTask);
- }
- }
} else if (element instanceof AbstractRepositoryQuery) {
AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) element;
for (AbstractQueryHit queryHit : repositoryQuery.getHits()) {
@@ -53,6 +45,14 @@ public abstract class AbstractRepositoryTasksAction extends Action {
performActionOnTask(repositoryTask);
}
}
+ } else if (element instanceof AbstractTaskContainer) {
+ AbstractTaskContainer container = (AbstractTaskContainer) element;
+ for (ITask iTask : container.getChildren()) {
+ if (iTask instanceof AbstractRepositoryTask) {
+ AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) iTask;
+ performActionOnTask(repositoryTask);
+ }
+ }
}
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskAction.java
deleted file mode 100644
index 7f7c14f4a..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivateTaskAction.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.actions.ActionDelegate;
-
-/**
- * @author wmitsuda
- */
-public class ActivateTaskAction extends ActionDelegate implements IWorkbenchWindowActionDelegate {
-
- private IWorkbenchWindow window;
-
- public void init(IWorkbenchWindow window) {
- this.window = window;
- }
-
- private static final String ACTIVATE_TASK_ACTION_DIALOG_SETTINGS = "activate.task.action.dialog.settings";
-
- @Override
- public void run(IAction action) {
- TaskSelectionDialog dlg = new TaskSelectionDialog(window.getShell());
- dlg.setTitle("Activate Task");
-
- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings();
- IDialogSettings dlgSettings = settings.getSection(ACTIVATE_TASK_ACTION_DIALOG_SETTINGS);
- if (dlgSettings == null) {
- dlgSettings = settings.addNewSection(ACTIVATE_TASK_ACTION_DIALOG_SETTINGS);
- }
- dlg.setDialogBoundsSettings(dlgSettings, Dialog.DIALOG_PERSISTLOCATION | Dialog.DIALOG_PERSISTSIZE);
-
- if (dlg.open() != Window.OK) {
- return;
- }
-
- Object result = dlg.getFirstResult();
- TaskListManager manager = TasksUiPlugin.getTaskListManager();
- if (result instanceof ITask) {
- ITask task = (ITask) result;
- manager.activateTask(task);
- manager.getTaskActivationHistory().addTask(task);
- } else if (result instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) result;
- ITask task = hit.getOrCreateCorrespondingTask();
- if (task != null) {
- manager.activateTask(task);
- manager.getTaskActivationHistory().addTask(task);
- }
- }
- if (TaskListView.getFromActivePerspective() != null) {
- TaskListView.getFromActivePerspective().refreshAndFocus(false);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java
deleted file mode 100644
index 53e317c9d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java
+++ /dev/null
@@ -1,52 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.planner.TaskActivityWizard;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- */
-public class ActivityReportAction extends Action {
-
- private static final String LABEL = "Activity Report";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.report.activity";
-
- public ActivityReportAction() {
- super(LABEL);
- setId(ID);
- setText(LABEL);
- setToolTipText(LABEL);
- setImageDescriptor(TaskListImages.TASKLIST);
- }
-
- public void run() {
- TaskActivityWizard wizard = new TaskActivityWizard();
-
- 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 {
- // ignore
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java
deleted file mode 100644
index b22374183..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java
+++ /dev/null
@@ -1,68 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryWizard;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- */
-public class AddRepositoryAction extends Action {
-
- public static final String TITLE = "Add Task Repository";
-
- private static final String ID = "org.eclipse.mylar.tasklist.repositories.add";
-
- public AddRepositoryAction() {
- setImageDescriptor(TaskListImages.REPOSITORY_NEW);
- setText(TITLE);
- setId(ID);
- }
-
- public void init(IViewPart view) {
- // ignore
- }
-
- public void run() {
- try {
- NewRepositoryWizard wizard = new NewRepositoryWizard();
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (wizard != null && shell != null && !shell.isDisposed()) {
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.getShell().setText(TITLE);
- // dialog.getShell().setText("Mylar Tasks");
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- dialog.close();
- return;
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java
deleted file mode 100644
index bf9ca72bf..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryTaskAction.java
+++ /dev/null
@@ -1,49 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AddExistingTaskWizard;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Eugene Kuleshov
- */
-public class AddRepositoryTaskAction extends AbstractRepositoryAction {
-
- private static final String WIZARD_LABEL = "Add an existing repository task/issue";
-
- public void run(IAction action) {
- try {
- AddExistingTaskWizard wizard = new AddExistingTaskWizard(getSelection());
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (shell != null && !shell.isDisposed()) {
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.setTitle(WIZARD_LABEL);
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- dialog.close();
- return;
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CollapseAllAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CollapseAllAction.java
deleted file mode 100644
index 20c228982..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CollapseAllAction.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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-
-/**
- * @author Mik Kersten
- */
-public class CollapseAllAction extends Action {
-
- private static final String LABEL = "Collapse All";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.collapse.all";
-
- private TaskListView taskListView;
-
- public CollapseAllAction(TaskListView taskListView) {
- super(LABEL);
- this.taskListView = taskListView;
- setId(ID);
- setText(LABEL);
- setToolTipText(LABEL);
- setImageDescriptor(TaskListImages.COLLAPSE_ALL);
- }
-
- public void run() {
- if (taskListView.getViewer() != null)
- taskListView.getViewer().collapseAll();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyDetailsAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyDetailsAction.java
deleted file mode 100644
index 2724de324..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyDetailsAction.java
+++ /dev/null
@@ -1,86 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-
-/**
- * @author Mik Kersten
- */
-public class CopyDetailsAction extends Action {
-
- private static final String LABEL = "Copy Details";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.copy";
-
- private TaskListView view;
-
- public CopyDetailsAction(TaskListView view) {
- this.view = view;
- setText(LABEL);
- setToolTipText(LABEL);
- setId(ID);
- setImageDescriptor(TaskListImages.COPY);
- setAccelerator(SWT.MOD1 + 'c');
- }
-
- @Override
- public void run() {
- ISelection selection = this.view.getViewer().getSelection();
- Object object = ((IStructuredSelection) selection).getFirstElement();
- String text = getTextForTask(object);
-
- // HACK: this should be done using proper copying
- StyledText styledText = new StyledText(view.getDummyComposite(), SWT.NULL);
- styledText.setText(text);
- styledText.selectAll();
- styledText.copy();
- styledText.dispose();
- }
-
- public static String getTextForTask(Object object) {
- String text = "";
- if (object instanceof ITask || object instanceof AbstractQueryHit) {
- ITask task = null;
- if (object instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit)object).getCorrespondingTask();
- } else if (object instanceof ITask) {
- task = (ITask)object;
- }
- if (task != null) {
- text = task.getDescription();
- if (task.hasValidUrl()) {
- text += "\n" + task.getUrl();
- }
- } else {
- text += ((AbstractQueryHit)object).getDescription();
- }
- } else if (object instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery)object;
- text += query.getDescription();
- text += "\n" + query.getUrl();
- } else if (object instanceof ITaskListElement) {
- ITaskListElement element = (ITaskListElement) object;
- text = element.getDescription();
- }
- return text;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyToClipboardAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyToClipboardAction.java
deleted file mode 100644
index 2c0ac59d3..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/CopyToClipboardAction.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * An <code>Action</code> which copies the specified contents to the clipboard
- * obtained from the specified <code>Control</code>
- *
- * @author Jeff Pound
- */
-public class CopyToClipboardAction extends Action {
- public static final String TITLE = "Copy to Clipboard";
-
- private String contents = null;
-
- private Control control = null;
-
- public CopyToClipboardAction() {
- super(TITLE);
- }
-
- public void run() {
- if (contents == null) {
- return;
- }
-
- // use system line endings
- contents = contents.replaceAll("\r\n|\n", System.getProperty("line.separator"));
-
- if (control != null && contents != null) {
- Clipboard clipboard = new Clipboard(control.getDisplay());
- clipboard.setContents(new Object[] { contents }, new Transfer[] { TextTransfer.getInstance() });
- clipboard.dispose();
- }
- }
-
- public void setContents(String contents) {
- this.contents = contents;
- }
-
- public void setControl(Control control) {
- this.control = control;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteAction.java
deleted file mode 100644
index 67525bb2a..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteAction.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.internal.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * @author Mik Kersten
- */
-public class DeleteAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.delete";
-
- public DeleteAction() {
- setText("Delete");
- setId(ID);
- setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
- }
-
- @Override
- public void run() {
- ISelection selection = TaskListView.getFromActivePerspective().getViewer().getSelection();
- for (Object selectedObject : ((IStructuredSelection) selection).toList()) {
- if (selectedObject instanceof ITask || selectedObject instanceof AbstractQueryHit) {
- ITask task = null;
- if (selectedObject instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit) selectedObject).getCorrespondingTask();
- } else {
- task = (ITask) selectedObject;
- }
- if (task == null) {
- MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- "Mylar Tasks", "No task data to delete.");
- return;
- }
-
- String message = genDeleteConfirmationMessage(task);
- boolean deleteConfirmed = MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
- .getShell(), "Confirm Delete", message);
- if (!deleteConfirmed) {
- return;
- }
-
- TasksUiPlugin.getTaskListManager().deactivateTask(task);
- TasksUiPlugin.getTaskListManager().getTaskList().deleteTask(task);
- ContextCorePlugin.getContextManager().deleteContext(task.getHandleIdentifier());
- TaskUiUtil.closeEditorInActivePage(task);
- } else if (selectedObject instanceof AbstractRepositoryQuery) {
- boolean deleteConfirmed = MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
- .getShell(), "Confirm delete", "Delete the selected query? Task data will not be deleted.");
- if (deleteConfirmed) {
- TasksUiPlugin.getTaskListManager().getTaskList().deleteQuery((AbstractRepositoryQuery) selectedObject);
- }
- } else if (selectedObject instanceof TaskCategory) {
- boolean deleteConfirmed = MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
- .getShell(), "Confirm Delete", "Delete the selected category? Contained tasks will be moved to the root.");
- if (!deleteConfirmed)
- return;
-
- TaskCategory cat = (TaskCategory) selectedObject;
- for (ITask task : cat.getChildren()) {
- ContextCorePlugin.getContextManager().deleteContext(task.getHandleIdentifier());
- TaskUiUtil.closeEditorInActivePage(task);
- }
- TasksUiPlugin.getTaskListManager().getTaskList().deleteCategory(cat);
- } else {
- MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Delete failed",
- "Nothing selected.");
- return;
- }
- }
- }
-
- public static String genDeleteConfirmationMessage(ITask task) {
- return "Delete the selected task and discard task context?\n\n" + task.getDescription();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java
deleted file mode 100644
index da0385a5b..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.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.internal.tasks.ui.actions;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-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.viewers.IStructuredSelection;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.WorkbenchImages;
-
-/**
- * @author Mik Kersten
- */
-public class DeleteTaskRepositoryAction extends Action {
-
- private static final String ID = "org.eclipse.mylar.tasklist.repositories.delete";
-
- private TaskRepositoriesView repositoriesView;
-
- public DeleteTaskRepositoryAction(TaskRepositoriesView repositoriesView) {
- this.repositoriesView = repositoriesView;
- setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
- setText("Delete Repository");
- setId(ID);
- }
-
- public void init(IViewPart view) {
- // ignore
- }
-
- public void run() {
- try {
-
- boolean deleteConfirmed = MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
- .getShell(), "Confirm Delete", "Delete the selected task repositories?");
- if (deleteConfirmed) {
- IStructuredSelection selection = (IStructuredSelection) repositoriesView.getViewer().getSelection();
- Set<AbstractRepositoryQuery> queries = TasksUiPlugin.getTaskListManager().getTaskList()
- .getQueries();
- List<TaskRepository> repositoriesInUse = new ArrayList<TaskRepository>();
- List<TaskRepository> repositoriesToDelete = new ArrayList<TaskRepository>();
- for (Object selectedObject : selection.toList()) {
- if (selectedObject instanceof TaskRepository) {
- TaskRepository taskRepository = (TaskRepository) selectedObject;
- if (queries != null && queries.size() > 0) {
- for (AbstractRepositoryQuery query : queries) {
- if (query.getRepositoryUrl().equals(taskRepository.getUrl())) {
- repositoriesInUse.add(taskRepository);
- break;
- }
- }
- }
- if (!repositoriesInUse.contains(taskRepository)) {
- repositoriesToDelete.add(taskRepository);
- }
- }
- }
-
- for (TaskRepository taskRepository : repositoriesToDelete) {
- TasksUiPlugin.getRepositoryManager().removeRepository(taskRepository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- if (repositoriesInUse.size() > 0) {
- MessageDialog
- .openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- "Repository In Use",
- "One or more of the selected repositories is being used by a query and can not be deleted.");
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/EditRepositoryPropertiesAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/EditRepositoryPropertiesAction.java
deleted file mode 100644
index e26d0b458..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/EditRepositoryPropertiesAction.java
+++ /dev/null
@@ -1,76 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.internal.tasks.ui.wizards.EditRepositoryWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- */
-public class EditRepositoryPropertiesAction extends Action {
-
- private static final String ID = "org.eclipse.mylar.tasklist.repositories.properties";
-
- private TaskRepositoriesView repositoriesView;
-
- public EditRepositoryPropertiesAction(TaskRepositoriesView repositoriesView) {
- this.repositoriesView = repositoriesView;
- setText("Properties");
- setId(ID);
- }
-
- public void init(IViewPart view) {
- // ignore
- }
-
- public void run() {
- try {
- IStructuredSelection selection = (IStructuredSelection) repositoriesView.getViewer().getSelection();
- if (selection.getFirstElement() instanceof TaskRepository) {
- EditRepositoryWizard wizard = new EditRepositoryWizard((TaskRepository) selection.getFirstElement());
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (wizard != null && shell != null && !shell.isDisposed()) {
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- // dialog.getShell().setText("Mylar Tasks");
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- dialog.close();
- return;
- }
- }
- }
- // TODO: move
- if (TaskRepositoriesView.getFromActivePerspective() != null) {
- TaskRepositoriesView.getFromActivePerspective().getViewer().refresh();
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ExpandAllAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ExpandAllAction.java
deleted file mode 100644
index 48e125a18..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.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/tasks/ui/actions/GoIntoAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/GoIntoAction.java
deleted file mode 100644
index ec25208c3..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/GoIntoAction.java
+++ /dev/null
@@ -1,60 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-
-/**
- * @author Mik Kersten
- */
-public class GoIntoAction extends Action implements IViewActionDelegate {
-
- private static final String LABEL = "Go Into";
- public static final String ID = "org.eclipse.mylar.tasklist.actions.view.go.into";
-
- //
- // private DrillDownAdapter drillDownAdapter;
- //
- public GoIntoAction() {
- setId(ID);
- setText(LABEL);
- setToolTipText(LABEL);
- setImageDescriptor(TaskListImages.GO_INTO);
- }
-
- public void init(IViewPart view) {
- // TODO Auto-generated method stub
-
- }
-
- public void run() {
- if (TaskListView.getFromActivePerspective() != null) {
- TaskListView.getFromActivePerspective().getFilteredTree().setFilterText("");
- TaskListView.getFromActivePerspective().goIntoCategory();
- }
- }
-
- public void run(IAction action) {
- run();
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
-
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskCompleteAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskCompleteAction.java
deleted file mode 100644
index 27f658470..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskCompleteAction.java
+++ /dev/null
@@ -1,63 +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.tasks.ui.actions;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.internal.tasks.core.WebTask;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class MarkTaskCompleteAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.mark.completed";
-
- private static final String ACTION_NAME = "Complete";
-
- private List<ITaskListElement> selectedElements;
-
- public MarkTaskCompleteAction(List<ITaskListElement> selectedElements) {
- this.selectedElements = selectedElements;
- setText(ACTION_NAME);
- setToolTipText("Mark "+ACTION_NAME);
- setId(ID);
- setImageDescriptor(TaskListImages.TASK_COMPLETE);
- if(selectedElements.size() == 1 && (selectedElements.get(0) instanceof Task)) {
- Task task = (Task)selectedElements.get(0);
- setEnabled(task.isLocal());
- } else {
- setEnabled(false);
- }
- }
-
- @Override
- public void run() {
- for (Object selectedObject : selectedElements) {
- if (selectedObject instanceof ITask) {
- TasksUiPlugin.getTaskListManager().getTaskList().markComplete(((ITask) selectedObject), true);
- } else if (selectedObject instanceof AbstractQueryHit) {
- ITask task = ((AbstractQueryHit)selectedObject).getCorrespondingTask();
- if (task instanceof WebTask) {
- TasksUiPlugin.getTaskListManager().getTaskList().markComplete(task, true);
- }
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskIncompleteAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskIncompleteAction.java
deleted file mode 100644
index 894c45540..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskIncompleteAction.java
+++ /dev/null
@@ -1,62 +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.tasks.ui.actions;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.internal.tasks.core.WebTask;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten and Ken Sueda
- */
-public class MarkTaskIncompleteAction extends Action {
-
- private static final String ACTION_NAME = "Incomplete";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.mark.incomplete";
-
- private List<ITaskListElement> selectedElements;
- public MarkTaskIncompleteAction(List<ITaskListElement> selectedElements) {
- this.selectedElements = selectedElements;
- setText(ACTION_NAME);
- setToolTipText("Mark "+ACTION_NAME);
- setId(ID);
- setImageDescriptor(TaskListImages.TASK_INCOMPLETE);
- if(selectedElements.size() == 1 && (selectedElements.get(0) instanceof Task)) {
- Task task = (Task)selectedElements.get(0);
- setEnabled(task.isLocal());
- } else {
- setEnabled(false);
- }
- }
-
- @Override
- public void run() {
- for (Object selectedObject : selectedElements) {
- if (selectedObject instanceof ITask) {
- TasksUiPlugin.getTaskListManager().getTaskList().markComplete(((ITask) selectedObject), false);
- } else if (selectedObject instanceof AbstractQueryHit) {
- ITask task = ((AbstractQueryHit)selectedObject).getCorrespondingTask();
- if (task instanceof WebTask) {
- TasksUiPlugin.getTaskListManager().getTaskList().markComplete(task, false);
- }
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskUnreadAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskUnreadAction.java
deleted file mode 100644
index 7a03f9ac1..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskUnreadAction.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.tasks.ui.actions;
-
-import java.util.List;
-
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Rob Elves
- */
-public class MarkTaskUnreadAction extends AbstractRepositoryTasksAction {
-
- private static final String ACTION_NAME = "Unread";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.mark.unread";
-
- public MarkTaskUnreadAction(List<ITaskListElement> selectedElements) {
- this.selectedElements = selectedElements;
- setText(ACTION_NAME);
- setToolTipText(ACTION_NAME);
- setToolTipText("Mark " + ACTION_NAME);
- setId(ID);
- setImageDescriptor(TaskListImages.STATUS_NORMAL_INCOMING);
- if (selectedElements.size() == 1 && (selectedElements.get(0) instanceof Task)) {
- Task task = (Task) selectedElements.get(0);
- setEnabled(!task.isLocal());
- } else {
- setEnabled(true);
- }
- }
-
- protected void performActionOnTask(AbstractRepositoryTask repositoryTask) {
- TasksUiPlugin.getSynchronizationManager().setTaskRead(repositoryTask, false);
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewCategoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewCategoryAction.java
deleted file mode 100644
index 42e2d8804..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewCategoryAction.java
+++ /dev/null
@@ -1,51 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten and Ken Sueda
- */
-public class NewCategoryAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.create.category";
-
- private final TaskListView view;
-
- public NewCategoryAction(TaskListView view) {
- this.view = view;
- setText("New Category");
- setToolTipText("New Category");
- setId(ID);
- setImageDescriptor(TaskListImages.CATEGORY_NEW);
- }
-
- @Override
- public void run() {
- InputDialog dialog = new InputDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- "Enter name", "Enter a name for the Category: ", "", null);
- int dialogResult = dialog.open();
- if (dialogResult == Window.OK) {
- TaskCategory cat = new TaskCategory(dialog.getValue(), TasksUiPlugin.getTaskListManager().getTaskList());
- TasksUiPlugin.getTaskListManager().getTaskList().addCategory(cat);
- this.view.getViewer().refresh();
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewLocalTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewLocalTaskAction.java
deleted file mode 100644
index 800bb3387..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewLocalTaskAction.java
+++ /dev/null
@@ -1,104 +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.tasks.ui.actions;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskInputDialog;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * @author Mik Kersten
- */
-public class NewLocalTaskAction extends Action {
-
- public static final String DESCRIPTION_DEFAULT = "New Task";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.create.task";
-
- private final TaskListView view;
-
- public NewLocalTaskAction() {
- this(null);
- }
-
- public NewLocalTaskAction(TaskListView view) {
- this.view = view;
- setText(TaskInputDialog.LABEL_SHELL);
- setToolTipText(TaskInputDialog.LABEL_SHELL);
- setId(ID);
- setImageDescriptor(TaskListImages.TASK_NEW);
- }
-
- @Override
- public void run() {
- Task newTask = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), DESCRIPTION_DEFAULT, true);
-
- scheduleNewTask(newTask);
-
- Object selectedObject = null;
- if (view != null) {
- selectedObject = ((IStructuredSelection) view.getViewer().getSelection()).getFirstElement();
- }
- if (selectedObject instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask, (TaskCategory) selectedObject);
- } else if (selectedObject instanceof ITask) {
- ITask task = (ITask) selectedObject;
- if (task.getContainer() instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask, (TaskCategory) task.getContainer());
- } else if (view.getDrilledIntoCategory() instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
- (TaskCategory) view.getDrilledIntoCategory());
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
- TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory());
- }
- } else if (view != null && view.getDrilledIntoCategory() instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
- (TaskCategory) view.getDrilledIntoCategory());
- } else {
- if (view != null && view.getDrilledIntoCategory() != null) {
- MessageDialog
- .openInformation(Display.getCurrent().getActiveShell(), TasksUiPlugin.TITLE_DIALOG,
- "The new task has been added to the root of the list, since tasks can not be added to a query.");
- }
- TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask,
- TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory());
- }
-
- TaskUiUtil.openEditor(newTask, true);
-
- if (view != null) {
- view.getViewer().refresh();
- view.setInRenameAction(true);
- view.getViewer().editElement(newTask, 4);
- view.setInRenameAction(false);
- }
- }
-
- public static void scheduleNewTask(ITask newTask) {
- Calendar reminderCalendar = GregorianCalendar.getInstance();
- TasksUiPlugin.getTaskListManager().setScheduledToday(reminderCalendar);
- TasksUiPlugin.getTaskListManager().setReminder(newTask, reminderCalendar.getTime());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java
deleted file mode 100644
index 7f29aff74..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java
+++ /dev/null
@@ -1,49 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.wizards.NewQueryWizard;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Eugene Kuleshov
- */
-public class NewQueryAction extends AbstractRepositoryAction {
-
- private static final String WIZARD_LABEL = "Add or modify repository query";
-
- public void run(IAction action) {
- try {
- NewQueryWizard wizard = new NewQueryWizard(getSelection());
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (shell != null && !shell.isDisposed()) {
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.setTitle(WIZARD_LABEL);
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- dialog.close();
- return;
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewRepositoryTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewRepositoryTaskAction.java
deleted file mode 100644
index 489c2cf23..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewRepositoryTaskAction.java
+++ /dev/null
@@ -1,65 +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.tasks.ui.actions;
-
-import java.util.List;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Eugene Kuleshov
- */
-public class NewRepositoryTaskAction extends AbstractRepositoryAction {
-
- public static final String ID = "org.eclipse.mylar.tasklist.ui.repositories.actions.create";
-
- @Override
- public void run() {
-
- IWizard wizard;
- List<TaskRepository> repositories = TasksUiPlugin.getRepositoryManager().getAllRepositories();
- if (repositories.size() == 1) {
- // NOTE: this click-saving should be generalized
- TaskRepository taskRepository = repositories.get(0);
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(taskRepository.getKind());
-
- wizard = connectorUi.getNewTaskWizard(taskRepository, getSelection());
- } else {
- wizard = new NewRepositoryTaskWizard(getSelection());
- }
-
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- if (shell != null && !shell.isDisposed()) {
-
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.setBlockOnOpen(true);
- dialog.open();
-
- } else {
- // ignore
- }
- }
-
- public void run(IAction action) {
- run();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java
deleted file mode 100644
index fb9db4440..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskAction.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.actions;
-
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.ui.actions.ActionDelegate;
-
-/**
- * @author wmitsuda
- */
-public class OpenTaskAction extends ActionDelegate implements IWorkbenchWindowActionDelegate {
-
- private IWorkbenchWindow window;
-
- public void init(IWorkbenchWindow window) {
- this.window = window;
- }
-
- private static final String OPEN_TASK_ACTION_DIALOG_SETTINGS = "open.task.action.dialog.settings";
-
- private static final String SHOW_IN_BROWSER_SETTING = "show.in.browser.setting";
-
- @Override
- public void run(IAction action) {
- TaskSelectionDialog dlg = new TaskSelectionDialog(window.getShell());
- dlg.setTitle("Open Task");
- dlg.setShowOpenInBrowserOption(true);
-
- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings();
- IDialogSettings dlgSettings = settings.getSection(OPEN_TASK_ACTION_DIALOG_SETTINGS);
- if (dlgSettings == null) {
- dlgSettings = settings.addNewSection(OPEN_TASK_ACTION_DIALOG_SETTINGS);
- }
- dlg.setDialogBoundsSettings(dlgSettings, Dialog.DIALOG_PERSISTLOCATION | Dialog.DIALOG_PERSISTSIZE);
- dlg.setOpenInBrowser(dlgSettings.getBoolean(SHOW_IN_BROWSER_SETTING));
-
- int ret = dlg.open();
- dlgSettings.put(SHOW_IN_BROWSER_SETTING, dlg.getOpenInBrowser());
- if (ret != Window.OK) {
- return;
- }
-
- Object result = dlg.getFirstResult();
- if (result instanceof ITask) {
- ITask task = (ITask) result;
- if (dlg.getOpenInBrowser()) {
- if (task.hasValidUrl()) {
- TaskUiUtil.openUrl(task.getUrl());
- TasksUiPlugin.getTaskListManager().getTaskActivationHistory().addTask(task);
- }
- } else {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- TasksUiPlugin.getTaskListManager().getTaskActivationHistory().addTask(task);
- }
- } else if (result instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) result;
- ITask task = hit.getOrCreateCorrespondingTask();
- if (task != null) {
- if (dlg.getOpenInBrowser()) {
- if (task.hasValidUrl()) {
- TaskUiUtil.openUrl(task.getUrl());
- TasksUiPlugin.getTaskListManager().getTaskActivationHistory().addTask(task);
- }
- } else {
- TaskUiUtil.refreshAndOpenTaskListElement(task);
- TasksUiPlugin.getTaskListManager().getTaskActivationHistory().addTask(task);
- }
- }
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskListElementAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskListElementAction.java
deleted file mode 100644
index eeedfebe4..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenTaskListElementAction.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.internal.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-
-/**
- * @author Mik Kersten
- */
-public class OpenTaskListElementAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.open";
-
- private final StructuredViewer viewer;
-
- public OpenTaskListElementAction(StructuredViewer view) {
- this.viewer = view;
- setText("Open");
- setToolTipText("Open Task List Element");
- setId(ID);
- }
-
- @Override
- public void run() {
- ISelection selection = viewer.getSelection();
- Object element = ((IStructuredSelection) selection).getFirstElement();
- if (element instanceof ITaskListElement) {
- TaskUiUtil.refreshAndOpenTaskListElement((ITaskListElement)element);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenWithBrowserAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenWithBrowserAction.java
deleted file mode 100644
index 2a003b7ba..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenWithBrowserAction.java
+++ /dev/null
@@ -1,66 +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.tasks.ui.actions;
-
-import java.util.Iterator;
-
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.ui.actions.BaseSelectionListenerAction;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class OpenWithBrowserAction extends BaseSelectionListenerAction {
-
- private static final String LABEL = "Open with Browser";
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.open.browser";
-
- public OpenWithBrowserAction() {
- super(LABEL);
- setToolTipText(LABEL);
- setId(ID);
- }
-
- @Override
- public void run() {
- if (super.getStructuredSelection() != null) {
- for (Iterator iter = super.getStructuredSelection().iterator(); iter.hasNext();) {
- runWithSelection(iter.next());
- }
- }
- }
-
- private void runWithSelection(Object selectedObject) {
- ITask task = null;
- if (selectedObject instanceof ITask) {
- task = (ITask) selectedObject;
- } else if (selectedObject instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) selectedObject;
- task = hit.getOrCreateCorrespondingTask();
- }
- String urlString = null;
- if (task != null && task.hasValidUrl()) {
- urlString = task.getUrl();
- } else if (selectedObject instanceof AbstractTaskContainer) {
- AbstractTaskContainer query = (AbstractTaskContainer) selectedObject;
- urlString = query.getUrl();
- }
- if (urlString != null) {
- TaskUiUtil.openUrl(urlString);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.java
deleted file mode 100644
index c5c24a62f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/PreviousTaskDropDownAction.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.internal.tasks.ui.actions;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskActivationHistory;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-
-/**
- * @author Wesley Coelho
- */
-public class PreviousTaskDropDownAction extends TaskNavigateDropDownAction {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.navigate.previous";
-
- public PreviousTaskDropDownAction(TaskListView view, TaskActivationHistory history) {
- super(view, history);
- setText("Previous Task");
- setToolTipText("Previous Task");
- setId(ID);
- setEnabled(true);
- setImageDescriptor(TaskListImages.NAVIGATE_PREVIOUS);
- }
-
- protected void addActionsToMenu() {
- List<ITask> tasks = taskHistory.getPreviousTasks();
-
- if (tasks.size() > MAX_ITEMS_TO_DISPLAY) {
- tasks = tasks.subList(tasks.size() - MAX_ITEMS_TO_DISPLAY, tasks.size());
- }
-
- for (int i = tasks.size() - 1; i >= 0; i--) {
- ITask currTask = tasks.get(i);
- Action taskNavAction = new TaskNavigateAction(currTask);
- ActionContributionItem item = new ActionContributionItem(taskNavAction);
- if(currTask.isActive()) {
- taskNavAction.setChecked(true);
- }
- item.fill(dropDownMenu, -1);
- }
- }
-
- public void run() {
- if (taskHistory.hasPrevious()) {
- new TaskActivateAction().run(taskHistory.getPreviousTask());
- setButtonStatus();
- view.refreshAndFocus(false);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/RemoveFromCategoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/RemoveFromCategoryAction.java
deleted file mode 100644
index 909fbf7a4..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/RemoveFromCategoryAction.java
+++ /dev/null
@@ -1,82 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Ken Sueda
- */
-public class RemoveFromCategoryAction extends Action {
- public static final String ID = "org.eclipse.mylar.tasklist.actions.remove";
-
- private final TaskListView view;
-
- public RemoveFromCategoryAction(TaskListView view) {
- this.view = view;
- setText("Remove From Category");
- setId(ID);
- setImageDescriptor(TaskListImages.REMOVE);
- }
-
- @Override
- public void run() {
- try {
- ISelection selection = TaskListView.getFromActivePerspective().getViewer().getSelection();
- for (Object selectedObject : ((IStructuredSelection) selection).toList()) {
- if (selectedObject instanceof ITask) { // && !((ITask) selectedObject).isLocal()) {
- ITask task = (ITask) selectedObject;
- if (task.isActive()) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- TasksUiPlugin.TITLE_DIALOG,
- "Task must be deactivated in order to remove from category.");
- return;
- }
-
- TreeItem item = this.view.getViewer().getTree().getSelection()[0];
- if (item.getParentItem() != null && item.getParentItem().getData() instanceof TaskCategory) {
- TaskCategory category = (TaskCategory) item.getParentItem().getData();
- TasksUiPlugin.getTaskListManager().getTaskList().removeFromCategory(category, task);
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().removeFromRoot(task);
- }
- // just in case, should already be there
-// MylarTaskListPlugin.getTaskListManager().getTaskList().addTaskToArchive(task);
-// ITaskContainer cat = task.getCategory();
-// if (cat != null) {
-// String message = DeleteAction.genDeleteConfirmationMessage(task);
-// boolean deleteConfirmed = MessageDialog.openQuestion(PlatformUI.getWorkbench()
-// .getActiveWorkbenchWindow().getShell(), "Confirm delete", message);
-// if (!deleteConfirmed)
-// return;
-//
-// MylarTaskListPlugin.getTaskListManager().deleteTask(task);
-// ContextCorePlugin.getContextManager().contextDeleted(task.getHandleIdentifier()); // task.getContextPath());
-// }
- }
- }
- } catch (NullPointerException npe) {
- MylarStatusHandler.fail(npe, "Could not remove task from category, it may still be refreshing.", true);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SaveRemoteFileAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SaveRemoteFileAction.java
deleted file mode 100644
index 4ffb6a1fa..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SaveRemoteFileAction.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.actions;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.jface.action.Action;
-
-/**
- * An <code>Action</code> which saves the given file contents to the given
- * file location on disk.
- *
- * @author Jeff Pound
- */
-public class SaveRemoteFileAction extends Action {
-
- public static final String TITLE = "Save...";
-
- private String destinationFilePath;
-
- private InputStream inStream;
-
- public SaveRemoteFileAction() {
- super(TITLE);
- }
-
- public void run() {
- if (destinationFilePath == null || inStream == null) {
- return;
- }
-
- File outFile = new File(destinationFilePath);
- try {
- /* TODO jpound - Use FileWriter iff text? */
- FileOutputStream writer = new FileOutputStream(outFile);
- BufferedInputStream reader = new BufferedInputStream(inStream);
-
- int c;
- while ((c = reader.read()) != -1) {
- writer.write(c);
- }
-
- writer.close();
- reader.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- public void setDestinationFilePath(String destinationFilePath) {
- this.destinationFilePath = destinationFilePath;
- }
-
- public void setInputStream(InputStream inStream) {
- this.inStream = inStream;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SynchronizeSelectedAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SynchronizeSelectedAction.java
deleted file mode 100644
index 7cdc046c7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/SynchronizeSelectedAction.java
+++ /dev/null
@@ -1,181 +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.tasks.ui.actions;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.actions.ActionDelegate;
-import org.eclipse.ui.actions.ActionFactory;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class SynchronizeSelectedAction extends ActionDelegate implements IViewActionDelegate {
-
- private Map<AbstractRepositoryConnector, List<AbstractRepositoryQuery>> queriesToSyncMap = new LinkedHashMap<AbstractRepositoryConnector, List<AbstractRepositoryQuery>>();
-
- private Map<AbstractRepositoryConnector, List<AbstractRepositoryTask>> tasksToSyncMap = new LinkedHashMap<AbstractRepositoryConnector, List<AbstractRepositoryTask>>();
-
- // private void checkSyncResult(final IJobChangeEvent event, final
- // AbstractRepositoryQuery problemQuery) {
- // if (event.getResult().getException() != null) {
- // PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- // public void run() {
- // MessageDialog.openError(Display.getDefault().getActiveShell(),
- // TasksUiPlugin.TITLE_DIALOG, event
- // .getResult().getMessage());
- // }
- // });
- // }
- // }
-
- public void run(IAction action) {
-
- if (TaskListView.getFromActivePerspective() != null) {
-
- ISelection selection = TaskListView.getFromActivePerspective().getViewer().getSelection();
- for (Object obj : ((IStructuredSelection) selection).toList()) {
- if (obj instanceof AbstractRepositoryQuery) {
- final AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) obj;
- AbstractRepositoryConnector client = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repositoryQuery.getRepositoryKind());
- if (client != null) {
- List<AbstractRepositoryQuery> queriesToSync = queriesToSyncMap.get(client);
- if (queriesToSync == null) {
- queriesToSync = new ArrayList<AbstractRepositoryQuery>();
- queriesToSyncMap.put(client, queriesToSync);
- }
- queriesToSync.add(repositoryQuery);
- }
- } else if (obj instanceof TaskCategory) {
- TaskCategory cat = (TaskCategory) obj;
- for (ITask task : cat.getChildren()) {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryConnector client = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(((AbstractRepositoryTask) task).getRepositoryKind());
- addTaskToSync(client, (AbstractRepositoryTask) task);
- }
- }
- } else if (obj instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) obj;
- AbstractRepositoryConnector client = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repositoryTask.getRepositoryKind());
- addTaskToSync(client, repositoryTask);
- } else if (obj instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) obj;
- if (hit.getOrCreateCorrespondingTask() != null) {
- AbstractRepositoryConnector client = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(hit.getCorrespondingTask().getRepositoryKind());
- addTaskToSync(client, hit.getCorrespondingTask());
- }
- }
- }
-
- if (!queriesToSyncMap.isEmpty()) {
-
- // determine which repositories to synch changed tasks for
- HashMap<String, Set<TaskRepository>> repositoriesToSync = new HashMap<String, Set<TaskRepository>>();
- for (AbstractRepositoryConnector connector : queriesToSyncMap.keySet()) {
- List<AbstractRepositoryQuery> queriesToSync = queriesToSyncMap.get(connector);
- for (AbstractRepositoryQuery query : queriesToSync) {
- TaskRepository repos = TasksUiPlugin.getRepositoryManager().getRepository(query.getRepositoryKind(), query.getRepositoryUrl());
- Set<TaskRepository> repositories = repositoriesToSync.get(connector.getRepositoryType());
- if(repositories == null) {
- repositories = new HashSet<TaskRepository>();
- repositoriesToSync.put(connector.getRepositoryType(), repositories);
- }
- repositories.add(repos);
- }
- }
-
- // synch the queries followed by the repositories
- for (AbstractRepositoryConnector connector : queriesToSyncMap.keySet()) {
- List<AbstractRepositoryQuery> queriesToSync = queriesToSyncMap.get(connector);
- if (queriesToSync != null && queriesToSync.size() > 0) {
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, new HashSet<AbstractRepositoryQuery>(queriesToSync), null, Job.LONG, 0,
- false);
- }
-
- for (TaskRepository taskRepository : repositoriesToSync.get(connector.getRepositoryType())) {
- TasksUiPlugin.getSynchronizationManager().synchronizeChanged(connector, taskRepository);
- }
-
- }
- }
- if (!tasksToSyncMap.isEmpty()) {
- for (AbstractRepositoryConnector connector : tasksToSyncMap.keySet()) {
- List<AbstractRepositoryTask> tasksToSync = tasksToSyncMap.get(connector);
- if (tasksToSync != null && tasksToSync.size() > 0) {
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, new HashSet<AbstractRepositoryTask>(tasksToSync), true, null);
- }
- }
- }
-
- }
-
- queriesToSyncMap.clear();
- tasksToSyncMap.clear();
-
- if (TaskListView.getFromActivePerspective() != null) {
- TaskListView.getFromActivePerspective().getViewer().refresh();
- }
-
- }
-
- private void addTaskToSync(AbstractRepositoryConnector client, AbstractRepositoryTask repositoryTask) {
- if (client != null) {
- List<AbstractRepositoryTask> tasksToSync = tasksToSyncMap.get(client);
- if (tasksToSync == null) {
- tasksToSync = new ArrayList<AbstractRepositoryTask>();
- tasksToSyncMap.put(client, tasksToSync);
- }
- tasksToSync.add(repositoryTask);
- }
- }
-
- private IAction action;
-
- @Override
- public void init(IAction action) {
- this.action = action;
- }
-
- public void init(IViewPart view) {
- IActionBars actionBars = view.getViewSite().getActionBars();
- actionBars.setGlobalActionHandler(ActionFactory.REFRESH.getId(), action);
- actionBars.updateActionBars();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskActivateAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskActivateAction.java
deleted file mode 100644
index 87d0f14c1..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskActivateAction.java
+++ /dev/null
@@ -1,62 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IViewActionDelegate;
-import org.eclipse.ui.IViewPart;
-
-/**
- * @author Mik Kersten
- */
-public class TaskActivateAction extends Action implements IViewActionDelegate {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.context.activate";
-
- public TaskActivateAction() {
- setId(ID);
- setText("Activate");
- setImageDescriptor(TaskListImages.TASK_ACTIVE);
- }
-
- public void init(IViewPart view) {
- // TODO Auto-generated method stub
-
- }
-
- public void run() {
- run(TaskListView.getFromActivePerspective().getSelectedTask());
- }
-
- public void run(ITask task) {
- if (task != null && !task.isActive()) {
- TasksUiPlugin.getTaskListManager().activateTask(task);
- if (TaskListView.getFromActivePerspective() != null) {
- TaskListView.getFromActivePerspective().refreshAndFocus(false);
- }
- }
- }
-
- public void run(IAction action) {
- run();
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskDeactivateAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskDeactivateAction.java
deleted file mode 100644
index c11b4da3f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskDeactivateAction.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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public class TaskDeactivateAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.context.deactivate";
-
- public TaskDeactivateAction() {
- setId(ID);
- setText("Deactivate");
- setImageDescriptor(TaskListImages.TASK_INACTIVE);
- }
-
- public void run(ITask task) {
- try {
- if (task != null) {
- TasksUiPlugin.getTaskListManager().deactivateTask(task);
-// TaskListView.getFromActivePerspective().refreshAndFocus();
- TaskUiUtil.closeEditorInActivePage(task);
- }
- } catch (Exception e) {
- MylarStatusHandler.log(e, " Closing task editor on task deactivation failed");
- }
- }
-
- public void run() {
- run(TaskListView.getFromActivePerspective().getSelectedTask());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskListElementPropertiesAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskListElementPropertiesAction.java
deleted file mode 100644
index 8548afece..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskListElementPropertiesAction.java
+++ /dev/null
@@ -1,48 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListElementPropertiesAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.tasklist.actions.properties";
-
- private final StructuredViewer viewer;
-
- public TaskListElementPropertiesAction(StructuredViewer view) {
- this.viewer = view;
- setText("Properties");
- setToolTipText("Properties");
- setId(ID);
-// setAccelerator(SWT.MOD1 + LegacyActionTools.findKeyCode("enter"));
- }
-
- @Override
- public void run() {
- ISelection selection = viewer.getSelection();
- Object element = ((IStructuredSelection) selection).getFirstElement();
- if (element instanceof TaskCategory || element instanceof AbstractRepositoryQuery) {
- TaskUiUtil.refreshAndOpenTaskListElement((ITaskListElement)element);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java
deleted file mode 100644
index 0bca8158d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskNavigateDropDownAction.java
+++ /dev/null
@@ -1,118 +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.tasks.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskActivationHistory;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-
-/**
- * This abstract class contains some common code used by NextTaskDropDownAction
- * and PreviousTaskDropDownAction
- *
- * @author Wesley Coelho
- * @author Mik Kersten
- */
-public abstract class TaskNavigateDropDownAction extends Action implements IMenuCreator {
-
- protected final TaskListView view;
-
- protected TaskActivationHistory taskHistory;
-
- protected Menu dropDownMenu = null;
-
- protected TaskElementLabelProvider labelProvider = new TaskElementLabelProvider();
-
- /** Maximum number of items to appear in the drop-down menu */
- protected final static int MAX_ITEMS_TO_DISPLAY = 12;
-
- public TaskNavigateDropDownAction(TaskListView view, TaskActivationHistory history) {
- super();
- this.view = view;
- taskHistory = history;
- setMenuCreator(this);
- }
-
- /**
- * Action for navigating to a specified task. This class should be protected
- * but has been made public for testing only
- */
- public class TaskNavigateAction extends Action {
-
- private ITask targetTask;
-
- private static final int MAX_LABEL_LENGTH = 40;
-
- public TaskNavigateAction(ITask task) {
- targetTask = task;
- String taskDescription = task.getDescription();
- if (taskDescription.length() > MAX_LABEL_LENGTH) {
- taskDescription = taskDescription.subSequence(0, MAX_LABEL_LENGTH - 3) + "...";
- }
- setText(taskDescription);
- setEnabled(true);
- setToolTipText(task.getDescription());
- Image image = labelProvider.getImage(task);
- setImageDescriptor(ImageDescriptor.createFromImage(image));
- }
-
- public void run() {
- if (targetTask.isActive()) {
- return;
- }
- new TaskActivateAction().run(targetTask);
- // taskHistory.navigatedToTask(targetTask);
- taskHistory.addTask(targetTask);
- setButtonStatus();
- view.refreshAndFocus(false);
- }
- }
-
- public void dispose() {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- dropDownMenu = null;
- }
- }
-
- public Menu getMenu(Control parent) {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- }
- dropDownMenu = new Menu(parent);
- addActionsToMenu();
- return dropDownMenu;
- }
-
- public Menu getMenu(Menu parent) {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- }
- dropDownMenu = new Menu(parent);
- addActionsToMenu();
- return dropDownMenu;
- }
-
- public void setButtonStatus() {
- setEnabled(taskHistory.getPreviousTasks() != null && taskHistory.getPreviousTasks().size() > 0);
- // view.getNextTaskAction().setEnabled(taskHistory.hasNext());
- }
-
- protected abstract void addActionsToMenu();
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java
deleted file mode 100644
index b49f53a70..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/TaskSelectionDialog.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.actions;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.SelectionStatusDialog;
-
-/**
- * @author wmitsuda
- */
-public class TaskSelectionDialog extends SelectionStatusDialog {
-
- /**
- * Implements a {@link ViewFilter} based on content typed in the filter
- * field
- *
- * @author wmitsuda
- */
- private static class TaskFilter extends ViewerFilter {
-
- private Pattern pattern;
-
- public void setFilterText(String filterText) {
- if (filterText.trim().equals("")) {
- pattern = null;
- } else {
- filterText = filterText.replace("\\", "\\\\");
- filterText = filterText.replace(".", "\\.");
- filterText = filterText.replace("*", ".*");
- filterText = filterText.replace("?", ".?");
- pattern = Pattern.compile(filterText, Pattern.CASE_INSENSITIVE);
- }
- }
-
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (pattern == null) {
- return TasksUiPlugin.getTaskListManager().getTaskActivationHistory().getPreviousTasks().contains(
- element);
- }
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- String description = task.getDescription();
- return pattern.matcher(description).find();
- } else if (element instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) element;
- String description = hit.getDescription();
- return pattern.matcher(description).find();
- }
- return false;
- }
-
- }
-
- private TableViewer viewer;
-
- private Button openInBrowserCheck;
-
- private boolean openInBrowser;
-
- public boolean getOpenInBrowser() {
- return openInBrowser;
- }
-
- public void setOpenInBrowser(boolean openInBrowser) {
- this.openInBrowser = openInBrowser;
- }
-
- public TaskSelectionDialog(Shell parent) {
- super(parent);
- setShellStyle(getShellStyle() | SWT.RESIZE);
- }
-
- private boolean showOpenInBrowserOption;
-
- public void setShowOpenInBrowserOption(boolean showOpenInBrowserOption) {
- this.showOpenInBrowserOption = showOpenInBrowserOption;
- }
-
- public boolean getShowOpenInBrowserOption() {
- return showOpenInBrowserOption;
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite area = (Composite) super.createDialogArea(parent);
-
- Label message = new Label(area, SWT.NONE);
- message.setText("&Select a task to open (? = any character, * = any String):");
- final Text filterText = new Text(area, SWT.SINGLE | SWT.BORDER);
- filterText.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
-
- Label matches = new Label(area, SWT.NONE);
- matches.setText("&Matching tasks:");
- viewer = new TableViewer(area);
- Control control = viewer.getControl();
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- control.setLayoutData(gd);
- gd.widthHint = 400;
- gd.heightHint = 200;
-
- if (showOpenInBrowserOption) {
- openInBrowserCheck = new Button(area, SWT.CHECK);
- openInBrowserCheck.setText("Open with &Browser");
- openInBrowserCheck.setSelection(openInBrowser);
- }
-
- final TaskElementLabelProvider labelProvider = new TaskElementLabelProvider();
- viewer.setLabelProvider(labelProvider);
- viewer.setContentProvider(new ArrayContentProvider());
-
- // Compute all existing tasks or query hits (if corresponding task does
- // not exist yet...)
- Collection<ITaskListElement> allTasks = new HashSet<ITaskListElement>();
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- allTasks.addAll(taskList.getAllTasks());
- for (AbstractRepositoryQuery query : taskList.getQueries()) {
- allTasks.addAll(query.getChildren());
- }
-
- // Compute the task navigation history (in recent-to-older order)
- final List<ITask> taskHistory = new ArrayList<ITask>(TasksUiPlugin.getTaskListManager()
- .getTaskActivationHistory().getPreviousTasks());
- Collections.reverse(taskHistory);
-
- // Compute the task set who will be presented on dialog; the trick to
- // make the task history appear first on the list is to add them before
- // all other tasks; being a LinkedHashSet, it will not be duplicated
- // (this is VERY IMPORTANT)
- Set<ITaskListElement> taskSet = new LinkedHashSet<ITaskListElement>(taskHistory);
- taskSet.addAll(allTasks);
- viewer.setInput(taskSet);
-
- final TaskSelectionDialog.TaskFilter filter = new TaskSelectionDialog.TaskFilter();
- viewer.addFilter(filter);
- viewer.setComparator(new ViewerComparator() {
-
- private ITask getCorrespondingTask(Object o) {
- if (o instanceof ITask) {
- return (ITask) o;
- }
- if (o instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit) o;
- return hit.getCorrespondingTask();
- }
- return null;
- }
-
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- ITask t1 = getCorrespondingTask(e1);
- ITask t2 = getCorrespondingTask(e2);
- boolean isInHistory1 = taskHistory.contains(t1);
- boolean isInHistory2 = taskHistory.contains(t2);
-
- // Being on task history takes precedence...
- if (isInHistory1 && !isInHistory2) {
- return -1;
- }
- if (!isInHistory1 && isInHistory2) {
- return 1;
- }
-
- // Both are in task history; who is more recent?
- if (isInHistory1 && isInHistory2) {
- return taskHistory.indexOf(t1) - taskHistory.indexOf(t2);
- }
-
- // Both are not in task history; sort by description...
- return labelProvider.getText(e1).compareTo(labelProvider.getText(e2));
- }
-
- });
-
- filterText.addKeyListener(new KeyAdapter() {
-
- @Override
- public void keyPressed(KeyEvent e) {
- if (e.keyCode == SWT.ARROW_DOWN) {
- viewer.getControl().setFocus();
- }
- }
-
- });
- filterText.addModifyListener(new ModifyListener() {
-
- public void modifyText(ModifyEvent e) {
- filter.setFilterText(filterText.getText());
- viewer.refresh(false);
- Object first = viewer.getElementAt(0);
- if (first != null) {
- viewer.setSelection(new StructuredSelection(first));
- }
- }
-
- });
-
- return area;
- }
-
- @Override
- protected void computeResult() {
- setResult(((IStructuredSelection) viewer.getSelection()).toList());
- }
-
- @Override
- public boolean close() {
- if (openInBrowserCheck != null) {
- openInBrowser = openInBrowserCheck.getSelection();
- }
- return super.close();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractBugEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractBugEditorInput.java
deleted file mode 100644
index 6afe05d36..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractBugEditorInput.java
+++ /dev/null
@@ -1,93 +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.tasks.ui.editors;
-
-import java.net.Proxy;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-
-/**
- * Abstract base implementation of an <code>IEditorInput</code> for a subclass
- * of <code>AbstractRepositoryTaskEditor</code>.
- * @author Rob Elves (modifications)
- */
-public abstract class AbstractBugEditorInput implements IEditorInput {
-
- protected String toolTipText = "";
-
- protected Proxy proxySettings;
-
- protected TaskRepository repository;
-
- protected RepositoryTaskData repositoryTaskData;
-
- protected AbstractBugEditorInput(TaskRepository repository, RepositoryTaskData taskData) {
- this.repositoryTaskData = taskData;
- this.repository = repository;
- this.proxySettings = TasksUiPlugin.getDefault().getProxySettings();
- }
-
- /**
- * Sets the tool tip text for this editor input.
- *
- * @param str
- * The new tool tip text.
- */
- protected void setToolTipText(String str) {
- // 03-20-03 Allows editor to store title (once it is known)
- toolTipText = str;
- }
-
- public boolean exists() {
- return true;
- }
-
- public RepositoryTaskData getRepositoryTaskData() {
- return repositoryTaskData;
- }
-
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- public IPersistableElement getPersistable() {
- return null;
- }
-
- public String getToolTipText() {
- return toolTipText;
- }
-
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- /**
- * @return <code>true</code> if the argument is an editor input on the
- * same bug.
- */
- @Override
- public abstract boolean equals(Object o);
-
- public Proxy getProxySettings() {
- return proxySettings;
- }
-
- public TaskRepository getRepository() {
- return repository;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java
deleted file mode 100644
index 1261a961d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java
+++ /dev/null
@@ -1,2250 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.editors;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-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.Action;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableColorProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-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.viewers.ViewerSorter;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.actions.CopyToClipboardAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.SaveRemoteFileAction;
-import org.eclipse.mylar.internal.tasks.ui.wizards.NewAttachmentWizard;
-import org.eclipse.mylar.internal.tasks.ui.wizards.NewAttachmentWizardDialog;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryOperation;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.dnd.DropTargetEvent;
-import org.eclipse.swt.dnd.DropTargetListener;
-import org.eclipse.swt.dnd.FileTransfer;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-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.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-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.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IStorageEditorInput;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.RetargetAction;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.events.ExpansionAdapter;
-import org.eclipse.ui.forms.events.ExpansionEvent;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-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.ImageHyperlink;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.themes.IThemeManager;
-import org.eclipse.ui.views.contentoutline.ContentOutline;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- * @author Jeff Pound (Attachment work)
- * @author Steffen Pingel
- */
-public abstract class AbstractRepositoryTaskEditor extends TaskFormPage {
-
- private static final String HEADER_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";// "EEE
- // d
- // MMM
- // yyyy
- // HH:mm:ss";
-
- private static final String ATTACHMENT_DEFAULT_NAME = "attachment";
-
- private static final String CTYPE_ZIP = "zip";
-
- private static final String CTYPE_OCTET_STREAM = "octet-stream";
-
- private static final String CTYPE_TEXT = "text";
-
- private static final String CTYPE_HTML = "html";
-
- private static final String LABEL_BROWSER = "Browser";
-
- private static final String LABEL_DEFAULT_EDITOR = "Default Editor";
-
- private static final String LABEL_TEXT_EDITOR = "Text Editor";
-
- protected static final String CONTEXT_MENU_ID = "#MylarRepositoryEditor";
-
- 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";
-
- protected static final String LABEL_SECTION_ACTIONS = "Actions";
-
- private static final String LABEL_SECTION_ATTRIBUTES = "Attributes";
-
- private static final String LABEL_SECTION_ATTACHMENTS = "Attachments";
-
- 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 HEADER_FONT = JFaceResources.getDefaultFont();
-
- public static final int DESCRIPTION_WIDTH = 79 * 8; // 500;
-
- public static final int DESCRIPTION_HEIGHT = 10 * 14;
-
- private static final String REASSIGN_BUG_TO = "Reassign bug to";
-
- protected AbstractBugEditorInput editorInput;
-
- private MylarTaskEditor parentEditor = null;
-
- protected RepositoryTaskOutlineNode taskOutlineModel = null;
-
- /**
- * 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 attributeCombo;
-
- protected Button addSelfToCCCheck;
-
- protected Text summaryText;
-
- protected Button submitButton;
-
- protected Button addToTaskListRoot;
-
- protected Table attachmentsTable;
-
- protected TableViewer attachmentTableViewer;
-
- protected String[] attachmentsColumns = { "Description", "Type", "Creator", "Created" };
-
- protected int[] attachmentsColumnWidths = { 200, 100, 100, 200 };
-
- protected int scrollIncrement;
-
- protected int scrollVertPageIncrement;
-
- protected int scrollHorzPageIncrement;
-
- protected StyledText currentSelectedText;
-
- protected RetargetAction cutAction;
-
- protected RetargetAction pasteAction;
-
- protected Composite editorComposite;
-
- private List<IRepositoryTaskAttributeListener> attributesListeners = new ArrayList<IRepositoryTaskAttributeListener>();
-
- 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, RepositoryTaskAttribute> comboListenerMap = new HashMap<CCombo, RepositoryTaskAttribute>();
-
- private IRepositoryTaskSelection lastSelected = null;
-
- /**
- * Focuses on form widgets when an item in the outline is selected.
- */
- 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 RepositoryTaskOutlineNode) {
- RepositoryTaskOutlineNode n = (RepositoryTaskOutlineNode) select;
-
- if (n != null && lastSelected != null
- && ContentOutlineTools.getHandle(n).equals(ContentOutlineTools.getHandle(lastSelected))) {
- // we don't need to set the selection if it is already
- // set
- return;
- }
- lastSelected = n;
-
- boolean highlight = true;
- if (n.getKey().equals(RepositoryTaskOutlineNode.LABEL_COMMENTS)) {
- highlight = false;
- }
-
- Object data = n.getData();
- if (n.getKey().equals(RepositoryTaskOutlineNode.LABEL_NEW_COMMENT)) {
- selectNewComment();
- } else if (n.getKey().equals(RepositoryTaskOutlineNode.LABEL_DESCRIPTION)
- && descriptionTextViewer.isEditable()) {
- selectDescription();
- } else if (data != null) {
- select(data, highlight);
- }
- }
- }
- }
- };
-
- private TableViewer attachmentsTableViewer;
-
- private final class AttachmentLabelProvider extends LabelProvider implements IColorProvider {
-
- public Color getBackground(Object element) {
- return attachmentsTable.getDisplay().getSystemColor(SWT.COLOR_WHITE);
- }
-
- public Color getForeground(Object element) {
- return attachmentsTable.getDisplay().getSystemColor(SWT.COLOR_BLACK);
- }
-
- }
-
- private static final class AttachmentTableLabelProvider extends DecoratingLabelProvider implements
- ITableColorProvider, ITableLabelProvider {
-
- public AttachmentTableLabelProvider(ILabelProvider provider, ILabelDecorator decorator) {
- super(provider, decorator);
- }
-
- public Image getColumnImage(Object element, int columnIndex) {
- // RepositoryAttachment attachment = (RepositoryAttachment)
- // element;
- return null;
- }
-
- public String getColumnText(Object element, int columnIndex) {
- RepositoryAttachment attachment = (RepositoryAttachment) element;
- switch (columnIndex) {
- case 0:
- return attachment.getDescription();
- case 1:
- if (attachment.isPatch()) {
- return "patch";
- } else {
- return attachment.getContentType();
- }
- case 2:
- return attachment.getCreator();
- case 3:
- // TODO should retrieve Date object from IOfflineTaskHandler
- return attachment.getDateCreated();
- }
- return "unrecognized column";
- }
-
- public void addListener(ILabelProviderListener listener) {
- // ignore
-
- }
-
- public void dispose() {
- // ignore
-
- }
-
- public boolean isLabelProperty(Object element, String property) {
- // ignore
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener) {
- // ignore
-
- }
-
- public Color getForeground(Object element, int columnIndex) {
- RepositoryAttachment att = (RepositoryAttachment) element;
- if (att.isObsolete()) {
- return TaskListColorsAndFonts.COLOR_GRAY_LIGHT;
- }
- return super.getForeground(element);
- }
-
- public Color getBackground(Object element, int columnIndex) {
- return super.getBackground(element);
- }
-
- public Font getFont(Object element, int columnIndex) {
- return super.getFont(element);
- }
- }
-
- protected 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());
- RepositoryTaskAttribute attribute = comboListenerMap.get(combo);
- if (sel != null && !(sel.equals(attribute.getValue()))) {
- attribute.setValue(sel);
- for (IRepositoryTaskAttributeListener client : attributesListeners) {
- client.attributeChanged(attribute.getName(), sel);
- }
- markDirty(true);
- }
- }
- }
- }
- }
-
- public abstract RepositoryTaskData getRepositoryTaskData();
-
- protected abstract void validateInput();
-
- protected abstract String getTitleString();
-
- protected abstract void submitBug();
-
- protected abstract void updateBug();
-
- /**
- * Creates a new <code>AbstractRepositoryTaskEditor</code>. Sets up the
- * default fonts and cut/copy/paste actions.
- */
- public AbstractRepositoryTaskEditor(FormEditor editor) {
- // set the scroll increments so the editor scrolls normally with the
- // scroll wheel
- super(editor, "id", "label"); //$NON-NLS-1$ //$NON-NLS-2$
- FontData[] fd = TEXT_FONT.getFontData();
- int cushion = 4;
- scrollIncrement = fd[0].getHeight() + cushion;
- scrollVertPageIncrement = 0;
- scrollHorzPageIncrement = 0;
-
- }
-
- public String getNewCommentText() {
- return addCommentsTextBox.getText();
- }
-
- // /**
- // * @return Any currently selected text.
- // */
- // protected StyledText getCurrentText() {
- // return currentSelectedText;
- // }
-
- protected void createFormContent(final IManagedForm managedForm) {
- super.createFormContent(managedForm);
- form = managedForm.getForm();
- toolkit = managedForm.getToolkit();
-
- editorComposite = form.getBody();
- GridLayout editorLayout = new GridLayout();
- editorComposite.setLayout(editorLayout);
- editorComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- if (getRepositoryTaskData() == null) {
- toolkit.createLabel(editorComposite,
- "Could not download task data, possibly due to timeout or connectivity problem.\n"
- + "Please check connection and try again.");
- return;
- }
-
- createReportHeaderLayout(editorComposite);
- Composite attribComp = createAttributeLayout(editorComposite);
- createCustomAttributeLayout(attribComp);
- createAttachmentLayout(editorComposite);
- createDescriptionLayout(editorComposite);
- createCommentLayout(editorComposite);
- createNewCommentLayout(editorComposite);
- Composite bottomComposite = toolkit.createComposite(editorComposite);
- bottomComposite.setLayout(new GridLayout(2, false));
- // GridDataFactory.fillDefaults().grab(true,
- // false).applyTo(bottomComposite);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.DEFAULT).applyTo(bottomComposite);
-
- createActionsLayout(bottomComposite);
- createPeopleLayout(bottomComposite);
-
- form.reflow(true);
- getSite().getPage().addSelectionListener(selectionListener);
- getSite().setSelectionProvider(selectionProvider);
- if (this.addCommentsTextBox != null) {
- registerDropListener(this.addCommentsTextBox);
- }
- }
-
- protected void createReportHeaderLayout(Composite composite) {
- addSummaryText(composite);
-
- Composite headerInfoComposite = toolkit.createComposite(composite);
- GridLayout headerLayout = new GridLayout(10, false);
- headerLayout.verticalSpacing = 1;
- headerLayout.marginHeight = 1;
- headerLayout.horizontalSpacing = 2;
- headerInfoComposite.setLayout(headerLayout);
-
- toolkit.createLabel(headerInfoComposite, " Status: ").setFont(TITLE_FONT);
- String statusValue = this.getRepositoryTaskData().getAttributeValue(RepositoryTaskAttribute.STATUS);
- toolkit.createText(headerInfoComposite, statusValue, SWT.FLAT | SWT.READ_ONLY);
- toolkit.createLabel(headerInfoComposite, " Priority: ").setFont(TITLE_FONT);
- toolkit.createText(headerInfoComposite, getRepositoryTaskData().getAttributeValue(RepositoryTaskAttribute.PRIORITY), SWT.FLAT | SWT.READ_ONLY);
-// RepositoryTaskAttribute attribute = getRepositoryTaskData().getAttribute(RepositoryTaskAttribute.PRIORITY);
-// if (attribute != null) {
-// String value = attribute.getValue() != null ? attribute.getValue() : "";
-// attributeCombo = new CCombo(headerInfoComposite, SWT.FLAT | SWT.READ_ONLY);
-// toolkit.adapt(attributeCombo, true, true);
-// attributeCombo.setFont(TEXT_FONT);
-// if (attribute.getValues() != null) {
-//
-// Set<String> s = attribute.getOptionValues().keySet();
-// String[] a = s.toArray(new String[s.size()]);
-// for (int i = 0; i < a.length; i++) {
-// attributeCombo.add(a[i]);
-// }
-// if (attributeCombo.indexOf(value) != -1) {
-// attributeCombo.select(attributeCombo.indexOf(value));
-// }
-// }
-// attributeCombo.addSelectionListener(new ComboSelectionListener(attributeCombo));
-// comboListenerMap.put(attributeCombo, attribute);
-// attributeCombo.addListener(SWT.FocusIn, new GenericListener());
-// }
-
- toolkit.createLabel(headerInfoComposite, " ID: ").setFont(TITLE_FONT);
- toolkit.createText(headerInfoComposite, "" + getRepositoryTaskData().getId(), SWT.FLAT | SWT.READ_ONLY);
-
- String openedDateString = "";
- String modifiedDateString = "";
- final IOfflineTaskHandler offlineHandler = getOfflineTaskHandler();
- if (offlineHandler != null) {
- Date created = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.DATE_CREATION,
- getRepositoryTaskData().getCreated());
- openedDateString = created != null ? DateUtil.getFormattedDate(created, HEADER_DATE_FORMAT) : "";
-
- Date modified = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.DATE_MODIFIED,
- getRepositoryTaskData().getLastModified());
- modifiedDateString = modified != null ? DateUtil.getFormattedDate(modified, HEADER_DATE_FORMAT) : "";
- }
-
- toolkit.createLabel(headerInfoComposite, " Opened: ").setFont(TITLE_FONT);
- toolkit.createText(headerInfoComposite, openedDateString, SWT.FLAT | SWT.READ_ONLY);
- toolkit.createLabel(headerInfoComposite, " Modified: ").setFont(TITLE_FONT);
- toolkit.createText(headerInfoComposite, modifiedDateString, SWT.FLAT | SWT.READ_ONLY);
- }
-
- /**
- * Creates the attribute layout, which contains most of the basic attributes
- * of the bug (some of which are editable).
- */
- protected Composite createAttributeLayout(Composite composite) {
- String title = getTitleString();
-
- Section section = createSection(composite, LABEL_SECTION_ATTRIBUTES);
- section.setExpanded(false);
- // Attributes Composite- this holds all the combo fields and text fields
- Composite attributesComposite = toolkit.createComposite(section);
- GridLayout attributesLayout = new GridLayout();
- attributesLayout.numColumns = 4;
- attributesLayout.horizontalSpacing = 5;
- attributesLayout.verticalSpacing = 4;
- attributesComposite.setLayout(attributesLayout);
- GridData attributesData = new GridData(GridData.FILL_BOTH);
- attributesData.horizontalSpan = 1;
- attributesData.grabExcessVerticalSpace = false;
- attributesComposite.setLayoutData(attributesData);
- section.setClient(attributesComposite);
- editorInput.setToolTipText(title);
-
- int currentCol = 1;
-
- for (RepositoryTaskAttribute attribute : getRepositoryTaskData().getAttributes()) {
- String name = attribute.getName();
- String value = "";
- value = checkText(attribute.getValue());
- if (attribute.isHidden())
- continue;
- Map<String, String> values = attribute.getOptionValues();
- if (values == null)
- values = new HashMap<String, String>();
-
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- data.horizontalSpan = 1;
- data.horizontalIndent = HORZ_INDENT;
-
- if (attribute.hasOptions() && !attribute.isReadOnly()) {
- Label label = toolkit.createLabel(attributesComposite, name);
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.DEFAULT).applyTo(label);
- attributeCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.READ_ONLY);
- toolkit.adapt(attributeCombo, true, true);
- attributeCombo.setFont(TEXT_FONT);
- attributeCombo.setLayoutData(data);
- Set<String> s = values.keySet();
- String[] a = s.toArray(new String[s.size()]);
- for (int i = 0; i < a.length; i++) {
- attributeCombo.add(a[i]);
- }
- if (attributeCombo.indexOf(value) != -1) {
- attributeCombo.select(attributeCombo.indexOf(value));
- }
- attributeCombo.addSelectionListener(new ComboSelectionListener(attributeCombo));
- comboListenerMap.put(attributeCombo, attribute);
- attributeCombo.addListener(SWT.FocusIn, new GenericListener());
- currentCol += 2;
- } else {
- Label label = toolkit.createLabel(attributesComposite, name);
- GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.DEFAULT).applyTo(label);
- Composite textFieldComposite = toolkit.createComposite(attributesComposite);
- GridLayout textLayout = new GridLayout();
- textLayout.marginWidth = 1;
- textLayout.marginHeight = 2;
- textFieldComposite.setLayout(textLayout);
- GridData textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- textData.horizontalSpan = 1;
- textData.widthHint = 135;
-
- if (attribute.isReadOnly()) {
- final Text text = toolkit.createText(textFieldComposite, value, SWT.FLAT | SWT.READ_ONLY);
- text.setLayoutData(textData);
- } else {
- final Text text = toolkit.createText(textFieldComposite, value, SWT.FLAT);
- // text.setFont(COMMENT_FONT);
- text.setLayoutData(textData);
- toolkit.paintBordersFor(textFieldComposite);
- text.setData(attribute);
- text.addListener(SWT.KeyUp, new Listener() {
- public void handleEvent(Event event) {
- String sel = text.getText();
- RepositoryTaskAttribute a = (RepositoryTaskAttribute) text.getData();
- if (!(a.getValue().equals(sel))) {
- a.setValue(sel);
- markDirty(true);
- }
- }
- });
- text.addListener(SWT.FocusIn, new GenericListener());
- }
-
- currentCol += 2;
- }
- if (currentCol > attributesLayout.numColumns) {
- currentCol -= attributesLayout.numColumns;
- }
- }
- toolkit.paintBordersFor(attributesComposite);
- // make sure that we are in the first column
- if (currentCol > 1) {
- while (currentCol <= attributesLayout.numColumns) {
- toolkit.createLabel(attributesComposite, "");
- // newLayout(attributesComposite, 1, "", PROPERTY);
- currentCol++;
- }
- }
- return attributesComposite;
- }
-
- // protected void createContextMenu(final Composite comp) {
- // contextMenuManager = new MenuManager(CONTEXT_MENU_ID);
- // contextMenuManager.setRemoveAllWhenShown(true);
- // contextMenuManager.addMenuListener(new IMenuListener() {
- // public void menuAboutToShow(IMenuManager manager) {
- // manager.add(cutAction);
- // manager.add(copyAction);
- // manager.add(pasteAction);
- // // Clipboard clipboard = new Clipboard(comp.getDisplay());
- // // TextTransfer textTransfer = TextTransfer.getInstance();
- // // String textData = (String) clipboard.getContents(textTransfer);
- // // if (textData != null) {
- // // pasteAction.setEnabled(true);
- // // } else {
- // // pasteAction.setEnabled(false);
- // // }
- //
- // if (currentSelectedText == null ||
- // currentSelectedText.getSelectionText().length() == 0) {
- // copyAction.setEnabled(false);
- // } else {
- // copyAction.setEnabled(true);
- // }
- // // manager.add(revealAllAction);
- // manager.add(new Separator());
- // manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
- // }
- // });
- // // getSite().registerContextMenu(CONTEXT_MENU_ID, contextMenuManager,
- // // getSite().getSelectionProvider());
- // }
-
- /**
- * 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) {
-
- Composite summaryComposite = toolkit.createComposite(attributesComposite);
- GridLayout summaryLayout = new GridLayout(2, false);
- summaryLayout.verticalSpacing = 0;
- summaryLayout.marginHeight = 2;
- summaryComposite.setLayout(summaryLayout);
- GridDataFactory.fillDefaults().grab(true, false).applyTo(summaryComposite);
-
- toolkit.createLabel(summaryComposite, "Summary:").setFont(TITLE_FONT);
- summaryText = toolkit.createText(summaryComposite, getRepositoryTaskData().getSummary(), SWT.FLAT);
- IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
- Font summaryFont = themeManager.getCurrentTheme().getFontRegistry()
- .get(TaskListColorsAndFonts.TASK_EDITOR_FONT);
- summaryText.setFont(summaryFont);
- GridData summaryTextData = new GridData(GridData.FILL_HORIZONTAL);// HORIZONTAL_ALIGN_FILL
- summaryTextData.horizontalSpan = 1;
- // summaryTextData.widthHint = 200;
-
- summaryText.setLayoutData(summaryTextData);
- summaryText.addListener(SWT.KeyUp, new SummaryListener());
- summaryText.addListener(SWT.FocusIn, new GenericListener());
- toolkit.paintBordersFor(summaryComposite);
- }
-
- protected void createAttachmentLayout(Composite composite) {
-
- // TODO: expand to show new attachments
- Section section = createSection(composite, LABEL_SECTION_ATTACHMENTS + " ("
- + getRepositoryTaskData().getAttachments().size() + ")");
- section.setExpanded(false);
- final Composite attachmentsComposite = toolkit.createComposite(section);
- attachmentsComposite.setLayout(new GridLayout(1, false));
- attachmentsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
- section.setClient(attachmentsComposite);
-
- if (getRepositoryTaskData().getAttachments().size() > 0) {
-
- attachmentsTable = toolkit.createTable(attachmentsComposite, SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
- registerDropListener(attachmentsTable);
- attachmentsTable.setLinesVisible(true);
- attachmentsTable.setHeaderVisible(true);
- attachmentsTable.setLayout(new GridLayout());
- GridData tableGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
- // tableGridData.heightHint = 100;
- // tableGridData.widthHint = DESCRIPTION_WIDTH;
- attachmentsTable.setLayoutData(tableGridData);
-
- for (int i = 0; i < attachmentsColumns.length; i++) {
- TableColumn column = new TableColumn(attachmentsTable, SWT.LEFT, i);
- column.setText(attachmentsColumns[i]);
- column.setWidth(attachmentsColumnWidths[i]);
- }
-
- attachmentsTableViewer = new TableViewer(attachmentsTable);
- attachmentsTableViewer.setUseHashlookup(true);
- attachmentsTableViewer.setColumnProperties(attachmentsColumns);
-
- final IOfflineTaskHandler offlineHandler = getOfflineTaskHandler();
- if (offlineHandler != null) {
- attachmentsTableViewer.setSorter(new ViewerSorter() {
- public int compare(Viewer viewer, Object e1, Object e2) {
- RepositoryAttachment attachment1 = (RepositoryAttachment) e1;
- RepositoryAttachment attachment2 = (RepositoryAttachment) e2;
- Date created1 = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.ATTACHMENT_DATE,
- attachment1.getDateCreated());
- Date created2 = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.ATTACHMENT_DATE,
- attachment2.getDateCreated());
- if (created1 != null && created2 != null) {
- return created1.compareTo(created2);
- } else if (created1 == null && created2 != null) {
- return -1;
- } else if (created1 != null && created2 == null) {
- return 1;
- } else {
- return 0;
- }
- }
- });
- }
-
- attachmentsTableViewer.setContentProvider(new IStructuredContentProvider() {
- public Object[] getElements(Object inputElement) {
- return getRepositoryTaskData().getAttachments().toArray();
- }
-
- public void dispose() {
- // ignore
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (!viewer.getControl().isDisposed()) {
- viewer.refresh();
- }
- }
- });
-
- attachmentsTableViewer.setLabelProvider(new AttachmentTableLabelProvider(new AttachmentLabelProvider(),
- PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
-
- attachmentsTableViewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- // String address = repository.getUrl() +
- // ATTACHMENT_URL_SUFFIX;
- if (!event.getSelection().isEmpty()) {
- StructuredSelection selection = (StructuredSelection) event.getSelection();
- RepositoryAttachment attachment = (RepositoryAttachment) selection.getFirstElement();
- // address += attachment.getId() + "&amp;action=view";
- TaskUiUtil.openUrl(attachment.getUrl());
- }
- }
- });
-
- attachmentsTableViewer.setInput(getRepositoryTaskData());
-
- final MenuManager popupMenu = new MenuManager();
- Menu menu = popupMenu.createContextMenu(attachmentsTable);
- attachmentsTable.setMenu(menu);
-
- final MenuManager openMenu = new MenuManager("Open With");
-
- final Action openWithBrowserAction = new Action(LABEL_BROWSER) {
- public void run() {
- RepositoryAttachment attachment = (RepositoryAttachment) (((StructuredSelection) attachmentsTableViewer
- .getSelection()).getFirstElement());
- TaskUiUtil.openUrl(attachment.getUrl());
- }
- };
-
- final Action openWithDefaultAction = new Action(LABEL_DEFAULT_EDITOR) {
- public void run() {
- RepositoryAttachment attachment = (RepositoryAttachment) (((StructuredSelection) attachmentsTableViewer
- .getSelection()).getFirstElement());
-
- // browser shortcut
- if (attachment.getContentType().endsWith(CTYPE_HTML)) {
- TaskUiUtil.openUrl(attachment.getUrl());
- return;
- }
-
- IStorageEditorInput input = new RepositoryAttachmentEditorInput(attachment);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (page == null) {
- return;
- }
- IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(
- input.getName());
- try {
- page.openEditor(input, desc.getId());
- } catch (PartInitException e) {
- MylarStatusHandler.fail(e, "Unable to open editor for: " + attachment.getDescription(), false);
- }
- }
- };
-
- final Action openWithTextEditorAction = new Action(LABEL_TEXT_EDITOR) {
- public void run() {
- RepositoryAttachment attachment = (RepositoryAttachment) (((StructuredSelection) attachmentsTableViewer
- .getSelection()).getFirstElement());
- IStorageEditorInput input = new RepositoryAttachmentEditorInput(attachment);
- IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (page == null) {
- return;
- }
-
- try {
- page.openEditor(input, "org.eclipse.ui.DefaultTextEditor");
- } catch (PartInitException e) {
- MylarStatusHandler.fail(e, "Unable to open editor for: " + attachment.getDescription(), false);
- }
- }
- };
-
- final Action saveAction = new Action(SaveRemoteFileAction.TITLE) {
- public void run() {
- RepositoryAttachment attachment = (RepositoryAttachment) (((StructuredSelection) attachmentsTableViewer
- .getSelection()).getFirstElement());
- /* Launch Browser */
- FileDialog fileChooser = new FileDialog(attachmentsTable.getShell(), SWT.SAVE);
- String fname = attachment.getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_FILENAME);
- // Default name if none is found
- if (fname.equals("")) {
- String ctype = attachment.getContentType();
- if (ctype.endsWith(CTYPE_HTML)) {
- fname = ATTACHMENT_DEFAULT_NAME + ".html";
- } else if (ctype.startsWith(CTYPE_TEXT)) {
- fname = ATTACHMENT_DEFAULT_NAME + ".txt";
- } else if (ctype.endsWith(CTYPE_OCTET_STREAM)) {
- fname = ATTACHMENT_DEFAULT_NAME;
- } else if (ctype.endsWith(CTYPE_ZIP)) {
- fname = ATTACHMENT_DEFAULT_NAME + "." + CTYPE_ZIP;
- } else {
- fname = ATTACHMENT_DEFAULT_NAME + "." + ctype.substring(ctype.indexOf("/") + 1);
- }
- }
- fileChooser.setFileName(fname);
- String filePath = fileChooser.open();
-
- // Check if the dialog was canceled or an error occured
- if (filePath == null) {
- return;
- }
-
- // TODO: Use IAttachmentHandler instead
- SaveRemoteFileAction save = new SaveRemoteFileAction();
- save.setDestinationFilePath(filePath);
- save.setInputStream(getAttachmentInputStream(attachment.getUrl()));
- save.run();
- }
- };
-
- final Action copyToClipAction = new Action(CopyToClipboardAction.TITLE) {
- public void run() {
- RepositoryAttachment attachment = (RepositoryAttachment) (((StructuredSelection) attachmentsTableViewer
- .getSelection()).getFirstElement());
- CopyToClipboardAction copyToClip = new CopyToClipboardAction();
- copyToClip.setContents(getAttachmentContents(attachment.getUrl()));
- copyToClip.setControl(attachmentsTable.getParent());
- copyToClip.run();
- }
- };
-
- final Action applyPatchAction = new Action("Apply Patch...") {
- public void run() {
- // RepositoryAttachment att =
- // (RepositoryAttachment)(((StructuredSelection)attachmentsTableViewer.getSelection()).getFirstElement());
- // implementation pending bug 98707
- }
- };
- applyPatchAction.setEnabled(false); // pending bug 98707
-
- /*
- * Rebuild menu with the appropriate items for the selection
- */
- attachmentsTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- RepositoryAttachment att = (RepositoryAttachment) (((StructuredSelection) e.getSelection())
- .getFirstElement());
- popupMenu.removeAll();
- popupMenu.add(openMenu);
- openMenu.removeAll();
-
- IStorageEditorInput input = new RepositoryAttachmentEditorInput(att);
- IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(
- input.getName());
- if (desc != null) {
- openMenu.add(openWithDefaultAction);
- }
- openMenu.add(openWithBrowserAction);
- openMenu.add(openWithTextEditorAction);
-
- popupMenu.add(new Separator());
- popupMenu.add(saveAction);
-
- if (att.getContentType().startsWith(CTYPE_TEXT) || att.getContentType().endsWith("xml")) {
- popupMenu.add(copyToClipAction);
- }
- if (att.isPatch()) {
- popupMenu.add(applyPatchAction);
- }
- }
- });
-
- } else {
- Label label = toolkit.createLabel(attachmentsComposite, "No attachments");
- registerDropListener(label);
- }
-
- /* Launch a NewAttachemntWizard */
- Button addAttachmentButton = toolkit.createButton(attachmentsComposite, "Add...", SWT.PUSH);
-
- final RepositoryTaskData taskData = getRepositoryTaskData();
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- AbstractRepositoryTask.getHandle(repository.getUrl(), taskData.getId()));
- if (task == null) {
- addAttachmentButton.setEnabled(false);
- }
-
- addAttachmentButton.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
- }
-
- public void widgetSelected(SelectionEvent e) {
- final RepositoryTaskData taskData = getRepositoryTaskData();
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- AbstractRepositoryTask.getHandle(repository.getUrl(), taskData.getId()));
- if (!(task instanceof AbstractRepositoryTask)) {
- // Should not happen
- return;
- }
- if (AbstractRepositoryTaskEditor.this.isDirty
- || ((AbstractRepositoryTask) task).getSyncState().equals(RepositoryTaskSyncState.OUTGOING)) {
- MessageDialog.openInformation(attachmentsComposite.getShell(),
- "Task not synchronized or dirty editor",
- "Commit edits or synchronize task before adding attachments.");
- return;
- }
-
- NewAttachmentWizard naw = new NewAttachmentWizard(repository, (AbstractRepositoryTask) task);
- NewAttachmentWizardDialog dialog = new NewAttachmentWizardDialog(attachmentsComposite.getShell(), naw);
- naw.setDialog(dialog);
- dialog.create();
- dialog.open();
- }
- });
-
- registerDropListener(section);
- registerDropListener(attachmentsComposite);
- registerDropListener(addAttachmentButton);
- }
-
- protected IOfflineTaskHandler getOfflineTaskHandler() {
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- getRepositoryTaskData().getRepositoryKind());
- if (connector != null) {
- return connector.getOfflineTaskHandler();
- }
- return null;
- }
-
- private void registerDropListener(final Control control) {
- DropTarget target = new DropTarget(control, DND.DROP_COPY | DND.DROP_DEFAULT);
- final TextTransfer textTransfer = TextTransfer.getInstance();
- final FileTransfer fileTransfer = FileTransfer.getInstance();
- Transfer[] types = new Transfer[] { textTransfer, fileTransfer };
- target.setTransfer(types);
-
- // Adapted from eclipse.org DND Article by Veronika Irvine, IBM OTI Labs
- // http://www.eclipse.org/articles/Article-SWT-DND/DND-in-SWT.html#_dt10D
- target.addDropListener(new DropTargetListener() {
- public void dragEnter(DropTargetEvent event) {
- if (event.detail == DND.DROP_DEFAULT) {
- if ((event.operations & DND.DROP_COPY) != 0) {
- event.detail = DND.DROP_COPY;
- } else {
- event.detail = DND.DROP_NONE;
- }
- }
- // will accept text but prefer to have files dropped
- for (int i = 0; i < event.dataTypes.length; i++) {
- if (fileTransfer.isSupportedType(event.dataTypes[i])) {
- event.currentDataType = event.dataTypes[i];
- // files should only be copied
- if (event.detail != DND.DROP_COPY) {
- event.detail = DND.DROP_NONE;
- }
- break;
- }
- }
- }
-
- public void dragOver(DropTargetEvent event) {
- event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
- // if (textTransfer.isSupportedType(event.currentDataType)) {
- // // NOTE: on unsupported platforms this will return null
- // Object o = textTransfer.nativeToJava(event.currentDataType);
- // String t = (String)o;
- // if (t != null) System.out.println(t);
- // }
- }
-
- public void dragOperationChanged(DropTargetEvent event) {
- if ((event.detail == DND.DROP_DEFAULT) || (event.operations & DND.DROP_COPY) != 0) {
-
- event.detail = DND.DROP_COPY;
- } else {
- event.detail = DND.DROP_NONE;
- }
-
- // allow text to be moved but files should only be copied
- if (fileTransfer.isSupportedType(event.currentDataType)) {
- if (event.detail != DND.DROP_COPY) {
- event.detail = DND.DROP_NONE;
- }
- }
- }
-
- public void dragLeave(DropTargetEvent event) {
- }
-
- public void dropAccept(DropTargetEvent event) {
- }
-
- public void drop(DropTargetEvent event) {
- if (textTransfer.isSupportedType(event.currentDataType)) {
- String text = (String) event.data;
- final RepositoryTaskData taskData = getRepositoryTaskData();
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- AbstractRepositoryTask.getHandle(repository.getUrl(), taskData.getId()));
- if (!(task instanceof AbstractRepositoryTask)) {
- // Should not happen
- return;
- }
-
- NewAttachmentWizard naw = new NewAttachmentWizard(repository, (AbstractRepositoryTask) task, text);
- NewAttachmentWizardDialog dialog = new NewAttachmentWizardDialog(control.getShell(), naw);
- naw.setDialog(dialog);
- dialog.create();
- dialog.open();
- }
- if (fileTransfer.isSupportedType(event.currentDataType)) {
- String[] files = (String[]) event.data;
- if (files.length > 0) {
- final RepositoryTaskData taskData = getRepositoryTaskData();
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- AbstractRepositoryTask.getHandle(repository.getUrl(), taskData.getId()));
- if (!(task instanceof AbstractRepositoryTask)) {
- // Should not happen
- return;
- }
-
- NewAttachmentWizard naw = new NewAttachmentWizard(repository, (AbstractRepositoryTask) task,
- new File(files[0]));
- NewAttachmentWizardDialog dialog = new NewAttachmentWizardDialog(control.getShell(), naw);
- naw.setDialog(dialog);
- dialog.create();
- dialog.open();
- }
- }
- }
- });
- }
-
- public static InputStream getAttachmentInputStream(String url) {
- URLConnection urlConnect;
- InputStream stream = null;
- try {
- urlConnect = (new URL(url)).openConnection();
- urlConnect.connect();
- stream = urlConnect.getInputStream();
-
- } catch (MalformedURLException e) {
- MylarStatusHandler.fail(e, "Attachment url was malformed.", false);
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "I/O Error occurred reading attachment.", false);
- }
- return stream;
- }
-
- public static String getAttachmentContents(String url) {
- URLConnection urlConnect;
- StringBuffer contents = new StringBuffer();
- try {
- urlConnect = (new URL(url)).openConnection();
- urlConnect.connect();
- BufferedInputStream stream = new BufferedInputStream(urlConnect.getInputStream());
- int c;
- while ((c = stream.read()) != -1) {
- /* TODO jpound - handle non-text */
- contents.append((char) c);
- }
- stream.close();
- } catch (MalformedURLException e) {
- MylarStatusHandler.fail(e, "Attachment url was malformed.", false);
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "I/O Error occurred reading attachment.", false);
- }
- return contents.toString();
- }
-
- protected void createDescriptionLayout(Composite composite) {
- final Section section = createSection(composite, LABEL_SECTION_DESCRIPTION);
-
- final Composite sectionComposite = toolkit.createComposite(section);
- section.setClient(sectionComposite);
- GridLayout addCommentsLayout = new GridLayout();
- addCommentsLayout.numColumns = 1;
- sectionComposite.setLayout(addCommentsLayout);
- GridData sectionCompositeData = new GridData(GridData.FILL_HORIZONTAL);
- sectionComposite.setLayoutData(sectionCompositeData);
-
- // descriptionTextViewer = addRepositoryTextViewer(repository,
- // sectionComposite, getRepositoryTaskData()
- // .getDescription(), SWT.MULTI | SWT.WRAP);
- // final StyledText styledText = descriptionTextViewer.getTextWidget();
- // styledText.addListener(SWT.FocusIn, new DescriptionListener());
- // styledText.setLayout(new GridLayout());
- // GridDataFactory.fillDefaults().hint(DESCRIPTION_WIDTH,
- // SWT.DEFAULT).applyTo(styledText);
- //
- // texts.add(textsindex, styledText);
- // textHash.put(getRepositoryTaskData().getDescription(), styledText);
- // textsindex++;
-
- RepositoryTaskAttribute attribute = getRepositoryTaskData().getDescriptionAttribute();
- if (attribute != null && !attribute.isReadOnly()) {
- descriptionTextViewer = addTextEditor(repository, sectionComposite, getRepositoryTaskData()
- .getDescription(), true, SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
- descriptionTextViewer.setEditable(true);
- StyledText styledText = descriptionTextViewer.getTextWidget();
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.widthHint = DESCRIPTION_WIDTH;
- gd.heightHint = SWT.DEFAULT;
- gd.grabExcessHorizontalSpace = true;
- descriptionTextViewer.getControl().setLayoutData(gd);
- descriptionTextViewer.getControl().setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- descriptionTextViewer.getTextWidget().addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- String sel = descriptionTextViewer.getTextWidget().getText();
- if (!(getRepositoryTaskData().getDescription().equals(sel))) {
- getRepositoryTaskData().setDescription(sel);
- markDirty(true);
- }
- validateInput();
- }
- });
- textHash.put(getRepositoryTaskData().getDescription(), styledText);
- } else {
- String text = getRepositoryTaskData().getDescription();
- descriptionTextViewer = addTextViewer(repository, sectionComposite, text, SWT.MULTI | SWT.WRAP);
- StyledText styledText = descriptionTextViewer.getTextWidget();
- GridDataFactory.fillDefaults().hint(DESCRIPTION_WIDTH, SWT.DEFAULT).applyTo(
- descriptionTextViewer.getControl());
-
- textHash.put(text, styledText);
- }
-
- descriptionTextViewer.getTextWidget().addListener(SWT.FocusIn, new DescriptionListener());
-
- toolkit.paintBordersFor(sectionComposite);
-
- }
-
- protected void createCustomAttributeLayout(Composite composite) {
- // override
- }
-
- protected void createPeopleLayout(Composite composite) {
- // override
- }
-
- /**
- * 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 RepositoryTaskSelection(getRepositoryTaskData().getId(),
- getRepositoryTaskData().getRepositoryUrl(), LABEL_SECTION_DESCRIPTION, true,
- getRepositoryTaskData().getSummary()))));
- }
- }
-
- protected void createCommentLayout(Composite composite) {
- Section section = createSection(composite, LABEL_SECTION_COMMENTS);
-
- ImageHyperlink hyperlink = toolkit.createImageHyperlink(section, SWT.NONE);
- hyperlink.setBackgroundMode(SWT.INHERIT_NONE);
- hyperlink.setBackground(section.getTitleBarBackground());
- hyperlink.setImage(TaskListImages.getImage(TaskListImages.EXPAND_ALL));
- hyperlink.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- revealAllComments();
- }
- });
-
- section.setTextClient(hyperlink);
-
- // Additional (read-only) Comments Area
- Composite addCommentsComposite = toolkit.createComposite(section);
- section.setClient(addCommentsComposite);
- GridLayout addCommentsLayout = new GridLayout();
- addCommentsLayout.numColumns = 1;
- addCommentsComposite.setLayout(addCommentsLayout);
- GridDataFactory.fillDefaults().grab(true, false).applyTo(addCommentsComposite);
- AbstractRepositoryTask repositoryTask = null;
- IOfflineTaskHandler offlineHandler = null;
- IEditorInput input = this.getEditorInput();
- if (input instanceof ExistingBugEditorInput) {
- ExistingBugEditorInput existingInput = (ExistingBugEditorInput) input;
- repositoryTask = existingInput.getRepositoryTask();
-
- AbstractRepositoryConnector connector = (AbstractRepositoryConnector) TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(getRepositoryTaskData().getRepositoryKind());
- offlineHandler = connector.getOfflineTaskHandler();
- }
- StyledText styledText = null;
- for (Iterator<TaskComment> it = getRepositoryTaskData().getComments().iterator(); it.hasNext();) {
- final TaskComment taskComment = it.next();
-
- // skip comment 0 as it is the description
- if (taskComment.getNumber() == 0)
- continue;
-
- ExpandableComposite expandableComposite = toolkit.createExpandableComposite(addCommentsComposite,
- ExpandableComposite.TREE_NODE);
-
- // Expand new comments
- if (repositoryTask != null && offlineHandler != null) {
- Date lastModDate = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.DATE_MODIFIED,
- repositoryTask.getLastSyncDateStamp());
-
- if (lastModDate != null) {
- // reduce granularity to minutes
- Calendar calLastMod = Calendar.getInstance();
- calLastMod.setTime(lastModDate);
- calLastMod.set(Calendar.SECOND, 0);
-
- Date commentDate = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.COMMENT_DATE,
- taskComment.getCreated());
- if (commentDate != null
- && (commentDate.after(calLastMod.getTime()) || commentDate.equals(calLastMod.getTime()))) {
- expandableComposite.setExpanded(true);
- }
- }
- } else if (repositoryTask != null && repositoryTask.getLastSyncDateStamp() == null && !it.hasNext()) {
- // no task data (query hit?) so expand last comment
- expandableComposite.setExpanded(true);
- }
-
- expandableComposite.setText(taskComment.getNumber() + ": " + taskComment.getAuthorName() + ", "
- + taskComment.getCreated());
-
- expandableComposite.addExpansionListener(new ExpansionAdapter() {
- public void expansionStateChanged(ExpansionEvent e) {
- form.reflow(true);
- }
- });
-
- expandableComposite.setLayout(new GridLayout());
- expandableComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Composite ecComposite = toolkit.createComposite(expandableComposite);
- GridLayout ecLayout = new GridLayout();
- ecLayout.marginHeight = 0;
- ecLayout.marginBottom = 10;
- ecLayout.marginLeft = 10;
- ecComposite.setLayout(ecLayout);
- ecComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- expandableComposite.setClient(ecComposite);
-
- TextViewer viewer = addTextViewer(repository, ecComposite, taskComment.getText(), SWT.MULTI | SWT.WRAP);
- viewer.getControl().setBackground(new Color(expandableComposite.getDisplay(), 123, 34, 155));
- styledText = viewer.getTextWidget();
- GridDataFactory.fillDefaults().hint(DESCRIPTION_WIDTH, SWT.DEFAULT).applyTo(styledText);
- // GridDataFactory.fillDefaults().hint(DESCRIPTION_WIDTH,
- // SWT.DEFAULT).applyTo(viewer.getControl());
-
- // code for outline
- commentStyleText.add(styledText);
- textHash.put(taskComment, styledText);
- }
- if (getRepositoryTaskData().getComments() == null || getRepositoryTaskData().getComments().size() <= 1) {
- section.setExpanded(false);
- }
- }
-
- protected void createNewCommentLayout(Composite composite) {
- Section section = createSection(composite, LABEL_SECTION_NEW_COMMENT);
-
- Composite newCommentsComposite = toolkit.createComposite(section);
- newCommentsComposite.setLayout(new GridLayout());
-
- final TextViewer newCommentTextViewer = addTextEditor(repository, newCommentsComposite, getRepositoryTaskData()
- .getNewComment(), true, SWT.FLAT | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
- newCommentTextViewer.setEditable(true);
-
- GridData addCommentsTextData = new GridData(GridData.FILL_HORIZONTAL);
- addCommentsTextData.widthHint = DESCRIPTION_WIDTH;
- addCommentsTextData.heightHint = DESCRIPTION_HEIGHT;
- addCommentsTextData.grabExcessHorizontalSpace = true;
- newCommentTextViewer.getControl().setLayoutData(addCommentsTextData);
- newCommentTextViewer.getControl().setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
-
- newCommentTextViewer.getTextWidget().addModifyListener(new ModifyListener() {
-
- public void modifyText(ModifyEvent e) {
- String sel = addCommentsTextBox.getText();
- if (!(getRepositoryTaskData().getNewComment().equals(sel))) {
- getRepositoryTaskData().setNewComment(sel);
- markDirty(true);
- }
- validateInput();
- }
- });
-
- newCommentTextViewer.getTextWidget().addListener(SWT.FocusIn, new NewCommentListener());
- addCommentsTextBox = newCommentTextViewer.getTextWidget();
-
- section.setClient(newCommentsComposite);
-
- toolkit.paintBordersFor(newCommentsComposite);
-
- }
-
- /**
- * 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 createActionsLayout(Composite composite) {
- Section section = createSection(composite, LABEL_SECTION_ACTIONS);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).grab(true, true).applyTo(section);
- Composite buttonComposite = toolkit.createComposite(section);
- GridLayout buttonLayout = new GridLayout();
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP).applyTo(buttonComposite);
- buttonLayout.numColumns = 4;
- buttonComposite.setLayout(buttonLayout);
- addRadioButtons(buttonComposite);
- addActionButtons(buttonComposite);
- section.setClient(buttonComposite);
- }
-
- protected Section createSection(Composite composite, String title) {
- Section section = toolkit.createSection(composite, ExpandableComposite.TITLE_BAR | Section.TWISTIE);
- section.setText(title);
- 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);
- }
- });
- return section;
- }
-
- /**
- * 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);
- GridData submitButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- submitButton.setLayoutData(submitButtonData);
- submitButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- submitBug();
- }
- });
- submitButton.addListener(SWT.FocusIn, new GenericListener());
- RepositoryTaskData taskData = getRepositoryTaskData();
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(
- AbstractRepositoryTask.getHandle(repository.getUrl(), taskData.getId()));
- if (task != null) {
- addAttachContextButton(buttonComposite, task);
- }
-
- }
-
- /**
- * 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;
- }
-
- /**
- * 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();
- }
-
- /**
- * 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();
-
- IEditorInput input = this.getEditorInput();
- if (input instanceof ExistingBugEditorInput) {
- ExistingBugEditorInput existingInput = (ExistingBugEditorInput) input;
- AbstractRepositoryTask repositoryTask = existingInput.getRepositoryTask();
- if (repositoryTask != null) {
-
- if (getRepositoryTaskData().hasLocalChanges() == true) {
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(repositoryTask,
- getRepositoryTaskData(), false);
- }
- TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask);
- }
- }
- markDirty(false);
- if (parentEditor != null) {
- parentEditor.notifyTaskChanged();
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "bug save offline failed", true);
- }
-
- }
-
- /**
- * Refreshes any text labels in the editor that contain information that
- * might change.
- */
- protected void updateEditor() {
- setGeneralTitleText();
- }
-
- @Override
- public void setFocus() {
- form.setFocus();
- }
-
- // /**
- // * 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();
- // // }
- // getManagedForm().dirtyStateChanged();
- // }
-
- /**
- * 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(editorInput.getName());
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- saveBug();
- updateEditor();
- }
-
- @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 (IRepositoryTaskAttributeListener 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.
- */
- public class GenericListener implements Listener {
- public void handleEvent(Event event) {
- RepositoryTaskData bug = (RepositoryTaskData) getRepositoryTaskData();
- fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection(
- new RepositoryTaskSelection(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 void handleSummaryEvent() {
- String sel = summaryText.getText();
- RepositoryTaskAttribute a = getRepositoryTaskData().getAttribute(RepositoryTaskAttribute.SUMMARY);
- if (!(a.getValue().equals(sel))) {
- a.setValue(sel);
- markDirty(true);
- }
- }
-
- /*----------------------------------------------------------*
- * 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>();
-
- protected List<StyledText> commentStyleText = new ArrayList<StyledText>();
-
- /** Index into the styled texts */
- protected int textsindex = 0;
-
- protected StyledText addCommentsTextBox = null;
-
- // protected Text descriptionTextBox = null;
- protected TextViewer descriptionTextViewer = 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 TaskComment) {
- if (((TaskComment) o).getNumber() == commentNumber) {
- select(o, true);
- }
- }
- }
- }
-
- public void revealAllComments() {
- for (StyledText text : commentStyleText) {
- 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 RepositoryTaskData) {
- focusOn(null, highlight);
- }
- }
-
- // public void selectDescription() {
- // for (Object o : textHash.keySet()) {
- // if (o.equals(editorInput.getRepositoryTaskData().getDescription())) {
- // select(o, true);
- // }
- // }
- // }
-
- public void selectNewComment() {
- focusOn(addCommentsTextBox, false);
- }
-
- public void selectDescription() {
- focusOn(descriptionTextViewer.getTextWidget(), 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 RepositoryTaskOutlinePage outlinePage = null;
-
- @Override
- public Object getAdapter(Class adapter) {
- if (IContentOutlinePage.class.equals(adapter)) {
- if (outlinePage == null && editorInput != null) {
- outlinePage = new RepositoryTaskOutlinePage(taskOutlineModel);
- }
- return outlinePage;
- }
- return super.getAdapter(adapter);
- }
-
- public RepositoryTaskOutlineNode getOutlineModel() {
- return taskOutlineModel;
- }
-
- public RepositoryTaskOutlinePage getOutline() {
- return outlinePage;
- }
-
- private boolean isDisposed = false;
-
- protected Button[] radios;
-
- protected Control[] radioOptions;
-
- protected Button attachContextButton;
-
- 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 && !AbstractRepositoryTaskEditor.this.isDisposed())
- if (parentEditor != null) {
- getSite().getPage().closeEditor(parentEditor, false);
- } else {
- getSite().getPage().closeEditor(AbstractRepositoryTaskEditor.this, false);
- }
- }
- });
- }
-
- public void addAttributeListener(IRepositoryTaskAttributeListener listener) {
- attributesListeners.add(listener);
- }
-
- public void removeAttributeListener(IRepositoryTaskAttributeListener listener) {
- attributesListeners.remove(listener);
- }
-
- public void setParentEditor(MylarTaskEditor parentEditor) {
- this.parentEditor = parentEditor;
- }
-
- public RepositoryTaskOutlineNode getTaskOutlineModel() {
- return taskOutlineModel;
- }
-
- public void setTaskOutlineModel(RepositoryTaskOutlineNode taskOutlineModel) {
- this.taskOutlineModel = taskOutlineModel;
- }
-
- /**
- * 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 RepositoryTaskSelection(getRepositoryTaskData().getId(), getRepositoryTaskData()
- .getRepositoryUrl(), "New Comment", false, getRepositoryTaskData().getSummary()))));
- }
- }
-
- public Control getControl() {
- return form;
- }
-
- public void setSummaryText(String text) {
- this.summaryText.setText(text);
- handleSummaryEvent();
- }
-
- public void setDescriptionText(String text) {
- this.descriptionTextViewer.getDocument().set(text);
- }
-
- protected void addRadioButtons(Composite buttonComposite) {
- RepositoryTaskData taskData = getRepositoryTaskData();
- FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay());
- int i = 0;
- Button selected = null;
- radios = new Button[taskData.getOperations().size()];
- radioOptions = new Control[taskData.getOperations().size()];
- for (Iterator<RepositoryOperation> it = taskData.getOperations().iterator(); it.hasNext();) {
- RepositoryOperation 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 = AbstractRepositoryTaskEditor.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++;
- }
- }
- taskData.setSelectedOperation(o);
- }
-
- i++;
- }
- toolkit.paintBordersFor(buttonComposite);
- }
-
- protected void addAttachContextButton(Composite buttonComposite, ITask task) {
- // File contextFile =
- // ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
- FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay());
- toolkit.createLabel(buttonComposite, "");
- toolkit.createLabel(buttonComposite, "");
- attachContextButton = toolkit.createButton(buttonComposite, "Attach Context", SWT.CHECK);
- attachContextButton.setImage(TaskListImages.getImage(TaskListImages.CONTEXT_ATTACH));
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- data.horizontalSpan = 1;
- attachContextButton.setLayoutData(data);
- // attachContextButton.setEnabled(contextFile != null &&
- // (contextFile.exists() || task.isActive()));
- }
-
- protected void addSelfToCC(Composite composite) {
- // if they aren't already on the cc list create an add self check box
- FormToolkit toolkit = getManagedForm().getToolkit();
- final RepositoryTaskData taskData = getRepositoryTaskData();
- RepositoryTaskAttribute owner = taskData.getAttribute(RepositoryTaskAttribute.USER_ASSIGNED);
-
- if (repository.getUserName() == null) {
- return;
- }
-
- if (owner != null && owner.getValue().indexOf(repository.getUserName()) != -1) {
- return;
- }
-
- RepositoryTaskAttribute reporter = taskData.getAttribute(RepositoryTaskAttribute.USER_REPORTER);
- if (reporter != null && reporter.getValue().indexOf(repository.getUserName()) != -1) {
- return;
- }
- // Don't add addselfcc if already there
- RepositoryTaskAttribute ccAttribute = taskData.getAttribute(RepositoryTaskAttribute.USER_CC);
- if (ccAttribute != null && ccAttribute.getValues().contains(repository.getUserName())) {
- return;
- }
- toolkit.createLabel(composite, "");
- final Button addSelfButton = toolkit.createButton(composite, "Add self to CC", SWT.CHECK);
- addSelfButton.setImage(TaskListImages.getImage(TaskListImages.PERSON));
- addSelfButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (addSelfButton.getSelection()) {
- taskData.setAttributeValue(RepositoryTaskAttribute.ADD_SELF_CC, "1");
- } else {
- taskData.setAttributeValue(RepositoryTaskAttribute.ADD_SELF_CC, "0");
- }
- markDirty(true);
- }
- });
- // GridDataFactory.fillDefaults().span(2,
- // SWT.DEFAULT).applyTo(addSelfButton);
- }
-
- // // The implementation of the attach context UI is connector dependant.
- // protected boolean getAttachContext() {
- // return false;
- // }
- //
- // // The implementation of the attach context UI is connector dependant.
- // // this method is called when a user attaches a patch to the task
- // protected void setAttachContext(boolean attachContext) {
- //
- // }
-
- public boolean getAttachContext() {
- if (attachContextButton == null) {
- return false;
- }
- return attachContextButton.getSelection();
- }
-
- public void setAttachContext(boolean attachContext) {
- if (attachContextButton != null && attachContextButton.isEnabled()) {
- attachContextButton.setSelection(attachContext);
- }
- }
-
- /**
- * Class to handle the selection change of the radio buttons.
- */
- private 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);
- }
-
- RepositoryTaskData taskData = getRepositoryTaskData();
- if (e.widget == radios[i]) {
- RepositoryOperation o = taskData.getOperation(radios[i].getText());
- taskData.setSelectedOperation(o);
- AbstractRepositoryTaskEditor.this.markDirty(true);
- } else if (e.widget == radioOptions[i]) {
- RepositoryOperation o = taskData.getOperation(radios[i].getText());
- o.setOptionSelection(((CCombo) radioOptions[i]).getItem(((CCombo) radioOptions[i])
- .getSelectionIndex()));
-
- if (taskData.getSelectedOperation() != null)
- taskData.getSelectedOperation().setChecked(false);
- o.setChecked(true);
-
- taskData.setSelectedOperation(o);
- radios[i].setSelection(true);
- if (selected != null && selected != radios[i]) {
- selected.setSelection(false);
- }
- AbstractRepositoryTaskEditor.this.markDirty(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);
- }
-
- RepositoryTaskData taskData = getRepositoryTaskData();
- if (e.widget == radios[i]) {
- RepositoryOperation o = taskData.getOperation(radios[i].getText());
- taskData.setSelectedOperation(o);
- AbstractRepositoryTaskEditor.this.markDirty(true);
- } else if (e.widget == radioOptions[i]) {
- RepositoryOperation o = taskData.getOperation(radios[i].getText());
- o.setInputValue(((Text) radioOptions[i]).getText());
-
- if (taskData.getSelectedOperation() != null)
- taskData.getSelectedOperation().setChecked(false);
- o.setChecked(true);
-
- taskData.setSelectedOperation(o);
- radios[i].setSelection(true);
- if (selected != null && selected != radios[i]) {
- selected.setSelection(false);
- }
- AbstractRepositoryTaskEditor.this.markDirty(true);
- }
- }
- validateInput();
- }
- }
-}
-
-// private class DisplayableLocalAttachment extends RepositoryAttachment {
-// private static final long serialVersionUID = 900218036143022422L;
-//
-// private Date date;
-// private String description;
-// private String creator;
-// private String name;
-//
-// public String getCreator() {
-// return creator;
-// }
-// public void setCreator(String creator) {
-// this.creator = creator;
-// }
-// public Date getDateCreated() {
-// return date;
-// }
-// public void setDateCreated(Date date) {
-// this.date = date;
-// }
-// public String getDescription() {
-// return description;
-// }
-// public void setDescription(String description) {
-// this.description = description;
-// }
-// public String getName() {
-// return name;
-// }
-// public void setName(String name) {
-// this.name = name;
-// }
-// public DisplayableLocalAttachment(LocalAttachment att) {
-// super(null);
-// setName(att.getFilePath());
-// setDescription(att.getDescription());
-// setDateCreated(new Date());
-// }
-// }
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditor.java
deleted file mode 100644
index 851b5f54b..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditor.java
+++ /dev/null
@@ -1,132 +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.tasks.ui.editors;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.forms.FormColors;
-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.forms.widgets.TableWrapData;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
-import org.eclipse.ui.part.EditorPart;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- */
-public class CategoryEditor extends EditorPart {
-
- private Text url;
- private CategoryEditorInput input = null;
-
- private boolean isDirty = false;
-
- private Text description = null;
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- input.setCategoryName(description.getText());
- input.setUrl(url.getText());
- isDirty = false;
- // TODO: save the list
-// MylarTaskListPlugin.getTaskListManager().notifyListUpdated();
- firePropertyChange(PROP_DIRTY);
- }
-
- @Override
- public void doSaveAs() {
- }
-
- @SuppressWarnings("deprecation")
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- setSite(site);
- setInput(input);
- this.input = (CategoryEditorInput) input;
- setPartName(input.getName());
- setTitleToolTip(input.getToolTipText());
- }
-
- @Override
- public boolean isDirty() {
- return isDirty;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public void createPartControl(Composite parent) {
- FormToolkit toolkit = new FormToolkit(parent.getDisplay());
- ScrolledForm sform = toolkit.createScrolledForm(parent);
- sform.getBody().setLayout(new TableWrapLayout());
- Composite editorComposite = sform.getBody();
-
- createSummarySection(editorComposite, toolkit);
- }
-
- @Override
- public void setFocus() {
- }
-
- private void createSummarySection(Composite parent, FormToolkit toolkit) {
- Section summarySection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- summarySection.setText("Category Summary");
- summarySection.setLayout(new TableWrapLayout());
- summarySection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
-
- Composite summaryContainer = toolkit.createComposite(summarySection);
- summarySection.setClient(summaryContainer);
- TableWrapLayout layout = new TableWrapLayout();
- layout.numColumns = 2;
- summaryContainer.setLayout(layout);
-
- ModifyListener modifyListener = new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- markDirty();
- }
- };
-
- Label lblDescription = toolkit.createLabel(summaryContainer, "Description: ", SWT.NULL);
- lblDescription.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- description = toolkit.createText(summaryContainer, input.getCategoryName(), SWT.FLAT);
- description.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
- description.setData(FormToolkit.KEY_DRAW_BORDER);
- description.addModifyListener(modifyListener);
-
- Label lblUrl = toolkit.createLabel(summaryContainer, "URL: ", SWT.NONE);
- lblUrl.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- url = toolkit.createText(summaryContainer, input.getUrl(), SWT.FLAT);
- url.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP));
- url.addModifyListener(modifyListener);
-
- toolkit.paintBordersFor(summaryContainer);
- }
-
- private void markDirty() {
- isDirty = true;
- firePropertyChange(PROP_DIRTY);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java
deleted file mode 100644
index 83b5b81ef..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/CategoryEditorInput.java
+++ /dev/null
@@ -1,73 +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.tasks.ui.editors;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-
-/**
- * @author Ken Sueda
- */
-public class CategoryEditorInput implements IEditorInput {
-
- private AbstractTaskContainer category;
-
- public CategoryEditorInput(AbstractTaskContainer cat) {
- this.category = cat;
- }
-
- public boolean exists() {
- return true;
- }
-
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- public String getName() {
- return "Category Editor";
- }
-
- public IPersistableElement getPersistable() {
- return null;
- }
-
- public String getToolTipText() {
- return "Category Editor";
- }
-
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- public String getCategoryName() {
- return category.getDescription();
- }
-
- public String getUrl() {
- return category.getUrl();
- }
-
- public void setCategoryName(String description) {
- TasksUiPlugin.getTaskListManager().getTaskList().renameContainer(category, description);
-// category.setDescription(description);
- }
-
- public void setUrl(String url) {
- category.setUrl(url);
- TasksUiPlugin.getTaskListManager().getTaskList().notifyContainerUpdated(category);
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ContentOutlineTools.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ContentOutlineTools.java
deleted file mode 100644
index 3fda0da2d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ContentOutlineTools.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.editors;
-
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class ContentOutlineTools {
-
- /** The default string used for locally created bugs. */
- public static final String OFFLINE_SERVER_DEFAULT = "[local]";
-
- /**
- * Returns a unique handle for the bugzilla selection. Contains the bug id,
- * the bug server, and (if applicable) the comment number.
- *
- * @param taskSelection
- * The bugzilla selection.
- * @return The handle for the bugzilla selection.
- */
- public static String getHandle(IRepositoryTaskSelection taskSelection) {
- String handle = taskSelection.getServer() + ";" + taskSelection.getId();
- if (taskSelection.hasComment()) {
- int number = taskSelection.getComment().getNumber() + 1;
- handle += ";" + number;
- } else if (taskSelection.isCommentHeader()) {
- handle += ";1";
- } else if (taskSelection.isDescription()) {
- handle += ";0";
- }
- return handle;
- }
-
- public static String getName(IRepositoryTaskSelection taskSelection) {
- String name = taskSelection.getServer() + ": Bug#: " + taskSelection.getId() + ": " + taskSelection.getBugSummary();
- if (taskSelection.hasComment()) {
- name += " : Comment#: " + taskSelection.getComment().getNumber();
- } else if (taskSelection.isCommentHeader()) {
- name += " : Comment Header";
- } else if (taskSelection.isDescription()) {
- name += ": Description";
- }
- return name;
- }
-
-// public static String getHandle(RepositoryTaskData taskData) {
-// return getHandle(taskData.getRepositoryUrl(), taskData.getId());
-// }
-//
-// public static String getHandle(String server, String id) {
-// return server + ";" + id;
-// }
-
-// public static String getName(RepositoryTaskData taskData) {
-// return taskData.getRepositoryUrl() + ": Bug#: " + taskData.getId() + ": " + taskData.getSummary();
-// }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ExistingBugEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ExistingBugEditorInput.java
deleted file mode 100644
index 7de2d7e3b..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/ExistingBugEditorInput.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.editors;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * The <code>IEditorInput</code> implementation for
- * <code>ExistingBugEditor</code>.
- *
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class ExistingBugEditorInput extends AbstractBugEditorInput {
-
- protected String id;
- protected String url;
- protected AbstractRepositoryTask repositoryTask = null;
-
- // Called for existing report without a local task
- public ExistingBugEditorInput(String url, TaskRepository repository, RepositoryTaskData taskData) {
- super(repository, taskData);
- this.id = taskData.getId();
- this.url = url;
- }
-
- public ExistingBugEditorInput(TaskRepository repository, RepositoryTaskData taskData, String bugId)
- throws IOException, GeneralSecurityException {
- super(repository, taskData);
- this.id = bugId;
- // this.repository = repository;
- // this.repositoryTaskData = getOfflineTaskData(repository,
- // proxySettings, bugId);
-
- String handle = AbstractRepositoryTask.getHandle(repository.getUrl(), bugId);
- ITask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(handle);
- if (task != null && task instanceof AbstractRepositoryTask) {
- this.repositoryTask = (AbstractRepositoryTask) task;
- }
- }
-
- public AbstractRepositoryTask getRepositoryTask() {
- return repositoryTask;
- }
-
- // // TODO: move?
- // private RepositoryTaskData getOfflineTaskData(final TaskRepository
- // repository, Proxy proxySettings, final int id)
- // throws IOException, GeneralSecurityException {
- // RepositoryTaskData result = null;
- // // Look among the offline reports for a bug with the given id.
- // OfflineTaskManager reportsFile =
- // MylarTaskListPlugin.getDefault().getOfflineReportsFile();
- // if (reportsFile != null) {
- // int offlineId = reportsFile.find(repository.getUrl(), id);
- // // If an offline bug was found, return it if possible.
- // if (offlineId != -1) {
- // RepositoryTaskData bug = reportsFile.elements().get(offlineId);
- // if (bug instanceof RepositoryTaskData) {
- // result = (RepositoryTaskData) bug;
- // }
- // }
- // }
- // return result;
- // }
-
- public String getName() {
- if(repositoryTaskData != null && repositoryTaskData.getLabel() != null) {
- return repositoryTaskData.getLabel();
- } else if(id != null){
- return id;
- } else {
- return "<unknown>";
- }
- }
-
- /**
- * @return The id of the bug for this editor input.
- */
- public String getId() {
- return id;
- }
-
-
- @Override
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + ((repositoryTask == null) ? 0 : repositoryTask.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 ExistingBugEditorInput other = (ExistingBugEditorInput) obj;
- if (repositoryTask == null) {
- if (other.repositoryTask != null) {
- return false;
- } else if(other.getId() != this.getId()) {
- return false;
- }
- } else if (!repositoryTask.equals(other.repositoryTask))
- return false;
- return true;
- }
-
-
- /**
- * @return url for the repositoryTask/hit. Used by MylarTaskEditor when opening browser
- */
- public String getUrl() {
- return url;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/IRepositoryTaskSelection.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/IRepositoryTaskSelection.java
deleted file mode 100644
index 9bd8531d6..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/IRepositoryTaskSelection.java
+++ /dev/null
@@ -1,86 +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.tasks.ui.editors;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.mylar.tasks.core.TaskComment;
-
-public interface IRepositoryTaskSelection extends ISelection {
-
- /**
- * @return <code>true</code> if a comment was selected.
- */
- public boolean hasComment();
-
- /**
- * @return the <code>Comment</code> object for this selection, or
- * <code>null</code> if a comment was not selected.
- */
- public TaskComment getComment();
-
- /**
- * Sets the <code>Comment</code> object for this selection. If a comment
- * was not selected, then this should be <code>null</code>.
- *
- * @param taskComment
- * The selection's comment, or <code>null</code> if not
- * applicable.
- */
- public void setComment(TaskComment taskComment);
-
- /**
- * @return The contents of the selection. This can be <code>null</code>.
- */
- public String getContents();
-
- /**
- * Sets the contents of the selection.
- *
- * @param contents
- * The selection.
- */
- public void setContents(String contents);
-
- /**
- * @return The id of the Bugzilla object that the selection was on.
- */
- public String getId();
-
- /**
- * Sets the id of the Bugzilla object that the selection was on.
- *
- * @param id
- * The id of the bug.
- */
- public void setId(String id);
-
- /**
- * @return The server of the Bugzilla object that the selection was on, or
- * <code>null</code> if no server is supplied.
- */
- public String getServer();
-
- /**
- * Sets the server of the Bugzilla object that the selection was on.
- *
- * @param server
- * The server of the bug.
- */
- public void setServer(String server);
-
- public boolean isCommentHeader();
-
- public boolean isDescription();
-
- public String getBugSummary();
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/MylarTaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/MylarTaskEditor.java
deleted file mode 100644
index a5289fd8c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/MylarTaskEditor.java
+++ /dev/null
@@ -1,456 +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.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.ITaskEditorFactory;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.editor.IFormPage;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-/**
- * @author Mik Kersten
- * @author Eric Booth (initial prototype)
- */
-public class MylarTaskEditor extends FormEditor {
-
- // private static final String TASK_INFO_PAGE_LABEL = "Planning";
-
- private static final String ISSUE_WEB_PAGE_LABEL = "Browser";
-
- protected ITask task;
-
- private TaskPlanningEditor taskPlanningEditor;
-
- private Browser webBrowser;
-
- private TaskEditorInput taskEditorInput;
-
- private TaskEditorListener partListener;
-
- private List<IEditorPart> editors = new ArrayList<IEditorPart>();
-
- private Menu contextMenu;
-
- private IEditorPart contentOutlineProvider = null;
-
- private int browserPageIndex;
-
- public MylarTaskEditor() {
- super();
- taskPlanningEditor = new TaskPlanningEditor(this);
- taskPlanningEditor.setParentEditor(this);
- }
-
- protected void contextMenuAboutToShow(IMenuManager manager) {
- TaskEditorActionContributor contributor = getContributor();
- // IFormPage page = getActivePageInstance();
- if (contributor != null)
- contributor.contextMenuAboutToShow(manager);
- }
-
- public TaskEditorActionContributor getContributor() {
- return (TaskEditorActionContributor) getEditorSite().getActionBarContributor();
- }
-
- @Override
- public Object getAdapter(Class adapter) {
- // TODO: consider adding: IContentOutlinePage.class.equals(adapter) &&
- if (contentOutlineProvider != null) {
- return contentOutlineProvider.getAdapter(adapter);
- } else {
- return super.getAdapter(adapter);
- }
- }
-
- public IEditorPart getActiveEditor() {
- return super.getActiveEditor();
- }
-
- private int createBrowserPage(String url) {
- if (!TasksUiPlugin.getDefault().getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.REPORT_DISABLE_INTERNAL)) {
- try {
- webBrowser = new Browser(getContainer(), SWT.NONE);
- int index = addPage(webBrowser);
- setPageText(index, ISSUE_WEB_PAGE_LABEL);
- webBrowser.setUrl(url);
-
- boolean openWithBrowser = TasksUiPlugin.getDefault().getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.REPORT_OPEN_INTERNAL);
- // if (!(task instanceof AbstractRepositoryTask) ||
- // openWithBrowser) {
- if (openWithBrowser) {
- setActivePage(index);
- }
- return index;
- } catch (SWTError e) {
- MylarStatusHandler.fail(e, "Could not create Browser page: " + e.getMessage(), true);
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not create issue report page", false);
- }
- }
- return 0;
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- // commitFormPages(true);
- // editorDirtyStateChanged();
-
- for (IFormPage page : getPages()) {
- if (page.isDirty()) {
- page.doSave(monitor);
- }
- }
-
- editorDirtyStateChanged();
-
- // for (IEditorPart editor : editors) {
- // if (editor.isDirty())
- // editor.doSave(monitor);
- // }
- //
- // if (webBrowser != null) {
- // webBrowser.setUrl(task.getUrl());
- // } else if (hasValidUrl()) {
- // createBrowserPage();
- // }
- }
-
- // see PDEFormEditor
- /* package */@SuppressWarnings("unchecked")
- IFormPage[] getPages() {
- ArrayList formPages = new ArrayList();
- for (int i = 0; i < pages.size(); i++) {
- Object page = pages.get(i);
- if (page instanceof IFormPage)
- formPages.add(page);
- }
- return (IFormPage[]) formPages.toArray(new IFormPage[formPages.size()]);
- }
-
- /**
- * HACK: perform real check
- */
- private String getUrl() {
- String url = null;
- if(getEditorInput() instanceof ExistingBugEditorInput) {
- url = ((ExistingBugEditorInput)getEditorInput()).getUrl();
- } else if(task != null && task.getUrl().length() > 9){
- url = task.getUrl();
- }
- return url;
- }
-
- /**
- * Saves the multi-page editor's document as another file. Also updates the
- * text for page 0's tab, and updates this multi-page editor's input to
- * correspond to the nested editor's.
- *
- * @see org.eclipse.ui.ISaveablePart#doSaveAs()
- */
- @Override
- public void doSaveAs() {
- IEditorPart editor = getEditor(0);
- if (editor != null) {
- editor.doSaveAs();
- setPageText(0, editor.getTitle());
- setInput(editor.getEditorInput());
- }
- }
-
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-
- partListener = new TaskEditorListener();
- site.getPage().addPartListener(partListener);
- super.init(site, input);
-
- // taskEditorInput = (TaskEditorInput) input;
- setSite(site);
- // // selectionProvider = new TaskEditorSelectionProvider(this);
- // // site.setSelectionProvider(selectionProvider);
- //
- // /*
- // * The task data is saved only once, at the initialization of the
- // * editor. This is then passed to each of the child editors. This way,
- // * only one instance of the task data is stored for each editor
- // opened.
- // */
- // task = taskEditorInput.getTask();
- //
- // try {
- // // taskPlanningEditor.init(this.getEditorSite(),
- // // this.getEditorInput());
- // // taskPlanningEditor.setTask(task);
- // // Set the title on the editor's tab
- // this.setPartName(taskEditorInput.getLabel());
- // } catch (Exception e) {
- // throw new PartInitException(e.getMessage());
- // }
- }
-
- public void notifyTaskChanged() {
- TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task);
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- // public boolean isDirty() {
- // fLastDirtyState = computeDirtyState();
- // return fLastDirtyState;
- // }
-
- // private boolean computeDirtyState() {
- // IFormPage page = getActivePageInstance();
- // if (page != null && page.isDirty())
- // return true;
- // return super.isDirty();
- // }
-
- @Override
- public boolean isDirty() {
- for (IFormPage page : getPages()) {
- if (page.isDirty()) {
- return true;
- }
- }
- return false;
- }
-
- private class TaskEditorListener implements IPartListener {
-
- public void partActivated(IWorkbenchPart part) {
- if (part.equals(MylarTaskEditor.this)) {
- if (taskEditorInput != null) {
- ITask task = taskEditorInput.getTask();
- if (TaskListView.getFromActivePerspective() != null) {
- TaskListView.getFromActivePerspective().selectedAndFocusTask(task);
- }
- }
- }
- }
-
- /**
- * @see org.eclipse.ui.IPartListener#partBroughtToTop(org.eclipse.ui.IWorkbenchPart)
- */
- public void partBroughtToTop(IWorkbenchPart part) {
- // don't care about this event
- }
-
- /**
- * @see org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart)
- */
- public void partClosed(IWorkbenchPart part) {
- // don't care about this event
- }
-
- /**
- * @see org.eclipse.ui.IPartListener#partDeactivated(org.eclipse.ui.IWorkbenchPart)
- */
- public void partDeactivated(IWorkbenchPart part) {
- // don't care about this event
- }
-
- /**
- * @see org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart)
- */
- public void partOpened(IWorkbenchPart part) {
- // don't care about this event
- }
- }
-
- /**
- * Updates the tab titile
- */
- public void changeTitle() {
- this.setPartName(taskEditorInput.getLabel());
- }
-
- public void markDirty() {
- firePropertyChange(PROP_DIRTY);
- return;
- }
-
- @Override
- public void setFocus() {
- // taskInfoEditor.setFocus();
- }
-
- public Browser getWebBrowser() {
- return webBrowser;
- }
-
- public void revealBrowser() {
- setActivePage(browserPageIndex);
- }
-
- public void displayInBrowser(String url) {
- webBrowser.setUrl(url);
- revealBrowser();
- }
-
- @Override
- protected void pageChange(int newPageIndex) {
- for (ITaskEditorFactory factory : TasksUiPlugin.getDefault().getTaskEditorFactories()) {
- for (IEditorPart editor : editors) {
- factory.notifyEditorActivationChange(editor);
- }
- }
- super.pageChange(newPageIndex);
- }
-
- public void dispose() {
- for (IEditorPart part : editors) {
- part.dispose();
- }
- if (taskPlanningEditor != null)
- taskPlanningEditor.dispose();
- if (webBrowser != null) {
- webBrowser.dispose();
- }
-
- IWorkbench workbench = TasksUiPlugin.getDefault().getWorkbench();
- if (workbench != null && partListener != null) {
- for (IWorkbenchWindow window : workbench.getWorkbenchWindows()) {
- IWorkbenchPage activePage = window.getActivePage();
- if (activePage != null) {
- activePage.removePartListener(partListener);
- }
- }
- }
- super.dispose();
- }
-
- public TaskEditorInput getTaskEditorInput() {
- return taskEditorInput;
- }
-
- @Override
- protected void addPages() {
- try {
- MenuManager manager = new MenuManager();
- IMenuListener listener = new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- contextMenuAboutToShow(manager);
- }
- };
- manager.setRemoveAllWhenShown(true);
- manager.addMenuListener(listener);
- contextMenu = manager.createContextMenu(getContainer());
- getContainer().setMenu(contextMenu);
- int index = -1;
- if (getEditorInput() instanceof TaskEditorInput) {
- addPage(taskPlanningEditor);
- index++;
- taskEditorInput = (TaskEditorInput) getEditorInput();
- task = taskEditorInput.getTask();
- setPartName(taskEditorInput.getLabel());
- }
-
- int selectedIndex = index;
- for (ITaskEditorFactory factory : TasksUiPlugin.getDefault().getTaskEditorFactories()) {
- if ((task != null && factory.canCreateEditorFor(task)) || factory.canCreateEditorFor(getEditorInput())) {
- try {
- IEditorPart editor = factory.createEditor(this);
- IEditorInput input = task != null ? factory.createEditorInput(task) : getEditorInput();
- if (editor != null && input != null) {
- if (editor instanceof AbstractRepositoryTaskEditor) {
- TaskFormPage repositoryTaskEditor = (TaskFormPage) editor;
- // repositoryTaskEditor.setParentEditor(this);
- editor.init(getEditorSite(), input);
- repositoryTaskEditor.createPartControl(getContainer());
- index = addPage(repositoryTaskEditor);
- if(getEditorInput() instanceof ExistingBugEditorInput) {
- ExistingBugEditorInput existingInput = (ExistingBugEditorInput)getEditorInput();
- setPartName(existingInput.getId()+": "+existingInput.getName());
- }
- } else {
- index = addPage(editor, input);
- }
- selectedIndex = index;
- setPageText(index++, factory.getTitle());
- }
-
- // HACK: overwrites if multiple present
- if (factory.providesOutline()) {
- contentOutlineProvider = editor;
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not create editor via factory: " + factory, true);
- }
- }
- }
- String urlToOpen = getUrl();
- if (urlToOpen != null && !urlToOpen.equals("")) {
- browserPageIndex = createBrowserPage(urlToOpen);
- if (selectedIndex == 0 && taskEditorInput != null && !taskEditorInput.isNewTask()) {
- selectedIndex = browserPageIndex;
- }
- }
- setActivePage(selectedIndex);
-
- if (task instanceof AbstractRepositoryTask) {
- setTitleImage(TaskListImages.getImage(TaskListImages.TASK_REPOSITORY));
- } else if(getEditorInput() instanceof AbstractBugEditorInput) {
- this.setTitleImage(TaskListImages.getImage(TaskListImages.TASK_REMOTE));
- } else if (getUrl() != null) {
- setTitleImage(TaskListImages.getImage(TaskListImages.TASK_WEB));
- }
- } catch (PartInitException e) {
- MylarStatusHandler.fail(e, "failed to create task editor pages", false);
- }
- }
-
- protected FormToolkit createToolkit(Display display) {
- // Create a toolkit that shares colors between editors.
- return new FormToolkit(PlatformUI.getWorkbench().getDisplay());
- }
-
- public ISelection getSelection() {
- return getSite().getSelectionProvider().getSelection();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryAttachmentEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryAttachmentEditorInput.java
deleted file mode 100644
index a226c6ce1..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryAttachmentEditorInput.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.editors;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.IStorageEditorInput;
-
-/**
- * @author Jeff Pound
- */
-public class RepositoryAttachmentEditorInput extends PlatformObject implements IStorageEditorInput {
-
- private RepositoryAttachment attachment;
- private RepositoryAttachmentStorage storage;
-
- public RepositoryAttachmentEditorInput(RepositoryAttachment att) {
- this.attachment = att;
- this.storage = new RepositoryAttachmentStorage();
- }
-
- public IStorage getStorage() throws CoreException {
- return storage;
- }
-
- public boolean exists() {
- return true;
- }
-
- public ImageDescriptor getImageDescriptor() {
- // ignore
- return null;
- }
-
- public String getName() {
- return storage.getName();
- }
-
- public IPersistableElement getPersistable() {
- return null;
- }
-
- public String getToolTipText() {
- return "Repository Attachment: " + attachment.getId() + " [" + attachment.getUrl() + "]";
- }
-
- class RepositoryAttachmentStorage extends PlatformObject implements IStorage {
-
- private static final String ATTR_FILENAME = "filename";
-
- private static final String ATTACHMENT_DEFAULT_NAME = "attachment";
-
- private static final String CTYPE_ZIP = "zip";
-
- private static final String CTYPE_OCTET_STREAM = "octet-stream";
-
- private static final String CTYPE_TEXT = "text";
-
- private static final String CTYPE_HTML = "html";
-
-
- public InputStream getContents() throws CoreException {
- URLConnection urlConnect;
- InputStream stream = null;
- try {
- urlConnect = (new URL(attachment.getUrl())).openConnection();
- urlConnect.connect();
- stream = urlConnect.getInputStream();
-
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return stream;
- }
-
- public IPath getFullPath() {
- // ignore
- return null;
- }
-
- public String getName() {
- String name = attachment.getAttributeValue(ATTR_FILENAME);
-
- // if no filename is set, make one up with the proper extension so
- // we can support opening in that filetype's default editor
- if (name == null || "".equals(name)) {
- String ctype = attachment.getContentType();
- if (ctype.endsWith(CTYPE_HTML)) {
- name = ATTACHMENT_DEFAULT_NAME + ".html";
- } else if (ctype.startsWith(CTYPE_TEXT)) {
- name = ATTACHMENT_DEFAULT_NAME + ".txt";
- } else if (ctype.endsWith(CTYPE_OCTET_STREAM)) {
- name = ATTACHMENT_DEFAULT_NAME;
- } else if (ctype.endsWith(CTYPE_ZIP)) {
- name = ATTACHMENT_DEFAULT_NAME + "." + CTYPE_ZIP;
- } else {
- name = ATTACHMENT_DEFAULT_NAME + "." + ctype.substring(ctype.indexOf("/") + 1);
- }
- }
- // treat .patch files as text files
- if (name.endsWith(".patch")) {
- name += ".txt";
- }
-
- return name;
- }
-
- public boolean isReadOnly() {
- return true;
- }
-
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlineNode.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlineNode.java
deleted file mode 100644
index 7460eedd8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlineNode.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-
-/**
- * A node for the tree in the <code>RepositoryTaskOutlinePage</code>.
- *
- * @author Mik Kersten (hardening of prototype)
- */
-public class RepositoryTaskOutlineNode implements IRepositoryTaskSelection {
-
- static final String LABEL_DESCRIPTION = "Description";
-
- static final String LABEL_COMMENTS = "Comments";
-
- static final String LABEL_NEW_COMMENT = "New Comment";
-
- /** The id of the Bugzilla object that the selection was on. */
- protected String id;
-
- /** The server of the Bugzilla object that the selection was on. */
- protected String server;
-
- /** The label for this piece of data. */
- private String key;
-
- /** The children of this node. */
- private ArrayList<RepositoryTaskOutlineNode> nodeChildren;
-
- /** The parent of this node or null if it is the bug report */
- private RepositoryTaskOutlineNode parent;
-
- private Object data = null;
-
- private String bugSummary;
-
- private boolean fromEditor = false;
-
- private boolean isCommentHeader = false;
-
- private boolean isDescription = false;
-
- /**
- * Creates a new <code>RepositoryTaskOutlineNode</code>.
- *
- * @param id
- * The id of the bug this outline is for.
- * @param server
- * The server of the bug this outline is for.
- * @param key
- * The label for this node.
- * @param image
- * The image that will be displayed by this node in the tree.
- * @param data
- * The data, if necessary, this node represents.
- * @param parent
- * The parent of this node
- */
- public RepositoryTaskOutlineNode(String id, String server, String key, Object data, String summary) {
- this.id = id;
- this.server = server;
- this.key = key;
- this.nodeChildren = null;
- this.data = data;
- this.parent = null;
- this.bugSummary = summary;
- }
-
- public boolean isFromEditor() {
- return fromEditor;
- }
-
- /**
- * @return The children of this node, represented as an <code>Object</code>
- * array.
- */
- public RepositoryTaskOutlineNode[] getChildren() {
- return (nodeChildren == null) ? new RepositoryTaskOutlineNode[0] : nodeChildren
- .toArray(new RepositoryTaskOutlineNode[nodeChildren.size()]);
- }
-
- /**
- * Adds a node to this node's list of children.
- *
- * @param bugNode
- * The new child.
- */
- public void addChild(RepositoryTaskOutlineNode bugNode) {
- if (nodeChildren == null) {
- nodeChildren = new ArrayList<RepositoryTaskOutlineNode>();
- }
- bugNode.setParent(this);
- nodeChildren.add(bugNode);
- }
-
- /**
- * @return The label of this node.
- */
- public String getKey() {
- return key;
- }
-
- /**
- * @return <code>true</code> if the given object is another node
- * representing the same piece of data in the editor.
- */
- @Override
- public boolean equals(Object arg0) {
- if (arg0 instanceof RepositoryTaskOutlineNode) {
- RepositoryTaskOutlineNode bugNode = (RepositoryTaskOutlineNode) arg0;
- return getKey().equals(bugNode.getKey());
- }
- return super.equals(arg0);
- }
-
- @Override
- public int hashCode() {
- return getKey().hashCode();
- }
-
- /**
- * @return The name of this node.
- */
- public String getName() {
- return getKey();
- }
-
- /**
- * @return The data (where applicable) this node represents.
- */
- public Object getData() {
- return data;
- }
-
- /**
- * Sets the data that this node represents.
- *
- * @param data
- * The new piece of data.
- */
- public void setData(Object data) {
- this.data = data;
- }
-
- /**
- * Parses the given <code>IBugzillaBug</code> into a tree of
- * <code>RepositoryTaskOutlineNode</code>'s suitable for use in the
- * <code>RepositoryTaskOutlinePage</code> view.
- *
- * @param bug
- * The bug that needs parsing.
- * @return The tree of <code>RepositoryTaskOutlineNode</code>'s.
- */
- public static RepositoryTaskOutlineNode parseBugReport(RepositoryTaskData bug, boolean hasNewComment) {
- // Choose the appropriate parsing function based on
- // the type of IBugzillaBug.
- // if (bug instanceof NewBugzillaReport) {
- // return parseNewBugReport((NewBugzillaReport) bug);
- // } else
- if (bug instanceof RepositoryTaskData) {
- return parseExistingBugReport((RepositoryTaskData) bug, hasNewComment);
- } else {
- return null;
- }
- }
-
- public static RepositoryTaskOutlineNode parseBugReport(RepositoryTaskData bug) {
- return parseBugReport(bug, true);
- }
-
-// /**
-// * Parses the given <code>NewBugModel</code> into a tree of
-// * <code>RepositoryTaskOutlineNode</code>'s suitable for use in the
-// * <code>RepositoryTaskOutlinePage</code> view.
-// *
-// * @param bug
-// * The <code>NewBugModel</code> that needs parsing.
-// * @return The tree of <code>RepositoryTaskOutlineNode</code>'s.
-// */
-// protected static RepositoryTaskOutlineNode parseNewBugReport(NewBugzillaReport bug) {
-// int bugId = bug.getId();
-// String bugServer = bug.getRepositoryUrl();
-// Image bugImage = BugzillaImages.getImage(BugzillaImages.BUG);
-// Image defaultImage = BugzillaImages.getImage(BugzillaImages.BUG_COMMENT);
-// RepositoryTaskOutlineNode topNode = new RepositoryTaskOutlineNode(bugId, bugServer, bug.getLabel(), bugImage, bug, bug
-// .getSummary());
-//
-// topNode.addChild(new RepositoryTaskOutlineNode(bugId, bugServer, "New Description", defaultImage, null, bug
-// .getSummary()));
-//
-// RepositoryTaskOutlineNode titleNode = new RepositoryTaskOutlineNode(bugId, bugServer, "NewBugModel Object", defaultImage,
-// null, bug.getSummary());
-// titleNode.addChild(topNode);
-//
-// return titleNode;
-// }
-
- /**
- * Parses the given <code>BugReport</code> into a tree of
- * <code>RepositoryTaskOutlineNode</code>'s suitable for use in the
- * <code>RepositoryTaskOutlinePage</code> view.
- *
- * @param bug
- * The <code>BugReport</code> that needs parsing.
- * @return The tree of <code>RepositoryTaskOutlineNode</code>'s.
- */
- protected static RepositoryTaskOutlineNode parseExistingBugReport(RepositoryTaskData bug, boolean hasNewComment) {
-
- String bugId = bug.getId();
- String bugServer = bug.getRepositoryUrl();
- RepositoryTaskOutlineNode topNode = new RepositoryTaskOutlineNode(bugId, bugServer, bug.getLabel(), bug, bug
- .getSummary());
-
- RepositoryTaskOutlineNode desc = new RepositoryTaskOutlineNode(bugId, bugServer, LABEL_DESCRIPTION, bug
- .getDescription(), bug.getSummary());
- desc.setIsDescription(true);
-
- topNode.addChild(desc);
-
- RepositoryTaskOutlineNode comments = null;
- for (Iterator<TaskComment> iter = bug.getComments().iterator(); iter.hasNext();) {
- TaskComment taskComment = iter.next();
- // first comment is the bug description
- if(taskComment.getNumber() == 0) continue;
- if (comments == null) {
- comments = new RepositoryTaskOutlineNode(bugId, bugServer, LABEL_COMMENTS, taskComment, bug
- .getSummary());
- comments.setIsCommentHeader(true);
- }
- comments.addChild(new RepositoryTaskOutlineNode(bugId, bugServer, taskComment.getCreated(),
- taskComment, bug.getSummary()));
- }
- if (comments != null) {
- topNode.addChild(comments);
- }
-
- if (hasNewComment) {
- topNode
- .addChild(new RepositoryTaskOutlineNode(bugId, bugServer, LABEL_NEW_COMMENT, null, bug.getSummary()));
- }
-
- RepositoryTaskOutlineNode titleNode = new RepositoryTaskOutlineNode(bugId, bugServer, "BugReport Object",
- null, bug.getSummary());
- titleNode.addChild(topNode);
-
- return titleNode;
- }
-
- public boolean hasComment() {
- // If the comment category was selected, then the comment object is
- // not the intended selection (it is just used to help find the correct
- // location in the editor).
- return (data instanceof TaskComment) && !(key.toLowerCase().equals("comments"));
- }
-
- public TaskComment getComment() {
- return (hasComment()) ? (TaskComment) data : null;
- }
-
- public void setComment(TaskComment taskComment) {
- data = taskComment;
- }
-
- public String getContents() {
- return key;
- }
-
- public void setContents(String contents) {
- key = contents;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getServer() {
- return server;
- }
-
- public void setServer(String server) {
- this.server = server;
- }
-
- public boolean isEmpty() {
- return (server == null) || ((getContents() == null) && (getComment() == null));
- }
-
- public RepositoryTaskOutlineNode getParent() {
- return parent;
- }
-
- public void setParent(RepositoryTaskOutlineNode parent) {
- this.parent = parent;
- }
-
- public boolean isCommentHeader() {
- return isCommentHeader;
- }
-
- public boolean isDescription() {
- return isDescription;
- }
-
- public void setIsCommentHeader(boolean isCommentHeader) {
- this.isCommentHeader = isCommentHeader;
- }
-
- public void setIsDescription(boolean isDescription) {
- this.isDescription = isDescription;
- }
-
- public String getBugSummary() {
- return bugSummary;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlinePage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlinePage.java
deleted file mode 100644
index 177634047..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskOutlinePage.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.editors;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
-
-/**
- * An outline page for a <code>BugEditor</code>.
- */
-public class RepositoryTaskOutlinePage extends ContentOutlinePage {
-
- private RepositoryTaskOutlineNode topTreeNode;
-
- protected final ISelectionListener selectionListener = new ISelectionListener() {
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- if ((part instanceof AbstractRepositoryTaskEditor) && (selection instanceof IStructuredSelection)) {
- if (((IStructuredSelection) selection).getFirstElement() instanceof IRepositoryTaskSelection) {
- if (((IStructuredSelection) getSelection()).getFirstElement() instanceof IRepositoryTaskSelection) {
- IRepositoryTaskSelection brs1 = (IRepositoryTaskSelection) ((IStructuredSelection) getSelection())
- .getFirstElement();
- IRepositoryTaskSelection brs2 = ((IRepositoryTaskSelection) ((IStructuredSelection) selection)
- .getFirstElement());
- if (ContentOutlineTools.getHandle(brs1).compareTo(ContentOutlineTools.getHandle(brs2)) == 0) {
- // don't need to make a selection for the same
- // element
- return;
- }
- }
- getTreeViewer().setSelection(selection, true);
- }
- }
- }
- };
-
- private TreeViewer viewer;
-
- /**
- * Creates a new <code>RepositoryTaskOutlinePage</code>.
- *
- * @param topTreeNode
- * The top data node of the tree for this view.
- * @param editor
- * The editor this outline page is for.
- */
- public RepositoryTaskOutlinePage(RepositoryTaskOutlineNode topTreeNode) {
- super();
- this.topTreeNode = topTreeNode;
- }
-
- @Override
- public void createControl(Composite parent) {
- super.createControl(parent);
- viewer = getTreeViewer();
- viewer.setContentProvider(new BugTaskOutlineContentProvider());
- viewer.setLabelProvider(new LabelProvider() {
- @Override
- public Image getImage(Object element) {
- if (element instanceof RepositoryTaskOutlineNode) {
- RepositoryTaskOutlineNode node = (RepositoryTaskOutlineNode) element;
-
- if (RepositoryTaskOutlineNode.LABEL_COMMENTS.equals(node.getContents())||
- RepositoryTaskOutlineNode.LABEL_NEW_COMMENT.equals(node.getContents())) {
- return TaskListImages.getImage(TaskListImages.COMMENT);
- } if (RepositoryTaskOutlineNode.LABEL_DESCRIPTION.equals(node.getContents())) {
- return TaskListImages.getImage(TaskListImages.TASK_NOTES);
- } else if (node.getComment() != null) {
- return TaskListImages.getImage(TaskListImages.PERSON);
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_REPOSITORY);
- }
- } else {
- return super.getImage(element);
- }
- }
-
- @Override
- public String getText(Object element) {
- if (element instanceof RepositoryTaskOutlineNode) {
- RepositoryTaskOutlineNode node = (RepositoryTaskOutlineNode) element;
- if (node.getComment() != null) {
- return node.getComment().getAuthorName() + " (" + node.getName() + ")";
- } else {
- return node.getName();
- }
- }
- return super.getText(element);
- }
- });
- try {
- viewer.setInput(topTreeNode);
- viewer.setComparer(new RepositoryTaskOutlineComparer());
- viewer.expandAll();
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "could not create bugzilla outline", true);
- }
- getSite().getPage().addSelectionListener(selectionListener);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- getSite().getPage().removeSelectionListener(selectionListener);
- }
-
- public TreeViewer getOutlineTreeViewer() {
- return viewer;
- }
-
- /**
- * A content provider for the tree for this view.
- *
- * @see ITreeContentProvider
- */
- protected static class BugTaskOutlineContentProvider implements ITreeContentProvider {
-
- public Object[] getChildren(Object parentElement) {
- if (parentElement instanceof RepositoryTaskOutlineNode) {
- Object[] children = ((RepositoryTaskOutlineNode) parentElement).getChildren();
- if (children.length > 0) {
- return children;
- }
- }
- return new Object[0];
- }
-
- public Object getParent(Object element) {
- return null;
- }
-
- public boolean hasChildren(Object element) {
- if (element instanceof RepositoryTaskOutlineNode) {
- return ((RepositoryTaskOutlineNode) element).getChildren().length > 0;
- }
- return false;
- }
-
- public Object[] getElements(Object inputElement) {
- if (inputElement instanceof RepositoryTaskOutlineNode) {
- Object[] children = ((RepositoryTaskOutlineNode) inputElement).getChildren();
- if (children.length > 0) {
- return children;
- }
- }
- return new Object[0];
- }
-
- public void dispose() {
- // don't care when we are disposed
- }
-
- public void inputChanged(Viewer viewerChanged, Object oldInput, Object newInput) {
- // don't care when the input changes
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskSelection.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskSelection.java
deleted file mode 100644
index 266144427..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTaskSelection.java
+++ /dev/null
@@ -1,171 +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.tasks.ui.editors;
-
-import org.eclipse.mylar.tasks.core.TaskComment;
-
-/**
- * A selection of an element in a view.
- */
-public class RepositoryTaskSelection implements IRepositoryTaskSelection {
-
- /**
- * The id of the Bugzilla object that the selection was on.
- */
- protected String id;
-
- /** The server of the Bugzilla object that the selection was on. */
- protected String server;
-
- /** The contents of the selection. */
- protected String contents;
-
- protected String bugSummary;
-
- /**
- * The comment, if a comment was selected. If the selection was not a
- * comment, then this is <code>null</code>.
- */
- protected TaskComment taskComment;
-
- /**
- * Creates a new <code>RepositoryTaskSelection</code> with no supplied
- * contents or comment.
- *
- * @param id
- * The id of the Bugzilla object that the selection was on.
- * @param server
- * The server of the Bugzilla object that the selection was on.
- */
- public RepositoryTaskSelection(String id, String server, String summary) {
- this(id, server, null, null, summary);
- }
-
- /**
- * Creates a new <code>RepositoryTaskSelection</code> with no supplied
- * comment.
- *
- * @param id
- * The id of the Bugzilla object that the selection was on.
- * @param server
- * The server of the Bugzilla object that the selection was on.
- * @param contents
- * The contents of the selection.
- */
- public RepositoryTaskSelection(String id, String server, String contents, boolean isDescription, String summary) {
- this(id, server, contents, null, summary);
- this.isDescription = isDescription;
- }
-
- /**
- * Creates a new <code>RepositoryTaskSelection</code> with no supplied
- * contents.
- *
- * @param id
- * The id of the Bugzilla object that the selection was on.
- * @param server
- * The server of the Bugzilla object that the selection was on.
- * @param taskComment
- * The <code>Comment</code> object for this selection. If a
- * comment was not selected, then this should be
- * <code>null</code>.
- */
- public RepositoryTaskSelection(String id, String server, TaskComment taskComment, String summary) {
- this(id, server, null, taskComment, summary);
- }
-
- /**
- * Creates a new <code>RepositoryTaskSelection</code>.
- *
- * @param id
- * The id of the Bugzilla object that the selection was on.
- * @param server
- * The server of the Bugzilla object that the selection was on.
- * @param contents
- * The contents of the selection.
- * @param taskComment
- * The <code>Comment</code> object for this selection. If a
- * comment was not selected, then this should be
- * <code>null</code>.
- */
- public RepositoryTaskSelection(String id, String server, String contents, TaskComment taskComment, String summary) {
- this.id = id;
- this.server = server;
- this.contents = contents;
- this.taskComment = taskComment;
- this.bugSummary = summary;
- }
-
- public boolean hasComment() {
- return taskComment != null;
- }
-
- public TaskComment getComment() {
- return taskComment;
- }
-
- public void setComment(TaskComment taskComment) {
- this.taskComment = taskComment;
- }
-
- public String getContents() {
- return contents;
- }
-
- public void setContents(String contents) {
- this.contents = contents;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getServer() {
- return server;
- }
-
- public void setServer(String server) {
- this.server = server;
- }
-
- public boolean isEmpty() {
- return (server == null) || ((contents == null) && (taskComment == null));
- }
-
- private boolean isCommentHeader = false;
-
- private boolean isDescription = false;
-
- public boolean isCommentHeader() {
- return isCommentHeader;
- }
-
- public boolean isDescription() {
- return isDescription;
- }
-
- public void setIsCommentHeader(boolean isCommentHeader) {
- this.isCommentHeader = isCommentHeader;
- }
-
- public void setIsDescription(boolean isDescription) {
- this.isDescription = isDescription;
- }
-
- public String getBugSummary() {
- return bugSummary;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewer.java
deleted file mode 100644
index daa36a311..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryTextViewer.java
+++ /dev/null
@@ -1,58 +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.tasks.ui.editors;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.source.IOverviewRuler;
-import org.eclipse.jface.text.source.IVerticalRuler;
-import org.eclipse.jface.text.source.SourceViewer;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * @author Rob Elves
- */
-public class RepositoryTextViewer extends SourceViewer {
-
- private TaskRepository repository;
-
- public RepositoryTextViewer(IVerticalRuler vertRuler, IOverviewRuler overRuler, TaskRepository repository,
- Composite composite, int style) {
- super(composite, vertRuler, overRuler, true, style);
-
- this.repository = repository;
-
- }
-
- public RepositoryTextViewer(TaskRepository repository, Composite composite, int style) {// FormEditor
- super(composite, null, style);
- this.repository = repository;
- }
-
- public void setDocument(IDocument doc) {
- if (doc != null && this.getAnnotationModel() != null) {
- this.getAnnotationModel().connect(doc);
- super.setDocument(doc, this.getAnnotationModel());
- } else {
- super.setDocument(doc);
- }
- }
-
- public TaskRepository getRepository() {
- return repository;
- }
-
- public void setRepository(TaskRepository repository) {
- this.repository = repository;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java
deleted file mode 100644
index b24fa688a..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/RepositoryViewerConfig.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-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.reconciler.IReconciler;
-import org.eclipse.jface.text.reconciler.MonoReconciler;
-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.DefaultAnnotationHover;
-import org.eclipse.jface.text.source.IAnnotationHover;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.source.SourceViewerConfiguration;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.RGB;
-
-/**
- * @author Rob Elves
- */
-public class RepositoryViewerConfig extends SourceViewerConfiguration {
-
- private RepositoryTextScanner scanner = null;
-
- private TaskSpellingReconcileStrategy strategy = new TaskSpellingReconcileStrategy();
-
- private boolean spellcheck = false;
-
- public RepositoryViewerConfig(boolean spellchecking) {
- this.spellcheck = spellchecking;
- }
-
- public void setAnnotationModel(IAnnotationModel model, IDocument doc) {
- strategy.setAnnotationModel(model);
- strategy.setDocument(doc);
- }
-
- @Override
- public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
- if (spellcheck) {
- return new DefaultAnnotationHover();
- } else {
- return 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) {
- List<IHyperlinkDetector> detectors = new ArrayList<IHyperlinkDetector>();
- detectors.addAll(Arrays.asList(TasksUiPlugin.getDefault().getTaskHyperlinkDetectors()));
- return detectors.toArray(new IHyperlinkDetector[detectors.size()]);
- }
-
- public IHyperlinkPresenter getHyperlinkPresenter(ISourceViewer sourceViewer) {
- return new DefaultHyperlinkPresenter(new RGB(0, 0, 200));
- }
-
- public int getHyperlinkStateMask(ISourceViewer sourceViewer) {
- return SWT.NONE;
- }
-
- public IReconciler getReconciler(ISourceViewer sourceViewer) {
- if (spellcheck) {
- MonoReconciler reconciler = new MonoReconciler(strategy, false);
- reconciler.setIsIncrementalReconciler(false);
- reconciler.setProgressMonitor(new NullProgressMonitor());
- reconciler.setDelay(500);
- return reconciler;
- } else {
- return null;
- }
- }
-
- static class RepositoryTextScanner extends RuleBasedScanner {
-
- public RepositoryTextScanner() {
- IToken bugToken = new Token(new TextAttribute(TaskListColorsAndFonts.COLOR_HYPERLINK));
- IRule[] rules = new IRule[15];
- 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("task#", " ", bugToken));
- rules[8] = (new MultiLineRule("task#", "\n", bugToken));
- rules[9] = (new MultiLineRule("task# ", " ", bugToken));
- rules[10] = (new SingleLineRule("task #", "\n", bugToken));
- rules[11] = (new SingleLineRule("*** This bug has been ", "***", bugToken));
- rules[12] = (new SingleLineRule("http://", "", bugToken));
- rules[13] = (new SingleLineRule("https://", "", bugToken));
- rules[14] = (new MultiLineRule("task #", " ", bugToken));
- setRules(rules);
- }
-
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SpellingDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SpellingDialog.java
deleted file mode 100644
index ca7ae3e83..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/SpellingDialog.java
+++ /dev/null
@@ -1,105 +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.tasks.ui.editors;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.swt.SWT;
-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.List;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * TODO this is used only for spell checking which is not yet implemented,
- * therefore this is not properly tested
- *
- * @author Shawn Minto
- */
-public class SpellingDialog extends Dialog {
-
- private String title;
-
- private Text wordToFix;
-
- private List suggestions;
-
- private IDocument document;
-
- private ICompletionProposal[] proposals;
-
- protected SpellingDialog(Shell parentShell, String title, IDocument document) {
- super(parentShell);
- this.title = title;
- this.document = document;
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- Control c = super.createDialogArea(parent);
-
- Composite spellingComposite = new Composite(parent, SWT.NONE);
-
- GridLayout spellingLayout = new GridLayout();
- spellingLayout.numColumns = 1;
- spellingComposite.setLayout(spellingLayout);
-
- wordToFix = new Text(spellingComposite, SWT.BORDER | SWT.READ_ONLY);
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- gd.widthHint = 150;
- wordToFix.setLayoutData(gd);
-
- suggestions = new List(spellingComposite, SWT.BORDER);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- gd.widthHint = 150;
- gd.heightHint = AbstractRepositoryTaskEditor.WRAP_LENGTH;
- suggestions.setLayoutData(gd);
-
- return c;
- }
-
- @Override
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(title);
- }
-
- public void open(String word, ICompletionProposal[] proposals) {
- create();
-
- this.proposals = proposals;
-
- wordToFix.setText(word);
- suggestions.removeAll();
-
- for (int i = 0; i < proposals.length; i++) {
- suggestions.setItem(i, proposals[i].getDisplayString());
- }
-
- super.open();
- }
-
- @Override
- protected void handleShellCloseEvent() {
- if (getReturnCode() == Dialog.OK) {
- int i = suggestions.getSelectionIndex();
- if (i > 0 && i < proposals.length)
- proposals[i].apply(document);
- }
- super.handleShellCloseEvent();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java
deleted file mode 100644
index 1eff7fa85..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java
+++ /dev/null
@@ -1,330 +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.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.ICoolBarManager;
-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.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.internal.tasks.ui.IDynamicSubMenuContributor;
-import org.eclipse.mylar.internal.tasks.ui.actions.OpenWithBrowserAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskActivateAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskDeactivateAction;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.SubActionBars;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.internal.ObjectActionContributorManager;
-import org.eclipse.ui.internal.WorkbenchImages;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
-import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskEditorActionContributor extends MultiPageEditorActionBarContributor implements
- ISelectionChangedListener {
-
- private SubActionBars sourceActionBars;
-
- private MylarTaskEditor editor;
-
- private OpenWithBrowserAction openWithBrowserAction = new OpenWithBrowserAction();
-
- private GlobalAction cutAction;
-
- private GlobalAction undoAction;
-
- private GlobalAction redoAction;
-
- private GlobalAction copyAction;
-
- private GlobalAction pasteAction;
-
- private GlobalAction selectAllAction;
-
- public TaskEditorActionContributor() {
-
- cutAction = new GlobalAction(ActionFactory.CUT.getId());
- cutAction.setText(WorkbenchMessages.Workbench_cut);
- cutAction.setToolTipText(WorkbenchMessages.Workbench_cutToolTip);
- 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.setActionDefinitionId(IWorkbenchActionDefinitionIds.CUT);
-
- pasteAction = new GlobalAction(ActionFactory.PASTE.getId());
- pasteAction.setText(WorkbenchMessages.Workbench_paste);
- pasteAction.setToolTipText(WorkbenchMessages.Workbench_pasteToolTip);
- 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.setActionDefinitionId(IWorkbenchActionDefinitionIds.PASTE);
-
- copyAction = new GlobalAction(ActionFactory.COPY.getId());
- copyAction.setText(WorkbenchMessages.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.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY);
-
- undoAction = new GlobalAction(ActionFactory.UNDO.getId());
- undoAction.setText(WorkbenchMessages.Workbench_undo);
- undoAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));
- undoAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));
- undoAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED));
- undoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.UNDO);
-
- redoAction = new GlobalAction(ActionFactory.REDO.getId());
- redoAction.setText(WorkbenchMessages.Workbench_redo);
- redoAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO));
- redoAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO));
- redoAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED));
- redoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.REDO);
-
- selectAllAction = new GlobalAction(ActionFactory.SELECT_ALL.getId());
- selectAllAction.setText(WorkbenchMessages.Workbench_selectAll);
- selectAllAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL);
- selectAllAction.setEnabled(true);
-
- }
-
- public void addClipboardActions(IMenuManager manager) {
- manager.add(undoAction);
- manager.add(redoAction);
- manager.add(new Separator());
- manager.add(cutAction);
- manager.add(copyAction);
- manager.add(pasteAction);
- manager.add(selectAllAction);
- manager.add(new Separator());
- }
-
- public void contextMenuAboutToShow(IMenuManager mng) {
- boolean addClipboard = this.getEditor().getActivePageInstance() != null
- && (this.getEditor().getActivePageInstance() instanceof TaskPlanningEditor || this.getEditor()
- .getActivePageInstance() instanceof AbstractRepositoryTaskEditor);
- contextMenuAboutToShow(mng, addClipboard);
- }
-
- public void contextMenuAboutToShow(IMenuManager manager, boolean addClipboard) {
- if (editor != null)
- updateSelectableActions(editor.getSelection());
- if (addClipboard) {
- addClipboardActions(manager);
- }
-
- if (editor.getTaskEditorInput() == null)
- return;
- final ITask task = editor.getTaskEditorInput().getTask();
-
- if (task == null) {
- return;
- } else {
- openWithBrowserAction.selectionChanged(new StructuredSelection(task));
- manager.add(openWithBrowserAction);
-
- if (task.isActive()) {
- manager.add(new TaskDeactivateAction() {
- @Override
- public void run() {
- super.run(task);
- }
- });
- } else {
- manager.add(new TaskActivateAction() {
- @Override
- public void run() {
- TasksUiPlugin.getTaskListManager().getTaskActivationHistory().addTask(task);
- super.run(task);
- }
- });
- }
-
- manager.add(new Separator());
-
- for (IDynamicSubMenuContributor contributor : TasksUiPlugin.getDefault().getDynamicMenuContributers()) {
- List<ITaskListElement> selectedElements = new ArrayList<ITaskListElement>();
- selectedElements.add(task);
- MenuManager subMenuManager = contributor.getSubMenuManager(selectedElements);
- if (subMenuManager != null) {
- manager.add(subMenuManager);
- }
- }
-
- manager.add(new Separator());
- // HACK: there should be a saner way of doing this
- ObjectActionContributorManager.getManager().contributeObjectActions(editor, manager,
- new ISelectionProvider() {
-
- public void addSelectionChangedListener(ISelectionChangedListener listener) {
- // ignore
- }
-
- public ISelection getSelection() {
- return new StructuredSelection(task);
- }
-
- public void removeSelectionChangedListener(ISelectionChangedListener listener) {
- // ignore
-
- }
-
- public void setSelection(ISelection selection) {
- // ignore
-
- }
- });
- }
- manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- public void updateSelectableActions(ISelection selection) {
- if (editor != null) {
- cutAction.selectionChanged(selection);
- copyAction.selectionChanged(selection);
- pasteAction.selectionChanged(selection);
- undoAction.selectionChanged(selection);
- redoAction.selectionChanged(selection);
- selectAllAction.selectionChanged(selection);
- }
- }
-
- public void contributeToMenu(IMenuManager mm) {
- }
-
- public void contributeToStatusLine(IStatusLineManager slm) {
- }
-
- public void contributeToToolBar(IToolBarManager tbm) {
- }
-
- public void contributeToCoolBar(ICoolBarManager cbm) {
- }
-
- public void dispose() {
- sourceActionBars.dispose();
- super.dispose();
- }
-
- public void init(IActionBars bars) {
- super.init(bars);
- sourceActionBars = new SubActionBars(bars);
- }
-
- public void init(IActionBars bars, IWorkbenchPage page) {
- super.init(bars, page);
- registerGlobalHandlers(bars);
-
- }
-
- public MylarTaskEditor getEditor() {
- return editor;
- }
-
- public IStatusLineManager getStatusLineManager() {
- return getActionBars().getStatusLineManager();
- }
-
- public void setActiveEditor(IEditorPart targetEditor) {
- if (targetEditor instanceof MylarTaskEditor) {
- editor = (MylarTaskEditor) targetEditor;
- updateSelectableActions(editor.getSelection());
- }
- }
-
- public void setActivePage(IEditorPart newEditor) {
- if (getEditor() != null) {
- updateSelectableActions(getEditor().getSelection());
- }
- }
-
- public void selectionChanged(SelectionChangedEvent event) {
- updateSelectableActions(event.getSelection());
- }
-
- private class GlobalAction extends Action {
-
- private String actionId;
-
- public GlobalAction(String actionId) {
- this.actionId = actionId;
- }
-
- @Override
- public void run() {
- if (getEditor().getActivePageInstance() instanceof TaskFormPage) {
- TaskFormPage editor = (TaskFormPage) getEditor().getActivePageInstance();
- editor.doAction(actionId);
- updateSelectableActions(getEditor().getSelection());
- }
- }
-
- public void selectionChanged(ISelection selection) {
- if (getEditor().getActivePageInstance() instanceof TaskFormPage) {
- TaskFormPage editor = (TaskFormPage) getEditor().getActivePageInstance();
- setEnabled(editor.canDoAction(actionId));
- }
- }
- }
-
- public void registerGlobalHandlers(IActionBars bars) {
- bars.setGlobalActionHandler(ActionFactory.CUT.getId(), cutAction);
- bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), pasteAction);
- bars.setGlobalActionHandler(ActionFactory.COPY.getId(), copyAction);
- bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undoAction);
- bars.setGlobalActionHandler(ActionFactory.REDO.getId(), redoAction);
- bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAllAction);
- bars.updateActionBars();
- }
-
- public void unregisterGlobalHandlers(IActionBars bars) {
- bars.setGlobalActionHandler(ActionFactory.CUT.getId(), null);
- bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), null);
- bars.setGlobalActionHandler(ActionFactory.COPY.getId(), null);
- bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), null);
- bars.setGlobalActionHandler(ActionFactory.REDO.getId(), null);
- bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), null);
- bars.updateActionBars();
- }
-
- public void forceActionsEnabled() {
- cutAction.setEnabled(true);
- copyAction.setEnabled(true);
- pasteAction.setEnabled(true);
- selectAllAction.setEnabled(true);
- undoAction.setEnabled(false);
- redoAction.setEnabled(false);
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorInput.java
deleted file mode 100644
index fc645fddc..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorInput.java
+++ /dev/null
@@ -1,150 +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
- *******************************************************************************/
-/*
- * Created on 19-Jan-2005
- */
-package org.eclipse.mylar.internal.tasks.ui.editors;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-
-/**
- * @author Eric Booth
- */
-public class TaskEditorInput implements IEditorInput {
-
- private static final int MAX_LABEL_LENGTH = 60;
-
- private ITask task;
-
- private String id;
-
- private String label;
-
- private boolean newTask = false;
-
- public TaskEditorInput(ITask task, boolean newTask) {
- this.task = task;
- this.newTask = newTask;
- id = task.getHandleIdentifier();
- label = truncateDescription(task.getDescription());
- }
-
- private String truncateDescription(String description) {
- if (description == null || description.length() <= MAX_LABEL_LENGTH) {
- return description;
- } else {
- return description.substring(0, MAX_LABEL_LENGTH) + "...";
- }
- }
-
- public boolean exists() {
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
- */
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.IEditorInput#getName()
- */
- public String getName() {
- return "Task #" + id;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.IEditorInput#getPersistable()
- */
- public IPersistableElement getPersistable() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.IEditorInput#getToolTipText()
- */
- public String getToolTipText() {
- return label;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- /**
- * @return Returns the task.
- */
- public ITask getTask() {
- return task;
- }
-
- /**
- * @return Returns the id.
- */
- public String getId() {
- return id;
- }
-
- /**
- * @return Returns the label.
- */
- public String getLabel() {
- label = truncateDescription(task.getDescription());
- return label;
- }
-
- @Override
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + ((task == null) ? 0 : task.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 TaskEditorInput other = (TaskEditorInput) obj;
- if (task == null) {
- if (other.task != null)
- return false;
- } else if (!task.equals(other.task))
- return false;
- return true;
- }
-
- public boolean isNewTask() {
- return newTask;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorUrlHyperlinkDetector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorUrlHyperlinkDetector.java
deleted file mode 100644
index acd01d3c7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorUrlHyperlinkDetector.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-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.Region;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.jface.text.hyperlink.URLHyperlink;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-
-/**
- * @author Rob Elves
- */
-public class TaskEditorUrlHyperlinkDetector implements IHyperlinkDetector {
-
- // URL BNF: http://www.foad.org/~abigail/Perl/url2.html
- // Source:
- // http://www.truerwords.net/articles/ut/urlactivation.html#expressions
- // Original pattern: (^|[
- // \\t\\r\\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))
- private static final Pattern urlPattern = Pattern
- .compile(
- "((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*,;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*,;/?:@&~=%-]*))?([A-Za-z0-9$_+!*;/?:~-]))",
- Pattern.CASE_INSENSITIVE);
-
- public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
-
- if (region == null || textViewer == null)
- return null;
-
- IDocument document = textViewer.getDocument();
-
- List<IHyperlink> hyperlinksFound = new ArrayList<IHyperlink>();
-
- 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();
-
- Matcher m = urlPattern.matcher(line);
-
- while (m.find()) {
- if (offsetInLine >= m.start() && offsetInLine <= m.end()) {
- IHyperlink link = extractHyperlink(lineInfo.getOffset(), m);
- if (link != null)
- hyperlinksFound.add(link);
- }
- }
-
- if (hyperlinksFound.size() > 0) {
- return hyperlinksFound.toArray(new IHyperlink[hyperlinksFound.size()]);
- }
-
- return null;
-
- }
-
- private TaskEditorUrlHyperlink extractHyperlink(int lineOffset, Matcher m) {
-
- int start = m.start();
- int end = m.end();
-
- if (end == -1)
- end = m.group().length();
-
- start += lineOffset;
- end += lineOffset;
-
- IRegion sregion = new Region(start, end - start);
- return new TaskEditorUrlHyperlink(sregion, m.group());
- }
-
- static class TaskEditorUrlHyperlink extends URLHyperlink {
-
- public TaskEditorUrlHyperlink(IRegion region, String urlString) {
- super(region, urlString);
- }
-
- public void open() {
- // TODO: if url is to a repository task, open task instead of url
- TaskUiUtil.openUrl(getURLString());
- }
-
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskFormPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskFormPage.java
deleted file mode 100644
index ad06077d3..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskFormPage.java
+++ /dev/null
@@ -1,675 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.ITextListener;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.TextEvent;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.AnnotationModel;
-import org.eclipse.jface.text.source.AnnotationPainter;
-import org.eclipse.jface.text.source.AnnotationRulerColumn;
-import org.eclipse.jface.text.source.CompositeRuler;
-import org.eclipse.jface.text.source.IAnnotationAccess;
-import org.eclipse.jface.text.source.IAnnotationAccessExtension;
-import org.eclipse.jface.text.source.IAnnotationHover;
-import org.eclipse.jface.text.source.ISharedTextColors;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.source.ImageUtilities;
-import org.eclipse.jface.text.source.OverviewRuler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-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.swt.widgets.Text;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.editor.FormPage;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @author Rob Elves
- * @ref: PDEFormPage.class ref:
- * @ref: http://dev.eclipse.org/newslists/news.eclipse.platform.swt/msg19676.html
- */
-public class TaskFormPage extends FormPage {
-
- // public static final Image ERROR_IMAGE = new Image(Display.getDefault(),
- // "location");
-
- protected boolean isDirty;
-
- protected TaskEditorActionContributor actionContributor;
-
- protected List<TextViewer> textViewers = new ArrayList<TextViewer>();
-
- private void addTextViewer(TextViewer viewer) {
- textViewers.add(viewer);
- }
-
- public TaskFormPage(FormEditor editor, String id, String title) {
- super(editor, id, title);
- }
-
- /* GLOBAL ACTIONS (CUT/COPY/PASTE/ etc) */
-
- public boolean canDoAction(String actionId) {
- Control focusControl = getFocusControl();
- if (focusControl instanceof StyledText) {
- StyledText text = (StyledText) focusControl;
- for (TextViewer viewer : textViewers) {
- if (viewer.getTextWidget() == text) {
- return canDoGlobalAction(actionId, viewer);
- }
- }
- } else {
- if (actionId.equals(ActionFactory.UNDO.getId()) || actionId.equals(ActionFactory.REDO.getId())) {
- return false;
- } else {
- return true;
- }
- }
- // else if (focusControl instanceof Text) {
- //
- // Text textControl = (Text) focusControl;
- // if (actionId.equals(ActionFactory.CUT.getId())) {
- // return textControl.getSelectionText().length() > 0;
- // }
- // if (actionId.equals(ActionFactory.COPY.getId())) {
- // return textControl.getSelectionText().length() > 0;
- // }
- // if (actionId.equals(ActionFactory.PASTE.getId())) {
- // return true;
- // }
- // if (actionId.equals(ActionFactory.SELECT_ALL.getId())) {
- // return textControl.getText().length() > 0;
- // }
- // if (actionId.equals(ActionFactory.DELETE.getId())) {
- // return textControl.getSelectionText().length() > 0;
- // }
- // }
- return false;
- }
-
- public void doAction(String actionId) {
- Control focusControl = getFocusControl();
- if (focusControl == null)
- return;
- if (canPerformDirectly(actionId, focusControl)) {
- return;
- }
- if (focusControl instanceof StyledText) {
- StyledText text = (StyledText) focusControl;
- for (TextViewer viewer : textViewers) {
- if (viewer.getTextWidget() == text) {
- doGlobalAction(actionId, viewer);
- return;
- }
- }
- }
- }
-
- protected boolean canPerformDirectly(String id, Control control) {
- if (control instanceof Text) {
- Text text = (Text) control;
- if (id.equals(ActionFactory.CUT.getId())) {
- text.cut();
- return true;
- }
- if (id.equals(ActionFactory.COPY.getId())) {
- text.copy();
- return true;
- }
- if (id.equals(ActionFactory.PASTE.getId())) {
- text.paste();
- return true;
- }
- if (id.equals(ActionFactory.SELECT_ALL.getId())) {
- text.selectAll();
- return true;
- }
- if (id.equals(ActionFactory.DELETE.getId())) {
- int count = text.getSelectionCount();
- if (count == 0) {
- int caretPos = text.getCaretPosition();
- text.setSelection(caretPos, caretPos + 1);
- }
- text.insert(""); //$NON-NLS-1$
- return true;
- }
- }
- return false;
- }
-
- protected Control getFocusControl() {
- IManagedForm form = getManagedForm();
- if (form == null)
- return null;
- Control control = form.getForm();
- if (control == null || control.isDisposed())
- return null;
- Display display = control.getDisplay();
- Control focusControl = display.getFocusControl();
- if (focusControl == null || focusControl.isDisposed())
- return null;
- return focusControl;
- }
-
- private boolean doGlobalAction(String actionId, TextViewer textViewer) {
- if (actionId.equals(ActionFactory.CUT.getId())) {
- textViewer.doOperation(ITextOperationTarget.CUT);
- return true;
- } else if (actionId.equals(ActionFactory.COPY.getId())) {
- textViewer.doOperation(ITextOperationTarget.COPY);
- return true;
- } else if (actionId.equals(ActionFactory.PASTE.getId())) {
- textViewer.doOperation(ITextOperationTarget.PASTE);
- return true;
- } else if (actionId.equals(ActionFactory.DELETE.getId())) {
- textViewer.doOperation(ITextOperationTarget.DELETE);
- return true;
- } else if (actionId.equals(ActionFactory.UNDO.getId())) {
- textViewer.doOperation(ITextOperationTarget.UNDO);
- return true;
- } else if (actionId.equals(ActionFactory.REDO.getId())) {
- textViewer.doOperation(ITextOperationTarget.REDO);
- return true;
- } else if (actionId.equals(ActionFactory.SELECT_ALL.getId())) {
- textViewer.doOperation(ITextOperationTarget.SELECT_ALL);
- return true;
- }
- return false;
- }
-
- private boolean canDoGlobalAction(String actionId, TextViewer textViewer) {
- if (actionId.equals(ActionFactory.CUT.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.CUT);
- } else if (actionId.equals(ActionFactory.COPY.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.COPY);
- } else if (actionId.equals(ActionFactory.PASTE.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.PASTE);
- } else if (actionId.equals(ActionFactory.DELETE.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.DELETE);
- } else if (actionId.equals(ActionFactory.UNDO.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.UNDO);
- } else if (actionId.equals(ActionFactory.REDO.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.REDO);
- } else if (actionId.equals(ActionFactory.SELECT_ALL.getId())) {
- return textViewer.canDoOperation(ITextOperationTarget.SELECT_ALL);
- }
- return false;
- }
-
- // protected Text addTextBox(Composite composite, String text, int style) {
- // if (actionContributor == null) {
- // actionContributor = ((MylarTaskEditor) getEditor()).getContributor();
- // }
- //
- // final Text textBox =
- // this.getManagedForm().getToolkit().createText(composite, text);
- // textBox.addFocusListener(new FocusListener() {
- //
- // public void focusGained(FocusEvent e) {
- //
- // //
- // actionContributor.registerGlobalHandlers(getEditorSite().getActionBars());
- //
- // actionContributor.updateSelectableActions(null);
- //
- // }
- //
- // public void focusLost(FocusEvent e) {
- // textBox.setSelection(0, 0);
- // //
- // actionContributor.unregisterGlobalHandlers(getEditorSite().getActionBars());
- //
- // }
- // });
- //
- // textBox.addKeyListener(new KeyListener() {
- //
- // public void keyPressed(KeyEvent e) {
- // // ignore
- //
- // }
- //
- // public void keyReleased(KeyEvent e) {
- // actionContributor.updateSelectableActions(null);
- // }
- // });
- // return textBox;
- // }
-
- /**
- * Text viewer gennerally used for displaying non-editable text. No
- * annotation model or spell checking support. Supports cut/copy/paste/etc..
- */
- protected TextViewer addTextViewer(TaskRepository repository, Composite composite, String text, int style) {
-
- if (actionContributor == null) {
- actionContributor = ((MylarTaskEditor) getEditor()).getContributor();
- }
-
- final RepositoryTextViewer commentViewer = new RepositoryTextViewer(repository, composite, style);
-
- // NOTE: Configuration must be applied before the document is set in
- // order for
- // Hyperlink colouring to work. (Presenter needs document object up
- // front)
- RepositoryViewerConfig repositoryViewerConfig = new RepositoryViewerConfig(false);
- commentViewer.configure(repositoryViewerConfig);
-
- IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
-
- commentViewer.getTextWidget().setFont(
- themeManager.getCurrentTheme().getFontRegistry().get(TaskListColorsAndFonts.TASK_EDITOR_FONT));
-
- commentViewer.addSelectionChangedListener(actionContributor);
-
- commentViewer.getTextWidget().addFocusListener(new FocusListener() {
-
- public void focusGained(FocusEvent e) {
-
- actionContributor.updateSelectableActions(commentViewer.getSelection());
-
- }
-
- public void focusLost(FocusEvent e) {
- commentViewer.setSelectedRange(0, 0);
- actionContributor.forceActionsEnabled();
- }
- });
-
- commentViewer.addTextListener(new ITextListener() {
- public void textChanged(TextEvent event) {
- actionContributor.updateSelectableActions(commentViewer.getSelection());
- }
- });
-
- commentViewer.setEditable(false);
- commentViewer.getTextWidget().setMenu(getManagedForm().getForm().getMenu());
- Document document = new Document(text);
- commentViewer.setDocument(document);
-
- addTextViewer(commentViewer);
- return commentViewer;
- }
-
- /**
- * For viewing and editing text. Spell checking w/ annotations supported One
- * or two max per editor, any more and the spell checker will bring the
- * editor to a grinding halt.
- */
- protected TextViewer addTextEditor(TaskRepository repository, Composite composite, String text, boolean spellCheck,
- int style) {
-
- if (actionContributor == null) {
- actionContributor = ((MylarTaskEditor) getEditor()).getContributor();
- }
-
- CompositeRuler fCompositeRuler = null;
- OverviewRuler fOverviewRuler = null;
- IAnnotationAccess fAnnotationAccess = null;
- AnnotationRulerColumn annotationRuler = null;
-
- AnnotationModel fAnnotationModel = null;
-
- if (true) {
- fAnnotationModel = new AnnotationModel();
- fAnnotationAccess = new AnnotationMarkerAccess();
-
- fCompositeRuler = new CompositeRuler();
- fOverviewRuler = new OverviewRuler(fAnnotationAccess, 12, new SharedTextColors());
- annotationRuler = new AnnotationRulerColumn(fAnnotationModel, 16, fAnnotationAccess);
- fCompositeRuler.setModel(fAnnotationModel);
- fOverviewRuler.setModel(fAnnotationModel);
-
- // annotation ruler is decorating our composite ruler
- fCompositeRuler.addDecorator(0, annotationRuler);
-
- // what types are show on the different rulers
- annotationRuler.addAnnotationType(ErrorAnnotation.ERROR_TYPE);
- fOverviewRuler.addAnnotationType(ErrorAnnotation.ERROR_TYPE);
-
- fOverviewRuler.addHeaderAnnotationType(ErrorAnnotation.ERROR_TYPE);
- fOverviewRuler.setAnnotationTypeLayer(ErrorAnnotation.ERROR_TYPE, 3);
-
- fOverviewRuler.setAnnotationTypeColor(ErrorAnnotation.ERROR_TYPE,
- TaskListColorsAndFonts.COLOR_SPELLING_ERROR);
-
- }
- final RepositoryTextViewer commentViewer = new RepositoryTextViewer(fCompositeRuler, fOverviewRuler,
- repository, composite, style);
- commentViewer.showAnnotations(false);
- commentViewer.showAnnotationsOverview(false);
-
- // to paint the annotations
- final AnnotationPainter ap = new AnnotationPainter(commentViewer, fAnnotationAccess);
- ap.addAnnotationType(ErrorAnnotation.ERROR_TYPE);
- ap.setAnnotationTypeColor(ErrorAnnotation.ERROR_TYPE, TaskListColorsAndFonts.COLOR_SPELLING_ERROR);
-
- // this will draw the squigglies under the text
- commentViewer.addPainter(ap);
-
- IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
-
- commentViewer.getTextWidget().setFont(
- themeManager.getCurrentTheme().getFontRegistry().get(TaskListColorsAndFonts.TASK_EDITOR_FONT));
-
- commentViewer.addSelectionChangedListener(actionContributor);
-
- commentViewer.getTextWidget().addFocusListener(new FocusListener() {
-
- public void focusGained(FocusEvent e) {
-
- actionContributor.updateSelectableActions(commentViewer.getSelection());
-
- }
-
- public void focusLost(FocusEvent e) {
- commentViewer.setSelectedRange(0, 0);
- actionContributor.forceActionsEnabled();
- }
- });
-
- commentViewer.addTextListener(new ITextListener() {
- public void textChanged(TextEvent event) {
- actionContributor.updateSelectableActions(commentViewer.getSelection());
- }
- });
-
- commentViewer.setEditable(false);
- commentViewer.getTextWidget().setMenu(getManagedForm().getForm().getMenu());
- Document document = new Document(text);
-
- // NOTE: Configuration must be applied before the document is set in
- // order for
- // Hyperlink colouring to work. (Presenter needs document object up
- // front)
- RepositoryViewerConfig repositoryViewerConfig = new RepositoryViewerConfig(spellCheck);
- repositoryViewerConfig.setAnnotationModel(fAnnotationModel, document);
- commentViewer.configure(repositoryViewerConfig);
-
- commentViewer.setDocument(document, fAnnotationModel);
-
- // !DND! hover manager that shows text when we hover
- // AnnotationBarHoverManager fAnnotationHoverManager = new
- // AnnotationBarHoverManager(fCompositeRuler,
- // commentViewer, new AnnotationHover(fAnnotationModel), new
- // AnnotationConfiguration());
- // fAnnotationHoverManager.install(annotationRuler.getControl());
-
- // !DND! Sample debugging code
- // document.set("Here's some texst so that we have somewhere to show an
- // error");
- //
- // // // add an annotation
- // ErrorAnnotation errorAnnotation = new ErrorAnnotation(1, "");
- // // lets underline the word "texst"
- // fAnnotationModel.addAnnotation(errorAnnotation, new Position(12, 5));
-
- // CoreSpellingProblem iProblem = new CoreSpellingProblem(12, 5, 1,
- // "problem message", "theword", false, false,
- // document, "task editor");// editorInput.getName()
- //
- // fAnnotationModel.addAnnotation(new ProblemAnnotation(iProblem, null),
- // new Position(12, 5));
-
- addTextViewer(commentViewer);
- return commentViewer;
- }
-
- @Override
- public boolean isDirty() {
- return isDirty;
- }
-
- public void markDirty(boolean dirty) {
- isDirty = dirty;
- getManagedForm().dirtyStateChanged();
- return;
- }
-
- static class AnnotationMarkerAccess implements IAnnotationAccess, IAnnotationAccessExtension {
- public Object getType(Annotation annotation) {
- return annotation.getType();
- }
-
- public boolean isMultiLine(Annotation annotation) {
- return true;
- }
-
- public boolean isTemporary(Annotation annotation) {
- return !annotation.isPersistent();
- }
-
- public String getTypeLabel(Annotation annotation) {
- if (annotation instanceof ErrorAnnotation)
- return "Errors";
-
- return null;
- }
-
- public int getLayer(Annotation annotation) {
- if (annotation instanceof ErrorAnnotation)
- return ((ErrorAnnotation) annotation).getLayer();
-
- return 0;
- }
-
- public void paint(Annotation annotation, GC gc, Canvas canvas, Rectangle bounds) {
- ImageUtilities
- .drawImage(((ErrorAnnotation) annotation).getImage(), gc, canvas, bounds, SWT.CENTER, SWT.TOP);
- }
-
- public boolean isPaintable(Annotation annotation) {
- if (annotation instanceof ErrorAnnotation)
- return ((ErrorAnnotation) annotation).getImage() != null;
-
- return false;
- }
-
- public boolean isSubtype(Object annotationType, Object potentialSupertype) {
- if (annotationType.equals(potentialSupertype))
- return true;
-
- return false;
-
- }
-
- public Object[] getSupertypes(Object annotationType) {
- return new Object[0];
- }
- }
-
- static class AnnotationHover implements IAnnotationHover, ITextHover {
-
- AnnotationModel fAnnotationModel = null;
-
- public AnnotationHover(AnnotationModel model) {
- this.fAnnotationModel = model;
- }
-
- public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) {
- Iterator ite = fAnnotationModel.getAnnotationIterator();
-
- ArrayList<String> all = new ArrayList<String>();
-
- while (ite.hasNext()) {
- Annotation a = (Annotation) ite.next();
- if (a instanceof ErrorAnnotation) {
- all.add(((ErrorAnnotation) a).getText());
- }
- }
-
- StringBuffer total = new StringBuffer();
- for (int x = 0; x < all.size(); x++) {
- String str = (String) all.get(x);
- total.append(" " + str + (x == (all.size() - 1) ? "" : "\n"));
- }
-
- return total.toString();
- }
-
- public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
- return null;
- }
-
- public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
- return null;
- }
- }
-
- static class ErrorAnnotation extends Annotation {
-
- public static String ERROR_TYPE = "spelling.error";
-
- // ProblemAnnotation.SPELLING_ANNOTATION_TYPE;
-
- private IMarker marker;
-
- private String text;
-
- private int line;
-
- private Position position;
-
- public ErrorAnnotation(IMarker marker) {
- this.marker = marker;
- }
-
- public ErrorAnnotation(int line, String text) {
- super(ERROR_TYPE, true, null);
- this.marker = null;
- this.line = line;
- this.text = text;
- }
-
- public IMarker getMarker() {
- return marker;
- }
-
- public int getLine() {
- return line;
- }
-
- public String getText() {
- return text;
- }
-
- public Image getImage() {
- return null;// ERROR_IMAGE;
- }
-
- public int getLayer() {
- return 3;
- }
-
- public String getType() {
- return ERROR_TYPE;
- }
-
- public Position getPosition() {
- return position;
- }
-
- public void setPosition(Position position) {
- this.position = position;
- }
- }
-
- // From org.eclipse.ui.internal.editors.text.SharedTextColors
- static class SharedTextColors implements ISharedTextColors {
- /** The display table. */
- private Map fDisplayTable;
-
- /** Creates an returns a shared color manager. */
- public SharedTextColors() {
- super();
- }
-
- /*
- * @see ISharedTextColors#getColor(RGB)
- */
- @SuppressWarnings("unchecked")
- public Color getColor(RGB rgb) {
- if (rgb == null)
- return null;
-
- if (fDisplayTable == null)
- fDisplayTable = new HashMap(2);
-
- Display display = Display.getCurrent();
-
- Map colorTable = (Map) fDisplayTable.get(display);
- if (colorTable == null) {
- colorTable = new HashMap(10);
- fDisplayTable.put(display, colorTable);
- }
-
- Color color = (Color) colorTable.get(rgb);
- if (color == null) {
- color = new Color(display, rgb);
- colorTable.put(rgb, color);
- }
-
- return color;
- }
-
- /*
- * @see ISharedTextColors#dispose()
- */
- public void dispose() {
- if (fDisplayTable != null) {
- Iterator j = fDisplayTable.values().iterator();
- while (j.hasNext()) {
- Iterator i = ((Map) j.next()).values().iterator();
- while (i.hasNext())
- ((Color) i.next()).dispose();
- }
- }
- }
- }
-
- static class AnnotationConfiguration implements IInformationControlCreator {
- public IInformationControl createInformationControl(Shell shell) {
- return new DefaultInformationControl(shell);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java
deleted file mode 100644
index 37c789663..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java
+++ /dev/null
@@ -1,1000 +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.tasks.ui.editors;
-
-import java.io.File;
-import java.text.DateFormat;
-import java.util.Calendar;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.text.TextViewer;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.internal.tasks.ui.RetrieveTitleFromUrlJob;
-import org.eclipse.mylar.internal.tasks.ui.actions.NewLocalTaskAction;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePicker;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.monitor.MylarMonitorPlugin;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.Task.PriorityLevel;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-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.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Spinner;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.FormColors;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.editor.FormEditor;
-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;
-
-/**
- * @author Mik Kersten
- * @author Ken Sueda (initial prototype)
- * @author Rob Elves
- */
-public class TaskPlanningEditor extends TaskFormPage {
-
- public static final String PLANNING_EDITOR_ID = "org.eclipse.mylar.editors.planning";
-
- private static final String LABEL_SCHEDULE = "Scheduled for:";
-
- private static final String DESCRIPTION_ESTIMATED = "Time that the task has been actively worked on.\n Inactivity timeout is "
- + MylarMonitorPlugin.getDefault().getInactivityTimeout() + " seconds.";
-
- private static final String LABEL_INCOMPLETE = "Incomplete";
-
- private static final String LABEL_COMPLETE = "Complete";
-
- private static final String LABEL_PLAN = "Personal Planning";
-
- private static final String NO_TIME_ELAPSED = "0 seconds";
-
- private static final String LABEL_OVERVIEW = "Task Info";
-
- private static final String LABEL_NOTES = "Notes";
-
- private DatePicker datePicker;
-
- private ITask task;
-
- private Composite editorComposite;
-
- protected static final String CONTEXT_MENU_ID = "#MylarPlanningEditor";
-
- private Button removeReminder;
-
- private Text pathText;
-
- private Text endDate;
-
- private ScrolledForm form;
-
- private Text description;
-
- private Text issueReportURL;
-
- private Combo priorityCombo;
-
- private Combo statusCombo;
-
- private TextViewer noteEditor;
-
- private Spinner estimated;
-
- private Button getDescButton;
-
- private MylarTaskEditor parentEditor = null;
-
- private ITaskListChangeListener TASK_LIST_LISTENER = new ITaskListChangeListener() {
-
- public void localInfoChanged(final ITask updateTask) {
- if (updateTask != null && task != null
- && updateTask.getHandleIdentifier().equals(task.getHandleIdentifier())) {
- if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
-
- updateTaskData(updateTask);
- }
-
- });
- }
- }
- }
-
- 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 FormToolkit toolkit;
-
- public TaskPlanningEditor(FormEditor editor) {
- super(editor, PLANNING_EDITOR_ID, "Planning");
- TasksUiPlugin.getTaskListManager().getTaskList().addChangeListener(TASK_LIST_LISTENER);
- }
-
- /** public for testing */
- public void updateTaskData(final ITask updateTask) {
- if (datePicker != null && !datePicker.isDisposed()) {
- if (updateTask.getReminderDate() != null) {
- Calendar cal = Calendar.getInstance();
- cal.setTime(updateTask.getReminderDate());
- datePicker.setDate(cal);
- } else {
- datePicker.setDate(null);
- }
- }
-
- if (description == null)
- return;
- if (!description.isDisposed()) {
- if (!description.getText().equals(updateTask.getDescription())) {
- boolean wasDirty = TaskPlanningEditor.this.isDirty;
- description.setText(updateTask.getDescription());
- TaskPlanningEditor.this.markDirty(wasDirty);
- }
- if (parentEditor != null) {
- parentEditor.changeTitle();
- }
- if (form != null && updateTask != null) {
- form.setText(updateTask.getDescription());
- }
- }
-
- if (!priorityCombo.isDisposed()) {
- PriorityLevel level = PriorityLevel.fromString(updateTask.getPriority());
- if (level != null) {
- int prioritySelectionIndex = priorityCombo.indexOf(level.getDescription());
- priorityCombo.select(prioritySelectionIndex);
- }
- }
- if (!statusCombo.isDisposed()) {
- if (task.isCompleted()) {
- statusCombo.select(0);
- } else {
- statusCombo.select(1);
- }
- }
- if (!(updateTask instanceof AbstractRepositoryTask) && !endDate.isDisposed()) {
- endDate.setText(getTaskDateString(updateTask));
- }
- }
-
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- if (!(task instanceof AbstractRepositoryTask)) {
- String label = description.getText();
- // task.setDescription(label);
- TasksUiPlugin.getTaskListManager().getTaskList().renameTask((Task) task, label);
-
- // TODO: refactor mutation into TaskList?
- task.setUrl(issueReportURL.getText());
- String priorityDescription = priorityCombo.getItem(priorityCombo.getSelectionIndex());
- PriorityLevel level = PriorityLevel.fromDescription(priorityDescription);
- if (level != null) {
- task.setPriority(level.toString());
- }
- if (statusCombo.getSelectionIndex() == 0) {
- task.setCompleted(true);
- } else {
- task.setCompleted(false);
- }
- }
-
- String note = noteEditor.getTextWidget().getText();// notes.getText();
- task.setNotes(note);
- task.setEstimatedTimeHours(estimated.getSelection());
- if (datePicker != null && datePicker.getDate() != null) {
- TasksUiPlugin.getTaskListManager().setReminder(task, datePicker.getDate().getTime());
- // task.setReminderDate(datePicker.getDate().getTime());
- } else {
- // task.setReminderDate(null);
- TasksUiPlugin.getTaskListManager().setReminder(task, null);
- }
-
- // MylarTaskListPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task);
- if (parentEditor != null) {
- parentEditor.notifyTaskChanged();
- }
-
- // Method not implemented yet
- // task.setStatus(statusCombo.getItem(statusCombo.getSelectionIndex()));
-
- // MylarTaskListPlugin.getTaskListManager().setStatus(task,
- // statusCombo.getItem(statusCombo.getSelectionIndex()));
-
- // refreshTaskListView(task);
-
- markDirty(false);
- }
-
- @Override
- public void doSaveAs() {
- // don't support saving as
- }
-
- // @SuppressWarnings("deprecation")
- // @Override
- // public void init(IEditorSite site, IEditorInput input) {
- // // if (!(input instanceof TaskEditorInput)) {
- // // throw new PartInitException("Invalid Input: Must be TaskEditorInput");
- // // }
- // setSite(site);
- // setInput(input);
- // editorInput = (TaskEditorInput) input;
- // setPartName(editorInput.getLabel());
- // }
-
- @Override
- public boolean isDirty() {
- return isDirty;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- protected void createFormContent(IManagedForm managedForm) {
- super.createFormContent(managedForm);
- TaskEditorInput taskEditorInput = (TaskEditorInput) getEditorInput();
-
- task = taskEditorInput.getTask();
-
- form = managedForm.getForm();
- toolkit = managedForm.getToolkit();
- form.setText(task.getDescription());
-
- editorComposite = form.getBody();
- editorComposite.setLayout(new GridLayout());
- editorComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
- // try {
- if (!(task instanceof AbstractRepositoryTask)) {
- createSummarySection(editorComposite);
- }
- createPlanningSection(editorComposite);
- createNotesSection(editorComposite);
- createResourcesSection(editorComposite);
- // } catch (SWTException e) {
- // MylarStatusHandler.log(e, "content failed");
- // }
- if (description != null && NewLocalTaskAction.DESCRIPTION_DEFAULT.equals(description.getText())) {
- description.setSelection(0);
- description.setFocus();
- }
-
- // createContextMenu();
-
- }
-
- // protected void createContextMenu() {
- //
- // contextMenuManager = new MenuManager(CONTEXT_MENU_ID);
- // contextMenuManager.setRemoveAllWhenShown(true);
- // contextMenuManager.addMenuListener(new IMenuListener() {
- // public void menuAboutToShow(IMenuManager manager) {
- // manager.add(cutAction);
- // manager.add(copyAction);
- // manager.add(pasteAction);
- // // Clipboard clipboard = new Clipboard(comp.getDisplay());
- // // TextTransfer textTransfer = TextTransfer.getInstance();
- // // String textData = (String)
- // // clipboard.getContents(textTransfer);
- // // if (textData != null) {
- // // pasteAction.setEnabled(true);
- // // } else {
- // // pasteAction.setEnabled(false);
- // // }
- //
- // // if (currentSelectedText == null ||
- // currentSelectedText.getSelectionText().length() == 0) {
- // // copyAction.setEnabled(false);
- // // } else {
- // // copyAction.setEnabled(true);
- // // }
- // // manager.add(revealAllAction);
- // manager.add(new Separator());
- // manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
- // }
- // });
- // // getSite().registerContextMenu(CONTEXT_MENU_ID, contextMenuManager,
- // // getSite().getSelectionProvider());
- // }
-
- // @Override
- // public void createPartControl(Composite parent) {
- // FormToolkit toolkit = new FormToolkit(parent.getDisplay());
- // form = toolkit.createScrolledForm(parent);
- // form.setText(task.getDescription());
- //
- // editorComposite = form.getBody();
- // editorComposite.setLayout(new GridLayout());
- // editorComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
- // createContent(editorComposite, toolkit);
- // if (description != null &&
- // NewLocalTaskAction.DESCRIPTION_DEFAULT.equals(description.getText())) {
- // description.setSelection(0);
- // description.setFocus();
- // }
- // }
-
- @Override
- public void setFocus() {
- form.setFocus();
- }
-
- public Control getControl() {
- return form;
- }
-
- // public void setTask(ITask task) throws Exception {
- // if (task == null)
- // throw new Exception("ITask object is null.");
- // this.task = task;
- // }
-
- // private Composite createContent(Composite parent, FormToolkit toolkit) {
- // TaskEditorInput taskEditorInput = (TaskEditorInput) getEditorInput();
- //
- // task = taskEditorInput.getTask();
- // if (task == null) {
- // MessageDialog.openError(parent.getShell(), "No such task", "No task
- // exists with this id");
- // return null;
- // }
- //
- // try {
- // if (!(task instanceof AbstractRepositoryTask)) {
- // createSummarySection(parent, toolkit);
- // }
- // createPlanningSection(parent, toolkit);
- // createNotesSection(parent, toolkit);
- // // // createRelatedLinksSection(parent, toolkit);
- // createResourcesSection(parent, toolkit);
- // } catch (SWTException e) {
- // MylarStatusHandler.log(e, "content failed");
- // }
- // return null;
- // }
-
- private void createSummarySection(Composite parent) {
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR | Section.TWISTIE);
- section.setText(LABEL_OVERVIEW);
- section.setExpanded(true);
- // if (task instanceof AbstractRepositoryTask) {
- // section.setDescription("To modify these fields use the repository
- // editor.");
- // }
-
- 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 container = toolkit.createComposite(section);
- section.setClient(container);
- GridLayout compLayout = new GridLayout();
- compLayout.numColumns = 2;
- container.setLayout(compLayout);
- container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Label l = toolkit.createLabel(container, "Description:");
- l.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- description = toolkit.createText(container, task.getDescription(), SWT.NONE);
- description.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- description.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- toolkit.paintBordersFor(container);
-
- if (task instanceof AbstractRepositoryTask) {
- description.setEnabled(false);
- } else {
- description.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- }
- });
- }
-
- Label urlLabel = toolkit.createLabel(container, "Web Link:");
- urlLabel.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- Composite urlComposite = toolkit.createComposite(container);
- GridLayout urlLayout = new GridLayout(2, false);
- urlLayout.marginWidth = 1;
- urlComposite.setLayout(urlLayout);
- GridData urlGridData = new GridData(GridData.FILL_HORIZONTAL);
- urlComposite.setLayoutData(urlGridData);
-
- issueReportURL = toolkit.createText(urlComposite, task.getUrl(), SWT.NONE);
- GridData gridLayout = new GridData(GridData.FILL_HORIZONTAL);
- issueReportURL.setLayoutData(gridLayout);
-
- if (task instanceof AbstractRepositoryTask) {
- issueReportURL.setEditable(false);
- } else {
- issueReportURL.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- }
- });
- }
-
- getDescButton = toolkit.createButton(urlComposite, "Get Description", SWT.PUSH);
- getDescButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
- toolkit.paintBordersFor(urlComposite);
- setButtonStatus();
-
- issueReportURL.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- setButtonStatus();
- }
-
- public void keyReleased(KeyEvent e) {
- setButtonStatus();
- }
- });
-
- getDescButton.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- retrieveTaskDescription(issueReportURL.getText());
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- Label label = toolkit.createLabel(container, "Status:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- Composite statusComposite = toolkit.createComposite(container);
- statusComposite.setLayout(new GridLayout(2, false));
-
- priorityCombo = new Combo(statusComposite, SWT.READ_ONLY);
-
- // Populate the combo box with priority levels
- for (String priorityLevel : TaskListView.PRIORITY_LEVEL_DESCRIPTIONS) {
- priorityCombo.add(priorityLevel);
- }
-
- PriorityLevel level = PriorityLevel.fromString(task.getPriority());
- if (level != null) {
- int prioritySelectionIndex = priorityCombo.indexOf(level.getDescription());
- priorityCombo.select(prioritySelectionIndex);
- }
-
- if (task instanceof AbstractRepositoryTask) {
- priorityCombo.setEnabled(false);
- } else {
- priorityCombo.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- TaskPlanningEditor.this.markDirty(true);
-
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // do nothing
-
- }
- });
- }
-
- statusCombo = new Combo(statusComposite, SWT.READ_ONLY);
-
- statusCombo.add(LABEL_COMPLETE);
- statusCombo.add(LABEL_INCOMPLETE);
- if (task.isCompleted()) {
- statusCombo.select(0);
- } else {
- statusCombo.select(1);
- }
- if (task instanceof AbstractRepositoryTask) {
- statusCombo.setEnabled(false);
- } else {
- statusCombo.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- if (statusCombo.getSelectionIndex() == 0) {
- task.setCompleted(true);
- } else {
- task.setCompleted(false);
- }
- TaskPlanningEditor.this.markDirty(true);
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // do nothing
-
- }
- });
- }
- // statusCombo.setEnabled(false);
-
- }
-
- /**
- * Attempts to set the task pageTitle to the title from the specified url
- */
- protected void retrieveTaskDescription(final String url) {
-
- try {
- RetrieveTitleFromUrlJob job = new RetrieveTitleFromUrlJob(issueReportURL.getText()) {
-
- @Override
- protected void setTitle(final String pageTitle) {
- description.setText(pageTitle);
- TaskPlanningEditor.this.markDirty(true);
- }
-
- };
- job.schedule();
-
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not open task web page", false);
- }
- }
-
- /**
- * Sets the Get Description button enabled or not depending on whether there
- * is a URL specified
- */
- protected void setButtonStatus() {
- String url = issueReportURL.getText();
-
- if (url.length() > 10 && (url.startsWith("http://") || url.startsWith("https://"))) {
- // String defaultPrefix =
- // ContextCorePlugin.getDefault().getPreferenceStore().getString(
- // TaskListPreferenceConstants.DEFAULT_URL_PREFIX);
- // if (url.equals(defaultPrefix)) {
- // getDescButton.setEnabled(false);
- // } else {
- getDescButton.setEnabled(true);
- // }
- } else {
- getDescButton.setEnabled(false);
- }
- }
-
- private void createPlanningSection(Composite parent) {
-
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR | Section.TWISTIE);
- section.setText(LABEL_PLAN);
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- section.setExpanded(true);
- section.addExpansionListener(new IExpansionListener() {
- public void expansionStateChanging(ExpansionEvent e) {
- form.reflow(true);
- }
-
- public void expansionStateChanged(ExpansionEvent e) {
- form.reflow(true);
- }
- });
-
- Composite sectionClient = toolkit.createComposite(section);
- section.setClient(sectionClient);
- GridLayout layout = new GridLayout();
- layout.numColumns = 6;
- layout.makeColumnsEqualWidth = false;
- sectionClient.setLayout(layout);
- GridData clientDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- sectionClient.setLayoutData(clientDataLayout);
-
- // Reminder
- Label label = toolkit.createLabel(sectionClient, LABEL_SCHEDULE);
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- datePicker = new DatePicker(sectionClient, SWT.NONE, DatePicker.LABEL_CHOOSE);
-
- Calendar calendar = Calendar.getInstance();
- if (task.getReminderDate() != null) {
- calendar.setTime(task.getReminderDate());
- datePicker.setDate(calendar);
- }
-
- datePicker.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
- datePicker.addPickerSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent arg0) {
- task.setReminded(false);
- TaskPlanningEditor.this.markDirty(true);
- }
-
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // ignore
- }
- });
- datePicker.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
-
- removeReminder = toolkit.createButton(sectionClient, "Clear", SWT.PUSH | SWT.CENTER);
- removeReminder.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- datePicker.setDate(null);
- task.setReminded(false);
- TaskPlanningEditor.this.markDirty(true);
- }
- });
-
- // 1 Blank column after Reminder clear button
- Label dummy = toolkit.createLabel(sectionClient, "");
- GridData dummyLabelDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
- dummyLabelDataLayout.horizontalSpan = 1;
- dummyLabelDataLayout.widthHint = 30;
- dummy.setLayoutData(dummyLabelDataLayout);
-
- // Creation date
- label = toolkit.createLabel(sectionClient, "Creation date:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String creationDateString = "";
- try {
- creationDateString = DateFormat.getDateInstance(DateFormat.LONG).format(task.getCreationDate());
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not format creation date", true);
- }
-
- Text creationDate = toolkit.createText(sectionClient, creationDateString, SWT.NONE);
- GridData creationDateDataLayout = new GridData();
- creationDateDataLayout.widthHint = 120;
- creationDate.setLayoutData(creationDateDataLayout);
- creationDate.setEditable(false);
- creationDate.setEnabled(true);
-
- // Estimated time
-
- label = toolkit.createLabel(sectionClient, "Estimated time:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- estimated = new Spinner(sectionClient, SWT.NONE);
- estimated.setSelection(task.getEstimateTimeHours());
- estimated.setDigits(0);
- estimated.setMaximum(100);
- estimated.setMinimum(0);
- estimated.setIncrement(1);
- estimated.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- TaskPlanningEditor.this.markDirty(true);
- }
- });
-
- estimated.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- GridData estimatedDataLayout = new GridData();
- estimatedDataLayout.widthHint = 110;
- estimated.setLayoutData(estimatedDataLayout);
-
- label = toolkit.createLabel(sectionClient, "hours ");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- // 1 Blank column
- Label blankLabel2 = toolkit.createLabel(sectionClient, "");
- GridData blankLabl2Layout = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
- blankLabl2Layout.horizontalSpan = 1;
- blankLabl2Layout.widthHint = 25;
- blankLabel2.setLayoutData(blankLabl2Layout);
-
- // Completion date
- label = toolkit.createLabel(sectionClient, "Completion date:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String completionDateString = "";
- if (task.isCompleted()) {
- completionDateString = getTaskDateString(task);
- }
- endDate = toolkit.createText(sectionClient, completionDateString, SWT.NONE);
- GridData endDateDataLayout = new GridData();
- endDateDataLayout.widthHint = 120;
- endDate.setLayoutData(endDateDataLayout);
-
- endDate.setEditable(false);
- endDate.setEnabled(true);
- toolkit.paintBordersFor(sectionClient);
-
- // Elapsed Time
-
- label = toolkit.createLabel(sectionClient, "Elapsed time:");
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- label.setToolTipText(DESCRIPTION_ESTIMATED);
-
- Composite elapsedComposite = toolkit.createComposite(sectionClient);
- GridLayout elapsedLayout = new GridLayout();
- elapsedLayout.numColumns = 2;
- elapsedLayout.marginWidth = 1;
- elapsedLayout.makeColumnsEqualWidth = false;
- elapsedComposite.setLayout(elapsedLayout);
- GridData elapsedCompositeGridData = new GridData();
- elapsedCompositeGridData.horizontalSpan = 5;
- elapsedComposite.setLayoutData(elapsedCompositeGridData);
-
- String elapsedTimeString = NO_TIME_ELAPSED;
- try {
- elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskListManager().getElapsedTime(task), true);
- if (elapsedTimeString.equals(""))
- elapsedTimeString = NO_TIME_ELAPSED;
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not format elapsed time", true);
- }
-
- final Text elapsedTimeText = toolkit.createText(elapsedComposite, elapsedTimeString, SWT.NONE);
- GridData td = new GridData(GridData.FILL_HORIZONTAL);
- td.widthHint = 110;
- elapsedTimeText.setLayoutData(td);
- elapsedTimeText.setEditable(false);
-
- // Refresh Button
- Button timeRefresh = toolkit.createButton(elapsedComposite, "Refresh", SWT.PUSH | SWT.CENTER);
-
- timeRefresh.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- String elapsedTimeString = NO_TIME_ELAPSED;
- try {
- elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskListManager().getElapsedTime(task), true);
- if (elapsedTimeString.equals("")) {
- elapsedTimeString = NO_TIME_ELAPSED;
- }
-
- } catch (RuntimeException e1) {
- MylarStatusHandler.fail(e1, "Could not format elapsed time", true);
- }
- elapsedTimeText.setText(elapsedTimeString);
- }
- });
-
- toolkit.paintBordersFor(elapsedComposite);
- }
-
- private void createNotesSection(Composite parent) {
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- section.setText(LABEL_NOTES);
- section.setExpanded(true);
- section.setLayout(new GridLayout());
- section.setLayoutData(new GridData(GridData.FILL_BOTH));
- section.addExpansionListener(new IExpansionListener() {
- public void expansionStateChanging(ExpansionEvent e) {
- form.reflow(true);
- }
-
- public void expansionStateChanged(ExpansionEvent e) {
- form.reflow(true);
- }
- });
- Composite container = toolkit.createComposite(section);
- section.setClient(container);
- container.setLayout(new GridLayout());
- container.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- TaskRepository repository = null;
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- repository = TasksUiPlugin.getRepositoryManager().getRepository(repositoryTask.getRepositoryKind(),
- repositoryTask.getRepositoryUrl());
- }
-
- noteEditor = addTextEditor(repository, container, task.getNotes(), true, SWT.FLAT | SWT.MULTI | SWT.WRAP
- | SWT.V_SCROLL);
-
- noteEditor.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
- noteEditor.getControl().setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- noteEditor.setEditable(true);
-
- noteEditor.getTextWidget().addModifyListener(new ModifyListener() {
-
- public void modifyText(ModifyEvent e) {
- markDirty(true);
- }
- });
-
- // commentViewer.addSelectionChangedListener(new
- // ISelectionChangedListener() {
- //
- // public void selectionChanged(SelectionChangedEvent event) {
- // getSite().getSelectionProvider().setSelection(commentViewer.getSelection());
- //
- // }});
-
- toolkit.paintBordersFor(container);
- }
-
- private String getTaskDateString(ITask task) {
-
- if (task == null)
- return "";
- if (task.getCompletionDate() == null)
- return "";
-
- String completionDateString = "";
- try {
- completionDateString = DateFormat.getDateInstance(DateFormat.LONG).format(task.getCompletionDate());
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not format date", true);
- return completionDateString;
- }
- return completionDateString;
- }
-
- private void createResourcesSection(Composite parent) {
- Section section = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR | Section.TWISTIE);
- section.setText("Resources");
- 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 container = toolkit.createComposite(section);
- section.setClient(container);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
- container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Label l2 = toolkit.createLabel(container, "Task context file:");
- l2.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- File contextFile = ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
- // String contextPath =
- // ContextCorePlugin.getDefault().getDataDirectory()
- // + '/' + task.getContextPath() +
- // MylarContextManager.CONTEXT_FILE_EXTENSION;
- if (contextFile != null) {
- pathText = toolkit.createText(container, contextFile.getAbsolutePath(), SWT.NONE);
- pathText.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
- GridDataFactory.fillDefaults().hint(400, SWT.DEFAULT).applyTo(pathText);
- pathText.setEditable(false);
- pathText.setEnabled(true);
- }
- toolkit.paintBordersFor(container);
-
- // browse = toolkit.createButton(container, "Change", SWT.PUSH |
- // SWT.CENTER);
- // if (task.isActive()) {
- // browse.setEnabled(false);
- // } else {
- // browse.setEnabled(true);
- // }
- // browse.addSelectionListener(new SelectionAdapter() {
- // @Override
- // public void widgetSelected(SelectionEvent e) {
- //
- // if (task.isActive()) {
- // MessageDialog.openInformation(Display.getDefault().getActiveShell(),
- // "Task Message",
- // "Task can not be active when changing taskscape");
- // } else {
- // FileDialog dialog = new
- // FileDialog(Display.getDefault().getActiveShell(), SWT.OPEN);
- // String[] ext = { "*.xml" };
- // dialog.setFilterExtensions(ext);
- //
- // String mylarDir = ContextCorePlugin.getDefault().getDataDirectory() +
- // "/";
- // mylarDir = mylarDir.replaceAll("\\\\", "/");
- // dialog.setFilterPath(mylarDir);
- //
- // String res = dialog.open();
- // if (res != null) {
- // res = res.replaceAll("\\\\", "/");
- // pathText.setText("<MylarDir>/" + res + ".xml");
- // markDirty(true);
- // }
- // }
- // }
- // });
- // toolkit.createLabel(container, "");
- // l = toolkit.createLabel(container, "Go to Task List Preferences to
- // change task context directory");
- // l.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- }
-
- public void setParentEditor(MylarTaskEditor parentEditor) {
- this.parentEditor = parentEditor;
- }
-
- @Override
- public void dispose() {
- TasksUiPlugin.getTaskListManager().getTaskList().removeChangeListener(TASK_LIST_LISTENER);
- }
-
- @Override
- public String toString() {
- return "(info editor for task: " + task + ")";
- }
-
- /** for testing - should cause dirty state */
- public void setNotes(String notes) {
- this.noteEditor.getTextWidget().setText(notes);
- }
-
- /** for testing - should cause dirty state */
- public void setDescription(String desc) {
- this.description.setText(desc);
- }
-
- /** for testing */
- public String getDescription() {
- return this.description.getText();
- }
-
- /** for testing */
- public String getFormTitle() {
- return form.getText();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskSpellingReconcileStrategy.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskSpellingReconcileStrategy.java
deleted file mode 100644
index 72aed3785..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskSpellingReconcileStrategy.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.editors;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentTypeManager;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.reconciler.DirtyRegion;
-import org.eclipse.jface.text.reconciler.IReconcilerExtension;
-import org.eclipse.jface.text.reconciler.IReconcilingStrategy;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationModel;
-import org.eclipse.mylar.internal.tasks.ui.editors.TaskFormPage.ErrorAnnotation;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector;
-import org.eclipse.ui.texteditor.spelling.SpellingContext;
-import org.eclipse.ui.texteditor.spelling.SpellingProblem;
-
-/**
- * Adapted from
- * org.eclipse.jdt.internal.ui.text.spelling.PropertiesSpellingReconcileStrategy
- *
- * @author Jeff Pound
- * @author Rob Elves
- */
-public class TaskSpellingReconcileStrategy implements IReconcilerExtension, IReconcilingStrategy {
-
- /**
- * Spelling problem collector that forwards {@link SpellingProblem}s as
- * {@link IProblem}s to the {@link org.eclipse.jdt.core.IProblemRequestor}.
- */
- private class SpellingProblemCollector implements ISpellingProblemCollector {
-
- /** Annotation model */
- private IAnnotationModel fAnnotationModel;
-
- /** Annotations to add */
- private Map<ErrorAnnotation, Position> fAddAnnotations;
-
- /**
- * Initializes this collector with the given annotation model.
- *
- * @param annotationModel
- * the annotation model
- */
- public SpellingProblemCollector(IAnnotationModel annotationModel) {
- fAnnotationModel = annotationModel;
- }
-
- /*
- * @see org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#accept(org.eclipse.ui.texteditor.spelling.SpellingProblem)
- */
- public void accept(SpellingProblem problem) {
- try {
- int line = fDocument.getLineOfOffset(problem.getOffset()) + 1;
-
- fAddAnnotations.put(new ErrorAnnotation(line, null), new Position(problem.getOffset(), problem
- .getLength()));
-
- } catch (BadLocationException x) {
- // drop this SpellingProblem
- }
- }
-
- /*
- * @see org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#beginCollecting()
- */
- public void beginCollecting() {
- fAddAnnotations = new HashMap<ErrorAnnotation, Position>();
- }
-
- /*
- * @see org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#endCollecting()
- */
- public void endCollecting() {
-
- List<Annotation> removeAnnotations = new ArrayList<Annotation>();
- for (Iterator iter = fAnnotationModel.getAnnotationIterator(); iter.hasNext();) {
- Annotation annotation = (Annotation) iter.next();
- if (ErrorAnnotation.ERROR_TYPE.equals(annotation.getType()))
- removeAnnotations.add(annotation);
- }
-
- for (Iterator iter = removeAnnotations.iterator(); iter.hasNext();)
- fAnnotationModel.removeAnnotation((Annotation) iter.next());
- for (Iterator iter = fAddAnnotations.keySet().iterator(); iter.hasNext();) {
- Annotation annotation = (Annotation) iter.next();
- fAnnotationModel.addAnnotation(annotation, (Position) fAddAnnotations.get(annotation));
- }
-
- fAddAnnotations = null;
- }
- }
-
- /** The id of the problem */
- public static final int SPELLING_PROBLEM_ID = 0x80000000;
-
- /** The document to operate on. */
- private IDocument fDocument;
-
- /** The progress monitor. */
- private IProgressMonitor fProgressMonitor;
-
- /**
- * The spelling context containing the Java properties content type.
- * <p>
- * Since his reconcile strategy is for the Properties File editor which
- * normally edits Java properties files we always use the Java properties
- * file content type for performance reasons.
- * </p>
- *
- * @since 3.2
- */
- private SpellingContext fSpellingContext;
-
- private IAnnotationModel annotationModel;
-
- public TaskSpellingReconcileStrategy() {
- this.annotationModel = null;
- fSpellingContext = new SpellingContext();
- fSpellingContext.setContentType(Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT));
- }
-
- /*
- * @see org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension#initialReconcile()
- */
- public void initialReconcile() {
- reconcile(new Region(0, fDocument.getLength()));
- }
-
- /*
- * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#reconcile(org.eclipse.jface.text.reconciler.DirtyRegion,org.eclipse.jface.text.IRegion)
- */
- public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {
- reconcile(subRegion);
- }
-
- /*
- * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#reconcile(org.eclipse.jface.text.IRegion)
- */
- public void reconcile(IRegion region) {
- TaskSpellingReconcileStrategy.SpellingProblemCollector collector = new SpellingProblemCollector(annotationModel);
- EditorsUI.getSpellingService().check(fDocument, fSpellingContext, collector, fProgressMonitor);
- }
-
- /*
- * @see org.eclipse.jface.text.reconciler.IReconcilingStrategy#setDocument(org.eclipse.jface.text.IDocument)
- */
- public void setDocument(IDocument document) {
- fDocument = document;
- }
-
- /*
- * @see org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension#setProgressMonitor(org.eclipse.core.runtime.IProgressMonitor)
- */
- public void setProgressMonitor(IProgressMonitor monitor) {
- fProgressMonitor = monitor;
- }
-
- public String getDocumentPartitioning() {
- // ignore
- return null;
- }
-
- public void setAnnotationModel(IAnnotationModel model) {
- annotationModel = model;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java
deleted file mode 100644
index af1dcf605..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java
+++ /dev/null
@@ -1,92 +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.tasks.ui.planner;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePickerPanel;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePickerPanel.DateSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class DateSelectionDialog extends Dialog {
-
- private Date reminderDate = null;
-
- private String title = "Date Selection";
-
- private Calendar initialCalendar = GregorianCalendar.getInstance();
-
- public DateSelectionDialog(Shell parentShell, String title) {
- this(parentShell, GregorianCalendar.getInstance(), title);
- }
-
- public DateSelectionDialog(Shell parentShell, Calendar initialDate, String title) {
- super(parentShell);
- if(title != null) {
- this.title = title;
- }
- if(initialDate != null) {
- this.initialCalendar.setTime(initialDate.getTime());
- }
- reminderDate = initialCalendar.getTime();
- }
-
- @Override
- protected Control createDialogArea(Composite parent) {
- getShell().setText(title);
- DatePickerPanel datePanel = new DatePickerPanel(parent, SWT.NULL, initialCalendar);
-
- datePanel.addSelectionChangedListener(new ISelectionChangedListener() {
-
- public void selectionChanged(SelectionChangedEvent event) {
- if (!event.getSelection().isEmpty()) {
- DateSelection dateSelection = (DateSelection) event.getSelection();
- reminderDate = dateSelection.getDate().getTime();
- }
- }
- });
-
- return datePanel;
- }
-
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.CLIENT_ID + 1, "Clear", false);
- super.createButtonsForButtonBar(parent);
- }
-
- protected void buttonPressed(int buttonId) {
- super.buttonPressed(buttonId);
- if(buttonId == IDialogConstants.CLIENT_ID + 1) {
- reminderDate = null;
- okPressed();
- }
- }
-
- public Date getDate() {
- return reminderDate;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java
deleted file mode 100644
index 4438fd19a..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java
+++ /dev/null
@@ -1,72 +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.tasks.ui.planner;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.mylar.context.core.IMylarContext;
-import org.eclipse.mylar.context.core.InteractionEvent;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.tasks.core.ITask;
-
-/**
- * Collects tasks that are not complete but have been worked on during the
- * specified number of previous days.
- *
- * @author Wesley Coelho (Adapted from CompletedTaskCollector by Key Sueda)
- * @author Mik Kersten
- */
-public class InProgressTaskCollector implements ITaskCollector {
-
- private Map<String, ITask> inProgressTasks = new HashMap<String, ITask>();
-
- private Date periodStartDate;
-
- protected static boolean hasActivitySince(ITask task, Date startDate) {
- IMylarContext mylarContext = ContextCorePlugin.getContextManager().loadContext(task.getHandleIdentifier());
- if (mylarContext != null) {
- List<InteractionEvent> events = mylarContext.getInteractionHistory();
- if (events.size() > 0) {
- InteractionEvent latestEvent = events.get(events.size() - 1);
- if (latestEvent.getDate().compareTo(startDate) > 0) {
- return true;
- }
- }
- }
- return false;
- }
-
- public InProgressTaskCollector(Date periodStartDate) {
- this.periodStartDate = periodStartDate;
- }
-
- public String getLabel() {
- return "Tasks in Progress";
- }
-
- public void consumeTask(ITask task) {
- if (!task.isCompleted() && hasActivitySince(task, periodStartDate)
- && !inProgressTasks.containsKey(task.getHandleIdentifier())) {
- inProgressTasks.put(task.getHandleIdentifier(), task);
- }
- }
-
- public Set<ITask> getTasks() {
- Set<ITask> tasks = new HashSet<ITask>();
- tasks.addAll(inProgressTasks.values());
- return tasks;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java
deleted file mode 100644
index c7cf1cc66..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java
+++ /dev/null
@@ -1,53 +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.tasks.ui.planner;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.ITask;
-
-/**
- * @author Mik Kersten
- * @author Ken Sueda
- * @author Rob Elves
- */
-public class OpenTaskEditorAction extends Action {
-
- public static final String ID = "org.eclipse.mylar.taskplannereditor.actions.open";
-
- private final TableViewer viewer;
-
- /**
- * @param view
- */
- public OpenTaskEditorAction(TableViewer view) {
- this.viewer = view;
- setText("Open");
- setToolTipText("Open Element");
- setId(ID);
- }
-
- @Override
- public void run() {
- ISelection selection = viewer.getSelection();
- Object object = ((IStructuredSelection) selection).getFirstElement();
- if (object instanceof ITask) {
- TaskUiUtil.openEditor((ITask)object, false);
- }
-// if (obj instanceof Task) {
-// ((Task) obj).openTaskInEditor(false);
-// }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java
deleted file mode 100644
index caf4b69ea..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java
+++ /dev/null
@@ -1,95 +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.tasks.ui.planner;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Locale;
-
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePicker;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class ReminderCellEditor extends DialogCellEditor {
-
- private Date reminderDate;
-
- private DateSelectionDialog dialog;
-
- private String formatString = "dd-MMM-yyyy";
-
- private SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH);
-
- public ReminderCellEditor(Composite parent) {
- super(parent, SWT.NONE);
- }
-
- @Override
- protected Object openDialogBox(Control cellEditorWindow) {
- Calendar initialCalendar = null;
- String value = (String) super.getValue();
-
- if (value != null) {
- try {
- Date tempDate = format.parse((String) value);
- if (tempDate != null) {
- initialCalendar = GregorianCalendar.getInstance();
- initialCalendar.setTime(tempDate);
- }
- } catch (ParseException e) {
- // ignore
- }
- }
- Calendar newCalendar = GregorianCalendar.getInstance();
- if(initialCalendar != null) {
- newCalendar.setTime(initialCalendar.getTime());
- }
-
- dialog = new DateSelectionDialog(cellEditorWindow.getShell(), newCalendar, DatePicker.TITLE_DIALOG);
- int dialogResponse = dialog.open();
-
- if(dialogResponse == DateSelectionDialog.CANCEL) {
- if(initialCalendar != null) {
- reminderDate = initialCalendar.getTime();
- } else {
- reminderDate = null;
- }
- } else {
- reminderDate = dialog.getDate();
- }
-
- String result = null;
- if (reminderDate != null) {
- result = format.format(reminderDate);
- }
- return result;
- }
-
- public Date getReminderDate() {
- return reminderDate;
- }
-
- protected void doSetFocus() {
- reminderDate = null;
- super.doSetFocus();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActicityWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActicityWizardPage.java
deleted file mode 100644
index 2a00c9367..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActicityWizardPage.java
+++ /dev/null
@@ -1,323 +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.tasks.ui.planner;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.views.DatePicker;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-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.graphics.Font;
-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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Mik Kersten
- * @author Ken Sueda (original prototype)
- * @author Rob Elves (categories)
- */
-public class TaskActicityWizardPage extends WizardPage {
-
- private static final int DEFAULT_DAYS = 1;
-
- private static final String TITLE = "Mylar Task Activity Report";
-
- private static final String DESCRIPTION = "Summarizes task activity and assists planning future tasks.";
-
- public static final String ROOT_CATEGORY_HACK = "Root Tasks";
-
- private long DAY = 24 * 3600 * 1000;
-
- protected String[] columnNames = new String[] { "", "Description" };
-
- private Date reportStartDate = null;
-
- private Button daysRadioButton = null;
-
- private Button dateRadioButton = null;
-
- private Text numDays;
-
- private int numDaysToReport = 0;
-
- private Table filtersTable;
-
- private TaskElementLabelProvider labelProvider = new TaskElementLabelProvider();
-
- public TaskActicityWizardPage() {
- super(TITLE);
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- }
-
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.FILL);
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- layout.numColumns = 1;
-
- createReportPeriodGroup(container);
-
- Label spacer = new Label(container, SWT.NONE);
- spacer.setText(" ");
-
- createCategorySelectionGroup(container);
-
- setControl(container);
- numDays.setFocus();
- }
-
- private void createReportPeriodGroup(Composite parent) {
- Group reportPeriodGroup = new Group(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- reportPeriodGroup.setLayout(layout);
- reportPeriodGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
- reportPeriodGroup.setText("Report Period");
- reportPeriodGroup.setFont(parent.getFont());
-
- daysRadioButton = new Button(reportPeriodGroup, SWT.RADIO | SWT.LEFT | SWT.NO_FOCUS);
- daysRadioButton.setText("Number of days prior: ");
- daysRadioButton.setSelection(true);
-
- numDays = new Text(reportPeriodGroup, SWT.BORDER);
- GridData gd = new GridData();
- gd.widthHint = 50;
- numDays.setLayoutData(gd);
- numDays.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- try {
- numDaysToReport = Integer.parseInt(numDays.getText());
- setErrorMessage(null);
- } catch (Exception ex) {
- setErrorMessage("Must be integer");
- numDaysToReport = 0;
- }
- }
- });
-
- numDays.setText("" + DEFAULT_DAYS);
- numDaysToReport = DEFAULT_DAYS;
-
- dateRadioButton = new Button(reportPeriodGroup, SWT.RADIO | SWT.LEFT | SWT.NO_FOCUS);
- dateRadioButton.setText("Report start date: ");
-
- final DatePicker datePicker = new DatePicker(reportPeriodGroup, SWT.BORDER, "<start date>");
- datePicker.setEnabled(false);
- datePicker.addPickerSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent arg0) {
- if (datePicker.getDate() != null) {
- reportStartDate = datePicker.getDate().getTime();
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // ignore
- }
- });
-
- SelectionListener radioListener = new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- numDays.setEnabled(daysRadioButton.getSelection());
- datePicker.setEnabled(dateRadioButton.getSelection());
- if (daysRadioButton.getSelection())
- numDays.setFocus();
- if (dateRadioButton.getSelection())
- datePicker.setFocus();
- }
-
- };
-
- daysRadioButton.addSelectionListener(radioListener);
- dateRadioButton.addSelectionListener(radioListener);
-
- }
-
- /**
- * Selection of specific category to report on in the Task Planner
- *
- * @param composite
- * container to add categories combo box to
- */
- private void createCategorySelectionGroup(Composite composite) {
-
- Group categorySelectionGroup = new Group(composite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 1;
- categorySelectionGroup.setLayout(layout);
- categorySelectionGroup.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL));
- categorySelectionGroup.setText("Catagory Selection");
- categorySelectionGroup.setFont(composite.getFont());
-
- createFilterTable(categorySelectionGroup, true);
- TaskListManager manager = TasksUiPlugin.getTaskListManager();
- if (manager == null) {
- filtersTable.setEnabled(false);
- return;
- }
-
- // TODO: Hack to allow selection of a 'root tasks' category
- TableItem rootItem = new TableItem(filtersTable, SWT.NONE);
- rootItem.setText(ROOT_CATEGORY_HACK);
- rootItem.setData(ROOT_CATEGORY_HACK);
-
- // populate categories
- for (AbstractTaskContainer category : manager.getTaskList().getTaskContainers()) {
- TableItem item = new TableItem(filtersTable, SWT.NONE);
- item.setImage(labelProvider.getImage(category));
- item.setText(category.getDescription());
- item.setData(category);
- }
-
- // populate qeries
- for (AbstractRepositoryQuery query : manager.getTaskList().getQueries()) {
- TableItem item = new TableItem(filtersTable, SWT.NONE);
- item.setImage(labelProvider.getImage(query));
- item.setText(query.getDescription());
- item.setData(query);
- }
- for (int i = 0; i < columnNames.length; i++) {
- filtersTable.getColumn(i).pack();
- }
-
- createButtonsGroup(categorySelectionGroup);
-
- // default to all categories selected
- setChecked(true);
- }
-
- /**
- *
- * Creates the buttons for selecting all or none of the categories.
- *
- * @param parent
- * parent composite
- */
- private final void createButtonsGroup(Composite parent) {
-
- Font font = parent.getFont();
- new Label(parent, SWT.NONE); // Blank cell on left
-
- Composite buttonComposite = new Composite(parent, SWT.NONE);
- buttonComposite.setFont(parent.getFont());
-
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- layout.makeColumnsEqualWidth = true;
- buttonComposite.setLayout(layout);
- buttonComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
-
- Button selectButton = new Button(buttonComposite, SWT.NONE);
- selectButton.setText("Select All");
-
- selectButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- setChecked(true);
- }
- });
-
- selectButton.setFont(font);
- setButtonLayoutData(selectButton);
-
- Button deselectButton = new Button(buttonComposite, SWT.NONE);
- deselectButton.setText("Deselect All");
-
- deselectButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- setChecked(false);
- }
- });
-
- deselectButton.setFont(font);
- setButtonLayoutData(deselectButton);
-
- }
-
- private void setChecked(boolean checked) {
- for (TableItem item : filtersTable.getItems()) {
- item.setChecked(checked);
- }
- }
-
- private void createFilterTable(Composite composite, boolean enabled) {
-
- Font font = composite.getFont();
- this.filtersTable = new Table(composite, SWT.BORDER | SWT.MULTI | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL);
- this.filtersTable.setEnabled(enabled);
- GridData data = new GridData();
- // Set heightHint with a small value so the list size will be defined by
- // the space available in the dialog instead of resizing the dialog to
- // fit all the items in the list.
- data.heightHint = filtersTable.getItemHeight();
- data.verticalAlignment = GridData.FILL;
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.grabExcessVerticalSpace = true;
- this.filtersTable.setLayoutData(data);
- this.filtersTable.setFont(font);
-
- for (int i = 0; i < columnNames.length; i++) {
- TableColumn column = new TableColumn(filtersTable, SWT.NONE);
- column.setText(columnNames[i]);
- }
-
- }
-
- public Set<ITaskListElement> getSelectedFilters() {
- Set<ITaskListElement> result = new HashSet<ITaskListElement>();
- TableItem[] items = filtersTable.getItems();
- for (TableItem item : items) {
- if (item.getChecked() && item.getData() instanceof ITaskListElement) {
- result.add((ITaskListElement)item.getData());
- }
- }
- return result;
- }
-
- public Date getReportStartDate() {
- if (dateRadioButton.getSelection() && reportStartDate != null) {
- return reportStartDate;
- } else {
- long today = new Date().getTime();
- long lastDay = numDaysToReport * DAY;
-
- int offsetToday = Calendar.getInstance().get(Calendar.HOUR) * 60 * 60 * 1000
- + Calendar.getInstance().get(Calendar.MINUTE) * 60 * 1000
- + Calendar.getInstance().get(Calendar.SECOND) * 1000;
- return new Date(today - offsetToday - lastDay);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java
deleted file mode 100644
index 7f68e94e0..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java
+++ /dev/null
@@ -1,182 +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.tasks.ui.planner;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- */
-public class TaskActivityEditorInput implements IEditorInput {
-
- private static final String TASK_ACTIVITY_REPORT = "Task Activity Report";
-
- private Set<ITask> completedTasks = new HashSet<ITask>();
-
- private Set<ITask> inProgressTasks = new HashSet<ITask>();
-
- private Set<ITask> plannedTasks = new HashSet<ITask>();
-
- private TaskReportGenerator taskReportGenerator = null;
-
- // private int prevDaysToReport = -1;
-
- private Date reportStartDate = null;
-
- public TaskActivityEditorInput(Date reportStartDate, Set<ITaskListElement> chosenCategories, TaskList tlist) {
- this.reportStartDate = reportStartDate;
- taskReportGenerator = new TaskReportGenerator(tlist, chosenCategories);
-
- ITaskCollector completedTaskCollector = new CompletedTaskCollector(reportStartDate);
- taskReportGenerator.addCollector(completedTaskCollector);
-
- ITaskCollector inProgressTaskCollector = new InProgressTaskCollector(reportStartDate);
- taskReportGenerator.addCollector(inProgressTaskCollector);
-
- try {
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
- service.run(false, true, taskReportGenerator);
- while (!taskReportGenerator.isFinished())
- Thread.sleep(500);
- } catch (InvocationTargetException e) {
- // operation was canceled
- } catch (InterruptedException e) {
- MylarStatusHandler.log(e, "Could not generate report");
- }
-
- completedTasks = completedTaskCollector.getTasks();
- inProgressTasks = inProgressTaskCollector.getTasks();
-
- plannedTasks.addAll(TasksUiPlugin.getTaskListManager().getActivityNextWeek().getChildren());
-
- plannedTasks.addAll(TasksUiPlugin.getTaskListManager().getActivityFuture().getChildren());
-
- //plannedTasks = new HashSet<ITask>();
- }
-
- public boolean exists() {
- return true;
- }
-
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- public String getName() {
- return TASK_ACTIVITY_REPORT;
- }
-
- public IPersistableElement getPersistable() {
- return null;
- }
-
- public String getToolTipText() {
- return "Task Planner";
- }
-
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- public Set<ITask> getCompletedTasks() {
- return completedTasks;
- }
-
- public Set<ITask> getInProgressTasks() {
- return inProgressTasks;
- }
-
- public Set<ITask> getPlannedTasks() {
- return plannedTasks;
- }
-
- public long getTotalTimeSpentOnCompletedTasks() {
- long duration = 0;
- for (ITask t : completedTasks) {
- duration += TasksUiPlugin.getTaskListManager().getElapsedTime(t);
- }
- return duration;
- }
-
- public long getTotalTimeSpentOnInProgressTasks() {
- long duration = 0;
- for (ITask t : inProgressTasks) {
- duration += TasksUiPlugin.getTaskListManager().getElapsedTime(t);
- }
- return duration;
- }
-
- public TaskReportGenerator getReportGenerator() {
- return taskReportGenerator;
- }
-
- public boolean createdDuringReportPeriod(ITask task) {
- Date creationDate = task.getCreationDate();
- if (creationDate != null) {
- return creationDate.compareTo(reportStartDate) > 0;
- } else {
- return false;
- }
- }
-
- public Date getReportStartDate() {
- return reportStartDate;
- }
-
- public int getTotalTimeEstimated() {
- int duration = 0;
- for (ITask task : inProgressTasks) {
- duration += task.getEstimateTimeHours();
- }
- return duration;
- }
-
- public void removeCompletedTask( ITask task) {
- completedTasks.remove(task);
- }
-
- public void removeInProgressTask(ITask task) {
- inProgressTasks.remove(task);
- }
-
- public void addPlannedTask(ITask task) {
- plannedTasks.add(task);
- }
-
- public void removePlannedTask(ITask task) {
- plannedTasks.remove(task);
- }
-
- public int getPlannedEstimate() {
- int estimated = 0;
- for (ITask task : plannedTasks) {
- estimated += task.getEstimateTimeHours();
- }
- return estimated;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java
deleted file mode 100644
index 6664387e3..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java
+++ /dev/null
@@ -1,855 +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.tasks.ui.planner;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-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.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.forms.FormColors;
-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.forms.widgets.TableWrapLayout;
-import org.eclipse.ui.part.EditorPart;
-
-/**
- *
- * Note: Some methods have been generalized to remove duplicate code but the
- * design still isn't right (long parameter lists, inflexible table creation).
- * Needs refactoring. (Planned tasks section is currently disabled but should
- * also use the new common methods)
- *
- * @author Mik Kersten
- * @author Ken Sueda (original prototype)
- * @author Wesley Coelho (added tasks in progress section, refactored-out
- * similar code)
- * @author Mik Kersten (rewrite)
- */
-public class TaskActivityEditorPart extends EditorPart {
-
- private static final String LABEL_PLANNED_ACTIVITY = "Planned Activity";
-
- private static final String LABEL_DIALOG = "Summary";
-
- private static final String LABEL_PAST_ACTIVITY = "Past Activity";
-
- private TaskActivityEditorInput editorInput = null;
-
- private String[] activityColumnNames = new String[] { " ", " !", "Description", "Created", "Completed", "Elapsed",
- "Estimated" };
-
- private int[] activityColumnWidths = new int[] { 20, 30, 300, 90, 90, 70, 70 };
-
- private int[] activitySortConstants = new int[] { TaskActivitySorter.ICON, TaskActivitySorter.PRIORITY,
- TaskActivitySorter.DESCRIPTION, TaskActivitySorter.CREATION_DATE, TaskActivitySorter.COMPLETED_DATE,
- TaskActivitySorter.DURATION, TaskActivitySorter.ESTIMATED };
-
- private String[] planColumnNames = new String[] { " ", " !", "Description", "Elapsed", "Estimated", "Reminder" };
-
- private int[] planSortConstants = new int[] { TaskPlanSorter.ICON, TaskPlanSorter.PRIORITY,
- TaskPlanSorter.DESCRIPTION, TaskPlanSorter.DURATION, TaskPlanSorter.ESTIMATED, TaskPlanSorter.REMINDER };
-
- private int[] planColumnWidths = new int[] { 20, 30, 340, 90, 90, 100 };
-
- private static final String LABEL_ESTIMATED = "Total estimated: ";
-
- private static final String NO_TIME_ELAPSED = "&nbsp;";
-
- private static final String BLANK_CELL = "&nbsp;";
-
- private Label totalEstimatedHoursLabel;
-
- private Label numberCompleted;
-
- private Label totalTimeOnCompleted;
-
- private Label numberInProgress;
-
- private Label totalTimeOnIncomplete;
-
- private Label totalEstimatedTime;
-
- private Label totalTime;
-
- private TaskActivityContentProvider activityContentProvider;
-
- private PlannedTasksContentProvider planContentProvider;
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- }
-
- @Override
- public void doSaveAs() {
- }
-
- @SuppressWarnings("deprecation")
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- setSite(site);
- setInput(input);
- editorInput = (TaskActivityEditorInput) input;
- setPartName(editorInput.getName());
- setTitleToolTip(editorInput.getToolTipText());
- }
-
- @Override
- public boolean isDirty() {
- return false;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public void createPartControl(Composite parent) {
- FormToolkit toolkit = new FormToolkit(parent.getDisplay());
- ScrolledForm sform = toolkit.createScrolledForm(parent);
- Composite editorComposite = sform.getBody();
-
- editorComposite.setLayout(new GridLayout());
- GridData gridData = new GridData();
- gridData.horizontalAlignment = GridData.FILL_BOTH;
- gridData.grabExcessHorizontalSpace = true;
- gridData.grabExcessVerticalSpace = true;
- editorComposite.setLayoutData(gridData);
-
- createSummarySection(editorComposite, toolkit, editorInput.getReportStartDate());
- String label = LABEL_PAST_ACTIVITY;
-
- List<ITask> allTasks = new ArrayList<ITask>();
- allTasks.addAll(editorInput.getCompletedTasks());
- allTasks.addAll(editorInput.getInProgressTasks());
-
- SashForm sashForm = new SashForm(editorComposite, SWT.VERTICAL);
-
- sashForm.setLayout(new GridLayout());
- sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- activityContentProvider = new TaskActivityContentProvider(editorInput);
-
- final TableViewer activityViewer = createTableSection(sashForm, toolkit, label, activityColumnNames,
- activityColumnWidths, activitySortConstants);
- activityViewer.setContentProvider(activityContentProvider);
- activityViewer.setLabelProvider(new TaskPlannerLabelProvider());
- setSorters(activityColumnNames, activitySortConstants, activityViewer.getTable(), activityViewer, false);
- activityViewer.setInput(editorInput);
-
- activityViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- updateLabels();
- }
- });
-
- MenuManager activityContextMenuMgr = new MenuManager("#ActivityPlannerPopupMenu");
- activityContextMenuMgr.setRemoveAllWhenShown(true);
- activityContextMenuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- TaskActivityEditorPart.this.fillContextMenu(activityViewer, manager);
-
- }
- });
- Menu menu = activityContextMenuMgr.createContextMenu(activityViewer.getControl());
- activityViewer.getControl().setMenu(menu);
- getSite().registerContextMenu(activityContextMenuMgr, activityViewer);
-
- planContentProvider = new PlannedTasksContentProvider(editorInput);
- final TableViewer planViewer = createTableSection(sashForm, toolkit, LABEL_PLANNED_ACTIVITY, planColumnNames,
- planColumnWidths, planSortConstants);
- planViewer.setContentProvider(planContentProvider);
- planViewer.setLabelProvider(new TaskPlanLabelProvider());
- // createPlanCellEditorListener(planViewer.getTable(), planViewer);
- // planViewer.setCellModifier(new PlannedTasksCellModifier(planViewer));
- // initDrop(planViewer, planContentProvider);
- setSorters(planColumnNames, planSortConstants, planViewer.getTable(), planViewer, true);
- planViewer.setInput(editorInput);
-
- // planViewer.addSelectionChangedListener(new
- // ISelectionChangedListener() {
- // public void selectionChanged(SelectionChangedEvent event) {
- // updateLabels();
- // }
- // });
-
- // MenuManager planContextMenuMgr = new
- // MenuManager("#PlanPlannerPopupMenu");
- // planContextMenuMgr.setRemoveAllWhenShown(true);
- // planContextMenuMgr.addMenuListener(new IMenuListener() {
- // public void menuAboutToShow(IMenuManager manager) {
- // TaskActivityEditorPart.this.fillContextMenu(planViewer, manager);
- // }
- // });
- // Menu planMenu =
- // planContextMenuMgr.createContextMenu(planViewer.getControl());
- // planViewer.getControl().setMenu(planMenu);
- // getSite().registerContextMenu(planContextMenuMgr, planViewer);
-
- totalEstimatedHoursLabel = toolkit.createLabel(editorComposite, LABEL_ESTIMATED + "0 hours ", SWT.NULL);
- createButtons(editorComposite, toolkit, planViewer, planContentProvider);
- updateLabels();
- }
-
- private void fillContextMenu(TableViewer viewer, IMenuManager manager) {
- if (!viewer.getSelection().isEmpty()) {
- manager.add(new OpenTaskEditorAction(viewer));
- manager.add(new RemoveTaskAction(viewer));
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- } else {
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
- }
-
- @Override
- public void setFocus() {
- }
-
- private void createSummarySection(Composite parent, FormToolkit toolkit, Date startDate) {
- Section summarySection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- summarySection.setText(LABEL_DIALOG);
- summarySection.setLayout(new GridLayout());
- summarySection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Composite summaryContainer = toolkit.createComposite(summarySection);
- summarySection.setClient(summaryContainer);
- TableWrapLayout layout = new TableWrapLayout();
- layout.numColumns = 2;
- summaryContainer.setLayout(layout);
-
- String formatString = "yyyy-MM-dd, h:mm a";
- SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH);
-
- if (startDate != null) {
- String dateLabel = "Activity since " + format.format(startDate);
- // DateFormat.getDateInstance(DateFormat.MEDIUM).format(reportStartDate)
- Label startLabel = toolkit.createLabel(summaryContainer, dateLabel, SWT.NULL);
- startLabel.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- toolkit.createLabel(summaryContainer, "", SWT.NULL);
- }
-
- String numComplete = "Number completed: " + editorInput.getCompletedTasks().size();
- numberCompleted = toolkit.createLabel(summaryContainer, numComplete, SWT.NULL);
- numberCompleted.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String totalCompletedTaskTime = "Total time on completed: "
- + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false);
- totalTimeOnCompleted = toolkit.createLabel(summaryContainer, totalCompletedTaskTime, SWT.NULL);
- totalTimeOnCompleted.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String numInProgress = "Number in progress: " + editorInput.getInProgressTasks().size();
- numberInProgress = toolkit.createLabel(summaryContainer, numInProgress, SWT.NULL);
- numberInProgress.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String totalInProgressTaskTime = "Total time on incomplete: "
- + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnInProgressTasks(), false);
- totalTimeOnIncomplete = toolkit.createLabel(summaryContainer, totalInProgressTaskTime, SWT.NULL);
- totalTimeOnIncomplete.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String spacer = " ";
- String totalEstimated = "Total estimated time: " + editorInput.getTotalTimeEstimated() + " hours" + spacer;
- totalEstimatedTime = toolkit.createLabel(summaryContainer, totalEstimated, SWT.NULL);
- totalEstimatedTime.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- String grandTotalTime = "Total time: " + getTotalTime();
- totalTime = toolkit.createLabel(summaryContainer, grandTotalTime, SWT.NULL);
- totalTime.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
-
- }
-
- private void updateSummarySection() {
- String numComplete = "Number completed: " + editorInput.getCompletedTasks().size();
- numberCompleted.setText(numComplete);
-
- String totalCompletedTaskTime = "Total time on completed: "
- + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false);
- totalTimeOnCompleted.setText(totalCompletedTaskTime);
-
- String numInProgress = "Number in progress: " + editorInput.getInProgressTasks().size();
- numberInProgress.setText(numInProgress);
-
- String totalInProgressTaskTime = "Total time on incomplete: "
- + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnInProgressTasks(), false);
- totalTimeOnIncomplete.setText(totalInProgressTaskTime);
-
- String spacer = " ";
- String totalEstimated = "Total estimated time: " + editorInput.getTotalTimeEstimated() + " hours" + spacer;
- totalEstimatedTime.setText(totalEstimated);
-
- String grandTotalTime = "Total time: " + getTotalTime();
- totalTime.setText(grandTotalTime);
-
- }
-
- // private void createPlanCellEditorListener(final Table planTable, final
- // TableViewer planTableViewer) {
- // CellEditor[] editors = new CellEditor[planColumnNames.length + 1];
- // final ComboBoxCellEditor estimateEditor = new
- // ComboBoxCellEditor(planTable, TaskListManager.ESTIMATE_TIMES,
- // SWT.READ_ONLY);
- // final ReminderCellEditor reminderEditor = new
- // ReminderCellEditor(planTable);
- // 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)
- // planTableViewer.getSelection()).getFirstElement();
- // if (selection instanceof ITask) {
- // ((ITask) selection).setReminderDate(reminderEditor.getReminderDate());
- // planTableViewer.refresh();
- // }
- // }
- //
- // public void cancelEditor() {
- // }
- //
- // public void editorValueChanged(boolean oldValidState, boolean
- // newValidState) {
- // }
- //
- // });
- // estimateEditor.addListener(new ICellEditorListener() {
- // public void applyEditorValue() {
- // Object selection = ((IStructuredSelection)
- // planTableViewer.getSelection()).getFirstElement();
- // if (selection instanceof ITask) {
- // ITask task = (ITask) selection;
- // int estimate = (Integer) estimateEditor.getValue();
- // if (estimate == -1) {
- // estimate = 0;
- // }
- // task.setEstimatedTimeHours(estimate);
- // updateLabels();
- // planTableViewer.refresh();
- // }
- // }
- //
- // public void cancelEditor() {
- // }
- //
- // public void editorValueChanged(boolean oldValidState, boolean
- // newValidState) {
- // }
- //
- // });
- // planTableViewer.setCellEditors(editors);
- // }
-
- private String getTotalTime() {
- return DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks()
- + editorInput.getTotalTimeSpentOnInProgressTasks(), false);
- }
-
- private TableViewer createTableSection(Composite parent, FormToolkit toolkit, String title, String[] columnNames,
- int[] columnWidths, int[] sortConstants) {
- Section tableSection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR); // |
- // ExpandableComposite.TWISTIE
- tableSection.setText(title);
- // tableSection.setExpanded(true);
- tableSection.marginHeight = 8;
- tableSection.setLayout(new GridLayout());
- tableSection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Composite detailContainer = toolkit.createComposite(tableSection);
- tableSection.setClient(detailContainer);
- detailContainer.setLayout(new GridLayout());
- detailContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- return createTable(detailContainer, toolkit, columnNames, columnWidths, sortConstants);
- }
-
- private TableViewer createTable(Composite parent, FormToolkit toolkit, String[] columnNames, int[] columnWidths,
- int[] sortConstants) {
- int style = SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
- Table table = toolkit.createTable(parent, style);
-
- table.setLayout(new GridLayout());
- GridData tableGridData = new GridData(GridData.FILL_BOTH);
- tableGridData.heightHint = 100;
- table.setLayoutData(tableGridData);
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
- table.setEnabled(true);
-
- for (int i = 0; i < columnNames.length; i++) {
- TableColumn column = new TableColumn(table, SWT.LEFT, i);
- column.setText(columnNames[i]);
- column.setWidth(columnWidths[i]);
- }
-
- TableViewer tableViewer = new TableViewer(table);
- tableViewer.setUseHashlookup(true);
- tableViewer.setColumnProperties(columnNames);
-
- final OpenTaskEditorAction openAction = new OpenTaskEditorAction(tableViewer);
- tableViewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- openAction.run();
- }
- });
-
- return tableViewer;
- }
-
- private void setSorters(String[] columnNames, int[] sortConstants, Table table, TableViewer tableViewer,
- boolean plan) {
- for (int i = 0; i < columnNames.length; i++) {
- TableColumn column = table.getColumn(i);
- addColumnSelectionListener(tableViewer, column, sortConstants[i], plan);
- }
- }
-
- private void addColumnSelectionListener(final TableViewer tableViewer, TableColumn column,
- final int sorterConstant, final boolean plan) {
- column.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- if (plan) { // TODO: bad modularity
- tableViewer.setSorter(new TaskPlanSorter(sorterConstant));
- } else {
- tableViewer.setSorter(new TaskActivitySorter(sorterConstant));
- }
- }
- });
- }
-
- private void createButtons(Composite parent, FormToolkit toolkit, final TableViewer viewer,
- final PlannedTasksContentProvider contentProvider) {
- Composite container = new Composite(parent, SWT.NULL);
- container.setBackground(parent.getBackground());
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- layout.numColumns = 3;
-
- // Button addIncomplete = toolkit.createButton(container, "Add
- // Incomplete", SWT.PUSH | SWT.CENTER);
- // addIncomplete.addSelectionListener(new SelectionAdapter() {
- // @Override
- // public void widgetSelected(SelectionEvent e) {
- // Set<ITask> incompleteTasks = editorInput.getInProgressTasks();
- // for (ITask task : incompleteTasks) {
- // contentProvider.addTask(task);
- // viewer.refresh();
- // updateLabels();
- // }
- // }
- // });
- //
- // Button addToCategory = toolkit.createButton(container, "Add Planned
- // to Category...", SWT.PUSH | SWT.CENTER);
- // addToCategory.addSelectionListener(new SelectionAdapter() {
- // @Override
- // public void widgetSelected(SelectionEvent e) {
- // addPlannedTasksToCategory(contentProvider);
- // }
- // });
-
- Button exportToHTML = toolkit.createButton(container, "Export to HTML...", SWT.PUSH | SWT.CENTER);
- exportToHTML.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- exportToHtml();
- }
- });
- }
-
- // private void initDrop(final TableViewer tableViewer, final
- // PlannedTasksContentProvider contentProvider) {
- // Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
- //
- // tableViewer.addDropSupport(DND.DROP_MOVE, types, new
- // ViewerDropAdapter(tableViewer) {
- // {
- // setFeedbackEnabled(false);
- // }
- //
- // @Override
- // public boolean performDrop(Object data) {
- //
- // IStructuredSelection selection = ((IStructuredSelection)
- // TaskListView.getDefault().getViewer()
- // .getSelection());
- //
- // for (Iterator iter = selection.iterator(); iter.hasNext();) {
- // Object selectedObject = iter.next();
- // if (selectedObject instanceof ITask) {
- // contentProvider.addTask((ITask) selectedObject);
- // updateLabels();
- // continue;
- // } else if (selectedObject instanceof ITaskListElement) {
- // // if
- // (MylarTaskListPlugin.getDefault().getHandlerForElement((ITaskListElement)
- // selectedObject) != null) {
- // ITask task = null;
- // if (selectedObject instanceof ITask) {
- // task = (ITask) selectedObject;
- // } else if (selectedObject instanceof AbstractQueryHit) {
- // task = ((AbstractQueryHit)
- // selectedObject).getOrCreateCorrespondingTask();
- // }
- // if (task != null) {
- // contentProvider.addTask(task);
- // updateLabels();
- // continue;
- // }
- // // }
- // } else {
- // return false;
- // }
- // }
- // tableViewer.refresh();
- // return true;
- // }
- //
- // @Override
- // public boolean validateDrop(Object targetObject, int operation,
- // TransferData transferType) {
- // Object selectedObject = ((IStructuredSelection)
- // TaskListView.getDefault().getViewer().getSelection())
- // .getFirstElement();
- // if (!(selectedObject instanceof AbstractRepositoryQuery)) {
- // // && ((ITaskListElement) selectedObject).isDragAndDropEnabled()) {
- // return true;
- // }
- // return false;
- // }
- // });
- // }
-
- // private class PlannedTasksCellModifier implements ICellModifier {
- //
- // private TableViewer tableViewer;
- //
- // public PlannedTasksCellModifier(TableViewer tableViewer) {
- // this.tableViewer = tableViewer;
- // }
- //
- // public boolean canModify(Object element, String property) {
- // int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- // if (columnIndex == 5 || columnIndex == 4) {
- // return true;
- // }
- // return false;
- // }
- //
- // public Object getValue(Object element, String property) {
- // if (element instanceof ITask) {
- // int columnIndex = Arrays.asList(planColumnNames).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(planColumnNames).indexOf(property);
- // if (element instanceof ITask) {
- // ITask task = (ITask) element;
- // if (columnIndex == 4) {
- // if (value instanceof Integer) {
- // task.setEstimatedTimeHours(((Integer) value).intValue() * 10);
- // tableViewer.refresh();
- // }
- // }
- // }
- // }
- // }
-
- // private void addPlannedTasksToCategory(PlannedTasksContentProvider
- // contentProvider) {
- // List<AbstractTaskContainer> categories =
- // MylarTaskListPlugin.getTaskListManager().getTaskList().getUserCategories();
- // String[] categoryNames = new String[categories.size()];
- // int i = 0;
- // for (AbstractTaskContainer category : categories) {
- // categoryNames[i++] = category.getDescription();
- // }
- // if (categories.size() > 0) {
- // ComboSelectionDialog dialog = new
- // ComboSelectionDialog(Display.getCurrent().getActiveShell(), LABEL_DIALOG,
- // "Select destination category: ", categoryNames, 0);
- // int confirm = dialog.open();
- // if (confirm == ComboSelectionDialog.OK) {
- // String selected = dialog.getSelectedString();
- // AbstractTaskContainer destinationCategory = null;
- // for (AbstractTaskContainer category : categories) {
- // if (category.getDescription().equals(selected)) {
- // destinationCategory = category;
- // break; // will go to the first one
- // }
- // }
- // if (destinationCategory != null && destinationCategory instanceof
- // TaskCategory) {
- // TaskCategory taskCategory = (TaskCategory) destinationCategory;
- // for (ITask task : editorInput.getPlannedTasks()) {
- // if (!taskCategory.getChildren().contains(task)) {
- // MylarTaskListPlugin.getTaskListManager().getTaskList().moveToContainer(taskCategory,
- // task);
- // }
- // }
- // if (TaskListView.getDefault() != null) {
- // TaskListView.getDefault().refreshAndFocus();
- // }
- // } else {
- // MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
- // LABEL_DIALOG,
- // "Can not add plan tasks into a query category.");
- // }
- // }
- // } else {
- // MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
- // LABEL_DIALOG,
- // "No categories in task list.");
- // }
- // }
-
- private void updateLabels() {
- totalEstimatedHoursLabel.setText(LABEL_ESTIMATED + editorInput.getPlannedEstimate() + " hours");
- updateSummarySection();
- }
-
- private void exportToHtml() {
- File outputFile;
- try {
- FileDialog dialog = new FileDialog(getSite().getWorkbenchWindow().getShell());
- dialog.setText("Specify a file name");
- dialog.setFilterExtensions(new String[] { "*.html", "*.*" });
- String filename = dialog.open();
-
- if (filename == null || filename.equals(""))
- return;
-
- if (!filename.endsWith(".html"))
- filename += ".html";
- outputFile = new File(filename);
- // outputStream = new FileOutputStream(outputFile, true);
- BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
- writer.write("<html><head></head><body>"
- // + "<link rel=\"stylesheet\"
- // href=\"http://eclipse.org/mylar/style.css\"
- // type=\"text/css\"></head><body>"
- );
-
- exportSummarySection(writer);
-
- exportActivitySection(writer);
-
- exportPlanSection(writer);
-
- writer.write("</body></html>");
- writer.close();
- } catch (FileNotFoundException e) {
- MylarStatusHandler.log(e, "could not resolve file");
- } catch (IOException e) {
- MylarStatusHandler.log(e, "could not write to file");
- }
- }
-
- private void exportPlanSection(BufferedWriter writer) throws IOException {
-
- writer.write("<H2>" + LABEL_PLANNED_ACTIVITY + "</H2>");
-
- writer.write("<table border=\"1\" width=\"100%\" id=\"plannedActivityTable\">");
- writer.write("<tr>");
- writer
- .write("<td width=\"59\"><b>Type</b></td><td width=\"55\"><b>Priority</b></td><td width=\"495\"><b>Description</b></td>");
- writer.write("<td><b>Elapsed</b></td><td><b>Estimated</b></td><td><b>Reminder</b></td>");
- writer.write("</tr>");
-
- for (Object element : planContentProvider.getElements(null)) {
- if (element instanceof ITask) {
- ITask currentTask = (ITask) element;
-
- String formatString = "dd-MM-yyyy";
- SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH);
-
- String elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskListManager().getElapsedTime(currentTask), false);
- String estimatedTimeString = currentTask.getEstimateTimeHours() + " hours";
- if (elapsedTimeString.equals(""))
- elapsedTimeString = BLANK_CELL;
-
- Date reminderDate = currentTask.getReminderDate();
- String reminderDateString = BLANK_CELL;
- if (reminderDate != null) {
- reminderDateString = format.format(reminderDate);
- }
-
- writer.write("<tr>");
- writer.write("<td width=\"59\">ICON</td><td width=\"55\">" + currentTask.getPriority()
- + "</td><td width=\"495\">");
- if (currentTask.hasValidUrl()) {
- writer.write("<a href='" + currentTask.getUrl() + "'>" + currentTask.getDescription() + "</a>");
- } else {
- writer.write(currentTask.getDescription());
- }
- writer.write("</td><td>" + elapsedTimeString + "</td><td>" + estimatedTimeString + "</td><td>"
- + reminderDateString + "</td>");
- writer.write("</tr>");
-
- }
- }
- writer.write("</table>");
- writer.write("<BR></BR>");
- writer.write("<H3>" + totalEstimatedHoursLabel.getText() + "</H3>");
-
- }
-
- private void exportActivitySection(BufferedWriter writer) throws IOException {
-
- writer.write("<H2>" + LABEL_PAST_ACTIVITY + "</H2>");
-
- writer.write("<table border=\"1\" width=\"100%\" id=\"activityTable\">");
- writer.write("<tr>");
- writer
- .write("<td width=\"59\"><b>Type</b></td><td width=\"55\"><b>Priority</b></td><td width=\"495\"><b>Description</b></td>");
- writer
- .write("<td><b>Created</b></td><td><b>Completed</b></td><td><b>Elapsed</b></td><td><b>Estimated</b></td>");
- writer.write("</tr>");
-
- for (Object element : activityContentProvider.getElements(null)) {
- if (element instanceof ITask) {
- ITask currentTask = (ITask) element;
-
- String formatString = "dd-MM-yyyy";
- SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH);
-
- String elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskListManager().getElapsedTime(currentTask), false);
- String estimatedTimeString = currentTask.getEstimateTimeHours() + " hours";
- if (elapsedTimeString.equals(""))
- elapsedTimeString = NO_TIME_ELAPSED;
-
- Date creationDate = currentTask.getCreationDate();
- String creationDateString = BLANK_CELL;
- if (creationDate != null) {
- creationDateString = format.format(creationDate);
- }
-
- String completionDateString = BLANK_CELL;
- Date completedDate = currentTask.getCompletionDate();
- if (completedDate != null) {
- completionDateString = format.format(completedDate);
- }
-
- writer.write("<tr>");
- writer.write("<td width=\"59\">ICON</td><td width=\"55\">" + currentTask.getPriority()
- + "</td><td width=\"495\">");
-
- if (currentTask.hasValidUrl()) {
- writer.write("<a href='" + currentTask.getUrl() + "'>" + currentTask.getDescription() + "</a>");
- } else {
- writer.write(currentTask.getDescription());
- }
-
- writer.write("</td><td>" + creationDateString + "</td>");
- writer.write("<td>" + completionDateString + "</td><td>" + elapsedTimeString + "</td><td>"
- + estimatedTimeString + "</td>");
- writer.write("</tr>");
- }
- }
- writer.write("</table>");
- }
-
- private void exportSummarySection(BufferedWriter writer) throws IOException {
- Date startDate = editorInput.getReportStartDate();
- writer.write("<H2>" + LABEL_DIALOG + "</H2>");
-
- String formatString = "yyyy-MM-dd, h:mm a";
- SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH);
-
- writer.write("<table border=\"0\" width=\"75%\" id=\"table1\">\n<tr>\n");
- writer.write("<td width=\"138\">Activity since:</td> ");
- String dateLabel = "Not Available";
- if (startDate != null) {
- dateLabel = format.format(startDate);
- }
- writer.write("<td>" + dateLabel + "</td>");
- writer.write("<td width=\"169\">&nbsp;</td><td width=\"376\">&nbsp;</td>\n</tr>");
-
- writer.write("<tr><td width=\"138\">Number Completed:</td><td>" + editorInput.getCompletedTasks().size()
- + "</td>");
-
- writer.write("<td width=\"169\">Total time on completed:</td><td width=\"376\">"
- + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false) + "</td>");
- writer.write("</tr>");
-
- writer.write("<tr><td width=\"138\">Number in Progress:</td><td>" + editorInput.getInProgressTasks().size()
- + "</td>");
- writer.write("<td width=\"169\">Total time on incompleted:</td><td width=\"376\">"
- + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnInProgressTasks(), false) + "</td>");
- writer.write("</tr>");
-
- writer.write("<tr><td width=\"138\">Total estimated time:</td><td>" + totalEstimatedHoursLabel.getText()
- + "</td>");
- writer.write("<td width=\"169\">Total time:</td><td width=\"376\">" + getTotalTime() + "</td>");
- writer.write("</tr>");
-
- writer.write("</table>");
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java
deleted file mode 100644
index 32e27af16..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java
+++ /dev/null
@@ -1,97 +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.tasks.ui.planner;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- */
-public class TaskActivitySorter extends ViewerSorter {
-
- public final static int DESCRIPTION = 1;
-
- public final static int PRIORITY = 2;
-
- public final static int CREATION_DATE = 3;
-
- public final static int COMPLETED_DATE = 4;
-
- public final static int DURATION = 5;
-
- public final static int ESTIMATED = 6;
-
- public static final int ICON = 0;
-
- private int criteria;
-
- public TaskActivitySorter(int criteria) {
- super();
- this.criteria = criteria;
- }
-
- @Override
- public int compare(Viewer viewer, Object obj1, Object obj2) {
- ITask t1 = (ITask) obj1;
- ITask t2 = (ITask) obj2;
-
- switch (criteria) {
- case DESCRIPTION:
- return compareDescription(t1, t2);
- case PRIORITY:
- return comparePriority(t1, t2);
- case CREATION_DATE:
- return compareCreationDate(t1, t2);
- case COMPLETED_DATE:
- return compareCompletedDate(t1, t2);
- case DURATION:
- return compareDuration(t1, t2);
- case ESTIMATED:
- return compareEstimated(t1, t2);
- default:
- return 0;
- }
- }
-
- protected int compareDescription(ITask task1, ITask task2) {
- return task1.getDescription().compareTo(task2.getDescription());
- }
-
- protected int comparePriority(ITask task1, ITask task2) {
- return task1.getPriority().compareTo(task2.getPriority());
- }
-
- protected int compareCompletedDate(ITask task1, ITask task2) {
- return task2.getCompletionDate().compareTo(task1.getCompletionDate());
- }
-
- protected int compareEstimated(ITask task1, ITask task2) {
- return task2.getEstimateTimeHours() - task1.getEstimateTimeHours();
- }
-
- protected int compareCreationDate(ITask task1, ITask task2) {
- if (task1.getCreationDate() == null)
- return 1;
- else if (task2.getCreationDate() == null)
- return -1;
- else
- return task2.getCreationDate().compareTo(task1.getCreationDate());
- }
-
- protected int compareDuration(ITask task1, ITask task2) {
- return TasksUiPlugin.getTaskListManager().getElapsedTime(task1) < TasksUiPlugin.getTaskListManager().getElapsedTime(task2) ? 1 : -1;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java
deleted file mode 100644
index cc25572a9..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java
+++ /dev/null
@@ -1,69 +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.tasks.ui.planner;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- */
-public class TaskActivityWizard extends Wizard implements INewWizard {
-
- private static final String TITLE = "New Task Activity Report";
-
- private TaskActicityWizardPage planningGamePage;
-
- public TaskActivityWizard() {
- super();
- init();
- setWindowTitle(TITLE);
- }
-
- @Override
- public boolean performFinish() {
- try {
- IWorkbenchPage page = TasksUiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow()
- .getActivePage();
- if (page == null)
- return false;
- IEditorInput input = new TaskActivityEditorInput(planningGamePage.getReportStartDate(), planningGamePage
- .getSelectedFilters(), TasksUiPlugin.getTaskListManager().getTaskList());
- page.openEditor(input, TaskListPreferenceConstants.PLANNER_EDITOR_ID);
- } catch (PartInitException ex) {
- MylarStatusHandler.log(ex, "couldn't open summary editor");
- }
- return true;
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-
- private void init() {
- planningGamePage = new TaskActicityWizardPage();
- super.setForcePreviousAndNextButtons(true);
- }
-
- @Override
- public void addPages() {
- addPage(planningGamePage);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.java
deleted file mode 100644
index 704cc35b7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanLabelProvider.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.tasks.ui.planner;
-
-import java.text.DateFormat;
-
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Ken Sueda
- */
-public class TaskPlanLabelProvider extends TaskElementLabelProvider implements ITableLabelProvider {
-
- // {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
- public Image getColumnImage(Object element, int columnIndex) {
- if (columnIndex == 0) {
- return super.getImage(element);
- } else {
- return null;
- }
- }
-
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- switch (columnIndex) {
- case 1:
- return task.getPriority();
- case 2:
- return task.getDescription();
- case 3:
- return DateUtil.getFormattedDurationShort(TasksUiPlugin.getTaskListManager().getElapsedTime(task));
- case 4:
- return task.getEstimateTimeHours() + " hours";
- case 5:
- if (task.getReminderDate() != null) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getReminderDate());
- } else {
- return "";
- }
- }
- }
- return null;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java
deleted file mode 100644
index 6e7765ba4..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.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.tasks.ui.planner;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.tasks.core.ITask;
-
-/**
- * @author Mik Kersten
- */
-public class TaskPlanSorter extends TaskActivitySorter {
-
- // {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
- public final static int PRIORITY = 1;
-
- public final static int DESCRIPTION = 2;
-
- public final static int DURATION = 3;
-
- public final static int ESTIMATE = 4;
-
- public final static int REMINDER = 5;
-
- public static final int ICON = 0;
-
- private int criteria;
-
- public TaskPlanSorter(int criteria) {
- super(criteria);
- this.criteria = criteria;
- }
-
- @Override
- public int compare(Viewer viewer, Object obj1, Object obj2) {
- ITask t1 = (ITask) obj1;
- ITask t2 = (ITask) obj2;
-
- switch (criteria) {
- case PRIORITY:
- return comparePriority(t1, t2);
- case DESCRIPTION:
- return compareDescription(t1, t2);
- case DURATION:
- return compareDuration(t1, t2);
- case ESTIMATE:
- return compareEstimated(t1, t2);
- case REMINDER:
- return compareReminder(t1, t2);
- default:
- return 0;
- }
- }
-
- private int compareReminder(ITask task1, ITask task2) {
- if (task2.getReminderDate() == null)
- return -1;
- if (task1.getReminderDate() == null)
- return 1;
- if (task1.getReminderDate() == null && task2.getReminderDate() == null)
- return 0;
- return task2.getReminderDate().compareTo(task1.getReminderDate());
- }
-
- // protected int compareEstimated(ITask task1, ITask task2) {
- // if (task1.getEstimateTimeHours() > task2.getEstimateTimeHours()) {
- // return 1;
- // } else {
- // return -1;
- // }
-
- // private int compareDescription(ITask task1, ITask task2) {
- // return
- // task1.getDescription(false).compareTo(task2.getDescription(false));
- // }
- //
- // private int comparePriority(ITask task1, ITask task2) {
- // return task1.getPriority().compareTo(task2.getPriority());
- // }
- //
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java
deleted file mode 100644
index 5e5580dd6..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.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.tasks.ui.planner;
-
-import java.text.DateFormat;
-
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-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(TasksUiPlugin.getTaskListManager().getElapsedTime(task));
- 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/tasks/ui/planner/TaskReportGenerator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java
deleted file mode 100644
index e9100c1fe..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java
+++ /dev/null
@@ -1,130 +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.tasks.ui.planner;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-/**
- * @author Ken Sueda
- * @author Mik Kersten
- * @author Rob Elves (scope report to specific categories and queries)
- */
-public class TaskReportGenerator implements IRunnableWithProgress {
-
- private static final String LABEL_JOB = "Mylar Task Activity Report";
-
- private boolean finished;
-
- private TaskList tasklist = null;
-
- private List<ITaskCollector> collectors = new ArrayList<ITaskCollector>();
-
- private List<ITask> tasks = new ArrayList<ITask>();
-
- private Set<ITaskListElement> filterCategories;
-
- public TaskReportGenerator(TaskList tlist) {
- this(tlist, null);
- }
-
- public TaskReportGenerator(TaskList tlist, Set<ITaskListElement> filterCategories) {
- tasklist = tlist;
- this.filterCategories = filterCategories != null ? filterCategories : new HashSet<ITaskListElement>();
- }
-
- public void addCollector(ITaskCollector collector) {
- collectors.add(collector);
- }
-
- public void collectTasks() {
- try {
- run(new NullProgressMonitor());
- } catch (InvocationTargetException e) {
- // operation was canceled
- } catch (InterruptedException e) {
- MylarStatusHandler.log(e, "Could not collect tasks");
- }
- }
-
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-
- Set<ITaskListElement> rootElements;
- if (filterCategories.size() == 0) {
- rootElements = tasklist.getRootElements();
- } else if(filterCategories.contains(TaskActicityWizardPage.ROOT_CATEGORY_HACK)) {
- // TODO: Remove when root category issues fixed
- rootElements = new HashSet<ITaskListElement>(tasklist.getRootTasks());
- filterCategories.remove(TaskActicityWizardPage.ROOT_CATEGORY_HACK);
- rootElements.addAll(filterCategories);
- } else {
- rootElements = filterCategories;
- }
-
- int estimatedItemsToProcess = rootElements.size();
- monitor.beginTask(LABEL_JOB, estimatedItemsToProcess);
-
- for (Object element : rootElements) {
- monitor.worked(1);
- if (element instanceof AbstractTaskContainer) {
- AbstractTaskContainer cat = (AbstractTaskContainer) element;
- for (ITask task : cat.getChildren())
- for (ITaskCollector collector : collectors) {
- collector.consumeTask(task);
- }
-
- } else if (element instanceof Task) {
- Task task = (Task) element;
- for (ITaskCollector collector : collectors) {
- collector.consumeTask(task);
- }
-
- } else if (element instanceof AbstractRepositoryQuery) {
- // process queries
- AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) element;
- for(ITask task : repositoryQuery.getChildren()) {
- for (ITaskCollector collector : collectors) {
- collector.consumeTask(task);
- }
- }
- }
- }
- // Put the results all into one list (tasks)
- for (ITaskCollector collector : collectors) {
- tasks.addAll(collector.getTasks());
- }
- finished = true;
- monitor.done();
- }
-
- public List<ITask> getAllCollectedTasks() {
- return tasks;
- }
-
- public boolean isFinished() {
- return finished;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/MylarPreferencePage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/MylarPreferencePage.java
deleted file mode 100644
index dfa5d64e8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/MylarPreferencePage.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.preferences;
-
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * @author Mik Kersten
- */
-public class MylarPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
- @Override
- protected Control createContents(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout(1, false);
- container.setLayout(layout);
-
- Label label = new Label(container, SWT.NULL);
- label.setText("Please select a preference page below \"Mylar\".");
-
- return container;
- }
-
- public void init(IWorkbench workbench) {
- // ignore
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksPreferencePage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksPreferencePage.java
deleted file mode 100644
index f5fc01d1e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksPreferencePage.java
+++ /dev/null
@@ -1,597 +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.tasks.ui.preferences;
-
-import java.io.File;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-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.DirectoryDialog;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Spinner;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-import org.eclipse.ui.dialogs.PreferenceLinkArea;
-import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TasksPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
- private static final int OVERWRITE = 0;
-
- private static final int LOAD_EXISTING = 1;
-
- private static final int CANCEL = 2;
-
- private static final String FOLDER_SELECTION_MESSAGE = "Specify the folder for tasks";
-
- private static final String TITLE_FOLDER_SELECTION = "Folder Selection";
-
- private static final String END_HOUR_LABEL = "Work day end (24hr): ";
-
- private static final String START_HOUR_LABEL = "Work day start (24hr): ";
-
- private static final String GROUP_WORK_WEEK_LABEL = "Scheduling";
-
- private static final String FORWARDSLASH = "/";
-
- private static final String BACKSLASH_MULTI = "\\\\";
-
- private Button reportEditor;
-
- private Button disableInternal;
-
- private Button activateOnOpen;
-
- private Button reportInternal;
-
- private Text synchScheduleTime = null;
-
- private Button enableBackgroundSynch;
-
- private Text taskDirectoryText = null;
-
- private Button browse = null;
-
- private Button backupNow = null;
-
- private Button notificationEnabledButton = null;
-
- private Text backupScheduleTimeText;
-
- private Text backupFolderText;
-
- private Spinner hourDayStart;
-
- private Spinner hourDayEnd;
-
- private int taskDataDirectoryAction = -1;
-
- public TasksPreferencePage() {
- super();
- setPreferenceStore(TasksUiPlugin.getDefault().getPreferenceStore());
- }
-
- @Override
- protected Control createContents(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout(1, false);
- container.setLayout(layout);
-
- String message = "See <a>''{0}''</a> for configuring Task List colors.";
- new PreferenceLinkArea(container, SWT.NONE, "org.eclipse.ui.preferencePages.ColorsAndFonts", message,
- (IWorkbenchPreferenceContainer) getContainer(), null);
-
- createTaskRefreshScheduleGroup(container);
- createNotificationsGroup(container);
- createSchedulingGroup(container);
- createOpenWith(container);
- createTaskDataControl(container);
-
- updateRefreshGroupEnablements();
- return container;
- }
-
- public void init(IWorkbench workbench) {
- // TODO Auto-generated method stub
- }
-
- @Override
- public boolean performOk() {
- String taskDirectory = taskDirectoryText.getText();
- taskDirectory = taskDirectory.replaceAll(BACKSLASH_MULTI, FORWARDSLASH);
-
- if (!taskDirectory.equals(TasksUiPlugin.getDefault().getDataDirectory())) {
- if (taskDataDirectoryAction == OVERWRITE) {
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- TasksUiPlugin.getDefault().getTaskListSaveManager().copyDataDirContentsTo(taskDirectory);
- TasksUiPlugin.getDefault().setDataDirectory(taskDirectory);
- } else if (taskDataDirectoryAction == LOAD_EXISTING) {
- TasksUiPlugin.getDefault().setDataDirectory(taskDirectory);
- } else if (taskDataDirectoryAction == CANCEL) {
- // shouldn't get here
- }
- }
- getPreferenceStore().setValue(TaskListPreferenceConstants.NOTIFICATIONS_ENABLED,
- notificationEnabledButton.getSelection());
- getPreferenceStore().setValue(TaskListPreferenceConstants.BACKUP_SCHEDULE, backupScheduleTimeText.getText());
-
- getPreferenceStore().setValue(TaskListPreferenceConstants.REPORT_OPEN_EDITOR, reportEditor.getSelection());
- getPreferenceStore().setValue(TaskListPreferenceConstants.REPORT_OPEN_INTERNAL, reportInternal.getSelection());
- getPreferenceStore().setValue(TaskListPreferenceConstants.REPORT_DISABLE_INTERNAL,
- disableInternal.getSelection());
- getPreferenceStore().setValue(TaskListPreferenceConstants.ACTIVATE_ON_OPEN, activateOnOpen.getSelection());
-
- // getPreferenceStore().setValue(TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP,
- // synchQueries.getSelection());
- getPreferenceStore().setValue(TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED,
- enableBackgroundSynch.getSelection());
- long miliseconds = 60000 * Long.parseLong(synchScheduleTime.getText());
- getPreferenceStore().setValue(TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_MILISECONDS,
- "" + miliseconds);
-
- getPreferenceStore().setValue(TaskListPreferenceConstants.PLANNING_STARTHOUR, hourDayStart.getSelection());
- getPreferenceStore().setValue(TaskListPreferenceConstants.PLANNING_ENDHOUR, hourDayEnd.getSelection());
- backupNow.setEnabled(true);
- return true;
- }
-
- @Override
- public boolean performCancel() {
- taskDirectoryText.setText(TasksUiPlugin.getDefault().getDefaultDataDirectory());
- notificationEnabledButton.setSelection(getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.NOTIFICATIONS_ENABLED));
- backupScheduleTimeText.setText(getPreferenceStore().getString(TaskListPreferenceConstants.BACKUP_SCHEDULE));
- backupFolderText.setText(TasksUiPlugin.getDefault().getBackupFolderPath());
-
- reportEditor.setSelection(getPreferenceStore().getBoolean(TaskListPreferenceConstants.REPORT_OPEN_EDITOR));
- reportInternal.setSelection(getPreferenceStore().getBoolean(TaskListPreferenceConstants.REPORT_OPEN_INTERNAL));
- disableInternal.setSelection(getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.REPORT_DISABLE_INTERNAL));
- activateOnOpen.setSelection(getPreferenceStore().getBoolean(TaskListPreferenceConstants.ACTIVATE_ON_OPEN));
- // synchQueries.setSelection(getPreferenceStore().getBoolean(
- // TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP));
- enableBackgroundSynch.setSelection(getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED));
- synchScheduleTime.setText(getMinutesString());
-
- hourDayStart.setSelection(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_STARTHOUR));
- hourDayEnd.setSelection(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_ENDHOUR));
- backupNow.setEnabled(true);
- return true;
- }
-
- public void performDefaults() {
- super.performDefaults();
- String taskDirectory = TasksUiPlugin.getDefault().getDefaultDataDirectory();
- if (!taskDirectory.equals(TasksUiPlugin.getDefault().getDataDirectory())) {
- checkForExistingTasklist(taskDirectory);
- if (taskDataDirectoryAction != CANCEL) {
- taskDirectoryText.setText(taskDirectory);
- backupFolderText.setText(taskDirectory + FORWARDSLASH
- + TasksUiPlugin.DEFAULT_BACKUP_FOLDER_NAME);
- backupNow.setEnabled(false);
- }
- } else {
- taskDirectoryText.setText(taskDirectory);
- backupFolderText.setText(taskDirectory + FORWARDSLASH
- + TasksUiPlugin.DEFAULT_BACKUP_FOLDER_NAME);
- backupNow.setEnabled(true);
- }
-
- notificationEnabledButton.setSelection(getPreferenceStore().getDefaultBoolean(
- TaskListPreferenceConstants.NOTIFICATIONS_ENABLED));
- backupScheduleTimeText.setText(getPreferenceStore().getDefaultString(
- TaskListPreferenceConstants.BACKUP_SCHEDULE));
-
-
- reportEditor.setSelection(getPreferenceStore()
- .getDefaultBoolean(TaskListPreferenceConstants.REPORT_OPEN_EDITOR));
- reportInternal.setSelection(getPreferenceStore().getDefaultBoolean(
- TaskListPreferenceConstants.REPORT_OPEN_INTERNAL));
- reportInternal.setSelection(getPreferenceStore().getDefaultBoolean(
- TaskListPreferenceConstants.REPORT_DISABLE_INTERNAL));
-
- // synchQueries.setSelection(getPreferenceStore().getDefaultBoolean(
- // TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP));
- enableBackgroundSynch.setSelection(getPreferenceStore().getDefaultBoolean(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED));
- // userRefreshOnly.setSelection(!enableBackgroundSynch.getSelection());
- long miliseconds = getPreferenceStore().getDefaultLong(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_MILISECONDS);
- long minutes = miliseconds / 60000;
- synchScheduleTime.setText("" + minutes);
-
- hourDayStart.setSelection(getPreferenceStore().getDefaultInt(TaskListPreferenceConstants.PLANNING_STARTHOUR));
- hourDayEnd.setSelection(getPreferenceStore().getDefaultInt(TaskListPreferenceConstants.PLANNING_ENDHOUR));
- updateRefreshGroupEnablements();
- }
-
- private void createTaskRefreshScheduleGroup(Composite parent) {
- Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
- group.setText("Synchronization");
- GridLayout gridLayout = new GridLayout(1, false);
- // gridLayout.marginLeft = 0;
- group.setLayout(gridLayout);
- group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- // userRefreshOnly = new Button(group, SWT.RADIO);
- // GridData gridData = new GridData();
- // gridData.horizontalSpan = 2;
- // userRefreshOnly.setLayoutData(gridData);
- // userRefreshOnly.setText("Disabled");
- // userRefreshOnly.setSelection(!getPreferenceStore().getBoolean(
- // TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED));
- // userRefreshOnly.addSelectionListener(new SelectionListener() {
- // public void widgetSelected(SelectionEvent e) {
- // updateRefreshGroupEnablements();
- // }
- //
- // public void widgetDefaultSelected(SelectionEvent e) {
- // }
- // });
- Composite enableSynch = new Composite(group, SWT.NULL);
- gridLayout = new GridLayout(4, false);
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- enableSynch.setLayout(gridLayout);
- enableBackgroundSynch = new Button(enableSynch, SWT.CHECK);
- // enableBackgroundSynch.setLayoutData(gridData);
- enableBackgroundSynch.setText("Synchronize with repositories every");
- enableBackgroundSynch.setSelection(getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED));
- enableBackgroundSynch.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- updateRefreshGroupEnablements();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
- synchScheduleTime = new Text(enableSynch, SWT.BORDER | SWT.RIGHT);
- GridData gridData = new GridData();
- gridData.widthHint = 25;
- synchScheduleTime.setLayoutData(gridData);
- synchScheduleTime.setText(getMinutesString());
- synchScheduleTime.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateRefreshGroupEnablements();
- }
- });
- Label label = new Label(enableSynch, SWT.NONE);
- label.setText("minutes");
-
- // synchQueries = new Button(group, SWT.CHECK);
- // synchQueries.setText("Synchronize on startup");
- // synchQueries.setSelection(getPreferenceStore().getBoolean(
- // TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP));
-
- }
-
- private void createOpenWith(Composite parent) {
- Group container = new Group(parent, SWT.SHADOW_ETCHED_IN);
- container.setLayout(new GridLayout(2, false));
- container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- container.setText("Open Repository Tasks with");
- reportEditor = new Button(container, SWT.RADIO);
- reportEditor.setText("Editor if available (Recommended)");
- reportEditor.setSelection(getPreferenceStore().getBoolean(TaskListPreferenceConstants.REPORT_OPEN_EDITOR));
- reportInternal = new Button(container, SWT.RADIO);
- reportInternal.setText("Internal browser");
- reportInternal.setSelection(getPreferenceStore().getBoolean(TaskListPreferenceConstants.REPORT_OPEN_INTERNAL));
-
- disableInternal = new Button(container, SWT.CHECK);
- disableInternal.setText("Disable internal browser");
- disableInternal.setEnabled(!reportInternal.getSelection());
- disableInternal.setSelection(getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.REPORT_DISABLE_INTERNAL));
-
- activateOnOpen = new Button(container, SWT.CHECK);
- activateOnOpen.setText("Active on open (Experimental)");
- activateOnOpen.setEnabled(!reportInternal.getSelection());
- activateOnOpen.setSelection(getPreferenceStore().getBoolean(TaskListPreferenceConstants.ACTIVATE_ON_OPEN));
-
- reportInternal.addListener(SWT.Selection, new Listener() {
-
- public void handleEvent(Event event) {
- if (reportInternal.getSelection()) {
- disableInternal.setSelection(false);
- disableInternal.setEnabled(false);
- } else {
- disableInternal.setEnabled(true);
- }
- }
- });
- }
-
- private void createTaskDataControl(Composite parent) {
- Group taskDataGroup = new Group(parent, SWT.SHADOW_ETCHED_IN);
- taskDataGroup.setText("Task Data");
- taskDataGroup.setLayout(new GridLayout(1, false));
- taskDataGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- Label label = new Label(taskDataGroup, SWT.NULL);
- label.setText("Default data directory will move with workspace (Recommended)");
-
- Composite dataDirComposite = new Composite(taskDataGroup, SWT.NULL);
- GridLayout gridLayout = new GridLayout(3, false);
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- dataDirComposite.setLayout(gridLayout);
- dataDirComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- label = new Label(dataDirComposite, SWT.NULL);
- label.setText("Data directory: ");
-
- String taskDirectory = TasksUiPlugin.getDefault().getDataDirectory();
- taskDirectory = taskDirectory.replaceAll(BACKSLASH_MULTI, FORWARDSLASH);
- taskDirectoryText = new Text(dataDirComposite, SWT.BORDER);
- taskDirectoryText.setText(taskDirectory);
- taskDirectoryText.setEditable(false);
- taskDirectoryText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- browse = new Button(dataDirComposite, SWT.TRAIL);
- browse.setText("Browse...");
- browse.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- DirectoryDialog dialog = new DirectoryDialog(getShell());
- dialog.setText(TITLE_FOLDER_SELECTION);
- dialog.setMessage(FOLDER_SELECTION_MESSAGE);
- String dir = taskDirectoryText.getText();
- dir = dir.replaceAll(BACKSLASH_MULTI, FORWARDSLASH);
- dialog.setFilterPath(dir);
-
- dir = dialog.open();
- if (dir == null || dir.equals(""))
- return;
- dir = dir.replaceAll(BACKSLASH_MULTI, FORWARDSLASH);
- checkForExistingTasklist(dir);
-
- if (taskDataDirectoryAction != CANCEL) {
- taskDirectoryText.setText(dir);
- backupFolderText.setText(dir + FORWARDSLASH + TasksUiPlugin.DEFAULT_BACKUP_FOLDER_NAME);
- backupNow.setEnabled(false);
- }
- }
-
- });
-
- Composite backupComposite = new Composite(taskDataGroup, SWT.NULL);
- gridLayout = new GridLayout(5, false);
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- backupComposite.setLayout(gridLayout);
- backupComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- label = new Label(backupComposite, SWT.NULL);
- label.setText("Backup every");
- backupScheduleTimeText = new Text(backupComposite, SWT.BORDER | SWT.RIGHT);
- final GridData gridData_1 = new GridData();
- gridData_1.widthHint = 13;
- backupScheduleTimeText.setLayoutData(gridData_1);
-
- backupScheduleTimeText.setText("" + getPreferenceStore().getInt(TaskListPreferenceConstants.BACKUP_SCHEDULE));
- backupScheduleTimeText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateRefreshGroupEnablements();
- }
- });
-
- label = new Label(backupComposite, SWT.NONE);
- label.setText("days to");
-
- String backupDirectory = TasksUiPlugin.getDefault().getBackupFolderPath();// getPreferenceStore().getString(TaskListPreferenceConstants.BACKUP_FOLDER);
- backupDirectory = backupDirectory.replaceAll(BACKSLASH_MULTI, FORWARDSLASH);
- backupFolderText = new Text(backupComposite, SWT.BORDER);
- backupFolderText.setText(backupDirectory);
- backupFolderText.setEditable(false);
- backupFolderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- backupNow = new Button(backupComposite, SWT.NONE);
- backupNow.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
- backupNow.setText("Backup Now");
- backupNow.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- TasksUiPlugin.getDefault().getBackupManager().backupNow(true);
- }
- });
- }
-
- private void createNotificationsGroup(Composite parent) {
- Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
- group.setText("Notifications");
- group.setLayout(new GridLayout(1, false));
- group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- notificationEnabledButton = new Button(group, SWT.CHECK);
- notificationEnabledButton.setText("Display notifications for overdue tasks and incoming changes");
- notificationEnabledButton.setSelection(getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.NOTIFICATIONS_ENABLED));
- }
-
- private void createSchedulingGroup(Composite container) {
- Group group = new Group(container, SWT.SHADOW_ETCHED_IN);
- group.setText(GROUP_WORK_WEEK_LABEL);
- group.setLayout(new GridLayout(5, false));
- group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // Label workWeekBeginLabel = new Label(group, SWT.NONE);
- // workWeekBeginLabel.setText(START_DAY_LABEL);
- // workWeekBegin = new Combo(group, SWT.READ_ONLY);
- // // Calendar.SUNDAY = 1
- // workWeekBegin.add("SUNDAY");
- // workWeekBegin.add("MONDAY");
- // workWeekBegin.add("TUESDAY");
- // workWeekBegin.add("WEDNESDAY");
- // workWeekBegin.add("THURSDAY");
- // workWeekBegin.add("FRIDAY");
- // workWeekBegin.add("SATURDAY");
- // workWeekBegin.select(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_STARTDAY)
- // - 1);
- //
- // Label workWeekEndLabel = new Label(group, SWT.NONE);
- // workWeekEndLabel.setText(END_DAY_LABEL);
- // workWeekEnd = new Combo(group, SWT.READ_ONLY);
- // workWeekEnd.add("SUNDAY");
- // workWeekEnd.add("MONDAY");
- // workWeekEnd.add("TUESDAY");
- // workWeekEnd.add("WEDNESDAY");
- // workWeekEnd.add("THURSDAY");
- // workWeekEnd.add("FRIDAY");
- // workWeekEnd.add("SATURDAY");
- // workWeekEnd.select(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_ENDDAY)
- // - 1);
-
- Label hourDayStartLabel = new Label(group, SWT.NONE);
- hourDayStartLabel.setText(START_HOUR_LABEL);
- hourDayStart = new Spinner(group, SWT.BORDER);
- hourDayStart.setDigits(0);
- hourDayStart.setIncrement(1);
- hourDayStart.setMaximum(23);
- hourDayStart.setMinimum(0);
- hourDayStart.setSelection(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_STARTHOUR));
- hourDayStart.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- updateRefreshGroupEnablements();
- }
-
- });
-
- Label spacer = new Label(group, SWT.NONE);
- GridDataFactory.fillDefaults().hint(40, SWT.DEFAULT).applyTo(spacer);
-
- Label hourDayEndLabel = new Label(group, SWT.NONE);
- hourDayEndLabel.setText(END_HOUR_LABEL);
-
- hourDayEnd = new Spinner(group, SWT.BORDER);
- hourDayEnd.setDigits(0);
- hourDayEnd.setIncrement(1);
- hourDayEnd.setMaximum(23);
- hourDayEnd.setMinimum(0);
- hourDayEnd.setSelection(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_ENDHOUR));
- hourDayEnd.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- updateRefreshGroupEnablements();
- }
-
- });
-
- }
-
- public void updateRefreshGroupEnablements() {
- try {
- long number = Integer.parseInt(backupScheduleTimeText.getText());
- if (number <= 0) {
- this.setErrorMessage("Archive schedule time must be > 0");
- this.setValid(false);
- } else if (backupFolderText.getText() == "") {
- this.setErrorMessage("Archive destination folder must be specified");
- this.setValid(false);
- } else {
- this.setErrorMessage(null);
- this.setValid(true);
- }
- } catch (NumberFormatException e) {
- this.setErrorMessage("Archive schedule time must be valid integer");
- this.setValid(false);
- }
-
- if (enableBackgroundSynch.getSelection()) {
- try {
- long number = Long.parseLong(synchScheduleTime.getText());
- if (number <= 0) {
- this.setErrorMessage("Refresh schedule time must be > 0");
- this.setValid(false);
- } else {
- this.setErrorMessage(null);
- this.setValid(true);
- }
- } catch (NumberFormatException e) {
- this.setErrorMessage("Refresh schedule time must be valid integer");
- this.setValid(false);
- }
- } else {
- this.setValid(true);
- this.setErrorMessage(null);
- }
-
- if (getErrorMessage() == null) {
- if (hourDayEnd.getSelection() <= hourDayStart.getSelection()) {
- setErrorMessage("Planning: Work day start must be before end.");
- this.setValid(false);
- } else {
- setErrorMessage(null);
- this.setValid(true);
- }
- }
-
- synchScheduleTime.setEnabled(enableBackgroundSynch.getSelection());
- }
-
- private String getMinutesString() {
- long miliseconds = getPreferenceStore().getLong(
- TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_MILISECONDS);
- long minutes = miliseconds / 60000;
- return "" + minutes;
- }
-
- private void checkForExistingTasklist(String dir) {
- File newDataFolder = new File(dir);
- if (newDataFolder.exists()) {
- for (String filename : newDataFolder.list()) {
- if (filename.equals(TasksUiPlugin.DEFAULT_TASK_LIST_FILE)) {
-
- MessageDialog dialogConfirm = new MessageDialog(
- null,
- "Tasklist found at destination",
- null,
- "Overwrite existing tasklist with current data or load tasklist from new destination?",
- MessageDialog.WARNING, new String[] { "Overwrite", "Load",
- IDialogConstants.CANCEL_LABEL }, CANCEL);
- taskDataDirectoryAction = dialogConfirm.open();
- break;
- }
- }
- if(taskDataDirectoryAction == -1) {
- taskDataDirectoryAction = OVERWRITE;
- }
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositoryQueryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositoryQueryPage.java
deleted file mode 100644
index 3e7e9ce18..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositoryQueryPage.java
+++ /dev/null
@@ -1,130 +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.tasks.ui.search;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.search.ui.ISearchPage;
-import org.eclipse.search.ui.ISearchPageContainer;
-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 AbstractRepositoryQueryPage extends WizardPage implements ISearchPage {
-
- private static final String TITLE_QUERY_TITLE = "Query Title";
-
- private static final String TITLE = "Enter query parameters";
-
- private static final String DESCRIPTION = "If attributes are blank or stale press the Update button.";
-
- private Text title;
-
- private String titleString = "";
-
- protected ISearchPageContainer scontainer = null;
-
- public AbstractRepositoryQueryPage(String wizardTitle) {
- this(wizardTitle, "");
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- setImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- setPageComplete(false);
- }
-
- public AbstractRepositoryQueryPage(String wizardTitle, String queryTitle) {
- super(wizardTitle);
- titleString = queryTitle;
- }
-
- public void createControl(Composite parent) {
- if (scontainer == null) {
- createTitleGroup(parent);
- title.setFocus();
- }
- }
-
- private void createTitleGroup(Composite composite) {
- if(scontainer != null) return;
- 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 = 1;
- 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 != null ? title.getText() : "";
- }
-
- public abstract AbstractRepositoryQuery getQuery();
-
- public void saveWidgetValues() {
- // empty
- }
-
- public void setContainer(ISearchPageContainer container) {
- scontainer = container;
- }
-
- public boolean inSearchContainer() {
- return scontainer != null;
- }
-
- public boolean performAction() {
- return false;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositorySearchQuery.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositorySearchQuery.java
deleted file mode 100644
index 8fe0478ac..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/AbstractRepositorySearchQuery.java
+++ /dev/null
@@ -1,44 +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.tasks.ui.search;
-
-import org.eclipse.search.ui.ISearchQuery;
-import org.eclipse.search.ui.ISearchResult;
-
-/**
- * @author Rob Elves
- */
-public abstract class AbstractRepositorySearchQuery implements ISearchQuery {
-
- /** The collection of all the matches. */
- private RepositorySearchResult searchResult;
-
- public String getLabel() {
- return "Querying Repository...";
- }
-
- public boolean canRerun() {
- return true;
- }
-
- public boolean canRunInBackground() {
- return true;
- }
-
- public ISearchResult getSearchResult() {
- if (searchResult == null) {
- searchResult = new RepositorySearchResult(this);
- }
- return searchResult;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/OpenSearchResultAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/OpenSearchResultAction.java
deleted file mode 100644
index f3a0079fb..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/OpenSearchResultAction.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.search;
-
-import java.util.Iterator;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-
-/**
- * This class is used to open a bug report in an editor.
- */
-public class OpenSearchResultAction extends Action {
-
- /** The view this action works on */
- private RepositorySearchResultView resultView;
-
- /**
- * Constructor
- *
- * @param text
- * The text for this action
- * @param resultView
- * The <code>RepositorySearchResultView</code> this action
- * works on
- */
- public OpenSearchResultAction(String text, RepositorySearchResultView resultView) {
- setText(text);
- this.resultView = resultView;
- }
-
- /**
- * Open the selected bug reports in their own editors.
- */
- @SuppressWarnings("unchecked")
- @Override
- public void run() {
-
- // Get the selected items
- ISelection s = resultView.getViewer().getSelection();
- if (s instanceof IStructuredSelection) {
- IStructuredSelection selection = (IStructuredSelection) s;
-
- // go through each of the selected items and show it in an editor
- for (Iterator<AbstractQueryHit> it = selection.iterator(); it.hasNext();) {
- AbstractQueryHit repositoryHit = it.next();
- TaskUiUtil.openRepositoryTask(repositoryHit.getRepositoryUrl(), repositoryHit.getId(), repositoryHit.getUrl());
- // try {
- // int id = Integer.parseInt(repositoryHit.getId());
- // String bugUrl =
- // BugzillaServerFacade.getBugUrlWithoutLogin(repositoryHit.getRepositoryUrl(),
- // id);
- // TaskUiUtil.openRepositoryTask(repositoryHit.getRepositoryUrl(),
- // "" + repositoryHit.getId(), bugUrl);
- // } catch (NumberFormatException e) {
- // MylarStatusHandler.fail(e, "Could not open, malformed id: " +
- // repositoryHit.getId(), true);
- // }
- }
-
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResult.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResult.java
deleted file mode 100644
index 110fdc3ad..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResult.java
+++ /dev/null
@@ -1,125 +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.tasks.ui.search;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.search.internal.ui.SearchPluginImages;
-import org.eclipse.search.ui.ISearchQuery;
-import org.eclipse.search.ui.text.AbstractTextSearchResult;
-import org.eclipse.search.ui.text.IEditorMatchAdapter;
-import org.eclipse.search.ui.text.IFileMatchAdapter;
-
-/**
- * The collection of all the matches.
- *
- * @author Rob Elves (moved into task.ui)
- * @see org.eclipse.search.ui.text.AbstractTextSearchResult
- */
-public class RepositorySearchResult extends AbstractTextSearchResult {
-
- /**
- * The query producing this result.
- */
- private ISearchQuery repositoryQuery;
-
- /**
- * Constructor for <code>RepositorySearchResult</code> class.
- *
- * @param query
- * <code>AbstractRepositorySearchQuery</code> that is producing
- * this result.
- */
- public RepositorySearchResult(ISearchQuery query) {
- super();
- repositoryQuery = query;
- }
-
- @Override
- public IEditorMatchAdapter getEditorMatchAdapter() {
- // IBugzillaResultEditorMatchAdapter adapter =
- // BugzillaUiPlugin.getResultEditorMatchAdapter();
- // if (adapter == null) {
- // return null;
- // } else {
- // adapter.setResult(this);
- // return adapter;
- // }
- return null;
- }
-
- /**
- * This function always returns <code>null</code>, as the matches for
- * this implementation of <code>AbstractTextSearchResult</code> never
- * contain files.
- *
- * @see org.eclipse.search.ui.text.AbstractTextSearchResult#getFileMatchAdapter()
- */
- @Override
- public IFileMatchAdapter getFileMatchAdapter() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.search.ui.ISearchResult#getLabel()
- */
- public String getLabel() {
- return getMatchCount() == 1 ? getSingularLabel() : getPluralLabel();
- }
-
- /**
- * Get the singular label for the number of results
- *
- * @return The singular label
- */
- protected String getSingularLabel() {
- return "Task search - 1 match";
- }
-
- /**
- * Get the plural label for the number of results
- *
- * @return The plural label
- */
- protected String getPluralLabel() {
- return "Task search - " + getMatchCount() + " matches";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.search.ui.ISearchResult#getTooltip()
- */
- public String getTooltip() {
- return getLabel();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.search.ui.ISearchResult#getImageDescriptor()
- */
- public ImageDescriptor getImageDescriptor() {
- return SearchPluginImages.DESC_OBJ_TSEARCH_DPDN;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.search.ui.ISearchResult#getQuery()
- */
- public ISearchQuery getQuery() {
- return repositoryQuery;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java
deleted file mode 100644
index 57b6901ee..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.search;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskElementLabelProvider;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListTableLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.search.internal.ui.SearchMessages;
-import org.eclipse.search.internal.ui.SearchPlugin;
-import org.eclipse.search.internal.ui.SearchPreferencePage;
-import org.eclipse.search.ui.IContextMenuConstants;
-import org.eclipse.search.ui.text.AbstractTextSearchViewPage;
-import org.eclipse.search.ui.text.Match;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.IShowInTargetList;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * Displays the results of a Repository search.
- *
- * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage
- */
-public class RepositorySearchResultView extends AbstractTextSearchViewPage implements IAdaptable {
-
- // The categories to sort bug results by
-
- public static final int ORDER_PRIORITY = 1;
-
- public static final int ORDER_DESCRIPTION = 2;
-
- public static final int ORDER_SEVERITY = 3;
-
- public static final int ORDER_STATUS = 4;
-
- public static final int ORDER_ID = 5;
-
- public static final int ORDER_DEFAULT = ORDER_PRIORITY;
-
- private static final String KEY_SORTING = TasksUiPlugin.PLUGIN_ID + ".search.resultpage.sorting"; //$NON-NLS-1$
-
- private SearchResultContentProvider bugContentProvider;
-
- private int bugCurrentSortOrder;
-
- // private SearchResultSortAction bugSortByIDAction;
-
- // private SearchResultSortAction bugSortBySeverityAction;
-
- private SearchResultSortAction bugSortByPriorityAction;
-
- private SearchResultSortAction bugSortByDescriptionAction;
-
- // private SearchResultSortAction bugSortByStatusAction;
-
- // private AddFavoriteAction addToFavoritesAction;
-
- private OpenSearchResultAction openInEditorAction;
-
- private static final String[] SHOW_IN_TARGETS = new String[] { IPageLayout.ID_RES_NAV };
-
- private static final IShowInTargetList SHOW_IN_TARGET_LIST = new IShowInTargetList() {
- public String[] getShowInTargetIds() {
- return SHOW_IN_TARGETS;
- }
- };
-
- private IPropertyChangeListener bugPropertyChangeListener;
-
- /**
- * Constructor
- */
- public RepositorySearchResultView() {
- // Only use the table layout.
- super(FLAG_LAYOUT_FLAT);
-
- bugSortByPriorityAction = new SearchResultSortAction("Bug priority", this, ORDER_PRIORITY);
- bugSortByDescriptionAction = new SearchResultSortAction("Bug Description", this, ORDER_DESCRIPTION);
- // bugSortByIDAction = new SearchResultSortAction("Bug ID", this,
- // ORDER_ID);
- // bugSortBySeverityAction = new SearchResultSortAction("Bug severity",
- // this, ORDER_SEVERITY);
- // bugSortByStatusAction = new SearchResultSortAction("Bug status",
- // this,
- // ORDER_STATUS);
- bugCurrentSortOrder = ORDER_DEFAULT;
-
- // addToFavoritesAction = new AddFavoriteAction("Mark Result as
- // Favorite", this);
- openInEditorAction = new OpenSearchResultAction("Open in Editor", this);
-
- bugPropertyChangeListener = new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (SearchPreferencePage.LIMIT_TABLE.equals(event.getProperty())
- || SearchPreferencePage.LIMIT_TABLE_TO.equals(event.getProperty()))
- if (getViewer() instanceof TableViewer) {
- getViewPart().updateLabel();
- getViewer().refresh();
- }
- }
- };
- SearchPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(bugPropertyChangeListener);
- }
-
- @Override
- protected void elementsChanged(Object[] objects) {
- if (bugContentProvider != null) {
- bugContentProvider.elementsChanged(objects);
- }
- }
-
- @Override
- protected void clear() {
- if (bugContentProvider != null) {
- bugContentProvider.clear();
- }
- }
-
- // Allows the inherited method "getViewer" to be accessed publicly.
- @Override
- public StructuredViewer getViewer() {
- return super.getViewer();
- }
-
- @Override
- protected void configureTreeViewer(TreeViewer viewer) {
- // The tree layout is not used, so this function does not need to do
- // anything.
-
- }
-
- @Override
- protected void configureTableViewer(TableViewer viewer) {
- viewer.setUseHashlookup(true);
- String[] columnNames = new String[] { "", "!", "Description" };
- TableColumn[] columns = new TableColumn[columnNames.length];
- int[] columnWidths = new int[] { 20, 20, 500 };
- viewer.setColumnProperties(columnNames);
-
- viewer.getTable().setHeaderVisible(false);
- for (int i = 0; i < columnNames.length; i++) {
- columns[i] = new TableColumn(viewer.getTable(), 0, i); // SWT.LEFT
- columns[i].setText(columnNames[i]);
- columns[i].setWidth(columnWidths[i]);
- columns[i].setData(new Integer(i));
- columns[i].addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- TableColumn col = (TableColumn) e.getSource();
- Integer integer = (Integer) col.getData();
- setSortOrder(integer.intValue());
- }
- });
- }
-
- // TaskElementLabelProvider BugzillaLabelProvider
- IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
- Color categoryBackground = themeManager.getCurrentTheme().getColorRegistry().get(
- TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY);
-
- SearchViewTableLabelProvider taskListTableLabelProvider = new SearchViewTableLabelProvider(
- new TaskElementLabelProvider(), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(),
- categoryBackground);
-
- viewer.setLabelProvider(taskListTableLabelProvider);
- viewer.setContentProvider(new SearchResultTableContentProvider(this));
-
- // Set the order when the search view is loading so that the items are
- // sorted right away
- setSortOrder(bugCurrentSortOrder);
-
- bugContentProvider = (SearchResultContentProvider) viewer.getContentProvider();
- }
-
- /**
- * Sets the new sorting category, and reorders all of the bug reports.
- *
- * @param sortOrder
- * The new category to sort bug reports by
- */
- public void setSortOrder(int sortOrder) {
- StructuredViewer viewer = getViewer();
-
- switch (sortOrder) {
- case ORDER_ID:
- viewer.setSorter(new SearchResultSorterId());
- break;
- case ORDER_DESCRIPTION:
- viewer.setSorter(new SearchResultSorterDescription());
- break;
- case ORDER_PRIORITY:
- viewer.setSorter(new SearchResultSorterPriority());
- break;
- // case ORDER_SEVERITY:
- // viewer.setSorter(new BugzillaSeveritySearchSorter());
- // break;
- // case ORDER_STATUS:
- // viewer.setSorter(new BugzillaStateSearchSorter());
- // break;
- default:
- // If the setting is not one of the four valid ones,
- // use the default order setting.
- sortOrder = ORDER_DEFAULT;
- viewer.setSorter(new SearchResultSorterPriority());
- break;
- }
- bugCurrentSortOrder = sortOrder;
- getSettings().put(KEY_SORTING, bugCurrentSortOrder);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (IShowInTargetList.class.equals(adapter)) {
- return SHOW_IN_TARGET_LIST;
- }
- return null;
- }
-
- @Override
- protected void showMatch(Match match, int currentOffset, int currentLength, boolean activate)
- throws PartInitException {
- AbstractQueryHit repositoryHit = (AbstractQueryHit) match.getElement();
-
- TaskUiUtil.openRepositoryTask(repositoryHit.getRepositoryUrl(), repositoryHit.getId(), repositoryHit.getUrl());
-
- // try {
- // int id = Integer.parseInt(repositoryHit.getId());
- // String bugUrl =
- // BugzillaServerFacade.getBugUrlWithoutLogin(repositoryHit.getRepositoryUrl(),
- // id);
- // TaskUiUtil.openRepositoryTask(repositoryHit.getRepositoryUrl(),
- // repositoryHit.getId(), bugUrl);
- // } catch (NumberFormatException e) {
- // MylarStatusHandler.fail(e, "Could not open, malformed id: " +
- // repositoryHit.getId(), true);
- // }
- }
-
- @Override
- protected void fillContextMenu(IMenuManager mgr) {
- super.fillContextMenu(mgr);
-
- // Create the submenu for sorting
- MenuManager sortMenu = new MenuManager(SearchMessages.SortDropDownAction_label); //$NON-NLS-1$
- sortMenu.add(bugSortByPriorityAction);
- sortMenu.add(bugSortByDescriptionAction);
- // sortMenu.add(bugSortByIDAction);
- // sortMenu.add(bugSortBySeverityAction);
- // sortMenu.add(bugSortByStatusAction);
-
- // Check the right sort option
-
- bugSortByPriorityAction.setChecked(bugCurrentSortOrder == bugSortByPriorityAction.getSortOrder());
- bugSortByDescriptionAction.setChecked(bugCurrentSortOrder == bugSortByDescriptionAction.getSortOrder());
- // bugSortByIDAction.setChecked(bugCurrentSortOrder ==
- // bugSortByIDAction.getSortOrder());
- // bugSortBySeverityAction.setChecked(bugCurrentSortOrder ==
- // bugSortBySeverityAction.getSortOrder());
- // bugSortByStatusAction.setChecked(bugCurrentSortOrder ==
- // bugSortByStatusAction.getSortOrder());
-
- // Add the new context menu items
- mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, sortMenu);
- // mgr.appendToGroup(IContextMenuConstants.GROUP_ADDITIONS,
- // addToFavoritesAction);
- mgr.appendToGroup(IContextMenuConstants.GROUP_OPEN, openInEditorAction);
- }
-
- class SearchViewTableLabelProvider extends TaskListTableLabelProvider {
-
- public SearchViewTableLabelProvider(ILabelProvider provider, ILabelDecorator decorator, Color parentBackground) {
- super(provider, decorator, parentBackground, null);
- }
-
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- switch (columnIndex) {
- case 0:
- ++columnIndex;
- break;
- case 1:
- ++columnIndex;
- break;
- case 2:
- columnIndex = 2 + columnIndex;
- break;
- }
- return super.getColumnImage(element, columnIndex);
- }
-
- @Override
- public String getColumnText(Object obj, int columnIndex) {
- switch (columnIndex) {
- case 0:
- ++columnIndex;
- break;
- case 1:
- ++columnIndex;
- break;
- case 2:
- columnIndex = 2 + columnIndex;
- break;
- }
- return super.getColumnText(obj, columnIndex);
- }
-
- @Override
- public Color getBackground(Object element, int columnIndex) {
- // Note: see bug 142889
- return null;
- }
-
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java
deleted file mode 100644
index d6629c166..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchHitCollector.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * 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.tasks.ui.search;
-
-import java.net.Proxy;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.search.ui.ISearchQuery;
-import org.eclipse.search.ui.ISearchResult;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.search.ui.text.Match;
-
-/**
- * Used for returning results from Eclipse Search view. Collects results of a
- * repository search
- *
- * @author Rob Elves
- */
-public class SearchHitCollector extends QueryHitCollector implements ISearchQuery {
-
- private static final String QUERYING_REPOSITORY = "Querying Repository...";
-
- private Proxy proxySettings;
-
- private TaskRepository repository;
-
- private AbstractRepositoryQuery repositoryQuery;
-
- private RepositorySearchResult searchResult;
-
- public SearchHitCollector(TaskList tasklist, TaskRepository repository, AbstractRepositoryQuery repositoryQuery,
- Proxy proxySettings) {
- super(tasklist);
- this.repository = repository;
- this.repositoryQuery = repositoryQuery;
- this.proxySettings = proxySettings;
- this.searchResult = new RepositorySearchResult(this);
- }
-
- public void aboutToStart(int startMatchCount) throws CoreException {
- super.aboutToStart(startMatchCount);
- searchResult.removeAll();
- NewSearchUI.activateSearchResultView();
- }
-
- public void done() {
- super.done();
- }
-
- @Override
- public void addMatch(AbstractQueryHit hit) {
- super.addMatch(hit);
- this.searchResult.addMatch(new Match(hit, 0, 0));
- }
-
- public String getLabel() {
- return QUERYING_REPOSITORY;
- }
-
- public boolean canRerun() {
- return true;
- }
-
- public boolean canRunInBackground() {
- return true;
- }
-
- public ISearchResult getSearchResult() {
- return searchResult;
- }
-
- public IStatus run(IProgressMonitor monitor) throws OperationCanceledException {
- this.setProgressMonitor(monitor);
- IStatus status = Status.OK_STATUS;
- try {
- aboutToStart(0);
- monitor.beginTask(QUERYING_REPOSITORY, IProgressMonitor.UNKNOWN);
-
- if (monitor.isCanceled()) {
- throw new OperationCanceledException("Search cancelled");
- }
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repositoryQuery.getRepositoryKind());
- if (connector != null) {
- status = connector.performQuery(repositoryQuery, repository, proxySettings, monitor, this);
- } else {
- return new Status(IStatus.ERROR, TasksUiPlugin.PLUGIN_ID, IStatus.OK,
- "repository connector could not be found", null);
- }
-
- if (!status.isOK()) {
- MylarStatusHandler.fail(status.getException(), "Search failed. Please see details below.", true);
- status = Status.OK_STATUS;
- }
-
- } catch (CoreException e) {
- MylarStatusHandler.fail(e, "Search failed.", true);
- status = new Status(IStatus.OK, TasksUiPlugin.PLUGIN_ID, IStatus.ERROR,
- "Core Exception occurred while querying Bugzilla Server " + repository.getUrl() + ".\n"
- + "\nClick Details for more information.", e);
-
- } finally {
- // deals with monitor
- done();
- }
- return status;
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultContentProvider.java
deleted file mode 100644
index 84943c02e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultContentProvider.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.internal.tasks.ui.search;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * @author Rob Elves (moved into task.ui)
- * @see org.eclipse.jface.viewers.IContentProvider
- */
-public abstract class SearchResultContentProvider implements IStructuredContentProvider {
-
- /** An empty array of objects */
- protected final Object[] EMPTY_ARR = new Object[0];
-
- /** The search result for this content provider */
- protected RepositorySearchResult searchResult;
-
- public void dispose() {
- // nothing to do
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (newInput instanceof RepositorySearchResult) {
- initialize((RepositorySearchResult) newInput);
- }
- }
-
- /**
- * Initializes the content provider with the given search result.
- *
- * @param result
- * The search result to use with this content provider
- */
- protected void initialize(RepositorySearchResult result) {
- searchResult = result;
- }
-
- /**
- * This method is called whenever the set of matches for the given elements
- * changes.
- *
- * @param updatedElements
- * The array of objects that has to be refreshed
- * @see
- * @see org.eclipse.search.ui.text.AbstractTextSearchViewPage#elementsChanged(java.lang.Object[])
- */
- public abstract void elementsChanged(Object[] updatedElements);
-
- /**
- * Clears the viewer.
- */
- public abstract void clear();
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterDescription.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterDescription.java
deleted file mode 100644
index 25531edc6..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterDescription.java
+++ /dev/null
@@ -1,72 +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.tasks.ui.search;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskKeyComparator;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-
-/**
- * Sorts search results by description.
- *
- * @author Rob Elves
- */
-public class SearchResultSorterDescription extends ViewerSorter {
-
- private TaskKeyComparator taskKeyComparator = new TaskKeyComparator();
-
- /**
- * Returns a negative, zero, or positive number depending on whether the
- * first bug's description goes before, is the same as, or goes after the
- * second element's description.
- * <p>
- *
- * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer,
- * java.lang.Object, java.lang.Object)
- */
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- try {
-
- AbstractQueryHit entry1 = (AbstractQueryHit) e1;
- AbstractQueryHit entry2 = (AbstractQueryHit) e2;
- return taskKeyComparator.compare(entry1.getDescription(), entry2.getDescription());
- } catch (Exception ignored) {
- // do nothing
- }
-
- // if that didn't work, use the default compare method
- return super.compare(viewer, e1, e2);
- }
-
- /**
- * Returns the category of the given element. The category is a number used
- * to allocate elements to bins; the bins are arranged in ascending numeric
- * order. The elements within a bin are arranged via a second level sort
- * criterion.
- * <p>
- *
- * @see org.eclipse.jface.viewers.ViewerSorter#category(Object)
- */
- @Override
- public int category(Object element) {
- try {
- AbstractQueryHit hit = (AbstractQueryHit) element;
- return Integer.parseInt(hit.getId());
- } catch (Exception ignored) {
- // ignore if
- }
- // if that didn't work, use the default category method
- return super.category(element);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterId.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterId.java
deleted file mode 100644
index bfc2e4095..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterId.java
+++ /dev/null
@@ -1,75 +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.tasks.ui.search;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-
-/**
- * Sorts search results (AbstractQueryHit) by id.
- */
-public class SearchResultSorterId extends ViewerSorter {
-
- /**
- * Returns a negative, zero, or positive number depending on whether the
- * first bug's id is less than, equal to, or greater than the second bug's
- * id.
- * <p>
- *
- * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer,
- * java.lang.Object, java.lang.Object)
- */
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- try {
- // cast the object and get its bug id
- AbstractQueryHit entry1 = (AbstractQueryHit) e1;
- Integer id1 = Integer.parseInt(entry1.getId());
-
- // cast the other object and get its bug id
- AbstractQueryHit entry2 = (AbstractQueryHit) e2;
- Integer id2 = Integer.parseInt(entry2.getId());
-
- // if neither is null, compare the bug id's
- if (id1 != null && id2 != null) {
- return id1.compareTo(id2);
- }
- } catch (Exception ignored) {
- // ignore if there is a problem
- }
-
- // if that didn't work, use the default compare method
- return super.compare(viewer, e1, e2);
- }
-
- /**
- * Returns the category of the given element. The category is a number used
- * to allocate elements to bins; the bins are arranged in ascending numeric
- * order. The elements within a bin are arranged via a second level sort
- * criterion.
- * <p>
- *
- * @see org.eclipse.jface.viewers.ViewerSorter#category(Object)
- */
- @Override
- public int category(Object element) {
- try {
- AbstractQueryHit hit = (AbstractQueryHit) element;
- return Integer.parseInt(hit.getId());
- } catch (Exception ignored) {
- // ignore
- }
- // if that didn't work, use the default category method
- return super.category(element);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterPriority.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterPriority.java
deleted file mode 100644
index 139a17180..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultSorterPriority.java
+++ /dev/null
@@ -1,86 +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.tasks.ui.search;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-
-/**
- * Sorts results of Bugzilla search by bug priority.
- * @author Rob Elves (modifications)
- */
-public class SearchResultSorterPriority extends ViewerSorter {
-
- /**
- * Returns a negative, zero, or positive number depending on whether the
- * first bug's priority goes before, is the same as, or goes after the
- * second element's priority.
- * <p>
- *
- * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer,
- * java.lang.Object, java.lang.Object)
- */
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- try {
-
- AbstractQueryHit entry1 = (AbstractQueryHit) e1;
- AbstractQueryHit entry2 = (AbstractQueryHit) e2;
- return entry1.getPriority().compareTo(entry2.getPriority());
-
- // Code below based on relative position within list of priorities
-
- // BugzillaQueryHit entry1 = (BugzillaQueryHit) e1;
- // String[] priorityLevels =
- // BugzillaUiPlugin.getQueryOptions(IBugzillaConstants.VALUES_PRIORITY,
- // null, entry1
- // .getRepositoryUrl());
- // if (priorityLevels != null && priorityLevels.length > 0) {
- // List<String> levels = Arrays.asList(priorityLevels);
- // Integer pr1 = new Integer(levels.indexOf(entry1.getPriority()));
- //
- // BugzillaQueryHit entry2 = (BugzillaQueryHit) e2;
- // Integer pr2 = new Integer(levels.indexOf(entry2.getPriority()));
- // if (pr1 != null && pr2 != null) {
- // return pr1.compareTo(pr2);
- // }
- // }
- } catch (Exception ignored) {
- // do nothing
- }
-
- // if that didn't work, use the default compare method
- return super.compare(viewer, e1, e2);
- }
-
- /**
- * Returns the category of the given element. The category is a number used
- * to allocate elements to bins; the bins are arranged in ascending numeric
- * order. The elements within a bin are arranged via a second level sort
- * criterion.
- * <p>
- *
- * @see org.eclipse.jface.viewers.ViewerSorter#category(Object)
- */
- @Override
- public int category(Object element) {
- try {
- AbstractQueryHit hit = (AbstractQueryHit) element;
- return Integer.parseInt(hit.getId());
- } catch (Exception ignored) {
- // ignore if there is a problem
- }
- // if that didn't work, use the default category method
- return super.category(element);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTableContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTableContentProvider.java
deleted file mode 100644
index 1df0d84a5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTableContentProvider.java
+++ /dev/null
@@ -1,93 +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.tasks.ui.search;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.search.internal.ui.SearchPreferencePage;
-
-/**
- * This implementation of <code>SearchResultContentProvider</code> is used for the
- * table view of a Bugzilla search result.
- *
- * @author Rob Elves (moved into task.ui)
- */
-public class SearchResultTableContentProvider extends SearchResultContentProvider implements IStructuredContentProvider {
-
- /** The page the Bugzilla search results are displayed in */
- private RepositorySearchResultView bugPage;
-
- /**
- * Constructor
- *
- * @param page
- * The page the Bugzilla search results are displayed in
- */
- public SearchResultTableContentProvider(RepositorySearchResultView page) {
- bugPage = page;
- }
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (newInput instanceof RepositorySearchResult) {
- searchResult = (RepositorySearchResult) newInput;
- }
- }
-
- @Override
- public void elementsChanged(Object[] updatedElements) {
- TableViewer viewer = getViewer();
- boolean tableLimited = SearchPreferencePage.isTableLimited();
- for (int i = 0; i < updatedElements.length; i++) {
- if (searchResult.getMatchCount(updatedElements[i]) > 0) {
- if (viewer.testFindItem(updatedElements[i]) != null)
- viewer.update(updatedElements[i], null);
- else {
- if (!tableLimited || viewer.getTable().getItemCount() < SearchPreferencePage.getTableLimit())
- viewer.add(updatedElements[i]);
- }
- } else
- viewer.remove(updatedElements[i]);
- }
- }
-
- /**
- * Returns the viewer the bug results are displayed in.
- */
- private TableViewer getViewer() {
- return (TableViewer) bugPage.getViewer();
- }
-
- @Override
- public void clear() {
- getViewer().refresh();
- }
-
- /**
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
- */
- public Object[] getElements(Object inputElement) {
- if (inputElement instanceof RepositorySearchResult) {
- Object[] elements = ((RepositorySearchResult) inputElement).getElements();
- int tableLimit = SearchPreferencePage.getTableLimit();
- if (SearchPreferencePage.isTableLimited() && elements.length > tableLimit) {
- Object[] shownElements = new Object[tableLimit];
- System.arraycopy(elements, 0, shownElements, 0, tableLimit);
- return shownElements;
- }
- return elements;
- }
- return EMPTY_ARR;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/BackgroundSaveTimer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/BackgroundSaveTimer.java
deleted file mode 100644
index 925ee7988..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/BackgroundSaveTimer.java
+++ /dev/null
@@ -1,103 +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.tasks.ui.util;
-
-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.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.ITimerThreadListener;
-import org.eclipse.mylar.internal.context.core.util.TimerThread;
-
-/**
- * Timer that periodically runs saveRequested() on its client as a job
- *
- * @author Wesley Coelho
- */
-public class BackgroundSaveTimer implements ITimerThreadListener {
-
- private final static int DEFAULT_SAVE_INTERVAL = 60 * 1000;
-
- private int saveInterval = DEFAULT_SAVE_INTERVAL;
-
- private IBackgroundSaveListener listener = null;
-
- private TimerThread timer = null;
-
- private boolean forceSyncExec = false;
-
- public BackgroundSaveTimer(IBackgroundSaveListener listener) {
- this.listener = listener;
- timer = new TimerThread(saveInterval);
- timer.addListener(this);
- }
-
- public void start() {
- timer.start();
- }
-
- public void stop() {
- timer.kill();
- }
-
- public void setSaveIntervalMillis(int saveIntervalMillis) {
- this.saveInterval = saveIntervalMillis;
- timer.setTimeoutMillis(saveIntervalMillis);
- }
-
- public int getSaveIntervalMillis() {
- return saveInterval;
- }
-
- /**
- * For testing
- */
- public void setForceSyncExec(boolean forceSyncExec) {
- this.forceSyncExec = forceSyncExec;
- }
-
- /**
- * Called by the ActivityTimerThread Calls save in a new job
- */
- public void fireTimedOut() {
- try {
- if (!forceSyncExec) {
- final SaveJob job = new SaveJob("Saving Task Data", listener);
- job.schedule();
- } else {
- listener.saveRequested();
- }
- } catch (RuntimeException e) {
- MylarStatusHandler.log("Could not schedule save job", this);
- }
- }
-
- /** Job that makes the save call */
- private class SaveJob extends Job {
- private IBackgroundSaveListener listener = null;
-
- public SaveJob(String name, IBackgroundSaveListener listener) {
- super(name);
- this.listener = listener;
- }
-
- protected IStatus run(IProgressMonitor monitor) {
- listener.saveRequested();
- return Status.OK_STATUS;
- }
- }
-
- public void intervalElapsed() {
- // ignore
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportJob.java
deleted file mode 100644
index d5fb2e4f2..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskDataExportJob.java
+++ /dev/null
@@ -1,258 +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.tasks.ui.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.internal.context.core.util.ZipFileUtil;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * Job that performs exporting (copying or zipping) of Mylar Task List data
- * Assumes that check with user for overwrite already done. Overwrites destination if exists!
- * @author Wesley Coelho
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class TaskDataExportJob implements IRunnableWithProgress {
-
- private static final String JOB_LABEL = "Exporting Mylar Task Data";
-
- private boolean zip;
-
- private boolean exportTaskList;
-
- private boolean exportActivationHistory;
-
- private boolean exportTaskContexts;
-
- private String destinationDirectory;
-
- private String zipFileName;
-
- private File destZipFile = null;
-
- private Collection<ITask> tasks;
-
- /** export all data */
- public TaskDataExportJob(String destinationDirectory, boolean zipIt, String zipFileName) {
- this(destinationDirectory, true, true, true, zipIt, zipFileName, TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks());
- }
-
- /** export specified data */
- public TaskDataExportJob(String destinationDirectory, boolean exportTaskList, boolean exportActivationHistory,
- boolean exportTaskContexts, boolean zipIt, String zipFileName, Collection<ITask> taskContextsToExport) {
- this.zipFileName = zipFileName;
- this.zip = zipIt;
- this.exportTaskList = exportTaskList;
- this.exportActivationHistory = exportActivationHistory;
- this.exportTaskContexts = exportTaskContexts;
- this.destinationDirectory = destinationDirectory;
- this.tasks = taskContextsToExport;
- }
-
- public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- //Collection<ITask> tasks = MylarTaskListPlugin.getTaskListManager().getTaskList().getAllTasks();
- int jobSize = 1; // 1 for repositories.xml
- if (exportTaskList)
- jobSize++;
- if (exportActivationHistory)
- jobSize++;
- if (exportTaskContexts)
- jobSize += tasks.size();
- monitor.beginTask(JOB_LABEL, jobSize);
-
- // List of files to add to the zip archive
- List<File> filesToZip = new ArrayList<File>();
-
- // Map of file paths used to avoid duplicates
- Map<String, String> filesToZipMap = new HashMap<String, String>();
-
-
- // Create folders in zip file before contained files
- String sourceContextsPath = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + MylarContextManager.CONTEXTS_DIRECTORY;
- File contextsDirectory = new File(sourceContextsPath);
-// if(contextsDirectory.exists()) {
-// filesToZip.add(contextsDirectory);
-// }
-
- if (true) {
- // Repositories always exported
- TasksUiPlugin.getRepositoryManager().saveRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- String sourceRepositoriesPath = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TaskRepositoryManager.DEFAULT_REPOSITORIES_FILE;
- File sourceRepositoriesFile = new File(sourceRepositoriesPath);
- if (sourceRepositoriesFile.exists()) {
- File destRepositoriesFile = new File(destinationDirectory + File.separator
- + TaskRepositoryManager.DEFAULT_REPOSITORIES_FILE);
-
- if (zip) {
- filesToZip.add(sourceRepositoriesFile);
- } else if(!destRepositoriesFile.equals(sourceRepositoriesFile)) {
- if (destRepositoriesFile.exists()) {
- destRepositoriesFile.delete();
- }
- if (!copy(sourceRepositoriesFile, destRepositoriesFile)) {
- MylarStatusHandler.fail(new Exception("Export Exception"), "Could not export repositories file.",
- false);
- }
- monitor.worked(1);
- }
- }
-
- }
-
-
-
- if (exportTaskList) {
- TasksUiPlugin.getTaskListManager().saveTaskList();
-
- String sourceTaskListPath = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.DEFAULT_TASK_LIST_FILE;
- File sourceTaskListFile = new File(sourceTaskListPath);
- if (sourceTaskListFile.exists()) {
- File destTaskListFile = new File(destinationDirectory + File.separator
- + TasksUiPlugin.DEFAULT_TASK_LIST_FILE);
-
- if (zip) {
- filesToZip.add(sourceTaskListFile);
- } else if(!destTaskListFile.equals(sourceTaskListFile)) {
- if (destTaskListFile.exists()) {
- destTaskListFile.delete();
- }
- if (!copy(sourceTaskListFile, destTaskListFile)) {
- MylarStatusHandler.fail(new Exception("Export Exception"), "Could not export task list file.",
- false);
- }
- monitor.worked(1);
- }
- }
-
- }
-
- if (exportActivationHistory) {
- try {
- File sourceActivationHistoryFile = new File(contextsDirectory, MylarContextManager.CONTEXT_HISTORY_FILE_NAME
- + MylarContextManager.CONTEXT_FILE_EXTENSION);
-
- if (sourceActivationHistoryFile.exists()) {
-
- ContextCorePlugin.getContextManager().saveActivityHistoryContext();
-
- File destActivationHistoryFile = new File(destinationDirectory + File.separator
- + MylarContextManager.CONTEXT_HISTORY_FILE_NAME
- + MylarContextManager.CONTEXT_FILE_EXTENSION);
-
-
- if (zip) {
- filesToZip.add(sourceActivationHistoryFile);
- } else if(!destActivationHistoryFile.equals(sourceActivationHistoryFile)){
- if (destActivationHistoryFile.exists()) {
- destActivationHistoryFile.delete();
- }
- copy(sourceActivationHistoryFile, destActivationHistoryFile);
- monitor.worked(1);
- }
- }
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not export activity history context file", true);
- }
- }
-
- if (exportTaskContexts) {
- // Prevent many repeated error messages
- boolean errorDisplayed = false;
- for (ITask task : tasks) {
-
- if (!ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier())) {
- continue; // Tasks without a context have no file to
- // copy
- }
-
- File sourceTaskFile = ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
-
- File destTaskFile = new File(destinationDirectory + File.separator + sourceTaskFile.getName());
-
- if (zip) {
- if (!filesToZipMap.containsKey(task.getHandleIdentifier())) {
- filesToZip.add(sourceTaskFile);
- filesToZipMap.put(task.getHandleIdentifier(), null);
- }
- } else if(!sourceTaskFile.equals(destTaskFile)) {
- if (destTaskFile.exists()) {
- destTaskFile.delete();
- }
- if (!copy(sourceTaskFile, destTaskFile) && !errorDisplayed) {
- MylarStatusHandler.fail(new Exception("Export Exception: " + sourceTaskFile.getPath() + " -> "
- + destTaskFile.getPath()), "Could not export one or more task context files.", true);
- errorDisplayed = true;
- }
- monitor.worked(1);
- }
- }
- }
-
- if (zip && filesToZip.size() > 0) {
- try {
- destZipFile = new File(destinationDirectory + File.separator + zipFileName);
- if (destZipFile.exists()) {
- destZipFile.delete();
- }
- ZipFileUtil.createZipFile(destZipFile, filesToZip,TasksUiPlugin.getDefault().getDataDirectory(), monitor);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not create zip file.", true);
- }
- }
- monitor.done();
-
- }
-
- private boolean copy(File src, File dst) {
- try {
- InputStream in = new FileInputStream(src);
- OutputStream out = new FileOutputStream(dst);
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- return true;
- } catch (IOException ioe) {
- return false;
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java
deleted file mode 100644
index a380309b8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListSaveManager.java
+++ /dev/null
@@ -1,215 +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.tasks.ui.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListSaveManager implements ITaskListChangeListener, IBackgroundSaveListener {
-
- private final static int DEFAULT_SAVE_INTERVAL = 5 * 60 * 1000;
-
- private static final String FILE_SUFFIX_BACKUP = "-backup.xml";
-
- private BackgroundSaveTimer saveTimer = null;
-
- private boolean initializationWarningDialogShow = false;
-
- /**
- * Fort testing.
- */
- private boolean forceBackgroundSave = false;
-
- public TaskListSaveManager() {
- saveTimer = new BackgroundSaveTimer(this);
- saveTimer.setSaveIntervalMillis(DEFAULT_SAVE_INTERVAL);
- saveTimer.start();
- }
-
- /**
- * Called periodically by the save timer
- */
- public void saveRequested() {
- if (TasksUiPlugin.getDefault() != null && TasksUiPlugin.getDefault().isShellActive()
- || forceBackgroundSave) {
- try {
- saveTaskList(true);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not auto save task list", false);
- }
- }
- }
-
- public void saveTaskList(boolean saveContext) {
- if (TasksUiPlugin.getDefault() != null && TasksUiPlugin.getDefault().isInitialized()) {
- TasksUiPlugin.getTaskListManager().saveTaskList();
- if (saveContext) {
- for (ITask task : new ArrayList<ITask>(TasksUiPlugin.getTaskListManager().getTaskList()
- .getActiveTasks())) {
- ContextCorePlugin.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(),
- TasksUiPlugin.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"
- + TasksUiPlugin.URL_HOMEPAGE);
- }
- }
- });
- }
- }
- }
-
- /**
- * Copies all files in the current data directory to the specified folder.
- * Will overwrite.
- */
- public void copyDataDirContentsTo(String targetFolderPath) {
- File mainDataDir = new File(TasksUiPlugin.getDefault().getDataDirectory());
-
- for (File currFile : mainDataDir.listFiles()) {
- if (currFile.isFile()) {
- File destFile = new File(targetFolderPath + File.separator + currFile.getName());
- copy(currFile, destFile);
- }
- }
- }
-
- public void createTaskListBackupFile() {
- String path = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.DEFAULT_TASK_LIST_FILE;
- File taskListFile = new File(path);
- String backup = path.substring(0, path.lastIndexOf('.')) + FILE_SUFFIX_BACKUP;
- copy(taskListFile, new File(backup));
- }
-
- public String getBackupFilePath() {
- String path = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.DEFAULT_TASK_LIST_FILE;
- return path.substring(0, path.lastIndexOf('.')) + FILE_SUFFIX_BACKUP;
- }
-
- public void reverseBackup() {
- String path = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.DEFAULT_TASK_LIST_FILE;
- File taskListFile = new File(path);
- String backup = path.substring(0, path.lastIndexOf('.')) + FILE_SUFFIX_BACKUP;
- copy(new File(backup), taskListFile);
- }
-
- private boolean copy(File src, File dst) {
- try {
- InputStream in = new FileInputStream(src);
- OutputStream out = new FileOutputStream(dst);
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- return true;
- } catch (IOException ioe) {
- return false;
- }
- }
-
- public void taskActivated(ITask task) {
- // ignore
- }
-
- public void tasksActivated(List<ITask> tasks) {
- // ignore
- }
-
- public void taskDeactivated(ITask task) {
- saveTaskList(true);
- }
-
- public void localInfoChanged(ITask task) {
- saveTaskList(false);
- }
-
- public void repositoryInfoChanged(ITask task) {
- // ignore
- }
-
- public void tasklistRead() {
- // ignore
- }
-
- /**
- * For testing.
- */
- public void setForceBackgroundSave(boolean on) {
- forceBackgroundSave = on;
- saveTimer.setForceSyncExec(on);
- }
-
- public void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) {
- saveTaskList(false);
- }
-
- public void taskDeleted(ITask task) {
- saveTaskList(false);
- }
-
- public void containerAdded(AbstractTaskContainer container) {
- saveTaskList(false);
- }
-
- public void containerDeleted(AbstractTaskContainer container) {
- saveTaskList(false);
- }
-
- public void taskAdded(ITask task) {
- saveTaskList(false);
- }
-
- /** For testing only * */
- public BackgroundSaveTimer getSaveTimer() {
- return saveTimer;
- }
-
- public void containerInfoChanged(AbstractTaskContainer container) {
- saveTaskList(false);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java
deleted file mode 100644
index fc5944154..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java
+++ /dev/null
@@ -1,585 +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.tasks.ui.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DelegatingTaskExternalizer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListExternalizer;
-import org.eclipse.mylar.tasks.core.TaskExternalizationException;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-/**
- * @author Mik Kersten
- * @author Ken Sueda
- */
-public class TaskListWriter {
-
- public static final String ATTRIBUTE_VERSION = "Version";
-
- public static final String ELEMENT_TASK_LIST = "TaskList";
-
- private static final String VALUE_VERSION = "1.0.1";
-
- private static final String VALUE_VERSION_1_0_0 = "1.0.0";
-
- private static final String FILE_SUFFIX_SAVE = "save.xml";
-
- private List<ITaskListExternalizer> externalizers;
-
- private DelegatingTaskExternalizer delagatingExternalizer = new DelegatingTaskExternalizer();
-
- private List<Node> orphanedTaskNodes = new ArrayList<Node>();
-
- private String readVersion = "";
-
- private boolean hasCaughtException = false;
-
- public void setDelegateExternalizers(List<ITaskListExternalizer> externalizers) {
- this.externalizers = externalizers;
- this.delagatingExternalizer.setDelegateExternalizers(externalizers);
- }
-
- public void writeTaskList(TaskList taskList, File outFile) {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db;
- Document doc = null;
-
- try {
- db = dbf.newDocumentBuilder();
- doc = db.newDocument();
- } catch (ParserConfigurationException e) {
- MylarStatusHandler.log(e, "could not create document");
- }
-
- Element root = doc.createElement(ELEMENT_TASK_LIST);
- root.setAttribute(ATTRIBUTE_VERSION, VALUE_VERSION);
-
- // create the categories
- for (AbstractTaskContainer category : taskList.getCategories()) {
- // if (!category.getHandleIdentifier().equals(TaskArchive.HANDLE)) {
- delagatingExternalizer.createCategoryElement(category, doc, root);
- // }
- }
-
- 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) {
- MylarStatusHandler.log("Did not externalize: " + query, this);
- }
- }
- // Collection<ITask> allTasks =
- // Collections.synchronizedCollection(taskList.getAllTasks());
- // synchronized (allTasks) {
- for (ITask task : new ArrayList<ITask>(taskList.getAllTasks())) {
- createTaskElement(doc, root, task);
- }
-
- for (Node orphanedTaskNode : orphanedTaskNodes) {
- Node tempNode = doc.importNode(orphanedTaskNode, true);
- if (tempNode != null) {
- root.appendChild(tempNode);
- }
- }
-
- doc.appendChild(root);
- writeDOMtoFile(doc, outFile);
- return;
- }
-
- private void createTaskElement(Document doc, Element root, ITask task) {
- try {
- Element element = null;
- for (ITaskListExternalizer externalizer : externalizers) {
- if (externalizer.canCreateElementFor(task)) {
- element = externalizer.createTaskElement(task, doc, root);
- break;
- }
- }
- if (element == null && delagatingExternalizer.canCreateElementFor(task)) {
- delagatingExternalizer.createTaskElement(task, doc, root);
- } else if (element == null) {
- MylarStatusHandler.log("Did not externalize: " + task, this);
- }
- } catch (Exception e) {
- MylarStatusHandler.log(e, e.getMessage());
- }
- }
-
- /**
- * Writes an XML file from a DOM.
- *
- * doc - the document to write file - the file to be written to
- */
- private void writeDOMtoFile(Document doc, File file) {
- try {
- ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(file));
- ZipEntry zipEntry = new ZipEntry(TasksUiPlugin.OLD_TASK_LIST_FILE);
- outputStream.putNextEntry(zipEntry);
- outputStream.setMethod(ZipOutputStream.DEFLATED);
- // OutputStream outputStream = new FileOutputStream(file);
- writeDOMtoStream(doc, outputStream);
- outputStream.flush();
- outputStream.closeEntry();
- outputStream.close();
- } catch (Exception fnfe) {
- MylarStatusHandler.log(fnfe, "TaskList could not be found");
- }
- }
-
- /**
- * Writes the provided XML document out to the specified output stream.
- *
- * doc - the document to be written outputStream - the stream to which the
- * document is to be written
- */
- private void writeDOMtoStream(Document doc, OutputStream outputStream) {
- // Prepare the DOM document for writing
- // DOMSource - Acts as a holder for a transformation Source tree in the
- // form of a Document Object Model (DOM) tree
- Source source = new DOMSource(doc);
-
- // StreamResult - Acts as an holder for a XML transformation result
- // Prepare the output stream
- Result result = new StreamResult(outputStream);
-
- // An instance of this class can be obtained with the
- // TransformerFactory.newTransformer method. This instance may
- // then be used to process XML from a variety of sources and write
- // the transformation output to a variety of sinks
-
- Transformer xformer = null;
- try {
- xformer = TransformerFactory.newInstance().newTransformer();
- // Transform the XML Source to a Result
- //
- xformer.transform(source, result);
- } catch (TransformerConfigurationException e) {
- e.printStackTrace();
- } catch (TransformerFactoryConfigurationError e) {
- e.printStackTrace();
- } catch (TransformerException e1) {
- e1.printStackTrace();
- }
- }
-
- /**
- * TODO: fix this old mess
- */
- public void readTaskList(TaskList taskList, File inFile) {
- hasCaughtException = false;
- orphanedTaskNodes.clear();
- try {
- if (!inFile.exists())
- return;
- Document doc = openAsDOM(inFile);
- if (doc == null) {
- handleException(inFile, null, new TaskExternalizationException("TaskList was not well formed XML"));
- return;
- }
- Element root = doc.getDocumentElement();
- readVersion = root.getAttribute(ATTRIBUTE_VERSION);
-
- if (readVersion.equals(VALUE_VERSION_1_0_0)) {
- MylarStatusHandler.log("version: " + readVersion + " not supported", this);
- } else {
- NodeList list = root.getChildNodes();
-
- // NOTE: order is important, first read the categories
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- try {
- if (child.getNodeName().endsWith(DelegatingTaskExternalizer.KEY_CATEGORY)) {
- delagatingExternalizer.readCategory(child, taskList);
- }
- } catch (Exception e) {
- handleException(inFile, child, e);
- }
- }
-
- // then read the tasks
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- try {
- boolean wasRead = false;
- if (!child.getNodeName().endsWith(DelegatingTaskExternalizer.KEY_CATEGORY)
- && !child.getNodeName().endsWith(DelegatingTaskExternalizer.KEY_QUERY)) {
- for (ITaskListExternalizer externalizer : externalizers) {
- if (!wasRead && externalizer.canReadTask(child)) {
- externalizer.readTask(child, taskList, null, null);
- wasRead = true;
- }
- }
-
- if (!wasRead && delagatingExternalizer.canReadTask(child)) {
- delagatingExternalizer.readTask(child, taskList, null, null);
- wasRead = true;
- }
-
- if (!wasRead) {
- orphanedTaskNodes.add(child);
- }
- }
- } catch (Exception e) {
- // TODO: Save orphans here too?
- // If data is source of exception then error will just
- // repeat
- // now that orphans are re-saved upon task list save. So
- // for now we
- // log the error warning the user and make a copy of the
- // bad tasklist.
- handleException(inFile, child, e);
- }
- }
-
- // then query hits hits, which get corresponded to tasks
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- try {
- if (child.getNodeName().endsWith(DelegatingTaskExternalizer.KEY_QUERY)) {
- for (ITaskListExternalizer externalizer : externalizers) {
- if (externalizer.canReadQuery(child)) {
- AbstractRepositoryQuery query = externalizer.readQuery(child, taskList);
- if (query != null) {
- taskList.internalAddQuery(query);
- }
- break;
- }
- }
- }
- } catch (Exception e) {
- handleException(inFile, child, e);
- }
- }
- }
- } catch (Exception e) {
- handleException(inFile, null, e);
- }
- if (hasCaughtException) {
- // if exception was caught, write out the new task file, so that it
- // doesn't happen again.
- // this is OK, since the original (corrupt) tasklist is saved.
- // TODO: The problem with this is that if the orignal tasklist has
- // tasks and bug reports, but a
- // task is corrupted, the new tasklist that is written will not
- // include the bug reports (since the
- // bugzilla externalizer is not loaded. So there is a potentila that
- // we can lose bug reports.
- writeTaskList(taskList, inFile);
- }
- }
-
- /**
- * Opens the specified XML file and parses it into a DOM Document.
- *
- * Filename - the name of the file to open Return - the Document built from
- * the XML file Throws - XMLException if the file cannot be parsed as XML -
- * IOException if the file cannot be opened
- */
- private Document openAsDOM(File inputFile) throws IOException {
-
- // 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));
- MylarStatusHandler.log(pce, "Failed to load XML file");
- }
- try {
- // Parse the content of the given file as an XML document
- // and return a new DOM Document object. Also throws IOException
- InputStream inputStream = null;
- if (inputFile.getName().endsWith(TasksUiPlugin.DEFAULT_TASK_LIST_FILE)) {
- // is zipped context
- inputStream = new ZipInputStream(new FileInputStream(inputFile));
- ((ZipInputStream) inputStream).getNextEntry();
- } else {
- inputStream = new FileInputStream(inputFile);
- }
- document = builder.parse(inputStream);
- // document = builder.parse(inputFile);
- } catch (SAXException se) {
- File backup = new File(TasksUiPlugin.getDefault().getTaskListSaveManager().getBackupFilePath());
- String message = "Restoring the tasklist failed. Would you like to attempt to restore from the backup?\n\nTasklist XML File location: "
- + inputFile.getAbsolutePath()
- + "\n\nBackup tasklist XML file location: "
- + backup.getAbsolutePath();
- if (backup.exists() && MessageDialog.openQuestion(null, "Restore From Backup", message)) {
- try {
- document = builder.parse(backup);
- TasksUiPlugin.getDefault().getTaskListSaveManager().reverseBackup();
- } catch (SAXException s) {
- inputFile.renameTo(new File(inputFile.getName() + FILE_SUFFIX_SAVE));
- MylarStatusHandler.log(s, "Failed to recover from backup restore");
- }
- }
- }
- return document;
- }
-
- private void handleException(File inFile, Node child, Exception e) {
- hasCaughtException = true;
- String name = inFile.getAbsolutePath();
- name = name.substring(0, name.lastIndexOf('.')) + "-save1.xml";
- File save = new File(name);
- int i = 2;
- while (save.exists()) {
- name = name.substring(0, name.lastIndexOf('.') - 1) + i + ".xml";
- save = new File(name);
- i++;
- }
- if (!copy(inFile, save)) {
- inFile.renameTo(new File(name));
- }
- if (child == null) {
- MylarStatusHandler.log(e, "Could not read task list");
- } else {
- MylarStatusHandler.log(e, "Tasks may have been lost from " + child.getNodeName());
- }
- }
-
- private boolean copy(File src, File dst) {
- try {
- InputStream in = new FileInputStream(src);
- OutputStream out = new FileOutputStream(dst);
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- return true;
- } catch (IOException ioe) {
- return false;
- }
- }
-
- // private Document openAsDOM(String input) throws IOException {
- //
- // // 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) {
- // MylarStatusHandler.log(pce, "Failed to load XML file");
- // }
- // try {
- // // Parse the content of the given file as an XML document
- // // and return a new DOM Document object. Also throws IOException
- // StringReader s = new StringReader(input);
- // InputSource in = new InputSource(s);
- // document = builder.parse(in);
- // } catch (SAXException se) {
- // MylarStatusHandler.log(se, "Failed to parse XML file");
- // }
- // return document;
- // }
-
- // public void readTaskList(TaskList taskList, String input) {
- // try {
- // Document doc = openAsDOM(input);
- // if (doc == null) {
- // return;
- // }
- // Element root = doc.getDocumentElement();
- // readVersion = root.getAttribute(ATTRIBUTE_VERSION);
- //
- // if (readVersion.equals(VALUE_VERSION_1_0_0)) {
- // MylarStatusHandler.log("version: " + readVersion + " not supported",
- // this);
- // } else {
- // NodeList list = root.getChildNodes();
- // for (int i = 0; i < list.getLength(); i++) {
- // Node child = list.item(i);
- // boolean wasRead = false;
- // try {
- // if
- // (child.getNodeName().endsWith(DelegatingTaskExternalizer.KEY_CATEGORY)) {
- // // for (ITaskListExternalizer externalizer : externalizers) {
- // // if (externalizer.canReadCategory(child)) {
- // // externalizer.readCategory(child, taskList);
- // // wasRead = true;
- // // break;
- // // }
- // // }
- // if (delagatingExternalizer.canReadCategory(child)) {
- // delagatingExternalizer.readCategory(child, taskList);
- // }
- // } else {
- // for (ITaskListExternalizer externalizer : externalizers) {
- // if (externalizer.canReadTask(child)) {
- // ITask newTask = externalizer.readTask(child, taskList, null, null);
- // // externalizer.getRepositoryClient().addTaskToArchive(newTask);
- // taskList.addTaskToArchive(newTask);
- //
- // taskList.internalAddRootTask(newTask);
- //
- // wasRead = true;
- // break;
- // }
- // }
- // if (!wasRead && delagatingExternalizer.canReadTask(child)) {
- // taskList.internalAddRootTask(delagatingExternalizer.readTask(child,
- // taskList, null, null));
- // }
- // }
- // } catch (Exception e) {
- // MylarStatusHandler.log(e, "can't read xml string");
- // }
- // }
- // }
- // } catch (Exception e) {
- // MylarStatusHandler.log(e, "can't read xml string");
- // }
- // }
-
- // public String getTaskListXml(TaskList tlist) {
- // // TODO make this and writeTaskList use the same base code
- // DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- // DocumentBuilder db;
- // Document doc = null;
- //
- // try {
- // db = dbf.newDocumentBuilder();
- // doc = db.newDocument();
- // } catch (ParserConfigurationException e) {
- // MylarStatusHandler.log(e, "could not create document");
- // e.printStackTrace();
- // }
- //
- // Element root = doc.createElement(ELEMENT_TASK_LIST);
- // root.setAttribute(ATTRIBUTE_VERSION, VALUE_VERSION);
- //
- // for (ITaskListExternalizer externalizer : externalizers) {
- // externalizer.createRegistry(doc, root);
- // }
- //
- // for (ITaskContainer category : tlist.getCategories()) {
- // Element element = null;
- // for (ITaskListExternalizer externalizer : externalizers) {
- // if (externalizer.canCreateElementFor(category))
- // element = externalizer.createCategoryElement(category, doc, root);
- // }
- // if (element == null &&
- // delagatingExternalizer.canCreateElementFor(category)) {
- // delagatingExternalizer.createCategoryElement(category, doc, root);
- // } else if (element == null) {
- // MylarStatusHandler.log("Did not externalize: " + category, this);
- // }
- // }
- // for (ITask task : tlist.getRootTasks()) {
- // try {
- // Element element = null;
- // for (ITaskListExternalizer externalizer : externalizers) {
- // if (externalizer.canCreateElementFor(task))
- // element = externalizer.createTaskElement(task, doc, root);
- // }
- // if (element == null && delagatingExternalizer.canCreateElementFor(task))
- // {
- // delagatingExternalizer.createTaskElement(task, doc, root);
- // } else if (element == null) {
- // MylarStatusHandler.log("Did not externalize: " + task, this);
- // }
- // } catch (Exception e) {
- // MylarStatusHandler.log(e, e.getMessage());
- // }
- // }
- // doc.appendChild(root);
- // StringWriter sw = new StringWriter();
- //
- // Source source = new DOMSource(doc);
- //
- // Result result = new StreamResult(sw);
- //
- // Transformer xformer = null;
- // try {
- // xformer = TransformerFactory.newInstance().newTransformer();
- // // Transform the XML Source to a Result
- // //
- // xformer.transform(source, result);
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // return sw.toString();
- // }
-
- public void setDelegatingExternalizer(DelegatingTaskExternalizer delagatingExternalizer) {
- this.delagatingExternalizer = delagatingExternalizer;
- }
-
- public List<ITaskListExternalizer> getExternalizers() {
- return externalizers;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java
deleted file mode 100644
index 8d3e20f02..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java
+++ /dev/null
@@ -1,320 +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.tasks.ui.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.IDynamicSubMenuContributor;
-import org.eclipse.mylar.internal.tasks.ui.ITaskEditorFactory;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.ITaskListExternalizer;
-import org.eclipse.mylar.tasks.core.RepositoryTemplate;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * @author Mik Kersten
- * @author Shawn Minto
- * @author Rob Elves
- */
-public class TasksUiExtensionReader {
-
- public static final String EXTENSION_REPOSITORIES = "org.eclipse.mylar.tasks.ui.repositories";
-
- public static final String EXTENSION_TEMPLATES = "org.eclipse.mylar.tasks.ui.templates";
-
- public static final String EXTENSION_TMPL_REPOSITORY = "repository";
-
- public static final String ELMNT_TMPL_LABEL = "label";
-
- public static final String ELMNT_TMPL_URLREPOSITORY = "urlRepository";
-
- public static final String ELMNT_TMPL_REPOSITORYKIND = "repositoryKind";
-
- public static final String ELMNT_TMPL_ANONYMOUS = "anonymous";
-
- public static final String ELMNT_TMPL_VERSION = "version";
-
- public static final String ELMNT_TMPL_URLNEWTASK = "urlNewTask";
-
- public static final String ELMNT_TMPL_URLTASK = "urlTask";
-
- public static final String ELMNT_TMPL_URLTASKQUERY = "urlTaskQuery";
-
- public static final String ELMNT_TMPL_NEWACCOUNTURL = "urlNewAccount";
-
- public static final String ELMNT_TMPL_ADDAUTO = "addAutomatically";
-
- public static final String ELMNT_REPOSITORY_CONNECTOR = "connectorCore";
-
- public static final String ELMNT_REPOSITORY_UI= "connectorUi";
-
- public static final String ELMNT_EXTERNALIZER = "externalizer";
-
- public static final String ATTR_BRANDING_ICON = "brandingIcon";
-
- public static final String ATTR_OVERLAY_ICON = "overlayIcon";
-
- public static final String ELMNT_TYPE = "type";
-
- public static final String ELMNT_QUERY_PAGE = "queryPage";
-
- public static final String ELMNT_SETTINGS_PAGE = "settingsPage";
-
- public static final String EXTENSION_TASK_CONTRIBUTOR = "org.eclipse.mylar.tasks.ui.providers";
-
- public static final String ATTR_ACTION_CONTRIBUTOR_CLASS = "taskHandlerClass";
-
- public static final String DYNAMIC_POPUP_ELEMENT = "dynamicPopupMenu";
-
- public static final String ATTR_CLASS = "class";
-
- public static final String EXTENSION_EDITORS = "org.eclipse.mylar.tasks.ui.editors";
-
- public static final String ELMNT_EDITOR_FACTORY = "editorFactory";
-
- public static final String ELMNT_HYPERLINK_LISTENER = "hyperlinkListener";
-
- public static final String ELMNT_HYPERLINK_DETECTOR = "hyperlinkDetector";
-
- private static boolean extensionsRead = false;
-
- public static void initExtensions(TaskListWriter writer) {
- List<ITaskListExternalizer> externalizers = new ArrayList<ITaskListExternalizer>();
- if (!extensionsRead) {
- IExtensionRegistry registry = Platform.getExtensionRegistry();
-
- // HACK: has to be read first
- IExtensionPoint repositoriesExtensionPoint = registry.getExtensionPoint(EXTENSION_REPOSITORIES);
- IExtension[] repositoryExtensions = repositoriesExtensionPoint.getExtensions();
- for (int i = 0; i < repositoryExtensions.length; i++) {
- IConfigurationElement[] elements = repositoryExtensions[i].getConfigurationElements();
- for (int j = 0; j < elements.length; j++) {
- if (elements[j].getName().equals(ELMNT_REPOSITORY_CONNECTOR)) {
- readRepositoryConnectorCore(elements[j]);
- } else if (elements[j].getName().equals(ELMNT_REPOSITORY_UI)) {
- readRepositoryConnectorUi(elements[j]);
- } else if (elements[j].getName().equals(ELMNT_EXTERNALIZER)) {
- readExternalizer(elements[j], externalizers);
- }
- }
- }
-
- IExtensionPoint extensionPoint = registry.getExtensionPoint(EXTENSION_TASK_CONTRIBUTOR);
- IExtension[] extensions = extensionPoint.getExtensions();
- for (int i = 0; i < extensions.length; i++) {
- IConfigurationElement[] elements = extensions[i].getConfigurationElements();
- for (int j = 0; j < elements.length; j++) {
- if (elements[j].getName().equals(DYNAMIC_POPUP_ELEMENT)) {
- readDynamicPopupContributor(elements[j]);
- }
- }
- }
-
- IExtensionPoint templatesExtensionPoint = registry.getExtensionPoint(EXTENSION_TEMPLATES);
- IExtension[] templateExtensions = templatesExtensionPoint.getExtensions();
- for (int i = 0; i < templateExtensions.length; i++) {
- IConfigurationElement[] elements = templateExtensions[i].getConfigurationElements();
- for (int j = 0; j < elements.length; j++) {
- if (elements[j].getName().equals(EXTENSION_TMPL_REPOSITORY)) {
- readRepositoryTemplate(elements[j]);
- }
- }
- }
-
- IExtensionPoint editorsExtensionPoint = registry.getExtensionPoint(EXTENSION_EDITORS);
- IExtension[] editors = editorsExtensionPoint.getExtensions();
- for (int i = 0; i < editors.length; i++) {
- IConfigurationElement[] elements = editors[i].getConfigurationElements();
- for (int j = 0; j < elements.length; j++) {
- if (elements[j].getName().equals(ELMNT_EDITOR_FACTORY)) {
- readEditorFactory(elements[j]);
- } else if (elements[j].getName().equals(ELMNT_HYPERLINK_DETECTOR)) {
- readHyperlinkDetector(elements[j]);
- }
- }
- }
- writer.setDelegateExternalizers(externalizers);
- extensionsRead = true;
- }
- }
-
- private static void readHyperlinkDetector(IConfigurationElement element) {
- try {
- Object hyperlinkDetector = element.createExecutableExtension(ATTR_CLASS);
- if (hyperlinkDetector instanceof IHyperlinkDetector) {
- TasksUiPlugin.getDefault().addTaskHyperlinkDetector((IHyperlinkDetector) hyperlinkDetector);
- } else {
- MylarStatusHandler.log("Could not load detector: " + hyperlinkDetector.getClass().getCanonicalName(),
- null);
- }
- } catch (CoreException e) {
- MylarStatusHandler.log(e, "Could not load tasklist hyperlink detector extension");
- }
- }
-
- private static void readEditorFactory(IConfigurationElement element) {
- try {
- Object editor = element.createExecutableExtension(ATTR_CLASS);
- if (editor instanceof ITaskEditorFactory) {
- TasksUiPlugin.getDefault().addContextEditor((ITaskEditorFactory) editor);
- } else {
- MylarStatusHandler.log("Could not load editor: " + editor.getClass().getCanonicalName()
- + " must implement " + ITaskEditorFactory.class.getCanonicalName(), null);
- }
- } catch (CoreException e) {
- MylarStatusHandler.log(e, "Could not load tasklist listener extension");
- }
- }
-
- private static void readRepositoryConnectorCore(IConfigurationElement element) {
- try {
- Object type = element.getAttribute(ELMNT_TYPE);
- Object connectorCore = element.createExecutableExtension(ATTR_CLASS);
- if (connectorCore instanceof AbstractRepositoryConnector && type != null) {
- TasksUiPlugin.getRepositoryManager().addRepositoryConnector((AbstractRepositoryConnector) connectorCore);
- } else {
- MylarStatusHandler.log("could not not load connector core: " + connectorCore, null);
- }
-
- } catch (CoreException e) {
- MylarStatusHandler.log(e, "Could not load tasklist listener extension");
- }
- }
-
- private static void readRepositoryConnectorUi(IConfigurationElement element) {
- try {
-// Object type = element.getAttribute(ELMNT_TYPE);
- Object connectorUi = element.createExecutableExtension(ATTR_CLASS);
- if (connectorUi instanceof AbstractRepositoryConnectorUi) {
- TasksUiPlugin.addRepositoryConnectorUi((AbstractRepositoryConnectorUi) connectorUi);
-
- String iconPath = element.getAttribute(ATTR_BRANDING_ICON);
- if (iconPath != null) {
- ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getContributor()
- .getName(), iconPath);
- if (descriptor != null) {
- TasksUiPlugin.getDefault().addBrandingIcon(((AbstractRepositoryConnectorUi)connectorUi).getRepositoryType(),
- TaskListImages.getImage(descriptor));
- }
- }
- String overlayIconPath = element.getAttribute(ATTR_OVERLAY_ICON);
- if (overlayIconPath != null) {
- ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getContributor()
- .getName(), overlayIconPath);
- if (descriptor != null) {
- TasksUiPlugin.getDefault().addOverlayIcon(((AbstractRepositoryConnectorUi)connectorUi).getRepositoryType(),
- descriptor);
- }
- }
- } else {
- MylarStatusHandler.log("could not not load connector ui: " + connectorUi, null);
- }
-
- } catch (CoreException e) {
- MylarStatusHandler.log(e, "Could not load tasklist listener extension");
- }
- }
-
- private static void readRepositoryTemplate(IConfigurationElement element) {
-
- boolean anonymous = false;
- boolean addAuto = false;
-
- String label = element.getAttribute(ELMNT_TMPL_LABEL);
- String serverUrl = element.getAttribute(ELMNT_TMPL_URLREPOSITORY);
- String repKind = element.getAttribute(ELMNT_TMPL_REPOSITORYKIND);
- String version = element.getAttribute(ELMNT_TMPL_VERSION);
- String newTaskUrl = element.getAttribute(ELMNT_TMPL_URLNEWTASK);
- String taskPrefix = element.getAttribute(ELMNT_TMPL_URLTASK);
- String taskQueryUrl = element.getAttribute(ELMNT_TMPL_URLTASKQUERY);
- String newAccountUrl = element.getAttribute(ELMNT_TMPL_NEWACCOUNTURL);
- addAuto = Boolean.parseBoolean(element.getAttribute(ELMNT_TMPL_ADDAUTO));
- anonymous = Boolean.parseBoolean(element.getAttribute(ELMNT_TMPL_ANONYMOUS));
-
- if (serverUrl != null && label != null && repKind != null
- && TasksUiPlugin.getRepositoryManager().getRepositoryConnector(repKind) != null) {
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(repKind);
- RepositoryTemplate template = new RepositoryTemplate(label, serverUrl, version, newTaskUrl, taskPrefix,
- taskQueryUrl, newAccountUrl, anonymous, addAuto);
- connector.addTemplate(template);
-
- for (IConfigurationElement configElement : element.getChildren()) {
- String name = configElement.getAttribute("name");
- String value = configElement.getAttribute("value");
- if(name != null && !name.equals("") && value != null) {
- template.addAttribute(name, value);
- }
- }
-
- } else {
- MylarStatusHandler.log("Could not load repository template extension " + element.getName(),
- TasksUiExtensionReader.class);
- }
- }
-
- private static void readDynamicPopupContributor(IConfigurationElement element) {
- try {
- Object dynamicPopupContributor = element.createExecutableExtension(ATTR_CLASS);
- if (dynamicPopupContributor instanceof IDynamicSubMenuContributor) {
- TasksUiPlugin.getDefault().addDynamicPopupContributor(
- (IDynamicSubMenuContributor) dynamicPopupContributor);
- } else {
- MylarStatusHandler.log("Could not load dyanmic popup menu: "
- + dynamicPopupContributor.getClass().getCanonicalName() + " must implement "
- + IDynamicSubMenuContributor.class.getCanonicalName(), null);
- }
- } catch (CoreException e) {
- MylarStatusHandler.log(e, "Could not load dynamic popup extension");
- }
- }
-
- private static void readExternalizer(IConfigurationElement element, List<ITaskListExternalizer> externalizers) {
- try {
- Object externalizerObject = element.createExecutableExtension(ATTR_CLASS);
- if (externalizerObject instanceof ITaskListExternalizer) {
- ITaskListExternalizer externalizer = (ITaskListExternalizer) externalizerObject;
- externalizers.add((ITaskListExternalizer) externalizer);
- } else {
- MylarStatusHandler.log("Could not load externalizer: "
- + externalizerObject.getClass().getCanonicalName() + " must implement "
- + ITaskListExternalizer.class.getCanonicalName(), null);
- }
-
- // Object taskHandler =
- // element.createExecutableExtension(ATTR_ACTION_CONTRIBUTOR_CLASS);
- // if (taskHandler instanceof ITaskHandler) {
- // MylarTaskListPlugin.getDefault().addTaskHandler((ITaskHandler)
- // taskHandler);
- // } else {
- // MylarStatusHandler.log("Could not load contributor: " +
- // taskHandler.getClass().getCanonicalName()
- // + " must implement " + ITaskHandler.class.getCanonicalName(),
- // null);
- // }
- } catch (CoreException e) {
- MylarStatusHandler.log(e, "Could not load task handler extension");
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractMylarFilteredTree.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractMylarFilteredTree.java
deleted file mode 100644
index 8a079a28f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractMylarFilteredTree.java
+++ /dev/null
@@ -1,113 +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.tasks.ui.views;
-
-import java.lang.reflect.Field;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
-
-/**
- * @author Mik Kersten
- */
-public abstract class AbstractMylarFilteredTree extends FilteredTree {
-
- private static final int filterWidth = 70;
-
- public static final String LABEL_FIND = "Find:";
-
- private Job refreshJob;
-
- private AdaptiveRefreshPolicy refreshPolicy;
-
- /**
- * HACK: using reflection to gain access
- */
- public AbstractMylarFilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
- super(parent, treeStyle, filter);
- Field refreshField;
- try {
- refreshField = FilteredTree.class.getDeclaredField("refreshJob");
- refreshField.setAccessible(true);
- refreshJob = (Job) refreshField.get(this);
- refreshPolicy = new AdaptiveRefreshPolicy(refreshJob, super.getFilterControl());
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not get refresh job", false);
- }
- setInitialText("");
- }
-
- @Override
- protected void createControl(Composite parent, int treeStyle) {
- super.createControl(parent, treeStyle);
-
- // Override superclass layout settings...
- GridLayout layout = (GridLayout) getLayout();
- layout.verticalSpacing = 0;
- layout.horizontalSpacing = 0;
- }
-
- @Override
- protected Composite createFilterControls(Composite parent) {
- GridLayout gridLayout = new GridLayout(4, false);
- gridLayout.marginWidth = 2;
- gridLayout.marginHeight = 2;
- parent.setLayout(gridLayout);
-
- Label label = new Label(parent, SWT.NONE);
- label.setText(LABEL_FIND);
-
- super.createFilterControls(parent);
-
- GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
- gd.minimumWidth = filterWidth;
- filterText.setLayoutData(gd);
- filterText.addKeyListener(new KeyAdapter() {
-
- @Override
- public void keyPressed(KeyEvent e) {
- if (e.character == SWT.ESC) {
- setFilterText("");
- }
- }
-
- });
-
- createStatusComposite(parent);
- return parent;
- }
-
- protected abstract Composite createStatusComposite(Composite container);
-
- protected void textChanged() {
- if (refreshPolicy != null) {
- refreshPolicy.textChanged(filterText.getText());
- }
- }
-
- protected Job getRefreshJob() {
- return refreshJob;
- }
-
- public AdaptiveRefreshPolicy getRefreshPolicy() {
- return refreshPolicy;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/DatePicker.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/DatePicker.java
deleted file mode 100644
index 2830c2700..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/DatePicker.java
+++ /dev/null
@@ -1,281 +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.tasks.ui.views;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.internal.tasks.ui.planner.DateSelectionDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-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.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Temporary date picker from patch posted to:
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=19945
- *
- * see bug# 19945
- *
- * TODO: remove this class when an SWT date picker is added
- *
- * @author Bahadir Yagan
- * @author Mik Kersten
- */
-public class DatePicker extends Composite {
-
- public final static String TITLE_DIALOG = "Choose Date";
-
- public static final String LABEL_CHOOSE = "<choose date>";
-
- private Text dateText = null;
-
- private Button pickButton = null;
-
- private Calendar date = null;
-
- private List<SelectionListener> pickerListeners = new LinkedList<SelectionListener>();
-
- private SimpleDateFormat simpleDateFormat = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
- DateFormat.SHORT);
-
- private String initialText = "Select Date";
-
- public DatePicker(Composite parent, int style, String initialText) {
- super(parent, style);
- this.initialText = initialText;
- initialize();
- }
-
- public void setDatePattern(String pattern) {
- simpleDateFormat.applyPattern(pattern);
- }
-
- private void initialize() {
-
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 2;
- gridLayout.horizontalSpacing = 0;
- gridLayout.verticalSpacing = 0;
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- gridLayout.makeColumnsEqualWidth = false;
- this.setLayout(gridLayout);
-
- dateText = new Text(this, SWT.NONE);
-
- GridData dateTextGridData = new org.eclipse.swt.layout.GridData();
- dateTextGridData.widthHint = 110;
- dateTextGridData.horizontalAlignment = GridData.FILL;
-
- dateText.setLayoutData(dateTextGridData);
- dateText.setText(initialText);
- dateText.addKeyListener(new KeyListener() {
-
- public void keyPressed(KeyEvent e) {
- // key listener used because setting of date picker text causes
- // modify litener to fire which results in perpetual dirty
- // editor
- notifyPickerListeners();
- }
-
- public void keyReleased(KeyEvent e) {
- // ignore
-
- }
- });
-
- dateText.addFocusListener(new FocusListener() {
-
- Calendar calendar = Calendar.getInstance();
-
- public void focusGained(FocusEvent e) {
- }
-
- public void focusLost(FocusEvent e) {
- Date reminderDate;
- try {
- reminderDate = simpleDateFormat.parse(dateText.getText());
- calendar.setTime(reminderDate);
- date = calendar;
- updateDateText();
- } catch (ParseException e1) {
- updateDateText();
- }
-
- }
- });
-
- pickButton = new Button(this, SWT.ARROW | SWT.DOWN);
- GridData pickButtonGridData = new org.eclipse.swt.layout.GridData();
- pickButtonGridData.horizontalAlignment = org.eclipse.swt.layout.GridData.END;
- pickButton.setLayoutData(pickButtonGridData);
- pickButton.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent arg0) {
- Calendar newCalendar = GregorianCalendar.getInstance();
- if(date != null) {
- newCalendar.setTime(date.getTime());
- }
-
- Shell shell = null;
- if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) {
- shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- } else {
- shell = new Shell(PlatformUI.getWorkbench().getDisplay());
- }
- DateSelectionDialog dialog = new DateSelectionDialog(shell, newCalendar, DatePicker.TITLE_DIALOG);
- pickButton.setEnabled(false);
- dateText.setEnabled(false);
-
- int dialogResponse = dialog.open();
- if(dialog.getDate()!=null) {
- newCalendar.setTime(dialog.getDate());
- } else {
- newCalendar = null;
- }
- dateSelected(dialogResponse == Window.CANCEL, newCalendar);
-
- // Display display = Display.getCurrent();
- // showDatePicker((display.getCursorLocation().x),
- // (display.getCursorLocation().y));
- }
-
- public void widgetDefaultSelected(SelectionEvent arg0) {
-
- }
- });
-
- pack();
- }
-
- public void addPickerSelectionListener(SelectionListener listener) {
- pickerListeners.add(listener);
- }
-
- /**
- * must check for null return value
- */
- public Calendar getDate() {
- return date;
- }
-
- public void setDate(Calendar date) {
- this.date = date;
- updateDateText();
- }
-
- // private void showDatePicker(int x, int y) {
- // pickerShell = new Shell(SWT.APPLICATION_MODAL);//| SWT.ON_TOP
- // pickerShell.setText("Shell");
- // pickerShell.setLayout(new FillLayout());
- // if (date == null) {
- // date = new GregorianCalendar();
- // }
- // // datePickerPanel.setDate(date);
- // datePickerPanel = new DatePickerPanel(pickerShell, SWT.NONE, date);
- // datePickerPanel.addSelectionChangedListener(new
- // ISelectionChangedListener() {
- //
- // public void selectionChanged(SelectionChangedEvent event) {
- // if(!event.getSelection().isEmpty()) {
- // dateSelected(event.getSelection().isEmpty(),
- // ((DateSelection)event.getSelection()).getDate());
- // } else {
- // dateSelected(false, null);
- // }
- // }});
- //
- // pickerShell.setSize(new Point(240, 180));
- // pickerShell.setLocation(new Point(x, y));
- //
- // datePickerPanel.addKeyListener(new KeyListener() {
- // public void keyPressed(KeyEvent e) {
- // if (e.keyCode == SWT.ESC) {
- // dateSelected(true, null);
- // }
- // }
- //
- // public void keyReleased(KeyEvent e) {
- // }
- // });
- //
- // pickerShell.addFocusListener(new FocusListener() {
- //
- // public void focusGained(FocusEvent e) {
- // System.err.println(" shell - Focus Gained!");
- //
- // }
- //
- // public void focusLost(FocusEvent e) {
- // System.err.println("shell - Focus Lost!");
- //
- // }});
- //
- // pickerShell.pack();
- // pickerShell.open();
- // }
-
- /** Called when the user has selected a date */
- protected void dateSelected(boolean canceled, Calendar selectedDate) {
-
- if (!canceled) {
- this.date = selectedDate != null ? selectedDate : null;
- updateDateText();
- }
-
- notifyPickerListeners();
- pickButton.setEnabled(true);
- dateText.setEnabled(true);
- }
-
- private void notifyPickerListeners() {
- for (SelectionListener listener : pickerListeners) {
- listener.widgetSelected(null);
- }
- }
-
- private void updateDateText() {
- if (date != null) {
- Date currentDate = new Date(date.getTimeInMillis());
- dateText.setText(simpleDateFormat.format(currentDate));
- } else {
- dateText.setEnabled(false);
- dateText.setText(initialText);
- dateText.setEnabled(true);
- }
- }
-
- @Override
- public void setEnabled(boolean enabled) {
- dateText.setEnabled(enabled);
- pickButton.setEnabled(enabled);
- super.setEnabled(enabled);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/ResetRepositoryConfigurationAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/ResetRepositoryConfigurationAction.java
deleted file mode 100644
index 6a72965fc..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/ResetRepositoryConfigurationAction.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.views;
-
-import java.util.Iterator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IViewPart;
-
-/**
- * @author Mik Kersten
- */
-public class ResetRepositoryConfigurationAction extends Action {
-
- private static final String ID = "org.eclipse.mylar.tasklist.repositories.reset";
-
- private TaskRepositoriesView repositoriesView;
-
- public ResetRepositoryConfigurationAction(TaskRepositoriesView repositoriesView) {
- this.repositoriesView = repositoriesView;
- setText("Update Attributes");
- setId(ID);
- }
-
- public void init(IViewPart view) {
- // ignore
- }
-
- public void run() {
- try {
- IStructuredSelection selection = (IStructuredSelection) repositoriesView.getViewer().getSelection();
- for (Iterator iter = selection.iterator(); iter.hasNext();) {
- Object selectedObject = iter.next();
- if (selectedObject instanceof TaskRepository) {
- final TaskRepository repository = (TaskRepository) selectedObject;
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(repository.getKind());
- if (connector != null) {
- final String jobName = "Updating attributes for: " + repository.getUrl();
- Job updateJob = new Job(jobName) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask(jobName,
- IProgressMonitor.UNKNOWN);
- try {
- connector.updateAttributes(repository, TasksUiPlugin.getDefault().getProxySettings(), monitor);
- } catch (CoreException ce) {
- MylarStatusHandler.fail(ce, ce.getStatus().getMessage(), true);
- }
-
- monitor.done();
- return Status.OK_STATUS;
- }
-
- };
- updateJob.schedule();
- }
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
- public void selectionChanged(IAction action, ISelection selection) {
- // TODO Auto-generated method stub
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java
deleted file mode 100644
index a9d18407b..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivationHistory.java
+++ /dev/null
@@ -1,251 +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.tasks.ui.views;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.mylar.context.core.InteractionEvent;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Ken Sueda (original prototype)
- * @author Wesley Coelho (Added persistent tasks)
- * @author Mik Kersten (hardening)
- * @author Rob Elves
- */
-public class TaskActivationHistory {
-
- private List<ITask> history = new ArrayList<ITask>();
-
- private int currentIndex = -1;
-
- /**
- * The number of tasks from the previous Eclipse session to load into the
- * history at startup. (This is not the maximum size of the history, which
- * is currently unbounded)
- */
- private static final int NUM_SAVED_HISTORY_ITEMS_TO_LOAD = 10;
-
- private boolean persistentHistoryLoaded = false;
-
- /**
- * Load in a number of saved history tasks from previous session. Should be
- * called from constructor but ContextManager doesn't seem to be able to
- * provide activity history at that point
- *
- * @author Wesley Coelho
- */
- public void loadPersistentHistory() {
- int tasksAdded = 0;
- history.clear();
- for (int i = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext().getInteractionHistory()
- .size() - 1; i >= 0; i--) {
- ITask prevTask = getHistoryTaskAt(i);
-
- if (prevTask != null && !history.contains(prevTask)) {
- // !isDuplicate(prevTask, i + 1)) {
- history.add(0, prevTask);
- currentIndex++;
- tasksAdded++;
- if (tasksAdded == NUM_SAVED_HISTORY_ITEMS_TO_LOAD) {
- break;
- }
- }
- }
- persistentHistoryLoaded = true;
- }
-
- /**
- * Returns the task corresponding to the interaction event history item at
- * the specified position
- */
- protected ITask getHistoryTaskAt(int pos) {
- InteractionEvent event = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext()
- .getInteractionHistory().get(pos);
- return TasksUiPlugin.getTaskListManager().getTaskList().getTask(event.getStructureHandle());
- }
-
- public void addTask(ITask task) {
- try {
- if (!persistentHistoryLoaded) {
- loadPersistentHistory();
- persistentHistoryLoaded = true;
- }
-
- history.remove(task);
- history.add(task);
- currentIndex = history.size() - 1;
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not add task to history", false);
- }
- }
-
- public ITask getPreviousTask() {
- try {
- boolean active = false;
- for (ITask task: history) {
- if(task.isActive()) {
- active = true;
- break;
- }
- }
-
- if (hasPrevious()) {
- if ((currentIndex == 0 && !history.get(currentIndex).isActive()) || !active) {
- return history.get(currentIndex);
- } else {
- return history.get(--currentIndex);
- }
- } else {
- return null;
- }
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not get previous task from history", false);
- return null;
- }
- }
-
- public List<ITask> getPreviousTasks() {
- return history;
- }
-
- public boolean hasPrevious() {
- try {
- if (!persistentHistoryLoaded) {
- loadPersistentHistory();
- persistentHistoryLoaded = true;
- }
-
- return (currentIndex == 0 && !history.get(currentIndex).isActive()) || currentIndex > 0;
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could determine previous task", false);
- return false;
- }
- }
-
- public void clear() {
- try {
- history.clear();
- currentIndex = -1;
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not clear history", false);
- }
- }
-
- // /**
- // * Get a list of the preceding tasks in the history. navigatedToTask(Task)
- // * should be called to notify the history if the user navigates to an
- // * arbitrary previous task from this list
- // *
- // * @author Wesley Coelho
- // */
- // public List<ITask> getPreviousTasks() {
- // try {
- //
- // if (!hasPrevious()) {
- // return new ArrayList<ITask>();
- // }
- //
- // if (history.get(currentIndex).isActive()) {
- // return history.subList(0, currentIndex);
- // } else {
- // return history.subList(0, currentIndex + 1);
- // }
- // } catch (RuntimeException e) {
- // MylarStatusHandler.fail(e, "could not get previous tasks from history",
- // false);
- // return new ArrayList<ITask>();
- // }
- // }
-
- // /**
- // * Get a list of the next tasks in the history. navigatedToTask(Task)
- // should
- // * be called to notify the history if the user navigates to an arbitrary
- // * next task from this list
- // *
- // * @author Wesley Coelho
- // */
- // public List<ITask> getNextTasks() {
- // try {
- // return history.subList(currentIndex + 1, history.size());
- // } catch (RuntimeException e) {
- // MylarStatusHandler.fail(e, "could not get next tasks from history",
- // false);
- // return new ArrayList<ITask>();
- // }
- // }
-
- // /**
- // * Use this method to notify the task history that the user has navigated
- // to
- // * an arbitrary task in the history without using getNextTask() or
- // * getPreviousTask()
- // *
- // * @author Wesley Coelho
- // */
- // public void navigatedToTask(ITask task) {
- // for (int i = 0; i < history.size(); i++) {
- // if (history.get(i).getHandleIdentifier() != null
- // &&
- // history.get(i).getHandleIdentifier().equals(task.getHandleIdentifier()))
- // {
- // currentIndex = i;
- // break;
- // }
- // }
- // }
-
- // public ITask getNextTask() {
- // try {
- // if (hasNext()) {
- // return history.get(++currentIndex);
- // } else {
- // return null;
- // }
- // } catch (RuntimeException e) {
- // MylarStatusHandler.fail(e, "could not get next task", false);
- // return null;
- // }
- // }
-
- // public boolean hasNext() {
- // try {
- // return currentIndex < history.size() - 1;
- // } catch (RuntimeException e) {
- // MylarStatusHandler.fail(e, "could not get next task", false);
- // return false;
- // }
- // }
-
- // /**
- // * Returns true if the specified task appears in the activity history
- // * between the starting index and the end of the history list.
- // *
- // * @author Wesley Coelho
- // */
- // protected boolean isDuplicate(ITask task, int startingIndex) {
- // for (int i = startingIndex; i <
- // ContextCorePlugin.getContextManager().getActivityHistoryMetaContext().getInteractionHistory()
- // .size(); i++) {
- // ITask currTask = getHistoryTaskAt(i);
- // if (currTask != null &&
- // currTask.getHandleIdentifier().equals(task.getHandleIdentifier())) {
- // return true;
- // }
- // }
- // return false;
- // }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityLabelProvider.java
deleted file mode 100644
index 9b44574f2..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/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.tasks.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.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DateRangeActivityDelegate;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.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 TaskUiUtil.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 && activityDelegate.getDateRangeContainer().getElapsed(activityDelegate) > 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/tasks/ui/views/TaskActivityView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityView.java
deleted file mode 100644
index 0ba1a7371..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityView.java
+++ /dev/null
@@ -1,636 +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.tasks.ui.views;
-
-import java.text.DateFormat;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-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.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.actions.ActivityReportAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.OpenTaskListElementAction;
-import org.eclipse.mylar.internal.tasks.ui.planner.ReminderCellEditor;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DateRangeActivityDelegate;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskActivityListener;
-import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
-import org.eclipse.mylar.tasks.ui.TaskListManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-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.Menu;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchActionConstants;
-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_TASKLIST_CATEGORY)) {
- taskHistoryTreeLabelProvider.setCategoryBackgroundColor(themeManager.getCurrentTheme()
- .getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_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();
- }
-
- public void calendarChanged() {
- 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;
- TasksUiPlugin.getTaskListManager().addActivityListener(ACTIVITY_LISTENER);
- TasksUiPlugin.getTaskListManager().getTaskList().addChangeListener(TASK_CHANGE_LISTENER);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- TasksUiPlugin.getTaskListManager().removeActivityListener(ACTIVITY_LISTENER);
- TasksUiPlugin.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_TASKLIST_CATEGORY);
-
- taskHistoryTreeLabelProvider = new TaskActivityLabelProvider(new TaskElementLabelProvider(), PlatformUI
- .getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground);
-
- sorter = new TaskActivityViewSorter();
- getViewer().setSorter(sorter);
- taskActivityTableContentProvider = new TaskActivityContentProvider(TasksUiPlugin.getTaskListManager());
-
- getViewer().setContentProvider(taskActivityTableContentProvider);
- getViewer().setLabelProvider(taskHistoryTreeLabelProvider);
- getViewer().setInput(getViewSite());
- restoreState();
- createCellEditorListener();
- makeActions();
- initDrop();
- hookOpenAction();
- hookContextMenu();
- contributeToActionBars();
- getSite().setSelectionProvider(getViewer());
- }
-
-
- private void contributeToActionBars() {
- IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
-
- private void fillLocalPullDown(IMenuManager manager) {
- manager.add(new ActivityReportAction());
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillLocalToolBar(IToolBarManager manager) {
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
-
- 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.getFromActivePerspective().getViewer()
- .getSelection());
-
- Object target = getCurrentTarget();
- DateRangeContainer container;
- Calendar reminderCalendar;
- if (target instanceof DateRangeContainer) {
- container = (DateRangeContainer) target;
- if (container.isPresent()) {
- reminderCalendar = GregorianCalendar.getInstance();
- TasksUiPlugin.getTaskListManager().setSecheduledIn(reminderCalendar, 1);
- } else {
- reminderCalendar = container.getStart();
- }
- } else if (target instanceof DateRangeActivityDelegate) {
- DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) target;
- if (dateRangeActivityDelegate.getDateRangeContainer().isPresent()) {
- reminderCalendar = GregorianCalendar.getInstance();
- TasksUiPlugin.getTaskListManager().setSecheduledIn(reminderCalendar, 1);
- } else {
- 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) {
- TasksUiPlugin.getTaskListManager().setReminder(task, reminderCalendar.getTime());
- }
- }
- return true;
- }
-
- @Override
- public boolean validateDrop(Object targetObject, int operation, TransferData transferType) {
- Object selectedObject = ((IStructuredSelection) TaskListView.getFromActivePerspective().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();
- }
- });
- }
-
- private void hookContextMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- TaskActivityView.this.fillContextMenu(manager);
- }
- });
- Menu menu = menuMgr.createContextMenu(getViewer().getControl());
- getViewer().getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, getViewer());
- }
-
- private void fillContextMenu(IMenuManager manager) {
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- 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) {
- DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) selection;
- Date newReminder = reminderEditor.getReminderDate();
- if (newReminder != null) {
- TasksUiPlugin.getTaskListManager().setReminder(
- dateRangeActivityDelegate.getCorrespondingTask(), newReminder);
- }
- }
- }
-
- 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/tasks/ui/views/TaskActivityViewSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskActivityViewSorter.java
deleted file mode 100644
index 7aa770767..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/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.tasks.ui.views;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DateRangeActivityDelegate;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.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/tasks/ui/views/TaskElementLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java
deleted file mode 100644
index e70a60b54..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java
+++ /dev/null
@@ -1,235 +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.tasks.ui.views;
-
-import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IFontProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.mylar.internal.tasks.ui.ITaskHighlighter;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.TaskArchive;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @author Mik Kersten
- */
-public class TaskElementLabelProvider extends LabelProvider implements IColorProvider, IFontProvider {
-
- private IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager();
-
- @Override
- public Image getImage(Object element) {
- if (element instanceof TaskArchive) {
- return TaskListImages.getImage(TaskListImages.CATEGORY_ARCHIVE);
- } else if (element instanceof TaskCategory) {
- return TaskListImages.getImage(TaskListImages.CATEGORY);
- } else if (element instanceof AbstractRepositoryQuery) {
- return TaskListImages.getImage(TaskListImages.QUERY);
- } else if (element instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit)element;
- if (hit.getCorrespondingTask() != null) {
- return getImage(hit.getCorrespondingTask());
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_REMOTE);
- }
- } else if (element instanceof ITask) {
- ITask task = (ITask)element;
- // TODO: fix this mess that delaying decoration got us into
- if (task.isCompleted()) {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- ((AbstractRepositoryTask)task).getRepositoryKind());
- if (connectorUi != null && !connectorUi.hasRichEditor()) {
- return TaskListImages.getImage(TaskListImages.TASK_COMPLETED);
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_REPOSITORY_COMPLETED);
- }
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_COMPLETED);
- }
- } else if (task.getNotes() != null && !task.getNotes().trim().equals("")) {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- ((AbstractRepositoryTask)task).getRepositoryKind());
- if (connectorUi != null && !connectorUi.hasRichEditor()) {
- return TaskListImages.getImage(TaskListImages.TASK_NOTES);
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_REPOSITORY_NOTES);
- }
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_NOTES);
- }
- } else {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- ((AbstractRepositoryTask)task).getRepositoryKind());
- if (connectorUi != null && !connectorUi.hasRichEditor()) {
- return TaskListImages.getImage(TaskListImages.TASK);
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_REPOSITORY);
- }
- } else {
- return TaskListImages.getImage(TaskListImages.TASK);
- }
- }
- }
- return null;
- }
-
- @Override
- public String getText(Object object) {
-
- if(object instanceof AbstractQueryHit) {
- AbstractQueryHit hit = (AbstractQueryHit)object;
- if(!hit.getDescription().contains(": ")) {
- return hit.getId() + ": " + hit.getDescription();
- } else {
- return hit.getDescription();
- }
- } else if( object instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask task = (AbstractRepositoryTask)object;
- if(!task.getDescription().contains(": ")) {
- return AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()) + ": " + task.getDescription();
- } else {
- return task.getDescription();
- }
- } else if (object instanceof ITaskListElement) {
- ITaskListElement element = (ITaskListElement) object;
- return element.getDescription();
- } else {
- return super.getText(object);
- }
- }
-
- public Color getForeground(Object object) {
- if (object instanceof AbstractTaskContainer) {
- for (ITask child : ((AbstractTaskContainer) object).getChildren()) {
- if (child.isActive()) {
- return TaskListColorsAndFonts.COLOR_TASK_ACTIVE;
- } else if (child.isPastReminder() && !child.isCompleted()) {
- return themeManager.getCurrentTheme().getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_TASK_OVERDUE);
- }
- }
- } else if (object instanceof AbstractRepositoryQuery) {
- // FIXME AbstractRepositoryQuery is a subclass of AbstractTaskContainer so this is probably a dead branch!
- for (AbstractQueryHit child : ((AbstractRepositoryQuery) object).getHits()) {
- ITask task = ((AbstractQueryHit) child).getCorrespondingTask();
- if (task != null && task.isActive()) {
- return TaskListColorsAndFonts.COLOR_TASK_ACTIVE;
- }
- }
- } else if (object instanceof AbstractQueryHit && ((AbstractQueryHit) object).getCorrespondingTask() == null) {
- AbstractQueryHit hit = (AbstractQueryHit) object;
- if ((hit.getCorrespondingTask() != null && hit.getCorrespondingTask().isCompleted())
- || hit.isCompleted()) {
- return TaskListColorsAndFonts.COLOR_TASK_COMPLETED;
- }
- } else if (object instanceof ITaskListElement) {
- ITask task = getCorrespondingTask((ITaskListElement) object);
- if (task != null) {
- if (TasksUiPlugin.getTaskListManager().isCompletedToday(task)) {
- return themeManager.getCurrentTheme().getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_TASK_TODAY_COMPLETED);
- } else if (task.isCompleted()) {
- return TaskListColorsAndFonts.COLOR_TASK_COMPLETED;
- } else if (task.isActive()) {
- return TaskListColorsAndFonts.COLOR_TASK_ACTIVE;
- } else if (task.isPastReminder()) {
- return themeManager.getCurrentTheme().getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_TASK_OVERDUE);
- } else if (TasksUiPlugin.getTaskListManager().isReminderToday(task)) {
- return themeManager.getCurrentTheme().getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_TASK_TODAY_SCHEDULED);
- } else if (TasksUiPlugin.getTaskListManager().isReminderThisWeek(task)) {
- return themeManager.getCurrentTheme().getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_TASK_THISWEEK_SCHEDULED);
- }
- }
- }
- return null;
- }
-
- /**
- * TODO: move
- */
- public static ITask getCorrespondingTask(ITaskListElement element) {
- if (element instanceof ITask) {
- return (ITask) element;
- } else if (element instanceof AbstractQueryHit) {
- return ((AbstractQueryHit) element).getCorrespondingTask();
- } else {
- return null;
- }
- }
-
- public Color getBackground(Object element) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- ITaskHighlighter highlighter = TasksUiPlugin.getDefault().getHighlighter();
- if (highlighter != null) {
- return highlighter.getHighlightColor(task);
- }
- } else if (element instanceof AbstractQueryHit) {
- return getBackground(((AbstractQueryHit)element).getCorrespondingTask());
- }
-// return Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
- return null;
- }
-
- public Font getFont(Object element) {
- if (!(element instanceof ITaskListElement)) {
- return null;
- }
- ITask task = getCorrespondingTask((ITaskListElement) element);
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask)task;
- if (repositoryTask.isSynchronizing()) {
- return TaskListColorsAndFonts.ITALIC;
- }
- }
- if (element instanceof AbstractTaskContainer) {
- if (element instanceof AbstractRepositoryQuery) {
- if (((AbstractRepositoryQuery)element).isSynchronizing()) {
- return TaskListColorsAndFonts.ITALIC;
- }
- }
- for (ITask child : ((AbstractTaskContainer) element).getChildren()) {
- if (child.isActive()) {
- return TaskListColorsAndFonts.BOLD;
- }
- }
- }
- if (task != null) {
- if (task.isActive()) {
- return TaskListColorsAndFonts.BOLD;
- } else if (task.isCompleted()) {
- return TaskListColorsAndFonts.STRIKETHROUGH;
- }
- for (ITask child : task.getChildren()) {
- if (child.isActive()) {
- return TaskListColorsAndFonts.BOLD;
- }
- }
- }
- return null;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskInputDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskInputDialog.java
deleted file mode 100644
index 425d65c62..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskInputDialog.java
+++ /dev/null
@@ -1,291 +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.tasks.ui.views;
-
-import java.util.Date;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.RetrieveTitleFromUrlJob;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-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.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Ken Sueda
- * @author Wesley Coelho (Extended to allow URL input)
- * @author Mik Kersten
- */
-public class TaskInputDialog extends Dialog {
-
- public static final String LABEL_SHELL = "New Task";
-
- private static final String LABEL_DESCRIPTION = "Description:";
-
- private String taskName = "";
-
- private String priority = "P3";
-
- private String taskURL = "http://";
-
- private Date reminderDate = null;
-
- Text taskNameTextWidget = null;
-
- private Text issueURLTextWidget = null;
-
- private Button getDescButton = null;
-
- public TaskInputDialog(Shell parentShell) {
- super(parentShell);
- }
-
- protected Control createDialogArea(Composite parent) {
- Composite composite = (Composite) super.createDialogArea(parent);
- GridLayout gl = new GridLayout(5, false);
- composite.setLayout(gl);
- GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL
- | GridData.VERTICAL_ALIGN_CENTER);
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH + 180);
- composite.setLayoutData(data);
-
- Label taskNameLabel = new Label(composite, SWT.WRAP);
- taskNameLabel.setText(LABEL_DESCRIPTION);
- taskNameLabel.setFont(parent.getFont());
-
- taskNameTextWidget = new Text(composite, SWT.SINGLE | SWT.BORDER);
- GridData taskNameGD = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
- taskNameGD.widthHint = 200;
- taskNameGD.horizontalSpan = 1;
- taskNameTextWidget.setLayoutData(taskNameGD);
-
- final Combo c = new Combo(composite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY
- | SWT.DROP_DOWN);
- c.setItems(TaskListView.PRIORITY_LEVELS);
- c.setText(priority);
- c.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- priority = c.getText();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- widgetSelected(e);
- }
- });
-
-// Label spacer = new Label(composite, SWT.NONE);
-// GridData spacerGD = new GridData();
-// spacerGD.horizontalSpan = 1;
-//// spacerGD.widthHint = 5;
-// spacer.setLayoutData(spacerGD);
-//
-// Composite reminderComp = new Composite(composite, SWT.NONE);
-// GridLayout reminderCompGL = new GridLayout(3, false);
-// reminderCompGL.marginHeight = 0;
-// reminderCompGL.marginWidth = 0;
-// reminderComp.setLayout(reminderCompGL);
-// GridData reminderCompGD = new GridData();
-// reminderCompGD.horizontalSpan = 1;
-// reminderCompGD.horizontalAlignment = SWT.RIGHT;
-// reminderComp.setLayoutData(reminderCompGD);
-// Label reminderLabel = new Label(reminderComp, SWT.NONE);
- final DatePicker datePicker = new DatePicker(composite, SWT.BORDER, DatePicker.LABEL_CHOOSE);
- datePicker.addPickerSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent arg0) {
- if (datePicker.getDate() != null) {
- reminderDate = datePicker.getDate().getTime();
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // ignore
- }
- });
-
- Button removeReminder = new Button(composite, SWT.PUSH | SWT.CENTER);
- removeReminder.setText("Clear");
- removeReminder.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- datePicker.setDate(null);
- reminderDate = null;
- }
- });
-
-//
-// datePicker.setLayout(new GridLayout());
-// GridData datePickerGD = new GridData();
-// datePickerGD.widthHint = 300;
-// datePicker.setLayoutData(datePickerGD);
-
-
- Label urlLabel = new Label(composite, SWT.WRAP);
- urlLabel.setText("Web Link:");
- urlLabel.setFont(parent.getFont());
-
- issueURLTextWidget = new Text(composite, SWT.SINGLE | SWT.BORDER);
- issueURLTextWidget.setText(getDefaultIssueUrl());
- GridData urlData = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
- urlData.horizontalSpan = 3;
- urlData.grabExcessHorizontalSpace = true;
- issueURLTextWidget.setLayoutData(urlData);
-
- getDescButton = new Button(composite, SWT.PUSH);
- getDescButton.setText("Get Description");
- getDescButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
- setButtonStatus();
-
- issueURLTextWidget.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- setButtonStatus();
- }
-
- public void keyReleased(KeyEvent e) {
- setButtonStatus();
- }
- });
-
- getDescButton.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- retrieveTaskDescription(issueURLTextWidget.getText());
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- return composite;
- }
-
- /**
- * Sets the Get Description button enabled or not depending on whether there
- * is a URL specified
- */
- protected void setButtonStatus() {
- String url = issueURLTextWidget.getText();
-
- if (url.length() > 10 && (url.startsWith("http://") || url.startsWith("https://"))) {
-// String defaultPrefix = ContextCorePlugin.getDefault().getPreferenceStore().getString(
-// TaskListPreferenceConstants.DEFAULT_URL_PREFIX);
-// if (url.equals(defaultPrefix)) {
-// getDescButton.setEnabled(false);
-// } else {
- getDescButton.setEnabled(true);
-// }
- } else {
- getDescButton.setEnabled(false);
- }
- }
-
- /**
- * Returns the default URL text for the task by first checking the contents
- * of the clipboard and then using the default prefix preference if that
- * fails
- */
- protected String getDefaultIssueUrl() {
-
- String clipboardText = getClipboardText();
- if ((clipboardText.startsWith("http://") || clipboardText.startsWith("https://") && clipboardText.length() > 10)) {
- return clipboardText;
- } else {
- return taskURL;
- }
-// String defaultPrefix = ContextCorePlugin.getDefault().getPreferenceStore().getString(
-// TaskListPreferenceConstants.DEFAULT_URL_PREFIX);
-// if (!defaultPrefix.equals("")) {
-// return defaultPrefix;
-// }
- }
-
- /**
- * Attempts to set the task pageTitle to the title from the specified url
- */
- protected void retrieveTaskDescription(final String url) {
-
- try {
- RetrieveTitleFromUrlJob job = new RetrieveTitleFromUrlJob(issueURLTextWidget.getText()) {
-
- @Override
- protected void setTitle(final String pageTitle) {
- taskNameTextWidget.setText(pageTitle);
- }
-
- };
- job.schedule();
-
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not open task web page", false);
- }
- }
-
- /**
- * Returns the contents of the clipboard or "" if no text content was
- * available
- */
- protected String getClipboardText() {
- Clipboard clipboard = new Clipboard(Display.getDefault());
- TextTransfer transfer = TextTransfer.getInstance();
- String contents = (String) clipboard.getContents(transfer);
- if (contents != null) {
- return contents;
- } else {
- return "";
- }
- }
-
- public String getSelectedPriority() {
- return priority;
- }
-
- public String getTaskname() {
- return taskName;
- }
-
- public Date getReminderDate() {
- return reminderDate;
- }
-
- public String getIssueURL() {
- return taskURL;
- }
-
- protected void buttonPressed(int buttonId) {
- if (buttonId == IDialogConstants.OK_ID) {
- taskName = taskNameTextWidget.getText();
- taskURL = issueURLTextWidget.getText();
- } else {
- taskName = null;
- }
- super.buttonPressed(buttonId);
- }
-
- protected void configureShell(Shell shell) {
- super.configureShell(shell);
- shell.setText(LABEL_SHELL);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskKeyComparator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskKeyComparator.java
deleted file mode 100644
index b77ee4c72..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskKeyComparator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.mylar.internal.tasks.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/tasks/ui/views/TaskListContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java
deleted file mode 100644
index 9655d11cf..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java
+++ /dev/null
@@ -1,258 +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.tasks.ui.views;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.internal.tasks.ui.AbstractTaskListFilter;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskArchive;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * TODO: move to viewer filter architecture?
- *
- * @author Mik Kersten
- */
-public class TaskListContentProvider implements IStructuredContentProvider, ITreeContentProvider {
-
- private final TaskListView view;
-
- public TaskListContentProvider(TaskListView view) {
- this.view = view;
- }
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- this.view.expandToActiveTasks();
- }
-
- public void dispose() {
- // ignore
- }
-
- public Object[] getElements(Object parent) {
- if (parent.equals(this.view.getViewSite())) {
- return applyFilter(TasksUiPlugin.getTaskListManager().getTaskList().getRootElements()).toArray();
- }
- return getChildren(parent);
- }
-
- public Object getParent(Object child) {
- if (child instanceof ITask) {
- if (((ITask) child).getParent() != null) {
- return ((ITask) child).getParent();
- } else {
- return ((ITask) child).getContainer();
- }
- }
- return null;
- }
-
- public Object[] getChildren(Object parent) {
- return getFilteredChildrenFor(parent).toArray();
- }
-
- /**
- * NOTE: If parent is an ITask, this method checks if parent has unfiltered children (see bug 145194).
- */
- public boolean hasChildren(Object parent) {
- if (parent instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery t = (AbstractRepositoryQuery) parent;
- Set<AbstractQueryHit> hits = t.getHits(); // FIXME should provide hasHits() method!
- return hits != null && hits.size() > 0;
- } else if (parent instanceof AbstractTaskContainer) {
- AbstractTaskContainer cat = (AbstractTaskContainer) parent;
- return cat.getChildren() != null && cat.getChildren().size() > 0; // FIXME should provide hasChildren method!
- } else if (parent instanceof ITask) {
- return taskHasUnfilteredChildren((ITask) parent);
- }
- return false;
- }
-
- private boolean taskHasUnfilteredChildren(ITask parent) {
- Set<ITask> children = parent.getChildren();
- if (children != null) {
- for (ITask task : children) {
- if (! filter(task)) {
- return true;
- }
- }
- }
- return false;
- }
-
- private List<ITaskListElement> applyFilter(Set<ITaskListElement> roots) {
- String filterText = ((Text) this.view.getFilteredTree().getFilterControl()).getText();
- if (containsNoFilterText(filterText)) {
- List<ITaskListElement> filteredRoots = new ArrayList<ITaskListElement>();
- for (ITaskListElement element : roots) {
- if (element instanceof ITask) {
- if (!filter(element)) {
- filteredRoots.add(element);
- }
- } else if (element instanceof AbstractRepositoryQuery) {
- if (selectQuery((AbstractRepositoryQuery)element)) {
- filteredRoots.add(element);
- }
- } else if (element instanceof AbstractTaskContainer) {
- if (selectContainer((AbstractTaskContainer)element)) {
- filteredRoots.add(element);
- }
- }
- }
- return filteredRoots;
- } else {
- return new ArrayList<ITaskListElement>(roots);
- }
- }
-
- /**
- * See bug 109693
- */
- private boolean containsNoFilterText(String filterText) {
- return filterText == null || filterText.length() == 0;
- }
-
- private boolean selectQuery(AbstractRepositoryQuery cat) {
- Set<AbstractQueryHit> hits = cat.getHits();
- if (hits.size() == 0) {
- return true;
- }
- for (AbstractQueryHit element : hits) {
- if (!filter(element)) {
- return true;
- }
- }
- return false;
- }
-
- private boolean selectContainer(AbstractTaskContainer container) {
- if (filter(container) && !shouldAlwaysShow(container)) {
- return false;
- }
-
- Set<ITask> children = container.getChildren();
- if (children.size() == 0) {
- return true;
- }
- for (ITaskListElement element : children) {
- if (!filter(element)) {
- return true;
- }
- }
- return false;
- }
-
- private boolean shouldAlwaysShow(AbstractTaskContainer container) {
- for (ITask task : container.getChildren()) {
- if (shouldAlwaysShow(task)) {
- if (container instanceof TaskArchive) {
- Set<AbstractQueryHit> existingHits = TasksUiPlugin.getTaskListManager().getTaskList().getQueryHitsForHandle(task.getHandleIdentifier());
- if (existingHits.isEmpty()) {
- return true;
- }
- } else {
- return true;
- }
- }
- }
- return false;
- }
-
- private boolean shouldAlwaysShow(ITask task) {
- for (AbstractTaskListFilter filter : this.view.getFilters()) {
- if (filter.shouldAlwaysShow(task)) {
- return true;
- }
- }
- return false;
- }
-
- private List<Object> getFilteredChildrenFor(Object parent) {
- if (containsNoFilterText(((Text) this.view.getFilteredTree().getFilterControl()).getText())
- || ((Text) this.view.getFilteredTree().getFilterControl()).getText().startsWith(TaskListView.FILTER_LABEL)) {
- List<Object> children = new ArrayList<Object>();
- if (parent instanceof AbstractTaskContainer && ((AbstractTaskContainer)parent).isLocal()) {
- if (filter(parent)) {
- if (((AbstractTaskContainer)parent) instanceof TaskArchive) {
- for (ITask task : ((AbstractTaskContainer) parent).getChildren()) {
- if (shouldAlwaysShow(task)) {
- // TODO: archive logic?
- Set<AbstractQueryHit> existingHits = TasksUiPlugin.getTaskListManager().getTaskList().getQueryHitsForHandle(task.getHandleIdentifier());
- if (existingHits.isEmpty()) {
- children.add(task);
- }
- }
- }
- return children;
- }
- }
- Set<? extends ITaskListElement> list = ((AbstractTaskContainer) parent).getChildren();
- for (ITaskListElement element : list) {
- if (!filter(element)) {
- children.add(element);
- }
- }
- return children;
- } else if (parent instanceof AbstractRepositoryQuery) {
- for (ITaskListElement element : ((AbstractRepositoryQuery) parent).getHits()) {
- if (!filter(element)) {
- children.add(element);
- }
- }
- return children;
- } else if (parent instanceof Task) {
- Set<ITask> subTasks = ((Task) parent).getChildren();
- for (ITask t : subTasks) {
- if (!filter(t)) {
- children.add(t);
- }
- }
- return children;
- }
- } else {
- List<Object> children = new ArrayList<Object>();
- if (parent instanceof AbstractRepositoryQuery) {
- children.addAll(((AbstractRepositoryQuery) parent).getHits());
- return children;
- } else if (parent instanceof AbstractTaskContainer) {
- children.addAll(((AbstractTaskContainer) parent).getChildren());
- return children;
-
- } else if (parent instanceof Task) {
- children.addAll(((Task) parent).getChildren());
- return children;
- }
- }
- return new ArrayList<Object>();
- }
-
- private boolean filter(Object obj) {
- for (AbstractTaskListFilter filter : this.view.getFilters()) {
- if (!filter.select(obj)) {
- return true;
- }
- }
- return false;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDragSourceListener.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDragSourceListener.java
deleted file mode 100644
index b6a7cf186..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDragSourceListener.java
+++ /dev/null
@@ -1,86 +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.tasks.ui.views;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.actions.CopyDetailsAction;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.ui.TaskTransfer;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.FileTransfer;
-import org.eclipse.swt.dnd.TextTransfer;
-
-/**
- * @author Mik Kersten
- */
-class TaskListDragSourceListener implements DragSourceListener {
-
- static final String DELIM = ", ";
-
- private final TaskListView view;
-
-// static final String ID_DATA_TASK_DRAG = "task-drag";
-
- /**
- * @param view
- */
- public TaskListDragSourceListener(TaskListView view) {
- this.view = view;
- }
-
- public void dragStart(DragSourceEvent event) {
- if (((StructuredSelection) this.view.getViewer().getSelection()).isEmpty()) {
- event.doit = false;
- }
- }
-
- public void dragSetData(DragSourceEvent event) {
- StructuredSelection selection = (StructuredSelection) this.view.getViewer().getSelection();
- ITaskListElement selectedElement = null;
- if (((IStructuredSelection) selection).getFirstElement() instanceof ITaskListElement) {
- selectedElement = (ITaskListElement)((IStructuredSelection) selection).getFirstElement();
- }
- if (TaskTransfer.getInstance().isSupportedType(event.dataType)) {
- List<ITask> tasks = new ArrayList<ITask>();
- for (Iterator iter = selection.iterator(); iter.hasNext();) {
- ITaskListElement element = (ITaskListElement) iter.next();
- if (element instanceof ITask) {
- tasks.add((ITask)element);
- }
- }
- event.data = tasks.toArray();
- } else if (FileTransfer.getInstance().isSupportedType(event.dataType)) {
- File file = ContextCorePlugin.getContextManager().getFileForContext(selectedElement.getHandleIdentifier());
- if (file != null) {
- event.data = new String[] { file.getAbsolutePath() };
- }
- } else if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
- event.data = CopyDetailsAction.getTextForTask(selectedElement);
- }
-// else {
-// event.data = ID_DATA_TASK_DRAG;
-// }
- }
-
- public void dragFinished(DragSourceEvent event) {
- // don't care if the drag is done
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java
deleted file mode 100644
index a88909cf6..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java
+++ /dev/null
@@ -1,240 +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.tasks.ui.views;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-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.Viewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.RetrieveTitleFromUrlJob;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.actions.NewLocalTaskAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskActivateAction;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TaskTransfer;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.dnd.FileTransfer;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.TransferData;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves (added URL based task creation support)
- */
-public class TaskListDropAdapter extends ViewerDropAdapter {
-
- private Task newTask = null;
-
- private TransferData currentTransfer;
-
- public TaskListDropAdapter(Viewer viewer) {
- super(viewer);
- setFeedbackEnabled(true);
- }
-
- @Override
- public boolean performDrop(Object data) {
- Object currentTarget = getCurrentTarget();
- List<ITask> tasksToMove = new ArrayList<ITask>();
- ISelection selection = ((TreeViewer) getViewer()).getSelection();
- if (isUrl(data) && createTaskFromUrl(data)) {
- tasksToMove.add(newTask);
- } else if (TaskTransfer.getInstance().isSupportedType(currentTransfer)) {
- for (Object selectedObject : ((IStructuredSelection) selection).toList()) {
- ITask toMove = null;
- if (selectedObject instanceof ITask) {
- toMove = (ITask) selectedObject;
- } else if (selectedObject instanceof AbstractQueryHit) {
- toMove = ((AbstractQueryHit) selectedObject).getOrCreateCorrespondingTask();
- }
- if (toMove != null) {
- tasksToMove.add(toMove);
- }
- }
- } else if (data instanceof String && createTaskFromString((String)data)) {
- tasksToMove.add(newTask);
- } else if (FileTransfer.getInstance().isSupportedType(currentTransfer)) {
- ITask targetTask = null;
- if (getCurrentTarget() instanceof ITask) {
- targetTask = (ITask)getCurrentTarget();
- }
- if (targetTask != null) {
- final String[] names = (String[]) data;
- boolean confirmed = MessageDialog.openConfirm(getViewer().getControl().getShell(), TasksUiPlugin.TITLE_DIALOG,
- "Overwrite the context of the target task with the source's?");
- if (confirmed) {
- String path = names[0];
- File file = new File(path);
- if (ContextCorePlugin.getContextManager().isValidContextFile(file)) {
- ContextCorePlugin.getContextManager().transferContextAndActivate(targetTask.getHandleIdentifier(), file);
- new TaskActivateAction().run(targetTask);
- }
- }
- }
- }
-
- for (ITask task : tasksToMove) {
- if (currentTarget instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer((TaskCategory) currentTarget, task);
- } else if (currentTarget instanceof ITask) {
- ITask targetTask = (ITask) currentTarget;
- if (targetTask.getContainer() == null) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(task);
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer((TaskCategory) targetTask.getContainer(),
- task);
- }
- } else if (currentTarget == null) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(newTask);
- }
- }
-
- // Make new task the current selection in the view
- if (newTask != null) {
- StructuredSelection ss = new StructuredSelection(newTask);
- getViewer().setSelection(ss);
- getViewer().refresh();
- }
-
- return true;
-
- }
-
-
- /**
- * @return true if string is a http(s) url
- */
- public boolean isUrl(Object data) {
- String uri = "";
- if (data instanceof String) {
- uri = (String) data;
- if ((uri.startsWith("http://") || uri.startsWith("https://"))) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @param data
- * string containing url and title separated by <quote>\n</quote>
- * @return true if task succesfully created, false otherwise
- */
- public boolean createTaskFromUrl(Object data) {
- if (!(data instanceof String))
- return false;
-
- String[] urlTransfer = ((String) data).split("\n");
-
- String url = "";
- String urlTitle = "<retrieving from URL>";
-
- if (urlTransfer.length > 0) {
- url = urlTransfer[0];
- } else {
- return false;
- }
-
- // Removed in order to default to retrieving title from url rather than
- // accepting what was sent by the brower's DnD code. (see bug 114401)
- // If a Title is provided, use it.
- // if (urlTransfer.length > 1) {
- // urlTitle = urlTransfer[1];
- // }
- // if (urlTransfer.length < 2) { // no title provided
- // retrieveTaskDescription(url);
- // }
- retrieveTaskDescription(url);
-
- newTask = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), urlTitle, true);
- NewLocalTaskAction.scheduleNewTask(newTask);
-
- if (newTask == null) {
- return false;
- }
-
- newTask.setPriority(Task.PriorityLevel.P3.toString());
- newTask.setUrl(url);
-
- // NOTE: setting boolean param as false so that we go directly to the
- // browser tab as with a previously-created task
- TaskUiUtil.openEditor(newTask, false);
- return true;
- }
-
- public boolean createTaskFromString(String title) {
- newTask = new Task(TasksUiPlugin.getTaskListManager().genUniqueTaskHandle(), title, true);
- NewLocalTaskAction.scheduleNewTask(newTask);
-
- if (newTask == null) {
- return false;
- } else {
- newTask.setPriority(Task.PriorityLevel.P3.toString());
- TaskUiUtil.openEditor(newTask, false);
- return true;
- }
- }
-
- @Override
- public boolean validateDrop(Object targetObject, int operation, TransferData transferType) {
- currentTransfer = transferType;
-
- Object selectedObject = ((IStructuredSelection) ((TreeViewer) getViewer()).getSelection()).getFirstElement();
- if (FileTransfer.getInstance().isSupportedType(currentTransfer) && getCurrentTarget() instanceof ITask) {
- return true;
- } else if (!(selectedObject instanceof AbstractRepositoryQuery)) {
- if (getCurrentTarget() instanceof TaskCategory) {
- return true;
- } else if (getCurrentTarget() instanceof ITaskListElement
- && (getCurrentLocation() == ViewerDropAdapter.LOCATION_AFTER || getCurrentLocation() == ViewerDropAdapter.LOCATION_BEFORE)) {
- return true;
- } else {
- return false;
- }
- }
-
- return TextTransfer.getInstance().isSupportedType(transferType);
- }
-
- /**
- * Attempts to set the task pageTitle to the title from the specified url
- */
- protected void retrieveTaskDescription(final String url) {
-
- try {
- RetrieveTitleFromUrlJob job = new RetrieveTitleFromUrlJob(url) {
- @Override
- protected void setTitle(final String pageTitle) {
- newTask.setDescription(pageTitle);
- TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(newTask);
- }
- };
- job.schedule();
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "could not open task web page", false);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.java
deleted file mode 100644
index cf6dfc15c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListFilteredTree.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.tasks.ui.views;
-
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.dialogs.PatternFilter;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListFilteredTree extends AbstractMylarFilteredTree {
-
- public TaskListFilteredTree(Composite parent, int treeStyle, PatternFilter filter) {
- super(parent, treeStyle, filter);
- }
-
- private static final String LABEL_NO_ACTIVE = "<no active task>";
-
- private Hyperlink activeTaskLabel;
-
- protected Composite createStatusComposite(Composite container) {
- activeTaskLabel = new Hyperlink(container, SWT.LEFT);
- activeTaskLabel.setText(LABEL_NO_ACTIVE);
- ITask activeTask = TasksUiPlugin.getTaskListManager().getTaskList().getActiveTask();
- if (activeTask != null) {
- indicateActiveTask(activeTask);
- }
-
- activeTaskLabel.addMouseListener(new MouseAdapter() {
-
- @Override
- public void mouseDown(MouseEvent e) {
- TaskListFilteredTree.super.filterText.setText("");
- if (TaskListView.getFromActivePerspective().getDrilledIntoCategory() != null) {
- TaskListView.getFromActivePerspective().goUpToRoot();
- }
- TaskListFilteredTree.this.textChanged();
- TaskListView.getFromActivePerspective().selectedAndFocusTask(
- TasksUiPlugin.getTaskListManager().getTaskList().getActiveTask()
- );
- }
-
- });
- return activeTaskLabel;
- }
-
- public void indicateActiveTask(ITask task) {
- String text = task.getDescription();
- activeTaskLabel.setText(text);
- activeTaskLabel.setUnderlined(true);
- activeTaskLabel.setToolTipText(task.getDescription());
- filterComposite.layout();
- }
-
- public void indicateNoActiveTask() {
- activeTaskLabel.setText(LABEL_NO_ACTIVE);
- activeTaskLabel.setUnderlined(false);
- activeTaskLabel.setToolTipText("");
- filterComposite.layout();
- }
-
- public void setFilterText(String string) {
- if (filterText != null){
- filterText.setText(string);
- selectAll();
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableLabelProvider.java
deleted file mode 100644
index 8c179807c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableLabelProvider.java
+++ /dev/null
@@ -1,185 +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
- *******************************************************************************/
-/*
- * Created on Feb 18, 2005
- */
-package org.eclipse.mylar.internal.tasks.ui.views;
-
-import java.util.Arrays;
-
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ITableColorProvider;
-import org.eclipse.jface.viewers.ITableFontProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.TaskArchive;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.core.Task.PriorityLevel;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListTableLabelProvider extends DecoratingLabelProvider implements ITableLabelProvider,
- ITableColorProvider, ITableFontProvider {
-
- private Color categoryBackgroundColor;
-
- private TaskListView view;
-
- /**
- * @param view can be null
- */
- public TaskListTableLabelProvider(ILabelProvider provider, ILabelDecorator decorator, Color parentBacground, TaskListView view) {
- super(provider, decorator);
- this.categoryBackgroundColor = parentBacground;
- this.view = view;
- }
-
- public String getColumnText(Object obj, int columnIndex) {
- if (obj instanceof ITaskListElement) {
- switch (columnIndex) {
- case 0:
- return null;
- case 1:
- return null;
- case 2:
- return null;
- case 3:
- return null;
- case 4:
- return super.getText(obj);
- }
- }
- return null;
- }
-
- public Image getColumnImage(Object element, int columnIndex) {
- if (!(element instanceof ITaskListElement)) {
- return null;
- }
- if (columnIndex == 0) {
- if (element instanceof AbstractTaskContainer) {
- return super.getImage(element);
- } else {
- ITask task = TaskElementLabelProvider.getCorrespondingTask((ITaskListElement)element);
- if (task != null) {
- if (task.isActive()) {
- return TaskListImages.getImage(TaskListImages.TASK_ACTIVE);
- } else {
- if (ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier())) {
- return TaskListImages.getImage(TaskListImages.TASK_INACTIVE_CONTEXT);
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_INACTIVE);
- }
- }
- } else {
- return TaskListImages.getImage(TaskListImages.TASK_INACTIVE);
- }
- }
- } else if (columnIndex == 1) {
- if (element instanceof AbstractTaskContainer) {
- return null;
- }
- return super.getImage(element);
- } else if (columnIndex == 2) {
- if (element instanceof ITaskListElement && !(element instanceof AbstractTaskContainer)) {
- ITaskListElement taskElement = (ITaskListElement) element;
- return TaskUiUtil.getImageForPriority(PriorityLevel.fromString(taskElement.getPriority()));
- }
- } else if (columnIndex == 3) {
- AbstractRepositoryTask repositoryTask = null;
- if (element instanceof AbstractQueryHit) {
- repositoryTask = ((AbstractQueryHit)element).getCorrespondingTask();
- } else if (element instanceof AbstractRepositoryTask) {
- repositoryTask = (AbstractRepositoryTask)element;
- }
- if (repositoryTask != null) {
- if (repositoryTask.getSyncState() == RepositoryTaskSyncState.OUTGOING) {
- return TaskListImages.getImage(TaskListImages.STATUS_NORMAL_OUTGOING);
- } else if (repositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING) {
- return TaskListImages.getImage(TaskListImages.STATUS_NORMAL_INCOMING);
- } else if (repositoryTask.getSyncState() == RepositoryTaskSyncState.CONFLICT) {
- return TaskListImages.getImage(TaskListImages.STATUS_NORMAL_CONFLICT);
- }
- } else if (element instanceof AbstractQueryHit){
- return TaskListImages.getImage(TaskListImages.STATUS_NORMAL_INCOMING);
- } else if (element instanceof AbstractTaskContainer
- && view != null && !Arrays.asList(view.getViewer().getExpandedElements()).contains(element)) {
- AbstractTaskContainer container = (AbstractTaskContainer)element;
- if (hasIncoming(container)) {
- return TaskListImages.getImage(TaskListImages.STATUS_NORMAL_INCOMING);
- }
- }
- }
- return null;
- }
-
- private boolean hasIncoming(AbstractTaskContainer container) {
- for (ITask task : container.getChildren()) {
- if (task instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask containedRepositoryTask = (AbstractRepositoryTask)task;
- if (containedRepositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING) {
- return true;
- }
- }
- }
- if (container instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery)container;
- for (AbstractQueryHit hit : query.getHits()) { // FIXME should not create new tasks!
- if (hit.getCorrespondingTask() == null) {
- return true;
- }
- }
- }
- return false;
- }
-
- public Font getFont(Object element, int columnIndex) {
- return super.getFont(element);
- }
-
- public Color getForeground(Object element, int columnIndex) {
- return super.getForeground(element);
- }
-
- public Color getBackground(Object element, int columnIndex) {
- if (element instanceof AbstractTaskContainer) {
- AbstractTaskContainer category = (AbstractTaskContainer) element;
- if (category instanceof TaskArchive) {
- return TaskListColorsAndFonts.BACKGROUND_ARCHIVE;
- } else {
- return categoryBackgroundColor;
- }
- } else if (element instanceof AbstractRepositoryQuery) {
- return categoryBackgroundColor;
- }
-
- return super.getBackground(element);
- }
-
- public void setCategoryBackgroundColor(Color parentBackgroundColor) {
- this.categoryBackgroundColor = parentBackgroundColor;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java
deleted file mode 100644
index 7f2280126..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java
+++ /dev/null
@@ -1,94 +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.tasks.ui.views;
-
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.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;
- }
-
- public void setColumn(String column) {
- 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/tasks/ui/views/TaskListToolTipHandler.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java
deleted file mode 100644
index 91dfb8723..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListToolTipHandler.java
+++ /dev/null
@@ -1,404 +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
- *******************************************************************************/
-/**
- * Copied from newsgroup, forwarded from Make Technologies
- */
-
-package org.eclipse.mylar.internal.tasks.ui.views;
-
-import java.net.URL;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackAdapter;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.IWindowListener;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Eric Booth
- */
-public class TaskListToolTipHandler {
-
- private Shell tipShell;
-
- private Label tipLabelImage;
-
- private Label tipLabelText;
-
- private Widget tipWidget; // widget this tooltip is hovering over
-
- protected Point tipPosition; // the position being hovered over on the
-
- protected Point widgetPosition; // the position hovered over in the Widget;
-
- public TaskListToolTipHandler(Shell parentShell) {
- if (parentShell != null) {
- tipShell = createTipShell(parentShell);
- }
- }
-
- private Shell createTipShell(Shell parent) {
- Shell tipShell = new Shell(parent.getDisplay(), SWT.TOOL | SWT.NO_FOCUS | SWT.MODELESS | SWT.ON_TOP);
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 2;
- gridLayout.marginWidth = 2;
- gridLayout.marginHeight = 2;
- tipShell.setLayout(gridLayout);
- tipShell.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-
- tipLabelImage = new Label(tipShell, SWT.NONE);
- tipLabelImage.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
- tipLabelImage.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-
- GridData imageGridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
- tipLabelImage.setLayoutData(imageGridData);
-
- tipLabelText = new Label(tipShell, SWT.NONE);
- tipLabelText.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
- tipLabelText.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-
- GridData textGridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);
- tipLabelText.setLayoutData(textGridData);
-
- return tipShell;
- }
-
- private ITaskListElement getTaskListElement(Object hoverObject) {
- if (hoverObject instanceof Widget) {
- Object data = ((Widget) hoverObject).getData();
- if (data != null) {
- if (data instanceof ITaskListElement) {
- return (ITaskListElement) data;
- } else if (data instanceof IAdaptable) {
- return (ITaskListElement) ((IAdaptable) data).getAdapter(ITaskListElement.class);
- }
- }
- }
- return null;
- }
-
- protected String getToolTipText(Object object) {
- ITaskListElement element = getTaskListElement(object);
- String tooltip = "";
- String priority = "";
- if (element instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery) element;
- // TaskRepository repository =
- // TasksUiPlugin.getRepositoryManager().getRepository(
- // query.getRepositoryKind(), query.getRepositoryUrl());
- try {
- tooltip += new URL(query.getRepositoryUrl()).getHost();
- tooltip += "\n---------------\n";
- } catch (Exception e) {
- // ignore
- }
-
- String syncStamp = query.getLastRefreshTimeStamp();
- if (syncStamp == null) {
- syncStamp = "<never>";
- }
- tooltip += "Last Sync: " + syncStamp + "\n";
-
- Set<AbstractQueryHit> hits = query.getHits(); // FIXME provide getHitsSize() method
- if (hits.size() == 1) {
- tooltip += "1 hit";
- } else {
- tooltip += hits.size() + " hits";
- }
- if (query.getMaxHits() != -1) {
- tooltip += " (max set to: " + query.getMaxHits() + ")";
- }
- return tooltip;
- }
- // if (element instanceof ITask || element instanceof AbstractQueryHit)
- // {
- // ITask task = null;
- // if (element instanceof ITask) {
- // task = (ITask) element;
- // } else {
- // task = ((AbstractQueryHit) element).getCorrespondingTask();
- // }
- // if (task != null) {
- // priority += "\nPriority: " +
- // Task.PriorityLevel.fromString(task.getPriority()).getDescription();
- // }
- // }
-
- if (element instanceof AbstractRepositoryTask || element instanceof AbstractQueryHit) {
- AbstractRepositoryTask repositoryTask;
- if (element instanceof AbstractQueryHit) {
- repositoryTask = ((AbstractQueryHit) element).getCorrespondingTask();
- } else {
- repositoryTask = (AbstractRepositoryTask) element;
- }
- tooltip += ((ITaskListElement) element).getDescription();
- if (repositoryTask != null) {
- tooltip += "\n" + repositoryTask.getRepositoryUrl();
- }
- // tooltip += priority;
- // if (repositoryTask != null) {
- // Date lastRefresh = repositoryTask.getLastOpened();
- // if (lastRefresh != null) {
- // tooltip += "\n" +
- // formatLastRefreshTime(repositoryTask.getLastOpened());
- // }
- // }
- return tooltip;
- } else if (element != null) {
- tooltip += ((ITaskListElement) element).getDescription();
- return tooltip + priority;
- } else if (object instanceof Control) {
- return (String) ((Control) object).getData("TIP_TEXT");
- }
- return null;
- }
-
- // private String formatLastRefreshTime(Date lastRefresh) {
- // String toolTip = "Last synchronized: ";
- // if (lastRefresh == null)
- // return toolTip += "unknown";
- // Date timeNow = new Date();
- // long timeDifference = (timeNow.getTime() - lastRefresh.getTime()) /
- // 60000;
- // long minutes = timeDifference % 60;
- // timeDifference /= 60;
- // long hours = timeDifference % 24;
- // timeDifference /= 24;
- // if (timeDifference > 0) {
- // toolTip += timeDifference + ((timeDifference == 1) ? " day, " : " days,
- // ");
- // }
- // if (hours > 0 || timeDifference > 0) {
- // toolTip += hours + ((hours == 1) ? " hour, " : " hours, ");
- // }
- // toolTip += minutes + ((minutes == 1) ? " minute " : " minutes ") + "ago";
- // return toolTip;
- // }
-
- protected Image getToolTipImage(Object object) {
- ITaskListElement element = getTaskListElement(object);
- if (object instanceof Control) {
- return (Image) ((Control) object).getData("TIP_IMAGE");
- } else if (element instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery) element;
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- query.getRepositoryKind());
- if (connector != null) {
- return TasksUiPlugin.getDefault().getBrandingIcon(connector.getRepositoryType());
- }
- } else if (element instanceof AbstractRepositoryTask || element instanceof AbstractQueryHit) {
- AbstractRepositoryTask repositoryTask;
- if (element instanceof AbstractQueryHit) {
- repositoryTask = ((AbstractQueryHit) element).getCorrespondingTask();
- } else {
- repositoryTask = (AbstractRepositoryTask) element;
- }
- if (repositoryTask != null) {
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repositoryTask.getRepositoryKind());
- if (connector != null) {
- return TasksUiPlugin.getDefault().getBrandingIcon(connector.getRepositoryType());
- }
- }
- }
- return null;
- }
-
- protected Object getToolTipHelp(Object object) {
- if (object instanceof Control) {
- return (String) ((Control) object).getData("TIP_HELPTEXT");
- }
- return null;
- }
-
- /**
- * Enables customized hover help for a specified control
- *
- * @control the control on which to enable hoverhelp
- */
- public void activateHoverHelp(final Control control) {
-
- PlatformUI.getWorkbench().addWindowListener(new IWindowListener() {
-
- public void windowActivated(IWorkbenchWindow window) {
- // ignore
-
- }
-
- public void windowClosed(IWorkbenchWindow window) {
- // ignore
-
- }
-
- public void windowDeactivated(IWorkbenchWindow window) {
- hideTooltip();
-
- }
-
- public void windowOpened(IWorkbenchWindow window) {
- // ignore
-
- }
- });
-
- /*
- * Get out of the way if we attempt to activate the control underneath
- * the tooltip
- */
- control.addMouseListener(new MouseAdapter() {
-
- @Override
- public void mouseDown(MouseEvent e) {
- hideTooltip();
- }
- });
- /*
- * Trap hover events to pop-up tooltip
- */
- control.addMouseTrackListener(new MouseTrackAdapter() {
-
- @Override
- public void mouseExit(MouseEvent e) {
- // TODO: can these conditions be simplified? see bug 131776
- if (tipShell != null && !tipShell.isDisposed() && tipShell.getDisplay() != null
- && !tipShell.getDisplay().isDisposed() && tipShell.isVisible()) {
- tipShell.setVisible(false);
- }
- tipWidget = null;
- }
-
- @Override
- public void mouseHover(MouseEvent event) {
- widgetPosition = new Point(event.x, event.y);
- Widget widget = event.widget;
- if (widget instanceof ToolBar) {
- ToolBar w = (ToolBar) widget;
- widget = w.getItem(widgetPosition);
- }
- if (widget instanceof Table) {
- Table w = (Table) widget;
- widget = w.getItem(widgetPosition);
- }
- if (widget instanceof Tree) {
- Tree w = (Tree) widget;
- widget = w.getItem(widgetPosition);
- }
- if (widget == null && !tipShell.isDisposed()) {
- tipShell.setVisible(false);
- tipWidget = null;
- return;
- }
- if (widget == tipWidget)
- return;
- tipWidget = widget;
- tipPosition = control.toDisplay(widgetPosition);
- String text = getToolTipText(widget);
- Image image = getToolTipImage(widget);
- if (text == null) { // HACK: don't check length
- return;
- }
-
- if (!tipShell.isDisposed() && tipShell.getShell() != null
- && PlatformUI.getWorkbench().getDisplay().getActiveShell() != null) {
- tipShell.close();
- tipShell = createTipShell(PlatformUI.getWorkbench().getDisplay().getActiveShell());
- }
-
- // if (!tipShell.isDisposed() && tipShell.getShell() != null &&
- // tipShell.getShell().getParent() != null
- // && Display.getCurrent().getActiveShell() != null
- // && tipShell.getShell().getParent() !=
- // Display.getCurrent().getActiveShell()) {
- // tipShell.close();
- // tipShell =
- // createTipShell(Display.getCurrent().getActiveShell());
- // }
-
- tipLabelText.setText(text);
- tipLabelImage.setImage(image); // accepts null
- tipShell.pack();
- setHoverLocation(tipShell, tipPosition);
- tipShell.setVisible(true);
- }
- });
- }
-
- /**
- * Sets the location for a hovering shell
- *
- * @param shell
- * the object that is to hover
- * @param position
- * the position of a widget to hover over
- * @return the top-left location for a hovering box
- */
- private void setHoverLocation(Shell shell, Point position) {
- Rectangle displayBounds = shell.getDisplay().getBounds();
- Rectangle shellBounds = shell.getBounds();
- shellBounds.x = Math.max(Math.min(position.x, displayBounds.width - shellBounds.width), 0);
- shellBounds.y = Math.max(Math.min(position.y + 10, displayBounds.height - shellBounds.height), 0);
- shell.setBounds(shellBounds);
- }
-
- private void hideTooltip() {
- if (tipShell != null && !tipShell.isDisposed() && tipShell.isVisible())
- tipShell.setVisible(false);
- }
-}
-
-// /*
-// * Trap F1 Help to pop up a custom help box
-// */
-// control.addHelpListener(new HelpListener() {
-// public void helpRequested(HelpEvent event) {
-// if (tipWidget == null)
-// return;
-// Object help = getToolTipHelp(tipWidget);
-// if (help == null)
-// return;
-// if (help.getClass() != String.class) {
-// return;
-// }
-// if (tipShell.isVisible()) {
-// tipShell.setVisible(false);
-// Shell helpShell = new Shell(parentShell, SWT.SHELL_TRIM);
-// helpShell.setLayout(new FillLayout());
-// Label label = new Label(helpShell, SWT.NONE);
-// label.setText((String) help);
-// helpShell.pack();
-// setHoverLocation(helpShell, tipPosition);
-// helpShell.open();
-// }
-// }
-// });
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java
deleted file mode 100644
index 9bdf36629..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java
+++ /dev/null
@@ -1,1599 +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.tasks.ui.views;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IMenuCreator;
-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.dialogs.InputDialog;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.CheckboxCellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.AbstractTaskListFilter;
-import org.eclipse.mylar.internal.tasks.ui.IDynamicSubMenuContributor;
-import org.eclipse.mylar.internal.tasks.ui.TaskArchiveFilter;
-import org.eclipse.mylar.internal.tasks.ui.TaskCompletionFilter;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPatternFilter;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasks.ui.TaskPriorityFilter;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.actions.CollapseAllAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.CopyDetailsAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.DeleteAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.ExpandAllAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.FilterArchiveContainerAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.FilterCompletedTasksAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.GoIntoAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.GoUpAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskCompleteAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.MarkTaskIncompleteAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.NewCategoryAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.NewLocalTaskAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.OpenTaskListElementAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.OpenWithBrowserAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.PreviousTaskDropDownAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.RemoveFromCategoryAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.RenameAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskActivateAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskDeactivateAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.TaskListElementPropertiesAction;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskActivityListener;
-import org.eclipse.mylar.tasks.core.ITaskListChangeListener;
-import org.eclipse.mylar.tasks.core.ITaskListElement;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskArchive;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.ui.TaskTransfer;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.FileTransfer;
-import org.eclipse.swt.dnd.RTFTransfer;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.themes.IThemeManager;
-
-/**
- * @author Mik Kersten
- * @author Ken Sueda
- */
-public class TaskListView extends ViewPart {
-
- public static final String ID = "org.eclipse.mylar.tasks.ui.views.TaskListView";
-
- public static final String LABEL_VIEW = "Task List";
-
- private static final String MEMENTO_KEY_SORT_DIRECTION = "sortDirection";
-
- private static final String MEMENTO_KEY_SORTER = "sorter";
-
- private static final String MEMENTO_KEY_SORT_INDEX = "sortIndex";
-
- private static final String MEMENTO_KEY_WIDTH = "width";
-
- private static final String SEPARATOR_LOCAL = "local";
-
- private static final String SEPARATOR_CONTEXT = "context";
-
- private static final String SEPARATOR_FILTERS = "filters";
-
- private static final String SEPARATOR_REPORTS = "reports";
-
- private static final String LABEL_NO_TASKS = "no task active";
-
- static final String[] PRIORITY_LEVELS = { Task.PriorityLevel.P1.toString(), Task.PriorityLevel.P2.toString(),
- Task.PriorityLevel.P3.toString(), Task.PriorityLevel.P4.toString(), Task.PriorityLevel.P5.toString() };
-
- public static final String[] PRIORITY_LEVEL_DESCRIPTIONS = { Task.PriorityLevel.P1.getDescription(),
- Task.PriorityLevel.P2.getDescription(), Task.PriorityLevel.P3.getDescription(),
- Task.PriorityLevel.P4.getDescription(), Task.PriorityLevel.P5.getDescription() };
-
- private static final String SEPARATOR_ID_REPORTS = SEPARATOR_REPORTS;
-
- private static final String PART_NAME = "Mylar Tasks";
-
- private IThemeManager themeManager;
-
- private TaskListFilteredTree filteredTree;
-
- private DrillDownAdapter drillDownAdapter;
-
- private AbstractTaskContainer drilledIntoCategory = null;
-
- private GoIntoAction goIntoAction;
-
- private GoUpAction goUpAction;
-
- private CopyDetailsAction copyDetailsAction;
-
- private OpenTaskListElementAction openAction;
-
- private TaskListElementPropertiesAction propertiesAction;
-
- private OpenWithBrowserAction openWithBrowser;
-
- private NewLocalTaskAction newLocalTaskAction;
-
- private NewCategoryAction newCategoryAction;
-
- private RenameAction renameAction;
-
- private CollapseAllAction collapseAll;
-
- private ExpandAllAction expandAll;
-
- private DeleteAction deleteAction;
-
- private RemoveFromCategoryAction removeFromCategoryAction;
-
- private TaskActivateAction activateAction = new TaskActivateAction();
-
- private TaskDeactivateAction deactivateAction = new TaskDeactivateAction();
-
- // private MarkTaskCompleteAction markIncompleteAction;
-
- // private MarkTaskIncompleteAction markCompleteAction;
-
- private FilterCompletedTasksAction filterCompleteTask;
-
- private FilterArchiveContainerAction filterArchiveCategory;
-
- private PriorityDropDownAction filterOnPriority;
-
- private PreviousTaskDropDownAction previousTaskAction;
-
- // private NextTaskDropDownAction nextTaskAction;
-
- private static TaskPriorityFilter FILTER_PRIORITY = new TaskPriorityFilter();
-
- private static TaskCompletionFilter FILTER_COMPLETE = new TaskCompletionFilter();
-
- private static TaskArchiveFilter FILTER_ARCHIVE = new TaskArchiveFilter();
-
- private Set<AbstractTaskListFilter> filters = new HashSet<AbstractTaskListFilter>();
-
- static final String FILTER_LABEL = "<filter>";
-
- protected String[] columnNames = new String[] { "", "", " !", " ", "Description" };
-
- protected int[] columnWidths = new int[] { 53, 20, 12, 12, 160 };
-
- private TreeColumn[] columns;
-
- private IMemento taskListMemento;
-
- public static final String columnWidthIdentifier = "org.eclipse.mylar.tasklist.ui.views.tasklist.columnwidth";
-
- public static final String tableSortIdentifier = "org.eclipse.mylar.tasklist.ui.views.tasklist.sortIndex";
-
- private static final int DEFAULT_SORT_DIRECTION = -1;
-
- private int sortIndex = 2;
-
- int sortDirection = DEFAULT_SORT_DIRECTION;
-
- /**
- * True if the view should indicate that interaction monitoring is paused
- */
- protected boolean isPaused = false;
-
- private final ITaskActivityListener TASK_ACTIVITY_LISTENER = new ITaskActivityListener() {
- public void taskActivated(final ITask task) {
- if (task != null) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- updateDescription(task);
- selectedAndFocusTask(task);
- filteredTree.indicateActiveTask(task);
- }
- });
- }
- }
-
- public void tasksActivated(List<ITask> tasks) {
- if (tasks.size() == 1) {
- taskActivated(tasks.get(0));
- }
- }
-
- public void taskDeactivated(final ITask task) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- refreshTask(task);
- updateDescription(null);
- filteredTree.indicateNoActiveTask();
- }
- });
- }
-
- public void activityChanged(DateRangeContainer week) {
- // ignore
- }
-
- public void taskListRead() {
- refresh(null);
- }
-
- public void calendarChanged() {
- refresh(null);
- }
- };
-
- private final ITaskListChangeListener TASK_REFERESH_LISTENER = new ITaskListChangeListener() {
-
- public void localInfoChanged(final ITask task) {
- refreshTask(task);
- if (task.getContainer() != null) {
- refresh(task.getContainer());
- }
- if (task instanceof AbstractRepositoryTask) {
- Set<AbstractRepositoryQuery> queries = TasksUiPlugin.getTaskListManager().getTaskList()
- .getQueriesForHandle(task.getHandleIdentifier());
- for (AbstractRepositoryQuery query : queries) {
- refresh(query);
- }
- }
- if (task.isActive()) {
- // TODO: only do this if description changes
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- filteredTree.indicateActiveTask(task);
- }
- });
- }
- }
-
- public void repositoryInfoChanged(ITask task) {
- localInfoChanged(task);
- }
-
- public void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) {
- AbstractTaskContainer rootCategory = TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory();
- if (rootCategory.equals(fromContainer) || rootCategory.equals(toContainer)) {
- refresh(null);
- } else {
- refresh(toContainer);
- refresh(task);
- refresh(fromContainer);
- }
- }
-
- public void taskDeleted(ITask task) {
- refresh(null);
- }
-
- public void containerAdded(AbstractTaskContainer container) {
- refresh(null);
- }
-
- public void containerDeleted(AbstractTaskContainer container) {
- refresh(null);
- }
-
- public void taskAdded(ITask task) {
- refresh(null);
- }
-
- public void containerInfoChanged(AbstractTaskContainer container) {
- if (container.equals(TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory())) {
- refresh(null);
- } else {
- refresh(container);
- }
- }
- };
-
- private final IPropertyChangeListener THEME_CHANGE_LISTENER = new IPropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME)
- || TaskListColorsAndFonts.isTaskListTheme(event.getProperty())) {
- taskListTableLabelProvider.setCategoryBackgroundColor(themeManager.getCurrentTheme().getColorRegistry()
- .get(TaskListColorsAndFonts.THEME_COLOR_TASKLIST_CATEGORY));
- getViewer().refresh();
- }
- }
- };
-
- private TaskListTableLabelProvider taskListTableLabelProvider;
-
- private TaskListTableSorter tableSorter;
-
- private final class PriorityDropDownAction extends Action implements IMenuCreator {
- private Menu dropDownMenu = null;
-
- public PriorityDropDownAction() {
- super();
- setText("Priority Filter");
- setToolTipText("Filter Priority Lower Than");
- setImageDescriptor(TaskListImages.FILTER_PRIORITY);
- setMenuCreator(this);
- }
-
- public void dispose() {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- dropDownMenu = null;
- }
- }
-
- public Menu getMenu(Control parent) {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- }
- dropDownMenu = new Menu(parent);
- addActionsToMenu();
- return dropDownMenu;
- }
-
- public Menu getMenu(Menu parent) {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- }
- dropDownMenu = new Menu(parent);
- addActionsToMenu();
- return dropDownMenu;
- }
-
- public void addActionsToMenu() {
- Action P1 = new Action("", AS_CHECK_BOX) {
- @Override
- public void run() {
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.SELECTED_PRIORITY, Task.PriorityLevel.P1.toString());
- // MylarTaskListPlugin.setCurrentPriorityLevel(Task.PriorityLevel.P1);
- FILTER_PRIORITY.displayPrioritiesAbove(PRIORITY_LEVELS[0]);
- getViewer().refresh();
- }
- };
- P1.setEnabled(true);
- P1.setText(Task.PriorityLevel.P1.getDescription());
- P1.setImageDescriptor(TaskListImages.PRIORITY_1);
- ActionContributionItem item = new ActionContributionItem(P1);
- item.fill(dropDownMenu, -1);
-
- Action P2 = new Action("", AS_CHECK_BOX) {
- @Override
- public void run() {
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.SELECTED_PRIORITY, Task.PriorityLevel.P2.toString());
- // MylarTaskListPlugin.setCurrentPriorityLevel(Task.PriorityLevel.P2);
- FILTER_PRIORITY.displayPrioritiesAbove(PRIORITY_LEVELS[1]);
- getViewer().refresh();
- }
- };
- P2.setEnabled(true);
- P2.setText(Task.PriorityLevel.P2.getDescription());
- P2.setImageDescriptor(TaskListImages.PRIORITY_2);
- item = new ActionContributionItem(P2);
- item.fill(dropDownMenu, -1);
-
- Action P3 = new Action("", AS_CHECK_BOX) {
- @Override
- public void run() {
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.SELECTED_PRIORITY, Task.PriorityLevel.P3.toString());
- // MylarTaskListPlugin.setCurrentPriorityLevel(Task.PriorityLevel.P3);
- FILTER_PRIORITY.displayPrioritiesAbove(PRIORITY_LEVELS[2]);
- getViewer().refresh();
- }
- };
- P3.setEnabled(true);
- P3.setText(Task.PriorityLevel.P3.getDescription());
- P3.setImageDescriptor(TaskListImages.PRIORITY_3);
- item = new ActionContributionItem(P3);
- item.fill(dropDownMenu, -1);
-
- Action P4 = new Action("", AS_CHECK_BOX) {
- @Override
- public void run() {
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.SELECTED_PRIORITY, Task.PriorityLevel.P4.toString());
- // MylarTaskListPlugin.setCurrentPriorityLevel(Task.PriorityLevel.P4);
- FILTER_PRIORITY.displayPrioritiesAbove(PRIORITY_LEVELS[3]);
- getViewer().refresh();
- }
- };
- P4.setEnabled(true);
- P4.setText(Task.PriorityLevel.P4.getDescription());
- P4.setImageDescriptor(TaskListImages.PRIORITY_4);
- item = new ActionContributionItem(P4);
- item.fill(dropDownMenu, -1);
-
- Action P5 = new Action("", AS_CHECK_BOX) {
- @Override
- public void run() {
- TasksUiPlugin.getDefault().getPreferenceStore().setValue(
- TaskListPreferenceConstants.SELECTED_PRIORITY, Task.PriorityLevel.P5.toString());
- // MylarTaskListPlugin.setCurrentPriorityLevel(Task.PriorityLevel.P5);
- FILTER_PRIORITY.displayPrioritiesAbove(PRIORITY_LEVELS[4]);
- getViewer().refresh();
- }
- };
- P5.setEnabled(true);
- P5.setImageDescriptor(TaskListImages.PRIORITY_5);
- P5.setText(Task.PriorityLevel.P5.getDescription());
- item = new ActionContributionItem(P5);
- item.fill(dropDownMenu, -1);
-
- String priority = getCurrentPriorityLevel();
- if (priority.equals(PRIORITY_LEVELS[0])) {
- P1.setChecked(true);
- } else if (priority.equals(PRIORITY_LEVELS[1])) {
- P1.setChecked(true);
- P2.setChecked(true);
- } else if (priority.equals(PRIORITY_LEVELS[2])) {
- P1.setChecked(true);
- P2.setChecked(true);
- P3.setChecked(true);
- } else if (priority.equals(PRIORITY_LEVELS[3])) {
- P1.setChecked(true);
- P2.setChecked(true);
- P3.setChecked(true);
- P4.setChecked(true);
- } else if (priority.equals(PRIORITY_LEVELS[4])) {
- P1.setChecked(true);
- P2.setChecked(true);
- P3.setChecked(true);
- P4.setChecked(true);
- P5.setChecked(true);
- }
- }
-
- public void run() {
- this.setChecked(isChecked());
- }
- }
-
- public static TaskListView getFromActivePerspective() {
- IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (activePage != null) {
- IViewPart view = activePage.findView(ID);
- if (view instanceof TaskListView) {
- return (TaskListView) view;
- }
- }
- return null;
- }
-
- public static TaskListView openInActivePerspective() {
- try {
- return (TaskListView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ID);
- } catch (Exception e) {
- return null;
- }
- }
-
- public TaskListView() {
- TasksUiPlugin.getTaskListManager().addActivityListener(TASK_ACTIVITY_LISTENER);
- TasksUiPlugin.getTaskListManager().getTaskList().addChangeListener(TASK_REFERESH_LISTENER);
- }
-
- @Override
- public void dispose() {
- super.dispose();
- TasksUiPlugin.getTaskListManager().getTaskList().removeChangeListener(TASK_REFERESH_LISTENER);
- TasksUiPlugin.getTaskListManager().removeActivityListener(TASK_ACTIVITY_LISTENER);
-
- final IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
- if (themeManager != null) {
- themeManager.removePropertyChangeListener(THEME_CHANGE_LISTENER);
- }
- }
-
- /**
- * TODO: should be updated when view mode switches to fast and vice-versa
- */
- private void updateDescription(ITask task) {
- if (getSite() == null || getSite().getPage() == null)
- return;
-
- IViewReference reference = getSite().getPage().findViewReference(ID);
- boolean shouldSetDescription = false;
- if (reference != null && reference.isFastView()) {
- shouldSetDescription = true;
- }
-
- if (task != null) {
- setTitleToolTip(PART_NAME + " (" + task.getDescription() + ")");
- if (shouldSetDescription) {
- setContentDescription(task.getDescription());
- } else {
- setContentDescription("");
- }
- } else {
- setTitleToolTip(PART_NAME);
- if (shouldSetDescription) {
- setContentDescription(LABEL_NO_TASKS);
- } else {
- setContentDescription("");
- }
- }
- }
-
- class TaskListCellModifier implements ICellModifier {
-
- public boolean canModify(Object element, String property) {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- if (columnIndex == 0 && element instanceof ITaskListElement) {
- return element instanceof ITask || element instanceof AbstractQueryHit;
- } else if (columnIndex == 2 && element instanceof ITask) {
- return !(element instanceof AbstractRepositoryTask);
- } else if (element instanceof ITaskListElement && isInRenameAction) {
- switch (columnIndex) {
- case 4:
- // return element instanceof TaskCategory || element
- // instanceof AbstractRepositoryQuery
- return element instanceof AbstractTaskContainer
- || (element instanceof ITask && !(element instanceof AbstractRepositoryTask));
- }
- }
- return false;
- }
-
- public Object getValue(Object element, String property) {
- try {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- if (element instanceof ITaskListElement) {
- final ITaskListElement taskListElement = (ITaskListElement) element;
- ITask task = null;
- if (taskListElement instanceof ITask) {
- task = (ITask) taskListElement;
- } else if (taskListElement instanceof AbstractQueryHit) {
- if (((AbstractQueryHit) taskListElement).getCorrespondingTask() != null) {
- task = ((AbstractQueryHit) taskListElement).getCorrespondingTask();
- }
- }
- switch (columnIndex) {
- case 0:
- if (task == null) {
- return Boolean.TRUE;
- } else {
- return Boolean.valueOf(task.isCompleted());
- }
- case 1:
- return "";
- case 2:
- String priorityString = taskListElement.getPriority().substring(1);
- int priorityInt = new Integer(priorityString);
- return priorityInt - 1;
- case 3:
- return "";
- case 4:
- return taskListElement.getDescription();
- }
- } else if (element instanceof AbstractTaskContainer) {
- AbstractTaskContainer cat = (AbstractTaskContainer) element;
- switch (columnIndex) {
- case 0:
- return Boolean.FALSE;
- case 1:
- return "";
- case 2:
- return "";
- case 3:
- return cat.getDescription();
- }
- } else if (element instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery cat = (AbstractRepositoryQuery) element;
- switch (columnIndex) {
- case 0:
- return Boolean.FALSE;
- case 1:
- return "";
- case 2:
- return "";
- case 3:
- return cat.getDescription();
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.log(e, e.getMessage());
- }
- return "";
- }
-
- public void modify(Object element, String property, Object value) {
- int columnIndex = -1;
- try {
- columnIndex = Arrays.asList(columnNames).indexOf(property);
- if (((TreeItem) element).getData() instanceof AbstractTaskContainer) {
- AbstractTaskContainer container = (AbstractTaskContainer) ((TreeItem) element).getData();
- switch (columnIndex) {
- case 0:
- break;
- case 1:
- break;
- case 2:
- break;
- case 4:
- TasksUiPlugin.getTaskListManager().getTaskList().renameContainer(container,
- ((String) value).trim());
- // container.setDescription(((String) value).trim());
- break;
- }
- } else if (((TreeItem) element).getData() instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery) ((TreeItem) element).getData();
- switch (columnIndex) {
- case 0:
- break;
- case 1:
- break;
- case 2:
- break;
- case 4:
- TasksUiPlugin.getTaskListManager().getTaskList()
- .renameContainer(query, ((String) value).trim());
- // cat.setDescription(((String) value).trim());
- break;
- }
- } else if (((TreeItem) element).getData() instanceof ITaskListElement) {
-
- final ITaskListElement taskListElement = (ITaskListElement) ((TreeItem) element).getData();
- ITask task = null;
- if (taskListElement instanceof ITask) {
- task = (ITask) taskListElement;
- } else if (taskListElement instanceof AbstractQueryHit) {
- if (((AbstractQueryHit) taskListElement).getCorrespondingTask() != null) {
- task = ((AbstractQueryHit) taskListElement).getCorrespondingTask();
- }
- }
- switch (columnIndex) {
- case 0:
- if (taskListElement instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit) taskListElement).getOrCreateCorrespondingTask();
- }
- if (task != null) {
- if (task.isActive()) {
- new TaskDeactivateAction().run(task);
- // nextTaskAction.setEnabled(taskHistory.hasNext());
- // previousTaskAction.setEnabled(TasksUiPlugin.getTaskListManager().getTaskActivationHistory().hasPrevious());
- previousTaskAction.setButtonStatus();
- } else {
- new TaskActivateAction().run(task);
- addTaskToHistory(task);
- previousTaskAction.setButtonStatus();
- }
- }
- break;
- case 1:
- break;
- case 2:
- if (!(task instanceof AbstractRepositoryTask)) {
- Integer intVal = (Integer) value;
- task.setPriority("P" + (intVal + 1));
- TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task);
- }
- break;
- case 4:
- if (!(task instanceof AbstractRepositoryTask)) {
- TasksUiPlugin.getTaskListManager().getTaskList().renameTask((Task) task,
- ((String) value).trim());
- }
- break;
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- getViewer().refresh();
- }
- }
-
- public void addTaskToHistory(ITask task) {
- if (!TasksUiPlugin.getDefault().isMultipleActiveTasksMode()) {
- TasksUiPlugin.getTaskListManager().getTaskActivationHistory().addTask(task);
- // nextTaskAction.setEnabled(taskHistory.hasNext());
- // previousTaskAction.setEnabled(TasksUiPlugin.getTaskListManager().getTaskActivationHistory().hasPrevious());
- }
- }
-
- //
- // public void clearTaskHistory() {
- // TasksUiPlugin.getTaskListManager().getTaskActivationHistory().clear();
- // }
-
- @Override
- public void init(IViewSite site, IMemento memento) throws PartInitException {
- init(site);
- this.taskListMemento = 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]);
- }
-
- IMemento sorter = memento.createChild(tableSortIdentifier);
- IMemento m = sorter.createChild(MEMENTO_KEY_SORTER);
- m.putInteger(MEMENTO_KEY_SORT_INDEX, sortIndex);
- m.putInteger(MEMENTO_KEY_SORT_DIRECTION, sortDirection);
-
- // TODO: move to task list save policy
- if (TasksUiPlugin.getDefault() != null && TasksUiPlugin.getDefault().getTaskListSaveManager() != null) {
- TasksUiPlugin.getDefault().getTaskListSaveManager().createTaskListBackupFile();
- TasksUiPlugin.getDefault().getTaskListSaveManager().saveTaskList(true);
- }
- }
-
- private void restoreState() {
- if (taskListMemento != null) {
- IMemento taskListWidth = taskListMemento.getChild(columnWidthIdentifier);
- if (taskListWidth != null) {
- for (int i = 0; i < columnWidths.length; i++) {
- IMemento m = taskListWidth.getChild("col" + i);
- if (m != null) {
- int width = m.getInteger(MEMENTO_KEY_WIDTH);
- columnWidths[i] = width;
- columns[i].setWidth(width);
- }
- }
- }
- IMemento sorterMemento = taskListMemento.getChild(tableSortIdentifier);
- if (sorterMemento != null) {
- IMemento m = sorterMemento.getChild(MEMENTO_KEY_SORTER);
- if (m != null) {
- sortIndex = m.getInteger(MEMENTO_KEY_SORT_INDEX);
- Integer sortDirInt = m.getInteger(MEMENTO_KEY_SORT_DIRECTION);
- if (sortDirInt != null) {
- sortDirection = sortDirInt.intValue();
- }
- } else {
- sortIndex = 2;
- sortDirection = DEFAULT_SORT_DIRECTION;
- }
-
- } else {
- sortIndex = 2; // default priority
- sortDirection = DEFAULT_SORT_DIRECTION;
- }
- tableSorter.setColumn(columnNames[sortIndex]);
- getViewer().refresh(false);
- // getViewer().setSorter(new TaskListTableSorter(this,
- // columnNames[sortIndex]));
- }
- addFilter(FILTER_PRIORITY);
- // if (MylarTaskListPlugin.getDefault().isFilterInCompleteMode())
- // MylarTaskListPlugin.getTaskListManager().getTaskList().addFilter(inCompleteFilter);
- if (TasksUiPlugin.getDefault().getPreferenceStore().contains(TaskListPreferenceConstants.FILTER_COMPLETE_MODE))
- addFilter(FILTER_COMPLETE);
-
- if (TasksUiPlugin.getDefault().getPreferenceStore().contains(TaskListPreferenceConstants.FILTER_ARCHIVE_MODE))
- addFilter(FILTER_ARCHIVE);
-
- if (TasksUiPlugin.getDefault().isMultipleActiveTasksMode()) {
- togglePreviousAction(false);
- // toggleNextAction(false);
- }
-
- getViewer().refresh();
- }
-
- @Override
- public void createPartControl(Composite parent) {
- themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
- themeManager.addPropertyChangeListener(THEME_CHANGE_LISTENER);
-
- filteredTree = new TaskListFilteredTree(parent, SWT.MULTI | SWT.VERTICAL | SWT.H_SCROLL | SWT.V_SCROLL
- | SWT.FULL_SELECTION | SWT.HIDE_SELECTION, new TaskListPatternFilter());
-
- 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(), 0); // 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) {
- sortIndex = index;
- sortDirection *= DEFAULT_SORT_DIRECTION;
- tableSorter.setColumn(columnNames[sortIndex]);
- getViewer().refresh(false);
- // getViewer().setSorter(new
- // TaskListTableSorter(TaskListView.this,
- // columnNames[sortIndex]));
- }
- });
- 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_TASKLIST_CATEGORY);
-
- taskListTableLabelProvider = new TaskListTableLabelProvider(new TaskElementLabelProvider(), PlatformUI
- .getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground, this);
-
- CellEditor[] editors = new CellEditor[columnNames.length];
- TextCellEditor textEditor = new TextCellEditor(getViewer().getTree());
- ((Text) textEditor.getControl()).setOrientation(SWT.LEFT_TO_RIGHT);
- editors[0] = new CheckboxCellEditor();
- editors[1] = null;
- editors[2] = new ComboBoxCellEditor(getViewer().getTree(), PRIORITY_LEVEL_DESCRIPTIONS, SWT.READ_ONLY);
- editors[3] = null;
- editors[4] = textEditor;
- getViewer().setCellEditors(editors);
- getViewer().setCellModifier(new TaskListCellModifier());
- tableSorter = new TaskListTableSorter(this, columnNames[sortIndex]);
- getViewer().setSorter(tableSorter);
-
- drillDownAdapter = new DrillDownAdapter(getViewer());
- getViewer().setContentProvider(new TaskListContentProvider(this));
- getViewer().setLabelProvider(taskListTableLabelProvider);
- getViewer().setInput(getViewSite());
- getViewer().getTree().addKeyListener(new KeyListener() {
-
- public void keyPressed(KeyEvent e) {
- if (e.keyCode == SWT.F2 && e.stateMask == 0) {
- if (renameAction.isEnabled()) {
- renameAction.run();
- }
- } else if (e.keyCode == 'c' && e.stateMask == SWT.MOD1) {
- copyDetailsAction.run();
- } else if (e.keyCode == SWT.DEL) {
- deleteAction.run();
- } else if (e.keyCode == SWT.INSERT) {
- newLocalTaskAction.run();
- } else if (e.keyCode == 'f' && e.stateMask == SWT.MOD1) {
- filteredTree.getFilterControl().setFocus();
- } else if (e.stateMask == 0) {
- if (Character.isLetter((char) e.keyCode) || Character.isDigit((char) e.keyCode)) {
- String string = new Character((char) e.keyCode).toString();
- filteredTree.getFilterControl().setText(string);
- filteredTree.getFilterControl().setSelection(1, 1);
- filteredTree.getFilterControl().setFocus();
- }
- }
- }
-
- public void keyReleased(KeyEvent e) {
- }
-
- });
-
- // HACK: shouldn't need to update explicitly
- getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- Object selectedObject = ((IStructuredSelection) getViewer().getSelection()).getFirstElement();
- if (selectedObject instanceof ITaskListElement) {
- updateActionEnablement(renameAction, (ITaskListElement) selectedObject);
- }
- }
- });
-
- makeActions();
- hookContextMenu();
- hookOpenAction();
- contributeToActionBars();
-
- TaskListToolTipHandler taskListToolTipHandler = new TaskListToolTipHandler(getViewer().getControl().getShell());
- taskListToolTipHandler.activateHoverHelp(getViewer().getControl());
-
- getViewer().getTree().setToolTipText(null);
-
- initDragAndDrop(parent);
- expandToActiveTasks();
- restoreState();
-
- List<ITask> activeTasks = TasksUiPlugin.getTaskListManager().getTaskList().getActiveTasks();
- if (activeTasks.size() > 0) {
- updateDescription(activeTasks.get(0));
- }
- getSite().setSelectionProvider(getViewer());
- }
-
- private void initDragAndDrop(Composite parent) {
- Transfer[] dragTypes = new Transfer[] { TaskTransfer.getInstance(), TextTransfer.getInstance(),
- FileTransfer.getInstance() };
-
- Transfer[] dropTypes = new Transfer[] { TaskTransfer.getInstance(), TextTransfer.getInstance(),
- FileTransfer.getInstance(), // PluginTransfer.getInstance(),
- RTFTransfer.getInstance() };
-
- getViewer().addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, dragTypes, new TaskListDragSourceListener(this));
- getViewer().addDropSupport(DND.DROP_COPY | DND.DROP_MOVE, dropTypes, new TaskListDropAdapter(getViewer()));
- }
-
- void expandToActiveTasks() {
- final IWorkbench workbench = PlatformUI.getWorkbench();
- workbench.getDisplay().asyncExec(new Runnable() {
- public void run() {
- List<ITask> activeTasks = TasksUiPlugin.getTaskListManager().getTaskList().getActiveTasks();
- for (ITask t : activeTasks) {
- getViewer().expandToLevel(t, 0);
- }
- }
- });
- }
-
- private void hookContextMenu() {
- MenuManager menuManager = new MenuManager("#PopupMenu");
- menuManager.setRemoveAllWhenShown(true);
- menuManager.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- TaskListView.this.fillContextMenu(manager);
- }
- });
- Menu menu = menuManager.createContextMenu(getViewer().getControl());
- getViewer().getControl().setMenu(menu);
- getSite().registerContextMenu(menuManager, getViewer());
- }
-
- private void contributeToActionBars() {
- IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
-
- private void fillLocalPullDown(IMenuManager manager) {
- updateDrillDownActions();
- manager.add(goUpAction);
- manager.add(collapseAll);
- manager.add(expandAll);
- manager.add(new Separator(SEPARATOR_FILTERS));
- manager.add(filterCompleteTask);
- manager.add(filterArchiveCategory);
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillLocalToolBar(IToolBarManager manager) {
- manager.add(new Separator(SEPARATOR_ID_REPORTS));
- manager.add(newLocalTaskAction);
- // manager.add(newCategoryAction);
- // manager.add(new Separator());
- manager.add(filterOnPriority);
- manager.add(new Separator("navigation"));
- // manager.add(new Separator(SEPARATOR_CONTEXT));
- manager.add(previousTaskAction);
- // manager.add(nextTaskAction);
- manager.add(new Separator(SEPARATOR_CONTEXT));
- // manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillContextMenu(IMenuManager manager) {
- updateDrillDownActions();
-
- ITaskListElement element = null;
-
- final Object firstSelectedObject = ((IStructuredSelection) getViewer().getSelection()).getFirstElement();
- if (firstSelectedObject instanceof ITaskListElement) {
- element = (ITaskListElement) firstSelectedObject;
- }
- List<ITaskListElement> selectedElements = new ArrayList<ITaskListElement>();
- for (Iterator i = ((IStructuredSelection) getViewer().getSelection()).iterator(); i.hasNext();) {
- Object object = i.next();
- if (object instanceof ITaskListElement) {
- selectedElements.add((ITaskListElement) object);
- }
- }
- openWithBrowser.selectionChanged((StructuredSelection) getViewer().getSelection());
-
-// if (!(element instanceof AbstractRepositoryQuery || element instanceof TaskCategory)) {
- addAction(openAction, manager, element);
-// }
- ITask task = null;
- if ((element instanceof ITask) || (element instanceof AbstractQueryHit)) {
- if (element instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit) element).getCorrespondingTask();
- } else {
- task = (ITask) element;
- }
- addAction(openWithBrowser, manager, element);
- if (!(element instanceof AbstractRepositoryTask) || element instanceof AbstractTaskContainer) {
- addAction(renameAction, manager, element);
- }
- addAction(copyDetailsAction, manager, element);
-
- if (task != null) {
- // if (!(task instanceof AbstractRepositoryTask) || task
- // instanceof WebTask) {
- // if (task.isCompleted()) {
- // addAction(markCompleteAction, manager, element);
- // } else {
- // addAction(markIncompleteAction, manager, element);
- // }
- // }
- addAction(removeFromCategoryAction, manager, element);
- addAction(deleteAction, manager, element);
- if (task.isActive()) {
- manager.add(deactivateAction);
- } else {
- manager.add(activateAction);
- }
- } else {
- manager.add(activateAction);
- }
- } else if (element instanceof AbstractTaskContainer || element instanceof AbstractRepositoryQuery) {
- addAction(openWithBrowser, manager, element);
- addAction(copyDetailsAction, manager, element);
- addAction(deleteAction, manager, element);
- }
-
- if (element instanceof AbstractTaskContainer) {
- manager.add(goIntoAction);
- }
- if (drilledIntoCategory != null) {
- manager.add(goUpAction);
- }
-
- manager.add(new Separator());
- for (IDynamicSubMenuContributor contributor : TasksUiPlugin.getDefault().getDynamicMenuContributers()) {
- MenuManager subMenuManager = contributor.getSubMenuManager(selectedElements);
- if (subMenuManager != null) {
- addMenuManager(subMenuManager, manager, element);
- }
- }
-
- manager.add(new Separator(SEPARATOR_LOCAL));
- manager.add(newCategoryAction);
- manager.add(newLocalTaskAction);
- manager.add(new Separator(SEPARATOR_REPORTS));
-
- manager.add(new Separator(SEPARATOR_CONTEXT));
-
- if (element instanceof AbstractRepositoryQuery || element instanceof TaskCategory) {
- manager.add(new Separator());
- addAction(propertiesAction, manager, element);
- }
-
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void addMenuManager(IMenuManager menuToAdd, IMenuManager manager, ITaskListElement element) {
- if ((element instanceof ITask || element instanceof AbstractQueryHit) || (element instanceof AbstractTaskContainer || element instanceof AbstractRepositoryQuery)) {
- manager.add(menuToAdd);
- }
- }
-
- private void addAction(Action action, IMenuManager manager, ITaskListElement element) {
- manager.add(action);
- if (element != null) {
- // ITaskHandler handler =
- // MylarTaskListPlugin.getDefault().getHandlerForElement(element);
- // if (handler != null) {
- // action.setEnabled(handler.enableAction(action, element));
- // } else {
- updateActionEnablement(action, element);
- // }
- }
- }
-
- /**
- * Refactor out element
- */
- private void updateActionEnablement(Action action, ITaskListElement element) {
- if (element instanceof ITask) {
- if (action instanceof OpenWithBrowserAction) {
- if (((ITask) element).hasValidUrl()) {
- action.setEnabled(true);
- } else {
- action.setEnabled(false);
- }
- } else if (action instanceof DeleteAction) {
- action.setEnabled(true);
- } else if (action instanceof NewLocalTaskAction) {
- action.setEnabled(false);
- } else if (action instanceof OpenTaskListElementAction) {
- action.setEnabled(true);
- } else if (action instanceof CopyDetailsAction) {
- action.setEnabled(true);
- } else if (action instanceof RenameAction) {
- action.setEnabled(true);
- }
- } else if (element instanceof AbstractTaskContainer) {
- if (action instanceof MarkTaskCompleteAction) {
- action.setEnabled(false);
- } else if (action instanceof MarkTaskIncompleteAction) {
- action.setEnabled(false);
- } else if (action instanceof DeleteAction) {
- if (element instanceof TaskArchive)
- action.setEnabled(false);
- else
- action.setEnabled(true);
- } else if (action instanceof NewLocalTaskAction) {
- if (element instanceof TaskArchive)
- action.setEnabled(false);
- else
- action.setEnabled(true);
- } else if (action instanceof GoIntoAction) {
- TaskCategory cat = (TaskCategory) element;
- if (cat.getChildren().size() > 0) {
- action.setEnabled(true);
- } else {
- action.setEnabled(false);
- }
- } else if (action instanceof OpenTaskListElementAction) {
- action.setEnabled(true);
- } else if (action instanceof CopyDetailsAction) {
- action.setEnabled(true);
- } else if (action instanceof RenameAction) {
- if (element instanceof TaskArchive)
- action.setEnabled(false);
- else
- action.setEnabled(true);
- }
- } else {
- action.setEnabled(true);
- }
- // if(!canEnableGoInto){
- // goIntoAction.setEnabled(false);
- // }
- }
-
- private void makeActions() {
-
- copyDetailsAction = new CopyDetailsAction(this);
- // workOffline = new WorkOfflineAction();
-
- goIntoAction = new GoIntoAction();
- goUpAction = new GoUpAction(drillDownAdapter);
-
- newLocalTaskAction = new NewLocalTaskAction(this);
- newCategoryAction = new NewCategoryAction(this);
- removeFromCategoryAction = new RemoveFromCategoryAction(this);
- renameAction = new RenameAction(this);
-
- deleteAction = new DeleteAction();
- collapseAll = new CollapseAllAction(this);
- expandAll = new ExpandAllAction(this);
- // autoClose = new ManageEditorsAction();
- // markIncompleteAction = new MarkTaskCompleteAction(this);
- // markCompleteAction = new MarkTaskIncompleteAction(this);
- openAction = new OpenTaskListElementAction(this.getViewer());
- propertiesAction = new TaskListElementPropertiesAction(this.getViewer());
- openWithBrowser = new OpenWithBrowserAction();
- filterCompleteTask = new FilterCompletedTasksAction(this);
- filterArchiveCategory = new FilterArchiveContainerAction(this);
- filterOnPriority = new PriorityDropDownAction();
- previousTaskAction = new PreviousTaskDropDownAction(this, TasksUiPlugin.getTaskListManager()
- .getTaskActivationHistory());
- // nextTaskAction = new NextTaskDropDownAction(this,
- // TasksUiPlugin.getTaskListManager().getTaskActivationHistory());
- }
-
- // public void toggleNextAction(boolean enable) {
- // nextTaskAction.setEnabled(enable);
- // }
- // public NextTaskDropDownAction getNextTaskAction() {
- // return nextTaskAction;
- // }
-
- public void togglePreviousAction(boolean enable) {
- previousTaskAction.setEnabled(enable);
- }
-
- public PreviousTaskDropDownAction getPreviousTaskAction() {
- return previousTaskAction;
- }
-
- /**
- * Recursive function that checks for the occurrence of a certain task id.
- * All children of the supplied node will be checked.
- *
- * @param task
- * The <code>ITask</code> object that is to be searched.
- * @param taskId
- * The id that is being searched for.
- * @return <code>true</code> if the id was found in the node or any of its
- * children
- */
- protected boolean lookForId(String taskId) {
- return (TasksUiPlugin.getTaskListManager().getTaskList().getTask(taskId) == null);
- // for (ITask task :
- // MylarTaskListPlugin.getTaskListManager().getTaskList().getRootTasks())
- // {
- // if (task.getHandle().equals(taskId)) {
- // return true;
- // }
- // }
- // for (TaskCategory cat :
- // MylarTaskListPlugin.getTaskListManager().getTaskList().getTaskCategories())
- // {
- // for (ITask task : cat.getChildren()) {
- // if (task.getHandle().equals(taskId)) {
- // return true;
- // }
- // }
- // }
- // return false;
- }
-
- private void hookOpenAction() {
- getViewer().addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- if (TasksUiPlugin.getDefault().getPreferenceStore().getBoolean(
- TaskListPreferenceConstants.ACTIVATE_ON_OPEN)) {
- ITask selectedTask = TaskListView.getFromActivePerspective().getSelectedTask();
- if (selectedTask != null) {
- activateAction.run(selectedTask);
- addTaskToHistory(selectedTask);
- previousTaskAction.setButtonStatus();
- }
- }
- openAction.run();
- }
- });
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus() {
- filteredTree.getViewer().getControl().setFocus();
- }
-
- public String getBugIdFromUser() {
- InputDialog dialog = new InputDialog(getSite().getWorkbenchWindow().getShell(), "Enter Bugzilla ID",
- "Enter the Bugzilla ID: ", "", null);
- int dialogResult = dialog.open();
- if (dialogResult == Window.OK) {
- return dialog.getValue();
- } else {
- return null;
- }
- }
-
- public void refreshAndFocus(boolean expand) {
- getViewer().getControl().setRedraw(false);
- getViewer().refresh();
- if (expand) {
- getViewer().expandAll();
- }
- selectedAndFocusTask(TasksUiPlugin.getTaskListManager().getTaskList().getActiveTask());
- getViewer().getControl().setRedraw(true);
- }
-
- public TreeViewer getViewer() {
- return filteredTree.getViewer();
- }
-
- public TaskCompletionFilter getCompleteFilter() {
- return FILTER_COMPLETE;
- }
-
- public TaskPriorityFilter getPriorityFilter() {
- return FILTER_PRIORITY;
- }
-
- public void addFilter(AbstractTaskListFilter filter) {
- if (!filters.contains(filter)) {
- filters.add(filter);
- }
- }
-
- public void clearFilters(boolean preserveArchiveFilter) {
- filters.clear();
- if (preserveArchiveFilter) {
- filters.add(FILTER_ARCHIVE);
- }
- }
-
- public void removeFilter(AbstractTaskListFilter filter) {
- filters.remove(filter);
- }
-
- public void updateDrillDownActions() {
- if (drillDownAdapter.canGoBack()) {
- goUpAction.setEnabled(true);
- } else {
- goUpAction.setEnabled(false);
- }
- }
-
- /**
- * HACK: This is used for the copy action
- */
- public Composite getDummyComposite() {
- return filteredTree;
- }
-
- private boolean isInRenameAction = false;
-
- public void setInRenameAction(boolean b) {
- isInRenameAction = b;
- }
-
- // /**
- // * This method is for testing only
- // */
- // public TaskActivationHistory getTaskActivationHistory() {
- // return TasksUiPlugin.getTaskListManager().getTaskActivationHistory();
- // }
-
- public void goIntoCategory() {
- ISelection selection = getViewer().getSelection();
- if (selection instanceof StructuredSelection) {
- StructuredSelection structuredSelection = (StructuredSelection) selection;
- Object element = structuredSelection.getFirstElement();
- if (element instanceof AbstractTaskContainer) {
- drilledIntoCategory = (AbstractTaskContainer) element;
- drillDownAdapter.goInto();
- IActionBars bars = getViewSite().getActionBars();
- bars.getToolBarManager().add(goUpAction);
- bars.updateActionBars();
- updateDrillDownActions();
- }
- }
- }
-
- public void goUpToRoot() {
- drilledIntoCategory = null;
- drillDownAdapter.goBack();
- IActionBars bars = getViewSite().getActionBars();
- bars.getToolBarManager().remove(GoUpAction.ID);
- bars.updateActionBars();
- updateDrillDownActions();
- }
-
- 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();
- } else if (element instanceof AbstractQueryHit) {
- return ((AbstractQueryHit) element).getOrCreateCorrespondingTask();
- }
- }
- return null;
- }
-
- public static ITask getSelectedTask(ISelection selection) {
- if (selection instanceof StructuredSelection) {
- StructuredSelection structuredSelection = (StructuredSelection) selection;
- if (structuredSelection.size() != 1) {
- return null;
- }
- Object element = structuredSelection.getFirstElement();
- if (element instanceof ITask) {
- return (ITask) structuredSelection.getFirstElement();
- } else if (element instanceof AbstractQueryHit) {
- return ((AbstractQueryHit) element).getCorrespondingTask();
- }
- }
- return null;
- }
-
- public void indicatePaused(boolean paused) {
- isPaused = paused;
- IStatusLineManager statusLineManager = getViewSite().getActionBars().getStatusLineManager();
- if (isPaused) {
- statusLineManager.setMessage(TaskListImages.getImage(TaskListImages.TASKLIST),
- "Mylar context capture paused");
- } else {
- statusLineManager.setMessage("");
- }
- }
-
- /**
- * Show the shared data folder currently in use. Call with "" to turn off
- * the indication. TODO: Need a better way to indicate paused and/or the
- * shared folder
- */
- public void indicateSharedFolder(String folderName) {
- if (folderName.equals("")) {
- if (isPaused) {
- setPartName("(paused) " + PART_NAME);
- } else {
- setPartName(PART_NAME);
- }
- } else {
- if (isPaused) {
- setPartName("(paused) " + folderName + " " + PART_NAME);
- } else {
- setPartName(folderName + " " + PART_NAME);
- }
- }
-
- }
-
- public AbstractTaskContainer getDrilledIntoCategory() {
- return drilledIntoCategory;
- }
-
- public TaskListFilteredTree getFilteredTree() {
- return filteredTree;
- }
-
- public void selectedAndFocusTask(ITask task) {
- if (task == null || getViewer().getControl().isDisposed()) {
- return;
- }
- // StructuredSelection currentSelection = (StructuredSelection)
- // getViewer().getSelection();
- // ITask selectedTask = null;
- // if (currentSelection.getFirstElement() instanceof ITask) {
- // selectedTask = (ITask) currentSelection.getFirstElement();
- // } else if (currentSelection.getFirstElement() instanceof
- // AbstractQueryHit) {
- // selectedTask = ((AbstractQueryHit)
- // currentSelection.getFirstElement()).getCorrespondingTask();
- // }
- // if (!task.equals(selectedTask)) {
- getViewer().setSelection(new StructuredSelection(task), true);
- // if no task exists, select the query hit if exists
- AbstractQueryHit hit = null;
- if (getViewer().getSelection().isEmpty()
- && (hit = TasksUiPlugin.getTaskListManager().getTaskList().getQueryHitForHandle(
- task.getHandleIdentifier())) != null) {
- AbstractRepositoryQuery query = TasksUiPlugin.getTaskListManager().getTaskList().getQueryForHandle(
- task.getHandleIdentifier());
- getViewer().expandToLevel(query, 1);
- getViewer().setSelection(new StructuredSelection(hit), true);
- } else {
- // if (task.getc() != null) {
- // getViewer().expandToLevel(task.getContainer(), 1);
- // }
- // getViewer().setSelection(new StructuredSelection(hit), true);
- }
- // }
- }
-
- protected void refreshTask(ITask task) {
- refresh(task);
- AbstractTaskContainer rootCategory = TasksUiPlugin.getTaskListManager().getTaskList().getRootCategory();
- if (task.getContainer() == null // || task.getContainer() instanceof
- // TaskArchive
- || task.getContainer().equals(rootCategory)) {
- refresh(null);
- } else {
- refresh(task.getContainer());
- }
-
- Set<AbstractQueryHit> hits = TasksUiPlugin.getTaskListManager().getTaskList().getQueryHitsForHandle(
- task.getHandleIdentifier());
- for (AbstractQueryHit hit : hits) {
- refresh(hit);
- }
- }
-
- private void refresh(final ITaskListElement element) {
- if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().getDisplay().isDisposed()) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (getViewer().getControl() != null && !getViewer().getControl().isDisposed()) {
- if (element == null) {
- // getViewer().refresh();
- filteredTree.textChanged();
- } else {
- getViewer().refresh(element, true);
- if (element instanceof AbstractTaskContainer
- && !((AbstractTaskContainer) element).equals(TasksUiPlugin.getTaskListManager()
- .getTaskList().getArchiveContainer())) {
- List visibleElements = Arrays.asList(getViewer().getVisibleExpandedElements());
- if (!visibleElements.contains(element)) {
- getViewer().refresh();
- }
- }
- }
- }
- }
- });
- }
- }
-
- public Image[] getPirorityImages() {
- Image[] images = new Image[Task.PriorityLevel.values().length];
- for (int i = 0; i < Task.PriorityLevel.values().length; i++) {
- images[i] = TaskUiUtil.getImageForPriority(Task.PriorityLevel.values()[i]);
- }
- return images;
- }
-
- public Set<AbstractTaskListFilter> getFilters() {
- return filters;
- }
-
- public static String getCurrentPriorityLevel() {
- if (TasksUiPlugin.getDefault().getPreferenceStore().contains(TaskListPreferenceConstants.SELECTED_PRIORITY)) {
- return TasksUiPlugin.getDefault().getPreferenceStore().getString(
- TaskListPreferenceConstants.SELECTED_PRIORITY);
- } else {
- return Task.PriorityLevel.P5.toString();
- }
- }
-
- public TaskArchiveFilter getArchiveFilter() {
- return FILTER_ARCHIVE;
- }
-
- public void setPriorityButtonEnabled(boolean enabled) {
- filterOnPriority.setEnabled(enabled);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java
deleted file mode 100644
index 1197c3807..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java
+++ /dev/null
@@ -1,192 +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.tasks.ui.views;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.internal.tasks.ui.actions.AddRepositoryAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.DeleteTaskRepositoryAction;
-import org.eclipse.mylar.internal.tasks.ui.actions.EditRepositoryPropertiesAction;
-import org.eclipse.mylar.tasks.core.ITaskRepositoryListener;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * @author Mik Kersten
- */
-public class TaskRepositoriesView extends ViewPart {
-
- public static final String ID = "org.eclipse.mylar.tasklist.repositories";
-
- public static final String NAME = "Task Repositories View";
-
- private TableViewer viewer;
-
- private Action addRepositoryAction = new AddRepositoryAction();
-
- private Action deleteRepositoryAction = new DeleteTaskRepositoryAction(this);
-
- private Action repositoryPropertiesAction = new EditRepositoryPropertiesAction(this);
-
- private Action resetConrigurationAction = new ResetRepositoryConfigurationAction(this);
-
- private final ITaskRepositoryListener REPOSITORY_LISTENER = new ITaskRepositoryListener() {
-
- public void repositoriesRead() {
- refresh();
- }
-
- public void repositoryAdded(TaskRepository repository) {
- refresh();
- }
-
- public void repositoryRemoved(TaskRepository repository) {
- refresh();
- }
-
- public void repositorySettingsChanged(TaskRepository repository) {
- refresh();
- }
- };
-
- static class ViewContentProvider implements IStructuredContentProvider {
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
-
- public Object[] getElements(Object parent) {
- return TasksUiPlugin.getRepositoryManager().getAllRepositories().toArray();
- }
- }
-
- public TaskRepositoriesView() {
- TasksUiPlugin.getRepositoryManager().addListener(REPOSITORY_LISTENER);
- }
-
- public static TaskRepositoriesView getFromActivePerspective() {
- IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (activePage == null)
- return null;
- IViewPart view = activePage.findView(ID);
- if (view instanceof TaskRepositoriesView)
- return (TaskRepositoriesView) view;
- return null;
- }
-
- public void createPartControl(Composite parent) {
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
- viewer.setContentProvider(new ViewContentProvider());
-
- viewer.setLabelProvider(new DecoratingLabelProvider(new TaskRepositoryLabelProvider(), PlatformUI
- .getWorkbench().getDecoratorManager().getLabelDecorator()));
-
- viewer.setSorter(new TaskRepositoriesViewSorter());
-
-// new ViewerSorter() {
-//
-// @Override
-// public int compare(Viewer viewer, Object e1, Object e2) {
-// if (e1 instanceof TaskRepository && e2 instanceof TaskRepository) {
-// TaskRepository t1 = (TaskRepository) e1;
-// TaskRepository t2 = (TaskRepository) e2;
-// return (t1.getKind() + t1.getUrl()).compareTo(t2.getKind() + t2.getUrl());
-// } else {
-// return super.compare(viewer, e1, e2);
-// }
-// }
-// });
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(new IDoubleClickListener() {
-
- public void doubleClick(DoubleClickEvent event) {
- repositoryPropertiesAction.run();
- }
- });
-
- hookContextMenu();
- contributeToActionBars();
- getSite().setSelectionProvider(getViewer());
- }
-
- private void hookContextMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- TaskRepositoriesView.this.fillContextMenu(manager);
- }
- });
- Menu menu = menuMgr.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
- }
-
- private void contributeToActionBars() {
- IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
-
- private void fillLocalPullDown(IMenuManager manager) {
- manager.add(addRepositoryAction);
- }
-
- private void fillContextMenu(IMenuManager manager) {
- manager.add(addRepositoryAction);
- manager.add(deleteRepositoryAction);
- manager.add(new Separator());
- manager.add(repositoryPropertiesAction);
- manager.add(resetConrigurationAction);
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillLocalToolBar(IToolBarManager manager) {
- manager.add(addRepositoryAction);
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- public void refresh() {
- if (viewer != null && !viewer.getControl().isDisposed()) {
- viewer.refresh();
- }
- }
-
- public TableViewer getViewer() {
- return viewer;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java
deleted file mode 100644
index 21134aa4d..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.views;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Mik Kersten
- */
-public class TaskRepositoriesViewSorter extends ViewerSorter {
- @Override
- public int compare(Viewer viewer, Object e1, Object e2) {
- if (e1 instanceof TaskRepository && e2 instanceof TaskRepository) {
- TaskRepository t1 = (TaskRepository) e1;
- TaskRepository t2 = (TaskRepository) e2;
- return (t1.getKind() + t1.getUrl()).compareTo(t2.getKind() + t2.getUrl());
- } else {
- return super.compare(viewer, e1, e2);
- }
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractEditQueryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractEditQueryWizard.java
deleted file mode 100644
index d05e5d246..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractEditQueryWizard.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.tasks.ui.wizards;
-
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- */
-public abstract class AbstractEditQueryWizard extends Wizard {
-
- private static final String TITLE = "Edit Repository Query";
-
- protected final TaskRepository repository;
-
- protected AbstractRepositoryQuery query;
-
- protected AbstractRepositoryQueryPage page;
-
- public AbstractEditQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) {
- this.repository = repository;
- this.query = query;
- setNeedsProgressMonitor(true);
- setWindowTitle(TITLE);
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- }
-
- @Override
- public boolean performFinish() {
- AbstractRepositoryQuery query = page.getQuery();
- if (query != null) {
-
- TasksUiPlugin.getTaskListManager().getTaskList().deleteQuery(query);
- TasksUiPlugin.getTaskListManager().getTaskList().addQuery(query);
-
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(repository.getKind());
- if (connector != null) {
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, query, null);
- }
- }
-
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositoryClientWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositoryClientWizard.java
deleted file mode 100644
index e2fb6540c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositoryClientWizard.java
+++ /dev/null
@@ -1,72 +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.tasks.ui.wizards;
-
-import java.util.Collection;
-
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.INewWizard;
-
-/**
- * @author Mik Kersten
- */
-public abstract class AbstractRepositoryClientWizard extends Wizard implements INewWizard {
-
- private SelectRepositoryClientPage selectRepositoryClientPage = new SelectRepositoryClientPage(this);
-
- protected AbstractRepositorySettingsPage abstractRepositorySettingsPage;
-
- protected AbstractRepositoryConnector repositoryConnector;
-
- public AbstractRepositoryClientWizard() {
- super();
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- }
-
- public void setRepositoryConnector(AbstractRepositoryConnector repositoryConnector) {
- this.repositoryConnector = repositoryConnector;
- }
-
- public AbstractRepositoryConnector getRepositoryConnector() {
- return repositoryConnector;
- }
-
- @Override
- public void addPages() {
- Collection<AbstractRepositoryConnector> connectors = TasksUiPlugin.getRepositoryManager().getRepositoryConnectors();
- if (connectors.size() == 1) {
- AbstractRepositoryConnector connector = connectors.toArray(new AbstractRepositoryConnector[1])[0];
- setRepositoryConnector(connector);
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- connector.getRepositoryType());
- AbstractRepositorySettingsPage nextPage = connectorUi.getSettingsPage();
- setRepositorySettingsPage(nextPage);
- nextPage.setWizard(this);
- addPage(nextPage);
- } else {
- addPage(selectRepositoryClientPage);
- }
- }
-
- @Override
- public boolean canFinish() {
- return selectRepositoryClientPage.isPageComplete();
- }
-
- public void setRepositorySettingsPage(AbstractRepositorySettingsPage abstractRepositorySettingsPage) {
- this.abstractRepositorySettingsPage = abstractRepositorySettingsPage;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositorySettingsPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositorySettingsPage.java
deleted file mode 100644
index d11e09d13..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AbstractRepositorySettingsPage.java
+++ /dev/null
@@ -1,542 +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.tasks.ui.wizards;
-
-import java.nio.charset.Charset;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.StringFieldEditor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-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.FillLayout;
-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.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * @author Mik Kersten
- */
-public abstract class AbstractRepositorySettingsPage extends WizardPage {
-
- protected static final String LABEL_REPOSITORY_LABEL = "Label: ";
-
- protected static final String LABEL_SERVER = "Server: ";
-
- protected static final String LABEL_USER = "User Name: ";
-
- protected static final String LABEL_PASSWORD = "Password: ";
-
- protected static final String URL_PREFIX_HTTPS = "https://";
-
- protected static final String URL_PREFIX_HTTP = "http://";
-
- protected AbstractRepositoryConnector connector;
-
- protected StringFieldEditor repositoryLabelEditor;
-
- protected Combo serverUrlCombo;
-
- // protected StringFieldEditor serverUrlEditor;
-
- protected StringFieldEditor userNameEditor;
-
- protected StringFieldEditor characterEncodingEditor;
-
- private String serverVersion = TaskRepository.NO_VERSION_SPECIFIED;
-
- protected StringFieldEditor passwordEditor;
-
- protected TaskRepository repository;
-
- private Button validateServerButton;
-
- private Combo otherEncodingCombo;
-
- private Button defaultEncoding;
-
- // private Combo timeZonesCombo;
-
- protected Button anonymousButton;
-
- private String oldUsername;
-
- private String oldPassword;
-
- private boolean needsAnonymousLogin;
-
- private boolean needsTimeZone;
-
- private boolean needsEncoding;
-
- private Composite container;
-
- private Set<String> repositoryUrls;
-
- private String originalUrl;
-
- public AbstractRepositorySettingsPage(String title, String description, AbstractRepositoryConnectorUi repositoryUi) {
- super(title);
- super.setTitle(title);
- super.setDescription(description);
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repositoryUi.getRepositoryType());
- this.connector = connector;
-
- setNeedsAnonymousLogin(false);
- setNeedsEncoding(true);
- setNeedsTimeZone(true);
- }
-
- public void createControl(Composite parent) {
- container = new Composite(parent, SWT.NULL);
- FillLayout layout = new FillLayout();
- container.setLayout(layout);
-
- new Label(container, SWT.NONE).setText(LABEL_SERVER);
- serverUrlCombo = new Combo(container, SWT.DROP_DOWN);
- serverUrlCombo.addModifyListener(new ModifyListener() {
-
- public void modifyText(ModifyEvent e) {
- isValidUrl(serverUrlCombo.getText());
- if (getWizard() != null) {
- getWizard().getContainer().updateButtons();
- }
- }
- });
- serverUrlCombo.addSelectionListener(new SelectionListener() {
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
-
- }
-
- public void widgetSelected(SelectionEvent e) {
- isValidUrl(serverUrlCombo.getText());
- if (getWizard() != null) {
- getWizard().getContainer().updateButtons();
- }
- }
- });
-
- GridDataFactory.swtDefaults().hint(200, SWT.DEFAULT).grab(true, false).applyTo(serverUrlCombo);
-
- repositoryLabelEditor = new StringFieldEditor("", LABEL_REPOSITORY_LABEL, StringFieldEditor.UNLIMITED,
- container) {
-
- @Override
- protected boolean doCheckState() {
- return true;
- // return isValidUrl(getStringValue());
- }
-
- @Override
- protected void valueChanged() {
- super.valueChanged();
- if (getWizard() != null) {
- getWizard().getContainer().updateButtons();
- }
- }
- };
- // repositoryLabelEditor.setErrorMessage("error");
-
- if (needsAnonymousLogin()) {
- anonymousButton = new Button(container, SWT.CHECK);
- GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(anonymousButton);
-
- anonymousButton.setText("Anonymous Access");
- anonymousButton.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- setAnonymous(anonymousButton.getSelection());
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
- }
- });
-
- // Label anonymousLabel = new Label(container, SWT.NONE);
- // anonymousLabel.setText("");
- }
-
- userNameEditor = new StringFieldEditor("", LABEL_USER, StringFieldEditor.UNLIMITED, container);
- passwordEditor = new RepositoryStringFieldEditor("", LABEL_PASSWORD, StringFieldEditor.UNLIMITED, container);
- if (repository != null) {
- originalUrl = repository.getUrl();
- oldUsername = repository.getUserName();
- oldPassword = repository.getPassword();
- try {
- String repositoryLabel = repository.getRepositoryLabel();
- if (repositoryLabel != null && repositoryLabel.length() > 0) {
- // repositoryLabelCombo.add(repositoryLabel);
- // repositoryLabelCombo.select(0);
- repositoryLabelEditor.setStringValue(repositoryLabel);
- }
- serverUrlCombo.setText(repository.getUrl());
- userNameEditor.setStringValue(repository.getUserName());
- passwordEditor.setStringValue(repository.getPassword());
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "could not set field value for: " + repository, false);
- }
- } else {
- oldUsername = "";
- oldPassword = "";
- }
- // bug 131656: must set echo char after setting value on Mac
- ((RepositoryStringFieldEditor) passwordEditor).getTextControl().setEchoChar('*');
-
- if (needsAnonymousLogin()) {
- // do this after username and password widgets have been intialized
- if (repository != null) {
- setAnonymous(isAnonymousAccess());
- }
- }
-
- // TODO: put this back if we can't get the info from all connectors
- // if (needsTimeZone()) {
- // Label timeZoneLabel = new Label(container, SWT.NONE);
- // timeZoneLabel.setText("Repository time zone: ");
- // timeZonesCombo = new Combo(container, SWT.READ_ONLY);
- // String[] timeZoneIds = TimeZone.getAvailableIDs();
- // Arrays.sort(timeZoneIds);
- // for (String zone : timeZoneIds) {
- // timeZonesCombo.add(zone);
- // }
- // boolean setZone = false;
- // if (repository != null) {
- // if (timeZonesCombo.indexOf(repository.getTimeZoneId()) > -1) {
- // timeZonesCombo.select(timeZonesCombo.indexOf(repository.getTimeZoneId()));
- // setZone = true;
- // }
- // }
- // if (!setZone) {
- // timeZonesCombo.select(timeZonesCombo.indexOf(TimeZone.getDefault().getID()));
- // }
- // }
-
- createAdditionalControls(container);
-
- if (needsEncoding()) {
- Label encodingLabel = new Label(container, SWT.HORIZONTAL);
- encodingLabel.setText("Character Encoding:");
- GridDataFactory.fillDefaults().align(SWT.TOP, SWT.DEFAULT).applyTo(encodingLabel);
-
- Composite encodingContainer = new Composite(container, SWT.NONE);
- GridLayout gridLayout = new GridLayout(2, false);
- gridLayout.marginWidth = 0;
- gridLayout.marginHeight = 0;
- encodingContainer.setLayout(gridLayout);
-
- defaultEncoding = new Button(encodingContainer, SWT.RADIO);
- defaultEncoding.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
- defaultEncoding.setText("Default (" + TaskRepository.DEFAULT_CHARACTER_ENCODING + ")");
- defaultEncoding.setSelection(true);
-
- final Button otherEncoding = new Button(encodingContainer, SWT.RADIO);
- otherEncoding.setText("Other:");
- otherEncodingCombo = new Combo(encodingContainer, SWT.READ_ONLY);
- for (String encoding : Charset.availableCharsets().keySet()) {
- if (!encoding.equals(TaskRepository.DEFAULT_CHARACTER_ENCODING)) {
- otherEncodingCombo.add(encoding);
- }
- }
-
- setDefaultEncoding();
-
- otherEncoding.addSelectionListener(new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- if (otherEncoding.getSelection()) {
- defaultEncoding.setSelection(false);
- otherEncodingCombo.setEnabled(true);
- } else {
- defaultEncoding.setSelection(true);
- otherEncodingCombo.setEnabled(false);
- }
- }
- });
-
- if (repository != null) {
- try {
- String repositoryEncoding = repository.getCharacterEncoding();
- if (repositoryEncoding != null) {// &&
- // !repositoryEncoding.equals(defaultEncoding))
- // {
- if (otherEncodingCombo.getItemCount() > 0
- && otherEncodingCombo.indexOf(repositoryEncoding) > -1) {
- otherEncodingCombo.setEnabled(true);
- otherEncoding.setSelection(true);
- defaultEncoding.setSelection(false);
- otherEncodingCombo.select(otherEncodingCombo.indexOf(repositoryEncoding));
- } else {
- setDefaultEncoding();
- }
- }
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "could not set field value for: " + repository, false);
- }
- }
- }
-
- validateServerButton = new Button(container, SWT.PUSH);
- GridDataFactory.swtDefaults().span(2, SWT.DEFAULT).grab(false, false).applyTo(validateServerButton);
- validateServerButton.setText("Validate Settings");
- validateServerButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- validateSettings();
- }
- });
-
- setControl(container);
- }
-
- private void setDefaultEncoding() {
- defaultEncoding.setSelection(true);
- otherEncodingCombo.setEnabled(false);
- if (otherEncodingCombo.getItemCount() > 0) {
- otherEncodingCombo.select(0);
- }
- }
-
- public void setAnonymous(boolean selected) {
- if (!needsAnonymousLogin) {
- return;
- }
-
- anonymousButton.setSelection(selected);
-
- if (selected) {
- oldUsername = userNameEditor.getStringValue();
- oldPassword = ((StringFieldEditor) passwordEditor).getStringValue();
- userNameEditor.setStringValue(null);
- ((StringFieldEditor) passwordEditor).setStringValue(null);
- } else {
- userNameEditor.setStringValue(oldUsername);
- ((StringFieldEditor) passwordEditor).setStringValue(oldPassword);
- }
-
- userNameEditor.setEnabled(!selected, container);
- ((StringFieldEditor) passwordEditor).setEnabled(!selected, container);
- }
-
- protected abstract void createAdditionalControls(Composite parent);
-
- protected abstract void validateSettings();
-
- protected abstract boolean isValidUrl(String name);
-
- /* Public for testing. */
- public static String stripSlashes(String url) {
- StringBuilder sb = new StringBuilder(url.trim());
- while (sb.length() > 0 && sb.charAt(sb.length() - 1) == '/') {
- sb.deleteCharAt(sb.length() - 1);
- }
- return sb.toString();
- }
-
- public String getRepositoryLabel() {
- return repositoryLabelEditor.getStringValue();
- }
-
- public String getServerUrl() {
- return stripSlashes(serverUrlCombo.getText());
- }
-
- public String getUserName() {
- return userNameEditor.getStringValue();
- }
-
- public String getPassword() {
- return passwordEditor.getStringValue();
- }
-
- public void init(IWorkbench workbench) {
- // ignore
- }
-
- public boolean isAnonymousAccess() {
- return "".equals(getUserName()) && "".equals(getPassword());
- }
-
- /**
- * Exposes StringFieldEditor.refreshValidState()
- *
- * TODO: is there a better way?
- */
- private static class RepositoryStringFieldEditor extends StringFieldEditor {
- public RepositoryStringFieldEditor(String name, String labelText, int style, Composite parent) {
- super(name, labelText, style, parent);
- }
-
- @Override
- public void refreshValidState() {
- try {
- super.refreshValidState();
- } catch (Exception e) {
- MylarStatusHandler.log(e, "problem refreshing password field");
- }
- }
-
- @Override
- public Text getTextControl() {
- return super.getTextControl();
- }
-
- }
-
- @Override
- public boolean isPageComplete() {
- String url = getServerUrl();
- return isUniqueUrl(url) && isValidUrl(url);
- }
-
- protected boolean isUniqueUrl(String urlString) {
- if (!urlString.equals(originalUrl)) {
- if (repositoryUrls == null) {
- List<TaskRepository> repositories = TasksUiPlugin.getRepositoryManager().getAllRepositories();
- repositoryUrls = new HashSet<String>(repositories.size());
- for (TaskRepository repository : repositories) {
- repositoryUrls.add(repository.getUrl());
- }
- }
-
- if (repositoryUrls.contains(urlString)) {
- setErrorMessage("Repository already exists.");
- return false;
- }
- }
- setErrorMessage(null);
- return true;
- }
-
- public void setRepository(TaskRepository repository) {
- this.repository = repository;
- }
-
- public void setVersion(String previousVersion) {
- if (previousVersion == null) {
- serverVersion = TaskRepository.NO_VERSION_SPECIFIED;
- } else {
- serverVersion = previousVersion;
- }
- }
-
- public String getVersion() {
- return serverVersion;
- }
-
- public TaskRepository getRepository() {
- return repository;
- }
-
- public String getCharacterEncoding() {
- if (defaultEncoding == null) {
- return null;
- }
-
- if (defaultEncoding.getSelection()) {
- return TaskRepository.DEFAULT_CHARACTER_ENCODING;
- } else {
- if (otherEncodingCombo.getSelectionIndex() > -1) {
- return otherEncodingCombo.getItem(otherEncodingCombo.getSelectionIndex());
- } else {
- return TaskRepository.DEFAULT_CHARACTER_ENCODING;
- }
- }
- }
-
- // public String getTimeZoneId() {
- // return (timeZonesCombo != null) ?
- // timeZonesCombo.getItem(timeZonesCombo.getSelectionIndex()) : null;
- // }
-
- public TaskRepository createTaskRepository() {
- // TaskRepository repository = new
- // TaskRepository(connector.getRepositoryType(), getServerUrl(),
- // getVersion(),
- // getCharacterEncoding(), getTimeZoneId());
-
- TaskRepository repository = new TaskRepository(connector.getRepositoryType(), getServerUrl(), getVersion(),
- getCharacterEncoding(), "");
- repository.setRepositoryLabel(getRepositoryLabel());
- repository.setAuthenticationCredentials(getUserName(), getPassword());
- updateProperties(repository);
- return repository;
- }
-
- public AbstractRepositoryConnector getConnector() {
- return connector;
- }
-
- public boolean needsEncoding() {
- return needsEncoding;
- }
-
- public boolean needsTimeZone() {
- return needsTimeZone;
- }
-
- public boolean needsAnonymousLogin() {
- return needsAnonymousLogin;
- }
-
- public void setNeedsEncoding(boolean needsEncoding) {
- this.needsEncoding = needsEncoding;
- }
-
- public void setNeedsTimeZone(boolean needsTimeZone) {
- this.needsTimeZone = needsTimeZone;
- }
-
- public void setNeedsAnonymousLogin(boolean needsAnonymousLogin) {
- this.needsAnonymousLogin = needsAnonymousLogin;
- }
-
- public void updateProperties(TaskRepository repository) {
- // none
- }
-
- /** for testing */
- public void setUrl(String url) {
- serverUrlCombo.setText(url);
- }
-
- /** for testing */
- public void setUserId(String id) {
- userNameEditor.setStringValue(id);
- }
-
- /** for testing */
- public void setPassword(String pass) {
- passwordEditor.setStringValue(pass);
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java
deleted file mode 100644
index 294f005a7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/AddExistingTaskWizard.java
+++ /dev/null
@@ -1,49 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryFilter;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Brock Janiczak
- * @author Eugene Kuleshov
- * @author Steffen Pingel
- */
-public class AddExistingTaskWizard extends MultiRepositoryAwareWizard {
-
- public static final String TITLE = "Add Existing Repository Task";
-
- public AddExistingTaskWizard(IStructuredSelection selection) {
- super(new SelectRepositoryPageForAddExistingTask(TaskRepositoryFilter.CAN_CREATE_TASK_FROM_KEY).setSelection(selection), TITLE);
- }
-
- private static final class SelectRepositoryPageForAddExistingTask extends SelectRepositoryPage {
-
- public SelectRepositoryPageForAddExistingTask(TaskRepositoryFilter filter) {
- super(filter);
- }
-
- @Override
- protected IWizard createWizard(TaskRepository taskRepository) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- taskRepository.getKind());
- return connectorUi.getAddExistingTaskWizard(taskRepository);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java
deleted file mode 100644
index 6fc772583..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/CommonAddExistingTaskWizard.java
+++ /dev/null
@@ -1,125 +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.tasks.ui.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskCategory;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * @author Brock Janiczak
- * @author Mik Kersten
- */
-public class CommonAddExistingTaskWizard extends Wizard {
-
- private final TaskRepository repository;
-
- private ExistingTaskWizardPage page;
-
- private ITask newTask = null;
-
- public CommonAddExistingTaskWizard(TaskRepository repository) {
- this.repository = repository;
- setNeedsProgressMonitor(true);
- setWindowTitle(AddExistingTaskWizard.TITLE);
- init();
- }
-
- @Override
- public final boolean performFinish() {
- final AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- this.repository.getKind());
-
- final String taskId = getTaskId();
-
- try {
- getContainer().run(true, false, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("Retrieving task...", IProgressMonitor.UNKNOWN);
- try {
- newTask = connector.createTaskFromExistingKey(repository, taskId, null);
- if (newTask instanceof AbstractRepositoryTask) {
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, (AbstractRepositoryTask)newTask, true, null);
- }
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
- } catch (InvocationTargetException e) {
- String message = e.getCause() != null ? e.getCause().getMessage() : "None provided";
- MessageDialog.openWarning(this.getShell(), "Add Existing Task Failed",
- "Unable to retrieve existing task from repository, error was: \n\n" + message);
- return false;
- } catch (InterruptedException e) {
- // cancelled
- return true;
- }
-
- if (newTask != null && TaskListView.getFromActivePerspective() != null) {
- Object selectedObject = ((IStructuredSelection) TaskListView.getFromActivePerspective().getViewer()
- .getSelection()).getFirstElement();
-
- if (selectedObject instanceof TaskCategory) {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(((TaskCategory) selectedObject),
- newTask);
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().moveToRoot(newTask);
- }
- if (TaskListView.getFromActivePerspective() != null) {
- TaskListView.getFromActivePerspective().getViewer().setSelection(new StructuredSelection(newTask));
- }
- TaskUiUtil.openEditor(newTask, false);
- } else {
- // TODO: createTaskFromExistingKey needs to throw exceptions so that
- // we can provide the correct error handling in
- // the try catch above.
- MessageDialog.openWarning(this.getShell(), "Add Existing Task Failed",
- "Unable to retrieve task from repository.");
- }
-
- return true;
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-
- private void init() {
- super.setForcePreviousAndNextButtons(true);
- }
-
- public void addPages() {
- super.addPages();
- this.page = new ExistingTaskWizardPage();
- addPage(page);
- }
-
- protected String getTaskId() {
- return page.getTaskId();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizard.java
deleted file mode 100644
index b7338f125..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizard.java
+++ /dev/null
@@ -1,87 +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.tasks.ui.wizards;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- * @author Steffen Pingel
- */
-public class ContextAttachWizard extends Wizard {
-
- public static final String WIZARD_TITLE = "Attach context";
-
- private final TaskRepository repository;
-
- private final AbstractRepositoryTask task;
-
- private ContextAttachWizardPage wizardPage;
-
- public ContextAttachWizard(AbstractRepositoryTask task) {
- repository = TasksUiPlugin.getRepositoryManager().getRepository(task.getRepositoryKind(),
- task.getRepositoryUrl());
- this.task = task;
- setWindowTitle(ContextRetrieveWizard.TITLE);
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY_CONTEXT);
- }
-
- @Override
- public void addPages() {
- wizardPage = new ContextAttachWizardPage(repository, task);
- addPage(wizardPage);
- super.addPages();
- }
-
- @Override
- public final boolean performFinish() {
-
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- this.repository.getKind());
-
- try {
- if (!connector.attachContext(repository, task, wizardPage.getComment(), TasksUiPlugin.getDefault().getProxySettings())) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- TasksUiPlugin.TITLE_DIALOG, AbstractRepositoryConnector.MESSAGE_ATTACHMENTS_NOT_SUPPORTED + connector.getLabel());
- } else {
- IWorkbenchSite site = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart().getSite();
- if (site instanceof IViewSite) {
- IStatusLineManager statusLineManager = ((IViewSite)site).getActionBars().getStatusLineManager();
- statusLineManager.setMessage(TaskListImages.getImage(TaskListImages.TASKLIST),
- "Context attached to task: " + task.getDescription());
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- }
- }
- } catch (final CoreException e) {
- String message = e.getStatus().getMessage() != null ? e.getStatus().getMessage() : "";
- MessageDialog.openError(null, TasksUiPlugin.TITLE_DIALOG, "Attachment of task context FAILED. \n\n"+message);
- MylarStatusHandler.log(e.getStatus());
- //ErrorDialog.openError(null, TasksUiPlugin.TITLE_DIALOG, "Attachment of task context FAILED.", e.getStatus());
- return false;
- }
-
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizardPage.java
deleted file mode 100644
index 6b765dab7..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextAttachWizardPage.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.tasks.ui.wizards;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-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.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Rob Elves
- */
-public class ContextAttachWizardPage extends WizardPage {
-
- private static final String DESCRIPTION = "Attaches local context to repository task";
-
- private TaskRepository repository;
-
- private AbstractRepositoryTask task;
-
- private Text commentText;
-
- private boolean complete = true;
-
- protected ContextAttachWizardPage(TaskRepository repository, AbstractRepositoryTask task) {
- super(ContextAttachWizard.WIZARD_TITLE);
- this.repository = repository;
- this.task = task;
- setDescription(DESCRIPTION);
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout());
-
- new Label(composite, SWT.NONE).setText("Task: " + task.getDescription());
- new Label(composite, SWT.NONE).setText("Repository: " + repository.getUrl());
- new Label(composite, SWT.NONE).setText("Comment: ");
- commentText = new Text(composite, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.WRAP);
- commentText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- commentText.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- getWizard().getContainer().updateButtons();
- }
-
- public void keyReleased(KeyEvent e) {
- getWizard().getContainer().updateButtons();
- }
- });
-
- setControl(composite);
-
- if(task.getSyncState() != RepositoryTaskSyncState.SYNCHRONIZED) {
- setErrorMessage("Task must be synchronized before attaching context");
- complete = false;
- getWizard().getContainer().updateButtons();
- }
- }
-
- public String getComment() {
- return commentText.getText();
- }
-
- @Override
- public boolean isPageComplete() {
- return complete;
-// if (commentText.getText().equals(""))
-// return false;
-// return super.isPageComplete();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizard.java
deleted file mode 100644
index 6c3323e85..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizard.java
+++ /dev/null
@@ -1,92 +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.tasks.ui.wizards;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class ContextRetrieveWizard extends Wizard {
-
- public static final String TITLE = "Task Repository";
-
- public static final String WIZARD_TITLE = "Retrieve context";
-
- private final TaskRepository repository;
-
- private final AbstractRepositoryTask task;
-
- private ContextRetrieveWizardPage wizardPage;
-
- public ContextRetrieveWizard(AbstractRepositoryTask task) {
- repository = TasksUiPlugin.getRepositoryManager().getRepository(task.getRepositoryKind(),
- task.getRepositoryUrl());
- this.task = task;
- setWindowTitle(TITLE);
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY_CONTEXT);
- }
-
- @Override
- public void addPages() {
- wizardPage = new ContextRetrieveWizardPage(repository, task);
- addPage(wizardPage);
- super.addPages();
- }
-
- @Override
- public final boolean performFinish() {
-
- RepositoryAttachment delegate = wizardPage.getSelectedContext();
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- this.repository.getKind());
- try {
- boolean wasActive = false;
- if (task.isActive()) {
- wasActive = true;
- TasksUiPlugin.getTaskListManager().deactivateTask(task);
- }
- try {
- if (!connector.retrieveContext(repository, task, delegate, TasksUiPlugin.getDefault().getProxySettings(), TasksUiPlugin.getDefault().getDataDirectory())) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- TasksUiPlugin.TITLE_DIALOG, AbstractRepositoryConnector.MESSAGE_ATTACHMENTS_NOT_SUPPORTED
- + connector.getLabel());
- } else {
- TasksUiPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task);
- }
- } finally {
- if (wasActive) {
- TasksUiPlugin.getTaskListManager().activateTask(task);
- }
- }
- } catch (CoreException e) {
- ErrorDialog.openError(null, TasksUiPlugin.TITLE_DIALOG, "Retrieval of task context FAILED.", e.getStatus());
- MylarStatusHandler.log(e.getStatus());
- return false;
- }
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java
deleted file mode 100644
index aa161f9ad..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ContextRetrieveWizardPage.java
+++ /dev/null
@@ -1,154 +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.tasks.ui.wizards;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-
-/**
- * @author Rob Elves
- * @author Mik Kersten
- */
-public class ContextRetrieveWizardPage extends WizardPage {
-
- private static final String DESCRIPTION = "Loads context from repository task into the workspace";
-
- private static final String COLUMN_COMMENT = "Comment";
-
- private static final String COLUMN_AUTHOR = "Author";
-
- private static final String COLUMN_DATE = "Date";
-
- private TaskRepository repository;
-
- private AbstractRepositoryTask task;
-
- private RepositoryAttachment selectedContextAttachment = null;
-
- protected ContextRetrieveWizardPage(TaskRepository repository, AbstractRepositoryTask task) {
- super(ContextAttachWizard.WIZARD_TITLE);
- this.repository = repository;
- this.task = task;
- setDescription(DESCRIPTION);
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout(1, false));
-
- new Label(composite, SWT.NONE).setText("Task: " + task.getDescription());
- new Label(composite, SWT.NONE).setText("Repository: " + repository.getUrl());
- new Label(composite, SWT.NONE).setText("Select context below:");
-
- final Table contextTable = new Table(composite, SWT.FULL_SELECTION | SWT.BORDER);
- contextTable.setHeaderVisible(true);
- contextTable.setLinesVisible(true);
- contextTable.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- if (contextTable.getSelectionIndex() > -1) {
- selectedContextAttachment = (RepositoryAttachment) contextTable.getItem(
- contextTable.getSelectionIndex()).getData();
- getWizard().getContainer().updateButtons();
- }
- }
- });
-
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repository.getKind());
-
- List<RepositoryAttachment> contextAttachments = new ArrayList<RepositoryAttachment>(connector
- .getContextAttachments(repository, task));
-
- final IOfflineTaskHandler offlineHandler = connector.getOfflineTaskHandler();
- if (offlineHandler != null) {
- Collections.sort(contextAttachments, new Comparator<RepositoryAttachment>() {
-
- public int compare(RepositoryAttachment attachment1, RepositoryAttachment attachment2) {
- Date created1 = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.ATTACHMENT_DATE,
- attachment1.getDateCreated());
- Date created2 = offlineHandler.getDateForAttributeType(RepositoryTaskAttribute.ATTACHMENT_DATE,
- attachment2.getDateCreated());
- if (created1 != null && created2 != null) {
- return created1.compareTo(created2);
- } else if (created1 == null && created2 != null) {
- return -1;
- } else if (created1 != null && created2 == null) {
- return 1;
- } else {
- return 0;
- }
- }
-
- });
- }
- TableColumn[] columns = new TableColumn[3];
-
- columns[0] = new TableColumn(contextTable, SWT.LEFT);
- columns[0].setText(COLUMN_DATE);
-
- columns[1] = new TableColumn(contextTable, SWT.LEFT);
- columns[1].setText(COLUMN_AUTHOR);
-
- columns[2] = new TableColumn(contextTable, SWT.CENTER);
- columns[2].setText(COLUMN_COMMENT);
-
- for (RepositoryAttachment attachment : contextAttachments) {
- TableItem item = new TableItem(contextTable, SWT.NONE);
- item.setText(0, attachment.getDateCreated());
- item.setText(1, attachment.getCreator());
- item.setText(2, attachment.getDescription());
- item.setData(attachment);
- }
-
- for (int i = 0, n = columns.length; i < n; i++) {
- columns[i].pack();
- }
-
- contextTable.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- setControl(composite);
- }
-
- public RepositoryAttachment getSelectedContext() {
- return selectedContextAttachment;
- }
-
- @Override
- public boolean isPageComplete() {
- if (selectedContextAttachment == null)
- return false;
- return super.isPageComplete();
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
deleted file mode 100644
index 174ee642f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
+++ /dev/null
@@ -1,93 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * @author Mik Kersten
- */
-public class EditRepositoryWizard extends Wizard implements INewWizard {
-
- private static final String TITLE = "Task Repository Settings";
-
- private AbstractRepositorySettingsPage abstractRepositorySettingsPage;
-
- private TaskRepository repository;
-
- public EditRepositoryWizard(TaskRepository repository) {
- super();
- this.repository = repository;
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- repository.getKind());
- abstractRepositorySettingsPage = connectorUi.getSettingsPage();
- abstractRepositorySettingsPage.setRepository(repository);
- abstractRepositorySettingsPage.setVersion(repository.getVersion());
- abstractRepositorySettingsPage.setWizard(this);
- setNeedsProgressMonitor(true);
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- setWindowTitle(TITLE);
- }
-
- /**
- * Custom properties should be set on the repository object to ensure they are saved.
- */
- @Override
- public boolean performFinish() {
- if (canFinish()) {
- String oldUrl = repository.getUrl();
- String newUrl = abstractRepositorySettingsPage.getServerUrl();
- TasksUiPlugin.getTaskListManager().refactorRepositoryUrl(oldUrl, newUrl);
-
- repository.flushAuthenticationCredentials();
- repository.setUrl(newUrl);
- repository.setVersion(abstractRepositorySettingsPage.getVersion());
- repository.setCharacterEncoding(abstractRepositorySettingsPage.getCharacterEncoding());
- repository.setAuthenticationCredentials(abstractRepositorySettingsPage.getUserName(), abstractRepositorySettingsPage.getPassword());
- repository.setRepositoryLabel(abstractRepositorySettingsPage.getRepositoryLabel());
- abstractRepositorySettingsPage.updateProperties(repository);
- TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChagned(repository);
- TasksUiPlugin.getRepositoryManager().saveRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
- return true;
- }
- return false;
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-
- @Override
- public void addPages() {
- addPage(abstractRepositorySettingsPage);
- }
-
- @Override
- public boolean canFinish() {
- return abstractRepositorySettingsPage.isPageComplete();
- }
-
- /** public for testing */
- public AbstractRepositorySettingsPage getSettingsPage() {
- return abstractRepositorySettingsPage;
- }
-
- public TaskRepository getRepository() {
- return repository;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java
deleted file mode 100644
index 33f2d2520..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/ExistingTaskWizardPage.java
+++ /dev/null
@@ -1,81 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Mik Kersten
- */
-public class ExistingTaskWizardPage extends WizardPage {
-
- private static final String TITLE = "Enter Task ID";
-
- private static final String DESCRIPTION = "Provide the identifier for the task, issue, or bug report.\n"
- + "The format is specific to the repository.";
-
- private Text taskIdText;
-
- public ExistingTaskWizardPage() {
- super(TITLE);
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- setImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- }
-
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- layout.numColumns = 2;
-
- GridData gd = new GridData();
- gd.widthHint = 200;
-
- Label label = new Label(container, SWT.NULL);
- label.setText("Enter Key/ID: ");
- taskIdText = new Text(container, SWT.BORDER);
- taskIdText.setLayoutData(gd);
- taskIdText.setFocus();
- taskIdText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- getWizard().getContainer().updateButtons();
- // try {
- // numDaysToReport = Integer.parseInt(taskId.getText());
- // setErrorMessage(null);
- // } catch (Exception ex) {
- // setErrorMessage("Must be integer");
- // numDaysToReport = 0;
- // }
- }
- });
-
- setControl(container);
- }
-
- public boolean isPageComplete() {
- return getTaskId() != null && !getTaskId().trim().equals("");
- }
-
- public String getTaskId() {
- return taskIdText.getText();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/InputAttachmentSourcePage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/InputAttachmentSourcePage.java
deleted file mode 100644
index ef606b344..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/InputAttachmentSourcePage.java
+++ /dev/null
@@ -1,600 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sebastian Davids <sdavids@gmx.de> - layout tweaks
- * Jeff Pound <jeff.bagu@gmail.com> - modified for attachment input
- *******************************************************************************/
-package org.eclipse.mylar.internal.tasks.ui.wizards;
-
-import java.io.File;
-import java.util.ArrayList;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.resources.mapping.ResourceMapping;
-import org.eclipse.core.resources.mapping.ResourceMappingContext;
-import org.eclipse.core.resources.mapping.ResourceTraversal;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.TextTransfer;
-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.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.graphics.Point;
-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.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
-import org.eclipse.ui.views.navigator.ResourceSorter;
-
-/**
- * A wizard to input the source of the attachment. This is a modified version of
- * org.eclipse.compare.internal.InputPatchPage.
- *
- * @author Jeff Pound
- */
-public class InputAttachmentSourcePage extends WizardPage {
-
- // constants
- protected static final int SIZING_TEXT_FIELD_WIDTH = 250;
-
- protected static final int COMBO_HISTORY_LENGTH = 5;
-
- public static final String CLIPBOARD_LABEL = "<Clipboard>";
-
- // input constants
- protected final static int CLIPBOARD = 1;
-
- protected final static int FILE = 2;
-
- protected final static int WORKSPACE = 3;
-
- static final char SEPARATOR = System.getProperty("file.separator").charAt(0); //$NON-NLS-1$
-
- private boolean showError = false;
-
- private ActivationListener activationListener = new ActivationListener();
-
- // SWT widgets
- private Button useClipboardButton;
-
- private Combo fileNameField;
-
- private Button fileBrowseButton;
-
- private Button useFileButton;
-
- private Button useWorkspaceButton;
-
- private Label workspaceSelectLabel;
-
- private TreeViewer treeViewer;
-
- private NewAttachmentWizard wizard;
-
- private String clipboardContents;
-
- private boolean initUseClipboard = false;
-
- class ActivationListener extends ShellAdapter {
- public void shellActivated(ShellEvent e) {
- // allow error messages if the selected input actually has something
- // selected in it
- showError = true;
- switch (getInputMethod()) {
- case FILE:
- showError = (fileNameField.getText() != ""); //$NON-NLS-1$
- break;
-
- case WORKSPACE:
- showError = (!treeViewer.getSelection().isEmpty());
- break;
- }
- updateWidgetEnablements();
- }
- }
-
- public InputAttachmentSourcePage(NewAttachmentWizard wizard) {
- super("InputAttachmentPage");
- this.wizard = wizard;
- setTitle("Select source");
- setDescription("Clipboard contents are for text attachments only.");
- // setMessage("Please select the source for the attachment");
- }
-
- /*
- * Get a path from the supplied text widget. @return
- * org.eclipse.core.runtime.IPath
- */
- protected IPath getPathFromText(Text textField) {
- return (new Path(textField.getText())).makeAbsolute();
- }
-
- public String getAttachmentName() {
- if (getInputMethod() == CLIPBOARD) {
- return CLIPBOARD_LABEL;
- } else if (getInputMethod() == WORKSPACE) {
- return getResources(treeViewer.getSelection())[0].getFullPath().toOSString();
- }
- return getAttachmentFilePath();
- }
-
- public void createControl(Composite parent) {
-
- Composite composite = new Composite(parent, SWT.NULL);
- composite.setLayout(new GridLayout());
- GridData gd = new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL);
- gd.heightHint = 800;
- composite.setLayoutData(gd);
- setControl(composite);
-
- initializeDialogUnits(parent);
-
- buildAttachmentFileGroup(composite);
-
- // No error for dialog opening
- showError = false;
- clearErrorMessage();
- updateWidgetEnablements();
-
- Shell shell = getShell();
- shell.addShellListener(activationListener);
-
- Dialog.applyDialogFont(composite);
-
- }
-
- public IWizardPage getNextPage() {
- return wizard.getNextPage(this);
- }
-
- /*
- * (non-JavaDoc) Method declared in IWizardPage.
- */
- public boolean canFlipToNextPage() {
- return isPageComplete();
- }
-
- private void setEnableAttachmentFile(boolean enable) {
- fileNameField.setEnabled(enable);
- fileBrowseButton.setEnabled(enable);
- }
-
- private void setEnableWorkspaceAttachment(boolean enable) {
- workspaceSelectLabel.setEnabled(enable);
- treeViewer.getTree().setEnabled(enable);
- }
-
- /*
- * Create the group for selecting the attachment file
- */
- private void buildAttachmentFileGroup(Composite parent) {
-
- final Composite composite = new Composite(parent, SWT.NULL);
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 3;
- composite.setLayout(gridLayout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // 1st row
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- gd.horizontalSpan = 3;
- useClipboardButton = new Button(composite, SWT.RADIO);
- useClipboardButton.setText("Clipboard");
- useClipboardButton.setLayoutData(gd);
- useClipboardButton.setSelection(initUseClipboard);
-
- // 2nd row
- useFileButton = new Button(composite, SWT.RADIO);
- useFileButton.setText("File");
-
- fileNameField = new Combo(composite, SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.widthHint = SIZING_TEXT_FIELD_WIDTH;
- fileNameField.setLayoutData(gd);
- fileNameField.setText(wizard.getAttachment().getFilePath());
-
- fileBrowseButton = new Button(composite, SWT.PUSH);
- fileBrowseButton.setText("Browse...");
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- Point minSize = fileBrowseButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- data.widthHint = Math.max(widthHint, minSize.x);
- fileBrowseButton.setLayoutData(data);
-
- // 3rd row
- useWorkspaceButton = new Button(composite, SWT.RADIO);
- useWorkspaceButton.setText("Workspace");
- gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- useWorkspaceButton.setLayoutData(gd);
-
- addWorkspaceControls(parent);
-
- // Add listeners
- useClipboardButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- if (!useClipboardButton.getSelection())
- return;
-
- clearErrorMessage();
- showError = true;
- int state = getInputMethod();
- setEnableAttachmentFile(state == FILE);
- setEnableWorkspaceAttachment(state == WORKSPACE);
- storeClipboardContents();
- updateWidgetEnablements();
- }
- });
-
- useFileButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- if (!useFileButton.getSelection())
- return;
- // If there is anything typed in at all
- clearErrorMessage();
- showError = (fileNameField.getText() != ""); //$NON-NLS-1$
- int state = getInputMethod();
- setEnableAttachmentFile(state == FILE);
- setEnableWorkspaceAttachment(state == WORKSPACE);
- updateWidgetEnablements();
- }
- });
- fileNameField.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- setSourceName(fileNameField.getText());
- updateWidgetEnablements();
- }
- });
- fileNameField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- clearErrorMessage();
- showError = true;
- updateWidgetEnablements();
- }
- });
- fileBrowseButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- clearErrorMessage();
- showError = true;
- /* Launch Browser */
- FileDialog fileChooser = new FileDialog(composite.getShell(), SWT.OPEN);
- String file = fileChooser.open();
-
- // Check if the dialog was canceled or an error occured
- if (file == null) {
- return;
- }
- // update UI
- fileNameField.setText(file);
- updateWidgetEnablements();
- }
- });
- useWorkspaceButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- if (!useWorkspaceButton.getSelection())
- return;
- clearErrorMessage();
- // If there is anything typed in at all
- showError = (!treeViewer.getSelection().isEmpty());
- int state = getInputMethod();
- setEnableAttachmentFile(state == FILE);
- setEnableWorkspaceAttachment(state == WORKSPACE);
- updateWidgetEnablements();
- }
- });
-
- treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- clearErrorMessage();
- updateWidgetEnablements();
- }
- });
-
- treeViewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- ISelection selection = event.getSelection();
- if (selection instanceof TreeSelection) {
- TreeSelection treeSel = (TreeSelection) selection;
- Object res = treeSel.getFirstElement();
- if (res != null) {
- if (res instanceof IProject || res instanceof IFolder) {
- if (treeViewer.getExpandedState(res)) {
- treeViewer.collapseToLevel(res, 1);
- } else {
- treeViewer.expandToLevel(res, 1);
- }
- } else if (res instanceof IFile) {
- wizard.showPage(getNextPage());
- }
- }
- }
- }
- });
-
- useFileButton.setSelection(!initUseClipboard);
- setEnableWorkspaceAttachment(false);
- }
-
- private void addWorkspaceControls(Composite composite) {
-
- Composite newComp = new Composite(composite, SWT.NONE);
- GridLayout layout = new GridLayout(1, false);
- layout.marginLeft = 16; // align w/ lable of check button
- newComp.setLayout(layout);
- newComp.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- workspaceSelectLabel = new Label(newComp, SWT.LEFT);
- workspaceSelectLabel.setText("Select the location of the attachment");
-
- treeViewer = new TreeViewer(newComp, SWT.BORDER);
- treeViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- treeViewer.setLabelProvider(new WorkbenchLabelProvider());
- treeViewer.setContentProvider(new WorkbenchContentProvider());
- treeViewer.setSorter(new ResourceSorter(ResourceSorter.NAME));
- treeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
- }
-
- /**
- * Updates the enable state of this page's controls.
- */
- private void updateWidgetEnablements() {
-
- String error = null;
-
- boolean attachmentFound = false;
- int inputMethod = getInputMethod();
- if (inputMethod == CLIPBOARD) {
- Control c = getControl();
- if (c != null) {
- Clipboard clipboard = new Clipboard(c.getDisplay());
- Object o = clipboard.getContents(TextTransfer.getInstance());
- clipboard.dispose();
- if (o instanceof String) {
- String s = ((String) o).trim();
- if (s.length() > 0)
- attachmentFound = true;
- else
- error = "Clipboard is empty";
- } else
- error = "Clipboard does not contain text";
- } else
- error = "Cannot retrieve clipboard contents";
- } else if (inputMethod == FILE) {
- String path = fileNameField.getText();
- if (path != null && path.length() > 0) {
- File file = new File(path);
- attachmentFound = file.exists() && file.isFile() && file.length() > 0;
- if (!attachmentFound)
- error = "Cannot locate attachment file";
- } else {
- error = "No file name";
- }
- } else if (inputMethod == WORKSPACE) {
- // Get the selected attachment file (tree will only allow for one
- // selection)
- IResource[] resources = getResources(treeViewer.getSelection());
- if (resources == null || resources.length <= 0) {
- error = "No file name";
- } else {
- IResource attachmentFile = resources[0];
- if (attachmentFile != null && attachmentFile.getType() == IResource.FILE) {
- File actualFile = attachmentFile.getRawLocation().toFile();
- attachmentFound = actualFile.exists() && actualFile.isFile() && actualFile.length() > 0;
- if (!attachmentFound) {
- error = "Cannot locate attachment file";
- }
- }
- }
- }
-
- setPageComplete(attachmentFound);
- wizard.getAttachment().setFilePath(getAbsoluteAttachmentPath());
-
- if (showError) {
- setErrorMessage(error);
- }
- }
-
- /**
- * Sets the source name of the import to be the supplied path. Adds the name
- * of the path to the list of items in the source combo and selects it.
- *
- * @param path
- * the path to be added
- */
- protected void setSourceName(String path) {
-
- if (path.length() > 0) {
-
- String[] currentItems = fileNameField.getItems();
- int selectionIndex = -1;
- for (int i = 0; i < currentItems.length; i++)
- if (currentItems[i].equals(path))
- selectionIndex = i;
-
- if (selectionIndex < 0) { // not found in history
- int oldLength = currentItems.length;
- String[] newItems = new String[oldLength + 1];
- System.arraycopy(currentItems, 0, newItems, 0, oldLength);
- newItems[oldLength] = path;
- fileNameField.setItems(newItems);
- selectionIndex = oldLength;
- }
- fileNameField.select(selectionIndex);
-
- // resetSelection();
- }
- }
-
- // private String getWorkspacePath() {
- // if (fTreeViewer ! = null){
- // IResource[] resources = getResources(fTreeViewer.getSelection());
- // if (resources.length > 0) {
- // IResource patchFile = resources[0];
- // return patchFile.getFullPath().toString();
- // }
- //
- // }
- // return ""; //$NON-NLS-1$
- // }
-
- /*
- * Clears the dialog message box
- */
- private void clearErrorMessage() {
- setErrorMessage(null);
- }
-
- protected int getInputMethod() {
- if (useClipboardButton == null) {
- if (initUseClipboard) {
- return CLIPBOARD;
- }
- return FILE;
- }
- if (useClipboardButton.getSelection()) {
- return CLIPBOARD;
- }
- if (useFileButton.getSelection()) {
- return FILE;
- }
- return WORKSPACE;
- }
-
- private String getAttachmentFilePath() {
- if (fileNameField != null) {
- return fileNameField.getText();
- }
- return wizard.getAttachment().getFilePath();
- }
-
- public String getAbsoluteAttachmentPath() {
- switch (getInputMethod()) {
- case CLIPBOARD:
- return CLIPBOARD_LABEL;
- case WORKSPACE:
- IResource[] resources = getResources(treeViewer.getSelection());
- if (resources.length > 0 && resources[0].getRawLocation() != null) {
- return resources[0].getRawLocation().toOSString();
- } else {
- return null;
- }
- case FILE:
- default:
- return getAttachmentFilePath();
- }
- }
-
- /*
- * Based on .eclipse.compare.internal.Utilities
- *
- * Convenience method: extract all accessible <code>IResources</code> from
- * given selection. Never returns null.
- */
- public static IResource[] getResources(ISelection selection) {
- ArrayList<IResource> tmp = new ArrayList<IResource>();
- Class type = IResource.class;
- if (selection instanceof IStructuredSelection) {
- Object[] s = ((IStructuredSelection) selection).toArray();
-
- for (int i = 0; i < s.length; i++) {
- IResource resource = null;
- Object o = s[i];
- if (type.isInstance(o)) {
- resource = (IResource) o;
-
- } else if (o instanceof ResourceMapping) {
- try {
- ResourceTraversal[] travs = ((ResourceMapping) o).getTraversals(
- ResourceMappingContext.LOCAL_CONTEXT, null);
- if (travs != null) {
- for (int k = 0; k < travs.length; k++) {
- IResource[] resources = travs[k].getResources();
- for (int j = 0; j < resources.length; j++) {
- if (type.isInstance(resources[j]) && resources[j].isAccessible())
- tmp.add(resources[j]);
- }
- }
- }
- } catch (CoreException ex) {
- // TODO handle error
- }
- } else if (o instanceof IAdaptable) {
- IAdaptable a = (IAdaptable) o;
- Object adapter = a.getAdapter(IResource.class);
- if (type.isInstance(adapter))
- resource = (IResource) adapter;
- }
-
- if (resource != null && resource.isAccessible())
- tmp.add(resource);
- }
- }
-
- return (IResource[]) tmp.toArray(new IResource[tmp.size()]);
- }
-
- private void storeClipboardContents() {
- Control c = getControl();
- if (c != null) {
- Clipboard clipboard = new Clipboard(c.getDisplay());
- Object o = clipboard.getContents(TextTransfer.getInstance());
- clipboard.dispose();
- if (o instanceof String) {
- clipboardContents = ((String) o).trim();
- }
- }
- }
-
- public String getClipboardContents() {
- return clipboardContents;
- }
-
- public void setClipboardContents(String attachContents) {
- clipboardContents = attachContents;
- }
-
- public void setUseClipboard(boolean b) {
- if (useClipboardButton != null) {
- useClipboardButton.setSelection(b);
- }
- initUseClipboard = b;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentPage.java
deleted file mode 100644
index 4c37fa031..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentPage.java
+++ /dev/null
@@ -1,270 +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.tasks.ui.wizards;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.LocalAttachment;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-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.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * A wizard page to enter details of a new attachment.
- *
- * @author Jeff Pound
- */
-public class NewAttachmentPage extends WizardPage {
-
- private LocalAttachment attachment;
-
- private Text filePath;
-
- private Text attachmentDesc;
-
- private Text attachmentComment;
-
- private Button isPatchButton;
-
- private Button attachContextButton;
-
- private static List<String> contentTypes;
-
- private static Map<String, String> extensions2Types;
-
- static {
- /* For UI */
- contentTypes = new LinkedList<String>();
- contentTypes.add("text/plain");
- contentTypes.add("text/html");
- contentTypes.add("application/xml");
- contentTypes.add("image/gif");
- contentTypes.add("image/jpeg");
- contentTypes.add("image/png");
- contentTypes.add("application/octet-stream");
-
- /* For auto-detect */
- extensions2Types = new HashMap<String, String>();
- extensions2Types.put("txt", "text/plain");
- extensions2Types.put("html", "text/html");
- extensions2Types.put("htm", "text/html");
- extensions2Types.put("jpg", "image/jpeg");
- extensions2Types.put("jpeg", "image/jpeg");
- extensions2Types.put("gif", "image/gif");
- extensions2Types.put("png", "image/png");
- extensions2Types.put("xml", "application/xml");
- extensions2Types.put("zip", "application/octet-stream");
- extensions2Types.put("tar", "application/octet-stream");
- extensions2Types.put("gz", "application/octet-stream");
- }
-
- protected NewAttachmentPage(LocalAttachment att) {
- super("AttachmentDetails");
- setTitle("Attachment Details");
- setMessage("Provide a description and verify the content type of the attachment.");
- attachment = att;
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout gridLayout = new GridLayout();
- gridLayout.numColumns = 3;
- composite.setLayout(gridLayout);
- setControl(composite);
-
- composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- composite.setLayout(new GridLayout(3, false));
-
- final NewAttachmentPage thisPage = this;
-
- new Label(composite, SWT.NONE).setText("File");
- filePath = new Text(composite, SWT.BORDER);
- filePath.setEditable(false);
- filePath.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
-
- new Label(composite, SWT.NONE).setText("Description");
- attachmentDesc = new Text(composite, SWT.BORDER);
- attachmentDesc.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
-
- attachmentDesc.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- if ("".equals(attachmentDesc.getText().trim())) {
- thisPage.setErrorMessage("Description required");
- } else {
- if (!"".equals(filePath.getText())) {
- thisPage.setPageComplete(true);
- thisPage.setErrorMessage(null);
- }
- }
- }
-
- });
-
- Label label = new Label(composite, SWT.NONE);
- label.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false));
- label.setText("Comment");
- attachmentComment = new Text(composite, SWT.V_SCROLL | SWT.BORDER | SWT.WRAP);
- attachmentComment.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
-
- new Label(composite, SWT.NONE).setText("Content Type");// .setBackground(parent.getBackground());
-
- final Combo contentTypeList = new Combo(composite, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY);
- contentTypeList.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false, 2, 1));
- final HashMap<String, Integer> contentTypeIndices = new HashMap<String, Integer>();
- Iterator<String> iter = contentTypes.iterator();
- int i = 0;
- while (iter.hasNext()) {
- String next = iter.next();
- contentTypeList.add(next);
- contentTypeIndices.put(next, new Integer(i));
- i++;
- }
-
- /* Update attachment on select content type */
- contentTypeList.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
- }
-
- public void widgetSelected(SelectionEvent e) {
- attachment.setContentType(contentTypeList.getItem(contentTypeList.getSelectionIndex()));
- }
- });
- contentTypeList.select(0);
- attachment.setContentType(contentTypeList.getItem(0));
-
- // TODO: is there a better way to pad?
- new Label(composite, SWT.NONE);
-
- isPatchButton = new Button(composite, SWT.CHECK);
- isPatchButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false, 2, 1));
- isPatchButton.setText("Patch");
-
- // TODO: is there a better way to pad?
- new Label(composite, SWT.NONE);
-
- attachContextButton = new Button(composite, SWT.CHECK);
- attachContextButton.setLayoutData(new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false, 2, 1));
- attachContextButton.setText("Attach Context");
- attachContextButton.setImage(TaskListImages.getImage(TaskListImages.CONTEXT_ATTACH));
- attachContextButton.setEnabled((((NewAttachmentWizard) getWizard()).hasContext()));
-
- /*
- * Attachment file name listener, update the local attachment
- * accordingly
- */
- filePath.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- // Determine type by extension
- int index = filePath.getText().lastIndexOf(".");
- if (index > 0 && index < filePath.getText().length()) {
- String ext = filePath.getText().substring(index + 1);
- String type = extensions2Types.get(ext.toLowerCase());
- if (type != null) {
- contentTypeList.select(contentTypeIndices.get(type));
- attachment.setContentType(type);
- }
- }
-
- // check page completenes
- if ("".equals(attachmentDesc.getText())) {
- thisPage.setErrorMessage("Description required");
- } else {
- if (!"".equals(filePath.getText())) {
- thisPage.setPageComplete(true);
- thisPage.setErrorMessage(null);
- }
- }
- }
- });
-
- filePath.setText(attachment.getFilePath());
-
- /* Listener for isPatch */
- isPatchButton.addSelectionListener(new SelectionListener() {
- private int lastSelected;
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
- }
-
- public void widgetSelected(SelectionEvent e) {
- attachment.setPatch(isPatchButton.getSelection());
- if (isPatchButton.getSelection()) {
- lastSelected = contentTypeList.getSelectionIndex();
- contentTypeList.select(0);
- contentTypeList.setEnabled(false);
- if (attachContextButton.isEnabled()) {
- attachContextButton.setSelection(true);
- }
- } else {
- contentTypeList.setEnabled(true);
- contentTypeList.select(lastSelected);
- }
- }
- });
- }
-
- public boolean isPageComplete() {
- return !"".equals(filePath.getText().trim()) && !"".equals(attachmentDesc.getText().trim());
- }
-
- public void populateAttachment() {
- attachment.setDescription(attachmentDesc.getText());
- attachment.setComment(attachmentComment.getText());
- }
-
- public LocalAttachment getAttachment() {
- return attachment;
- }
-
- public boolean canFlipToNextPage() {
- return isPageComplete();
- }
-
- public void setFilePath(String path) {
- filePath.setText(path);
- if (path.endsWith(".patch")) {
- isPatchButton.setSelection(true);
- if (attachContextButton.isEnabled()) {
- attachContextButton.setSelection(true);
- }
- }
- }
-
- public IWizardPage getNextPage() {
- populateAttachment();
- PreviewAttachmentPage page = new PreviewAttachmentPage(getAttachment());
- page.setWizard(getWizard());
- return page;
- }
-
- public boolean getAttachContext() {
- return attachContextButton.getSelection();
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizard.java
deleted file mode 100644
index d5fef0e7f..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizard.java
+++ /dev/null
@@ -1,250 +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.tasks.ui.wizards;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.util.WebBrowserDialog;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.LocalAttachment;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * A wizard to add a new attachment to a task report.
- *
- * @author Jeff Pound
- */
-public class NewAttachmentWizard extends Wizard {
-
- private static final String DIALOG_SETTINGS_KEY = "AttachmentWizard";
-
- private LocalAttachment attachment;
-
- private InputAttachmentSourcePage inputPage;
-
- private NewAttachmentPage attachPage;
-
- private NewAttachmentWizardDialog dialog;
-
- private boolean hasNewDialogSettings;
-
- private TaskRepository repository;
-
- private AbstractRepositoryTask task;
-
- public NewAttachmentWizard(TaskRepository repository, AbstractRepositoryTask task) {
- super();
- this.task = task;
- this.repository = repository;
- setNeedsProgressMonitor(true);
- setWindowTitle("Add Attachment");
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- attachment = new LocalAttachment();
- attachment.setFilePath("");
- inputPage = new InputAttachmentSourcePage(this);
-
- IDialogSettings workbenchSettings = TasksUiPlugin.getDefault().getDialogSettings();
- IDialogSettings section = workbenchSettings.getSection(DIALOG_SETTINGS_KEY);
- if (section == null) {
- hasNewDialogSettings = true;
- } else {
- hasNewDialogSettings = false;
- setDialogSettings(section);
- }
- }
-
- public NewAttachmentWizard(TaskRepository repository, AbstractRepositoryTask task, File attachFile) {
- this(repository, task);
- attachment.setFilePath(attachFile.getAbsolutePath());
- }
-
- public NewAttachmentWizard(TaskRepository repository, AbstractRepositoryTask task, String attachContents) {
- this(repository, task);
- inputPage.setUseClipboard(true);
- inputPage.setClipboardContents(attachContents);
- attachment.setFilePath(InputAttachmentSourcePage.CLIPBOARD_LABEL);
- }
-
- @Override
- public boolean performFinish() {
- /* TODO jpound - support non-text in clipboard */
- attachPage.populateAttachment();
- String path = inputPage.getAbsoluteAttachmentPath();
- if (InputAttachmentSourcePage.CLIPBOARD_LABEL.equals(path)) {
- // write temporary file
- String contents = inputPage.getClipboardContents();
- if (contents == null) {
- // TODO Handle error
- }
-
- File file = new File(TasksUiPlugin.getDefault().getDefaultDataDirectory()
- + System.getProperty("file.separator").charAt(0) + "Clipboard-attachment");
- try {
- FileWriter writer = new FileWriter(file);
- writer.write(contents);
- writer.flush();
- writer.close();
- } catch (IOException e) {
- // TODO Handle error
- }
- path = file.getAbsolutePath();
- attachment.setDeleteAfterUpload(true);
- }
- attachment.setFilePath(path);
-
- // Save the dialog settings
- if (hasNewDialogSettings) {
- IDialogSettings workbenchSettings = TasksUiPlugin.getDefault().getDialogSettings();
- IDialogSettings section = workbenchSettings.getSection(DIALOG_SETTINGS_KEY);
- section = workbenchSettings.addNewSection(DIALOG_SETTINGS_KEY);
- setDialogSettings(section);
- }
-
- // upload the attachment
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repository.getKind());
- final IAttachmentHandler attachmentHandler = connector.getAttachmentHandler();
- if (attachmentHandler == null) {
- return false;
- }
- final boolean attachContext = attachPage.getAttachContext();
-
- Job submitJob = new Job("Submitting attachment") {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(repository.getKind());
- try {
- attachmentHandler.uploadAttachment(repository, task, attachment.getComment(), attachment
- .getDescription(), new File(attachment.getFilePath()), attachment.getContentType(),
- attachment.isPatch(), TasksUiPlugin.getDefault().getProxySettings());
-
- if (attachment.getDeleteAfterUpload()) {
- File file = new File(attachment.getFilePath());
- if (!file.delete()) {
- // TODO: Handle bad clean up
- }
- }
-
- if (attachContext) {
- connector.attachContext(repository, (AbstractRepositoryTask) task, "", TasksUiPlugin.getDefault().getProxySettings());
- // attachContext sets outgoing state but we want to recieve incoming
- // on synchronization. This could result in lost edits so need to
- // review the whole attachment interaction.
- task.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
- }
-
- } catch (final CoreException e) {
- if (e.getStatus().getCode() == Status.INFO) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- WebBrowserDialog.openAcceptAgreement(null, "Upload Error", e.getStatus().getMessage(),
- e.getStatus().getException().getMessage());
- }
- });
- } else if (e.getStatus().getCode() == Status.ERROR) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- MessageDialog.openError(null, "Upload Error", e.getStatus().getMessage());
- }
- });
- }
- }
-
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, false, new JobChangeAdapter() {
- public void done(final IJobChangeEvent event) {
- if (event.getResult().getException() != null) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- MessageDialog.openError(Display.getDefault().getActiveShell(),
- TasksUiPlugin.TITLE_DIALOG, event.getResult().getMessage());
- }
- });
- }
- }
- });
- return Status.OK_STATUS;
- }
- };
-
- submitJob.schedule();
- return true;
- }
-
- protected boolean hasContext() {
- return ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier());
- }
-
- @Override
- public boolean canFinish() {
- return attachPage.isPageComplete();
- }
-
- @Override
- public void addPages() {
- super.addPages();
- if ("".equals(attachment.getFilePath())) {
- addPage(inputPage);
- }
- addPage((attachPage = new NewAttachmentPage(attachment)));
- }
-
- public LocalAttachment getAttachment() {
- return attachment;
- }
-
- protected String getFilePath() {
- return inputPage.getAttachmentName();
- }
-
- public IWizardPage getNextPage(IWizardPage page) {
- attachPage.setFilePath(inputPage.getAttachmentName());
- return super.getNextPage(page);
- }
-
- public void showPage(IWizardPage page) {
- dialog.showPage(page);
- }
-
- public void setDialog(NewAttachmentWizardDialog dialog) {
- this.dialog = dialog;
- }
-
- public String getClipboardContents() {
- return inputPage.getClipboardContents();
- }
-
- public boolean needsPreviousAndNextButtons() {
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizardDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizardDialog.java
deleted file mode 100644
index 9d0db8d40..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewAttachmentWizardDialog.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.wizards;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author Jeff Pound
- */
-public class NewAttachmentWizardDialog extends WizardDialog {
-
- private static final String ATTACHMENT_WIZARD_SETTINGS_SECTION = "PatchWizard"; //$NON-NLS-1$
-
- public NewAttachmentWizardDialog(Shell parent, IWizard wizard) {
- super(parent, wizard);
-
- setShellStyle(getShellStyle() | SWT.RESIZE);
- setMinimumPageSize(600, 300);
- setPageSize(600, 300);
- }
-
- protected IDialogSettings getDialogBoundsSettings() {
- IDialogSettings settings = TasksUiPlugin.getDefault().getDialogSettings();
- IDialogSettings section = settings.getSection(ATTACHMENT_WIZARD_SETTINGS_SECTION);
- if (section == null) {
- section = settings.addNewSection(ATTACHMENT_WIZARD_SETTINGS_SECTION);
- }
- return section;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewLocalCategoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewLocalCategoryWizard.java
deleted file mode 100644
index 02d357479..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewLocalCategoryWizard.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.tasks.ui.actions.NewCategoryAction;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * @author Mik Kersten
- */
-public class NewLocalCategoryWizard extends Wizard implements INewWizard {
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- setForcePreviousAndNextButtons(false);
- }
-
- @Override
- public boolean canFinish() {
- return true;
- }
-
- @Override
- public boolean performFinish() {
- new NewCategoryAction(TaskListView.openInActivePerspective()).run();
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewQueryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewQueryWizard.java
deleted file mode 100644
index 282a845b0..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewQueryWizard.java
+++ /dev/null
@@ -1,49 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryFilter;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Eugene Kuleshov
- */
-public class NewQueryWizard extends MultiRepositoryAwareWizard {
-
- private static final String TITLE = "New Repository Query";
-
- public NewQueryWizard() {
- super(new SelectRepositoryPageForNewQuery(), TITLE);
- }
-
- public NewQueryWizard(IStructuredSelection selection) {
- super(new SelectRepositoryPageForNewQuery().setSelection(selection), TITLE);
- }
-
- private static final class SelectRepositoryPageForNewQuery extends SelectRepositoryPage {
- public SelectRepositoryPageForNewQuery() {
- super(TaskRepositoryFilter.ALL);
- }
-
- @Override
- protected IWizard createWizard(TaskRepository taskRepository) {
- AbstractRepositoryConnectorUi repositoryUi = TasksUiPlugin.getRepositoryUi(taskRepository.getKind());
- return repositoryUi.getQueryWizard(taskRepository, null);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskPage.java
deleted file mode 100644
index be88ea084..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskPage.java
+++ /dev/null
@@ -1,37 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryFilter;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Mik Kersten
- * @author Euegene Kuleshov
- */
-public class NewRepositoryTaskPage extends SelectRepositoryPage {
-
- public NewRepositoryTaskPage(TaskRepositoryFilter taskRepositoryFilter) {
- super(taskRepositoryFilter);
- }
-
- @Override
- protected IWizard createWizard(TaskRepository taskRepository) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- taskRepository.getKind());
- return connectorUi.getNewTaskWizard(taskRepository, getSelection());
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java
deleted file mode 100644
index 1a3ac7934..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryTaskWizard.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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.tasks.core.TaskRepositoryFilter;
-
-/**
- * @author Mik Kersten
- * @author Eugene Kuleshov
- * @author Steffen Pingel
- */
-public class NewRepositoryTaskWizard extends MultiRepositoryAwareWizard {
-
- private static final String TITLE = "New Repository Task";
-
- public NewRepositoryTaskWizard() {
- super(new NewRepositoryTaskPage(TaskRepositoryFilter.CAN_CREATE_NEW_TASK), TITLE);
- setNeedsProgressMonitor(true);
- }
-
- public NewRepositoryTaskWizard(IStructuredSelection selection) {
- super(new NewRepositoryTaskPage(TaskRepositoryFilter.CAN_CREATE_NEW_TASK).setSelection(selection), TITLE);
- setNeedsProgressMonitor(true);
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java
deleted file mode 100644
index d8f0d1368..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java
+++ /dev/null
@@ -1,58 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.mylar.internal.tasks.ui.actions.AddRepositoryAction;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * @author Mik Kersten
- */
-public class NewRepositoryWizard extends AbstractRepositoryClientWizard {
-
- public NewRepositoryWizard() {
- super();
- super.setForcePreviousAndNextButtons(true);
- setWindowTitle(AddRepositoryAction.TITLE);
- }
-
- @Override
- public boolean performFinish() {
- if (canFinish()) {
- TaskRepository repository = abstractRepositorySettingsPage.createTaskRepository();
- TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- return true;
- }
- return false;
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-
- @Override
- public void addPages() {
- super.addPages();
- }
-
- public void setRepositorySettingsPage(AbstractRepositorySettingsPage abstractRepositorySettingsPage) {
- this.abstractRepositorySettingsPage = abstractRepositorySettingsPage;
- }
-
- @Override
- public boolean canFinish() {
- return super.canFinish() && abstractRepositorySettingsPage != null
- && abstractRepositorySettingsPage.isPageComplete();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskPage.java
deleted file mode 100644
index 211ed2c90..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskPage.java
+++ /dev/null
@@ -1,43 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Wizard page for creating new tickets through a web browser.
- *
- * @author Eugene Kuleshov
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class NewWebTaskPage extends WizardPage {
-
- public NewWebTaskPage() {
- super("New Task");
-
- setTitle("Create via Web Browser");
- setDescription("This will open a web browser that can be used to create a new task.\n"
- + "Note: you may need to log in via the web UI.");
- }
-
- public void createControl(Composite parent) {
- Text text = new Text(parent, SWT.WRAP);
- text.setEditable(false);
- text.setText("Once submitted synchronize queries or add the task to a category.\n");
- setControl(text);
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskWizard.java
deleted file mode 100644
index 0097613fe..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewWebTaskWizard.java
+++ /dev/null
@@ -1,61 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-
-/**
- * Wizard for creating new tickets through a web browser.
- *
- * @author Eugene Kuleshov
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class NewWebTaskWizard extends Wizard implements INewWizard {
-
- protected TaskRepository taskRepository;
- protected String newTaskUrl;
-
- public NewWebTaskWizard(TaskRepository taskRepository, String newTaskUrl) {
- this.taskRepository = taskRepository;
- this.newTaskUrl = newTaskUrl;
-
- setWindowTitle("New Repository Task");
- setDefaultPageImageDescriptor(TaskListImages.BANNER_REPOSITORY);
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-
- @Override
- public void addPages() {
- addPage(new NewWebTaskPage());
- }
-
- @Override
- public boolean canFinish() {
- return true;
- }
-
- @Override
- public boolean performFinish() {
- TaskUiUtil.openUrl(newTaskUrl);
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/PreviewAttachmentPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/PreviewAttachmentPage.java
deleted file mode 100644
index 6a71a49e6..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/PreviewAttachmentPage.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.tasks.ui.wizards;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.tasks.core.LocalAttachment;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Shows a preview of a LocalAttachment.
- *
- * @author Jeff Pound
- */
-public class PreviewAttachmentPage extends WizardPage {
-
- private static final String PAGE_NAME = "PreviewAttachmentPage";
-
- private static final String PAGE_DESCRIPTION = "Attachment preview";
-
- private LocalAttachment attachment;
-
- private static HashMap<String, String> textTypes;
-
- private static HashMap<String, String> imageTypes;
-
- static {
- textTypes = new HashMap<String, String>();
- imageTypes = new HashMap<String, String>();
-
- textTypes.put("text/plain", "");
- textTypes.put("text/html", "");
- textTypes.put("text/html", "");
- textTypes.put("application/xml", "");
-
- imageTypes.put("image/jpeg", "");
- imageTypes.put("image/gif", "");
- imageTypes.put("image/png", "");
-
- // ("application/octet-stream", );
- }
-
- private static boolean isTextAttachment(String contentType) {
- return textTypes.get(contentType) != null;
- }
-
- private static boolean isImageAttachment(String contentType) {
- return imageTypes.get(contentType) != null;
- }
-
- protected PreviewAttachmentPage(LocalAttachment attachment) {
- super(PAGE_NAME);
- setDescription(PAGE_DESCRIPTION);
- this.attachment = attachment;
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout());
- setControl(composite);
-
- if (InputAttachmentSourcePage.CLIPBOARD_LABEL.equals(attachment.getFilePath())) {
- createTextPreview(composite, ((NewAttachmentWizard) getWizard()).getClipboardContents());
- } else if (PreviewAttachmentPage.isTextAttachment(attachment.getContentType())) {
- createTextPreview(composite, attachment);
- } else if (PreviewAttachmentPage.isImageAttachment(attachment.getContentType())) {
- createImagePreview(composite, attachment);
- } else {
- createGenericPreview(composite, attachment);
- }
- }
-
- private void createTextPreview(Composite composite, String contents) {
- Text text = new Text(composite, SWT.MULTI | SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = composite.getBounds().y;
- gd.widthHint = composite.getBounds().x;
- text.setLayoutData(gd);
- text.setText(contents);
- }
-
- private void createTextPreview(Composite composite, LocalAttachment attachment) {
- try {
- StringBuffer content = new StringBuffer();
- BufferedReader in = new BufferedReader(new FileReader(new File(attachment.getFilePath())));
- String line;
- while ((line = in.readLine()) != null) {
- content.append(line);
- content.append("\n");
- }
- in.close();
- createTextPreview(composite, content.toString());
-
- } catch (FileNotFoundException e) {
- createErrorPreview(composite, "Could not locate file '" + attachment.getFilePath() + "'");
- } catch (IOException e) {
- createErrorPreview(composite, "Error reading file '" + attachment.getFilePath() + "'");
- }
- }
-
- private void createImagePreview(Composite composite, LocalAttachment attachment) {
- final Image image = new Image(composite.getDisplay(), attachment.getFilePath());
- final Canvas canvas = new Canvas(composite, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL
- | SWT.H_SCROLL | SWT.BORDER);
- canvas.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- // Adapted from snippit 48
- // http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet48.java?rev=HEAD
- final Point origin = new Point(0, 0);
- final ScrollBar hBar = canvas.getHorizontalBar();
- hBar.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- int hSelection = hBar.getSelection();
- int destX = -hSelection - origin.x;
- Rectangle rect = image.getBounds();
- canvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false);
- origin.x = -hSelection;
- }
- });
- final ScrollBar vBar = canvas.getVerticalBar();
- vBar.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- int vSelection = vBar.getSelection();
- int destY = -vSelection - origin.y;
- Rectangle rect = image.getBounds();
- canvas.scroll(0, destY, 0, 0, rect.width, rect.height, false);
- origin.y = -vSelection;
- }
- });
- canvas.addListener(SWT.Resize, new Listener() {
- public void handleEvent(Event e) {
- Rectangle rect = image.getBounds();
- Rectangle client = canvas.getClientArea();
- hBar.setMaximum(rect.width);
- vBar.setMaximum(rect.height);
- hBar.setThumb(Math.min(rect.width, client.width));
- vBar.setThumb(Math.min(rect.height, client.height));
- int hPage = rect.width - client.width;
- int vPage = rect.height - client.height;
- int hSelection = hBar.getSelection();
- int vSelection = vBar.getSelection();
- if (hSelection >= hPage) {
- if (hPage <= 0)
- hSelection = 0;
- origin.x = -hSelection;
- }
- if (vSelection >= vPage) {
- if (vPage <= 0)
- vSelection = 0;
- origin.y = -vSelection;
- }
- canvas.redraw();
- }
- });
- canvas.addListener(SWT.Paint, new Listener() {
- public void handleEvent(Event e) {
- GC gc = e.gc;
- gc.drawImage(image, origin.x, origin.y);
- Rectangle rect = image.getBounds();
- Rectangle client = canvas.getClientArea();
- int marginWidth = client.width - rect.width;
- if (marginWidth > 0) {
- gc.fillRectangle(rect.width, 0, marginWidth, client.height);
- }
- int marginHeight = client.height - rect.height;
- if (marginHeight > 0) {
- gc.fillRectangle(0, rect.height, client.width, marginHeight);
- }
- }
- });
- }
-
- private void createGenericPreview(Composite composite, LocalAttachment attachment) {
- Label label = new Label(composite, SWT.NONE);
- label.setLayoutData(new GridData(GridData.FILL_BOTH));
- label.setText("Attaching File '" + attachment.getFilePath() + "'\nA preview the type '"
- + attachment.getContentType() + "' is currently not available");
- }
-
- private void createErrorPreview(Composite composite, String message) {
- Label label = new Label(composite, SWT.NONE);
- label.setLayoutData(new GridData(GridData.FILL_BOTH));
- label.setText(message);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryClientPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryClientPage.java
deleted file mode 100644
index de7c4e59b..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryClientPage.java
+++ /dev/null
@@ -1,107 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoryLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * @author Mik Kersten
- */
-public class SelectRepositoryClientPage extends WizardPage {
-
- private static final String DESCRIPTION = "You can connect to an existing account using one of the installed connectors.";
-
- private static final String TITLE = "Select a task repository type";
-
- private TableViewer viewer;
-
- private AbstractRepositoryClientWizard wizard;
-
- static class RepositoryContentProvider implements IStructuredContentProvider {
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
-
- public Object[] getElements(Object parent) {
- return TasksUiPlugin.getRepositoryManager().getRepositoryConnectors().toArray();
- }
- }
-
- public SelectRepositoryClientPage(AbstractRepositoryClientWizard wizard) {
- super(TITLE);
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- this.wizard = wizard;
- super.setWizard(wizard);
- }
-
- @Override
- public boolean canFlipToNextPage() {
- return wizard.getRepositoryConnector() != null;
- }
-
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- FillLayout layout = new FillLayout();
- container.setLayout(layout);
-
- viewer = new TableViewer(container, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(new RepositoryContentProvider());
- viewer.setLabelProvider(new TaskRepositoryLabelProvider());
- viewer.setInput(TasksUiPlugin.getRepositoryManager().getRepositoryConnectors());
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = (IStructuredSelection) event.getSelection();
- if (selection.getFirstElement() instanceof AbstractRepositoryConnector) {
- wizard.setRepositoryConnector((AbstractRepositoryConnector) selection.getFirstElement());
- SelectRepositoryClientPage.this.setPageComplete(true);
- wizard.getContainer().updateButtons();
- }
- }
-
- });
- setControl(container);
- }
-
- @Override
- public IWizardPage getNextPage() {
- if (isPageComplete()) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getRepositoryUi(
- wizard.getRepositoryConnector().getRepositoryType());
-
- AbstractRepositorySettingsPage nextPage = connectorUi.getSettingsPage();
- wizard.setRepositorySettingsPage(nextPage);
- nextPage.setWizard(wizard);
- return nextPage;
- } else {
- return super.getNextPage();
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryPage.java
deleted file mode 100644
index 28e7d0b74..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryPage.java
+++ /dev/null
@@ -1,267 +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.tasks.ui.wizards;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-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;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.jface.wizard.WizardSelectionPage;
-import org.eclipse.mylar.internal.tasks.ui.actions.AddRepositoryAction;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoryLabelProvider;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryFilter;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-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.Table;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Mik Kersten
- * @author Brock Janiczak
- * @author Steffen Pingel
- * @author Eugene Kuleshov
- */
-public abstract class SelectRepositoryPage extends WizardSelectionPage {
-
- private static final String DESCRIPTION = "Add new repositories using the " + TaskRepositoriesView.NAME
- + " view.\n" + "If a repository is missing it does not support the requested operation.";
-
- private static final String TITLE = "Select a repository";
-
- private TableViewer viewer;
-
- protected MultiRepositoryAwareWizard wizard;
-
- private List<TaskRepository> repositories = new ArrayList<TaskRepository>();
-
- private IStructuredSelection selection;
-
- private final TaskRepositoryFilter taskRepositoryFilter;
-
- class RepositoryContentProvider implements IStructuredContentProvider {
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
-
- public Object[] getElements(Object parent) {
- return repositories.toArray();
- }
- }
-
- public SelectRepositoryPage(TaskRepositoryFilter taskRepositoryFilter) {
- super(TITLE);
-
- setTitle(TITLE);
- setDescription(DESCRIPTION);
-
- this.taskRepositoryFilter = taskRepositoryFilter;
- this.repositories = getTaskRepositories();
- }
-
- public List<TaskRepository> getTaskRepositories() {
- List<TaskRepository> repositories = new ArrayList<TaskRepository>();
- TaskRepositoryManager repositoryManager = TasksUiPlugin.getRepositoryManager();
- for (AbstractRepositoryConnector connector : repositoryManager.getRepositoryConnectors()) {
- Set<TaskRepository> connectorRepositories = repositoryManager
- .getRepositories(connector.getRepositoryType());
- for (TaskRepository repository : connectorRepositories) {
- if (taskRepositoryFilter.accept(repository, connector)) {
- repositories.add(repository);
- }
- }
- }
- return repositories;
- }
-
- public SelectRepositoryPage setSelection(IStructuredSelection selection) {
- this.selection = selection;
- return this;
- }
-
- public IStructuredSelection getSelection() {
- return this.selection;
- }
-
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout(1, true);
- container.setLayout(layout);
-
- Table table = createTableViewer(container);
- GridData gridData = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
- table.setLayoutData(gridData);
-
- final AddRepositoryAction action = new AddRepositoryAction();
-
- Button button = new Button(container, SWT.NONE);
- button.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING));
- button.setText(AddRepositoryAction.TITLE);
- button.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- action.run();
- SelectRepositoryPage.this.repositories = getTaskRepositories();
- viewer.setInput(TasksUiPlugin.getRepositoryManager().getRepositoryConnectors());
- }
- });
-
- setControl(container);
- }
-
- protected Table createTableViewer(Composite container) {
- viewer = new TableViewer(container, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(new RepositoryContentProvider());
- // viewer.setLabelProvider(new TaskRepositoryLabelProvider());
- viewer.setLabelProvider(new DecoratingLabelProvider(new TaskRepositoryLabelProvider(), PlatformUI
- .getWorkbench().getDecoratorManager().getLabelDecorator()));
- viewer.setInput(TasksUiPlugin.getRepositoryManager().getRepositoryConnectors());
-
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = (IStructuredSelection) event.getSelection();
- if (selection.getFirstElement() instanceof TaskRepository) {
- setSelectedNode(new CustomWizardNode((TaskRepository) selection.getFirstElement()));
- setPageComplete(true);
- }
- setPageComplete(false);
- }
- });
-
- viewer.setSelection(new StructuredSelection(new Object[] { getSelectedRepository() }));
-
- viewer.addOpenListener(new IOpenListener() {
-
- public void open(OpenEvent event) {
- getContainer().showPage(getNextPage());
- }
-
- });
- viewer.getTable().showSelection();
- viewer.getTable().setFocus();
- return viewer.getTable();
- }
-
- protected TaskRepository getSelectedRepository() {
- if (selection == null) {
- return (TaskRepository) viewer.getElementAt(0);
- }
-
- Object element = selection.getFirstElement();
- if (element instanceof AbstractRepositoryQuery) {
- AbstractRepositoryQuery query = (AbstractRepositoryQuery) element;
- return getRepository(query.getRepositoryUrl(), query.getRepositoryKind());
-
- } else if (element instanceof AbstractQueryHit) {
- AbstractQueryHit queryHit = (AbstractQueryHit) element;
- if (queryHit.getParent() != null) {
- return getRepository(queryHit.getRepositoryUrl(), queryHit.getParent().getRepositoryKind());
- } else {
- return TasksUiPlugin.getRepositoryManager().getRepository(queryHit.getRepositoryUrl());
- }
- } else if (element instanceof AbstractRepositoryTask) {
- AbstractRepositoryTask task = (AbstractRepositoryTask) element;
- return getRepository(task.getRepositoryUrl(), task.getRepositoryKind());
- }
-
- // TODO handle project (when link from projects to repositories is
- // implemented)
-
- return null;
- }
-
- private TaskRepository getRepository(String repositoryUrl, String repositoryKind) {
- return TasksUiPlugin.getRepositoryManager().getRepository(repositoryKind, repositoryUrl);
- }
-
- protected abstract IWizard createWizard(TaskRepository taskRepository);
-
- private class CustomWizardNode implements IWizardNode {
-
- private final TaskRepository repository;
-
- private IWizard wizard;
-
- public CustomWizardNode(TaskRepository repository) {
- this.repository = repository;
- }
-
- public void dispose() {
- if (wizard != null) {
- wizard.dispose();
- }
- }
-
- public Point getExtent() {
- return new Point(-1, -1);
- }
-
- public IWizard getWizard() {
- if (wizard == null) {
- wizard = SelectRepositoryPage.this.createWizard(repository);
- }
-
- return wizard;
- }
-
- public boolean isContentCreated() {
- return wizard != null;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof CustomWizardNode)) {
- return false;
- }
- CustomWizardNode that = (CustomWizardNode) obj;
- if (this == that) {
- return true;
- }
-
- return this.repository.getKind().equals(that.repository.getKind())
- && this.repository.getUrl().equals(that.repository.getUrl());
- }
-
- @Override
- public int hashCode() {
- return 31 * this.repository.getUrl().hashCode() + this.repository.getKind().hashCode();
- }
-
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java
deleted file mode 100644
index 759ee9174..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizard.java
+++ /dev/null
@@ -1,368 +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.tasks.ui.wizards;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Locale;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.internal.tasks.ui.util.TaskDataExportJob;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IExportWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * Wizard for exporting tasklist data files to the file system. This wizard uses
- * a single page: TaskDataExportWizardPage
- *
- * @author Wesley Coelho
- * @author Mik Kersten
- */
-public class TaskDataExportWizard extends Wizard implements IExportWizard {
-
- /**
- * The name of the dialog store's section associated with the task data
- * export wizard
- */
- private final static String SETTINGS_SECTION = "org.eclipse.mylar.tasklist.ui.exportWizard";
-
- public final static String ZIP_FILE_PREFIX = "mylardata";
-
- private final static String ZIP_FILE_EXTENSION = ".zip";
-
- private final static String WINDOW_TITLE = "Export";
-
- private TaskDataExportWizardPage exportPage = null;
-
- public static String getZipFileName() {
- String fomratString = "yyyy-MM-dd";
- SimpleDateFormat format = new SimpleDateFormat(fomratString, Locale.ENGLISH);
- String date = format.format(new Date());
- return ZIP_FILE_PREFIX + "-" + date + ZIP_FILE_EXTENSION;
- }
-
- public TaskDataExportWizard() {
- IDialogSettings masterSettings = TasksUiPlugin.getDefault().getDialogSettings();
- setDialogSettings(getSettingsSection(masterSettings));
- setNeedsProgressMonitor(true);
- setWindowTitle(WINDOW_TITLE);
- }
-
- /**
- * Finds or creates a dialog settings section that is used to make the
- * dialog control settings persistent
- */
- public IDialogSettings getSettingsSection(IDialogSettings master) {
- IDialogSettings settings = master.getSection(SETTINGS_SECTION);
- if (settings == null) {
- settings = master.addNewSection(SETTINGS_SECTION);
- }
- return settings;
- }
-
- public void addPages() {
- exportPage = new TaskDataExportWizardPage();
- exportPage.setWizard(this);
- addPage(exportPage);
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- // no initialization needed
- }
-
- public boolean canFinish() {
- return exportPage.isPageComplete();
- }
-
- /**
- * Called when the user clicks finish. Saves the task data. Waits until all
- * overwrite decisions have been made before starting to save files. If any
- * overwrite is canceled, no files are saved and the user must adjust the
- * dialog.
- */
- public boolean performFinish() {
- boolean overwrite = exportPage.overwrite();
- boolean zip = exportPage.zip();
-
- Collection<ITask> taskContextsToExport = TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks();
-
- // Get file paths to check for existence
- String destDir = exportPage.getDestinationDirectory();
- final File destDirFile = new File(destDir);
- if (!destDirFile.exists() || !destDirFile.isDirectory()) {
- // This should never happen
- MylarStatusHandler.fail(new Exception("File Export Exception"),
- "Could not export data because specified location does not exist or is not a folder", true);
- return false;
- }
-
- final File destTaskListFile = new File(destDir + File.separator + TasksUiPlugin.DEFAULT_TASK_LIST_FILE);
- final File destActivationHistoryFile = new File(destDir + File.separator
- + MylarContextManager.CONTEXT_HISTORY_FILE_NAME + MylarContextManager.CONTEXT_FILE_EXTENSION);
- final File destZipFile = new File(destDir + File.separator + getZipFileName());
-
- // Prompt the user to confirm if ANY of the save repositoryOperations will cause
- // an overwrite
- if (!overwrite) {
-
- if (zip) {
- if (destZipFile.exists()) {
- if (!MessageDialog.openConfirm(getShell(), "Confirm File Replace", "The zip file "
- + destZipFile.getPath() + " already exists. Do you want to overwrite it?")) {
- return false;
- }
- }
- } else {
- if (exportPage.exportTaskList() && destTaskListFile.exists()) {
- if (!MessageDialog.openConfirm(getShell(), "Confirm File Replace", "The task list file "
- + destTaskListFile.getPath() + " already exists. Do you want to overwrite it?")) {
- return false;
- }
- }
-
- if (exportPage.exportActivationHistory() && destActivationHistoryFile.exists()) {
- if (!MessageDialog.openConfirm(getShell(), "Confirm File Replace",
- "The task activation history file " + destActivationHistoryFile.getPath()
- + " already exists. Do you want to overwrite it?")) {
- return false;
- }
- }
-
- if (exportPage.exportTaskContexts()) {
- for (ITask task : taskContextsToExport) {
- File contextFile = ContextCorePlugin.getContextManager()
- .getFileForContext(task.getHandleIdentifier());
- File destTaskFile = new File(destDir + File.separator + contextFile.getName());
- if (destTaskFile.exists()) {
- if (!MessageDialog.openConfirm(getShell(), "Confirm File Replace",
- "Task context files already exist in " + destDir
- + ". Do you want to overwrite them?")) {
- return false;
- } else {
- break;
- }
- }
- }
- }
- }
- }
-
- // FileCopyJob job = new FileCopyJob(destZipFile, destTaskListFile,
- // destActivationHistoryFile);
- TaskDataExportJob job = new TaskDataExportJob(exportPage.getDestinationDirectory(), exportPage.exportTaskList(), exportPage
- .exportActivationHistory(), exportPage.exportTaskContexts(), exportPage.zip(), destZipFile.getName(), taskContextsToExport);
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
-
- try {
- service.run(true, false, job);
- } catch (InvocationTargetException e) {
- MylarStatusHandler.fail(e, "Could not export files", true);
- } catch (InterruptedException e) {
- MylarStatusHandler.fail(e, "Could not export files", true);
- }
-
- exportPage.saveSettings();
- return true;
- }
-
- // /** Job that performs the file copying and zipping */
- // class FileCopyJob implements IRunnableWithProgress {
- //
- // private static final String JOB_LABEL = "Exporting Data";
- //
- // private File destZipFile = null;
- //
- // private File destTaskListFile = null;
- //
- // private File destActivationHistoryFile = null;
- //
- // private boolean zip;
- //
- // private boolean exportTaskList;
- //
- // private boolean exportActivationHistory;
- //
- // private boolean exportTaskContexts;
- //
- // private String destinationDirectory;
- //
- // public FileCopyJob(File destZipFile, File destTaskListFile, File
- // destActivationHistoryFile) {
- // this.destZipFile = destZipFile;
- // this.destTaskListFile = destTaskListFile;
- // this.destActivationHistoryFile = destActivationHistoryFile;
- //
- // // Get parameters here to avoid accessing the UI thread
- // this.zip = exportPage.zip();
- // this.exportTaskList = exportPage.exportTaskList();
- // this.exportActivationHistory = exportPage.exportActivationHistory();
- // this.exportTaskContexts = exportPage.exportTaskContexts();
- // this.destinationDirectory = exportPage.getDestinationDirectory();
- // }
- //
- // public void run(final IProgressMonitor monitor) throws
- // InvocationTargetException, InterruptedException {
- // List<ITask> tasks = getAllTasks();
- // monitor.beginTask(JOB_LABEL, tasks.size() + 2);
- //
- // // List of files to add to the zip archive
- // List<File> filesToZip = new ArrayList<File>();
- //
- // // Map of file paths used to avoid duplicates
- // Map<String, String> filesToZipMap = new HashMap<String, String>();
- //
- // if (exportTaskList) {
- // MylarTaskListPlugin.getTaskListManager().saveTaskList();
- //
- // String sourceTaskListPath = ContextCorePlugin.getDefault().getDataDirectory() +
- // File.separator
- // + MylarTaskListPlugin.DEFAULT_TASK_LIST_FILE;
- // File sourceTaskListFile = new File(sourceTaskListPath);
- //
- // if (zip) {
- // filesToZip.add(sourceTaskListFile);
- // } else {
- // if (!copy(sourceTaskListFile, destTaskListFile)) {
- // MylarStatusHandler.fail(new Exception("Export Exception"), "Could not
- // export task list file.",
- // false);
- // }
- // monitor.worked(1);
- // }
- //
- // }
- //
- // if (exportActivationHistory) {
- // try {
- // File sourceActivationHistoryFile = new
- // File(ContextCorePlugin.getDefault().getDataDirectory()
- // + File.separator + MylarContextManager.CONTEXT_HISTORY_FILE_NAME
- // + MylarContextManager.CONTEXT_FILE_EXTENSION);
- //
- // ContextCorePlugin.getContextManager().saveActivityHistoryContext();
- //
- // if (zip) {
- // filesToZip.add(sourceActivationHistoryFile);
- // } else {
- // copy(sourceActivationHistoryFile, destActivationHistoryFile);
- // monitor.worked(1);
- // }
- // } catch (RuntimeException e) {
- // MylarStatusHandler.fail(e, "Could not export activity history context
- // file", true);
- // }
- // }
- //
- // if (exportTaskContexts) {
- // boolean errorDisplayed = false; // Prevent many repeated error
- // // messages
- // for (ITask task : tasks) {
- //
- // if
- // (!ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier()))
- // {
- // continue; // Tasks without a context have no file to
- // // copy
- // }
- //
- // File contextFile =
- // ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
- //
- // File destTaskFile = new File(destinationDirectory + File.separator +
- // contextFile.getName());
- // File sourceTaskFile = contextFile;
- // // new File(ContextCorePlugin.getDefault().getDataDirectory() +
- // // File.separator + task.getContextPath()
- // // + MylarContextManager.CONTEXT_FILE_EXTENSION);
- //
- // if (zip) {
- // if (!filesToZipMap.containsKey(task.getHandleIdentifier())) {
- // filesToZip.add(sourceTaskFile);
- // filesToZipMap.put(task.getHandleIdentifier(), null);
- // }
- // } else {
- // if (!copy(sourceTaskFile, destTaskFile) && !errorDisplayed) {
- // MylarStatusHandler.fail(new Exception("Export Exception: " +
- // sourceTaskFile.getPath()
- // + " -> " + destTaskFile.getPath()),
- // "Could not export one or more task context files.", true);
- // errorDisplayed = true;
- // }
- // monitor.worked(1);
- // }
- // }
- // }
- //
- // if (zip) {
- // try {
- // if (destZipFile.exists()) {
- // destZipFile.delete();
- // }
- // ZipFileUtil.createZipFile(destZipFile, filesToZip, monitor);
- // } catch (Exception e) {
- // MylarStatusHandler.fail(e, "Could not create zip file.", true);
- // }
- // }
- // monitor.done();
- //
- // }
- // }
-
- // /** Returns all tasks in the task list root or a category in the task
- // list */
- // protected List<ITask> getAllTasks() {
- // List<ITask> allTasks = new ArrayList<ITask>();
- // TaskList taskList =
- // MylarTaskListPlugin.getTaskListManager().getTaskList();
- //
- // allTasks.addAll(taskList.getRootTasks());
- //
- // for (AbstractTaskContainer category : taskList.getCategories()) {
- // allTasks.addAll(category.getChildren());
- // }
- //
- // return allTasks;
- // }
-
- // // Note: Copied from MylarTaskListPlugin
- // private boolean copy(File src, File dst) {
- // try {
- // InputStream in = new FileInputStream(src);
- // OutputStream out = new FileOutputStream(dst);
- //
- // // Transfer bytes from in to out
- // byte[] buf = new byte[1024];
- // int len;
- // while ((len = in.read(buf)) > 0) {
- // out.write(buf, 0, len);
- // }
- // in.close();
- // out.close();
- // return true;
- // } catch (IOException ioe) {
- // return false;
- // }
- // }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizardPage.java
deleted file mode 100644
index e8911113c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataExportWizardPage.java
+++ /dev/null
@@ -1,296 +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.tasks.ui.wizards;
-
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-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.DirectoryDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Wizard Page for the Task Data Export Wizard
- *
- * @author Wesley Coelho
- * @author Mik Kersten
- */
-public class TaskDataExportWizardPage extends WizardPage {
-
- private static final String LABEL_TASK_LIST = "Task List";
-
- private static final String LABEL_TASK_CONTEXTS = "Task Contexts";
-
- private static final String LABEL_ACTIVITY_HISTORY = "Task Activity History";
-
- protected final static String PAGE_TITLE = "Export Mylar Task Data";
-
- public final static String PAGE_NAME = PAGE_TITLE;
-
- private Button taskListCheckBox = null;
-
- private Button taskActivationHistoryCheckBox = null;
-
- private Button taskContextsCheckBox = null;
-
- // private Button zipCheckBox = null;
-
- private Button browseButton = null;
-
- private Text destDirText = null;
-
- private Button overwriteCheckBox = null;
-
- // Key values for the dialog settings object
- private final static String SETTINGS_SAVED = "Settings saved";
-
- private final static String TASKLIST_SETTING = "TaskList setting";
-
- private final static String ACTIVATION_HISTORY_SETTING = "Activation history setting";
-
- private final static String CONTEXTS_SETTING = "Contexts setting";
-
- private final static String DEST_DIR_SETTING = "Destination directory setting";
-
- private final static String OVERWRITE_SETTING = "Overwrite setting";
-
- // private final static String ZIP_SETTING = "Zip Setting";
-
- public TaskDataExportWizardPage() {
- super("org.eclipse.mylar.tasklist.exportPage", PAGE_TITLE, TasksUiPlugin.imageDescriptorFromPlugin(
- TasksUiPlugin.PLUGIN_ID, "icons/wizban/banner-export.gif"));
- setPageComplete(false);
- }
-
- public String getName() {
- return PAGE_NAME;
- }
-
- /**
- * Create the widgets on the page
- */
- public void createControl(Composite parent) {
- try {
- Composite container = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(1, false);
- container.setLayout(layout);
- createFileSelectionControl(container);
- createExportDirectoryControl(container);
-
- // zipCheckBox = createCheckBox(container, "Export to zip file: " +
- // TaskDataExportWizard.getZipFileName());
- overwriteCheckBox = createCheckBox(container, "Overwrite existing files without warning");
-
- initSettings();
-
- setControl(container);
-
- setPageComplete(validate());
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not create export wizard page", true);
- }
- }
-
- /**
- * Create widgets for selecting the data files to export
- */
- private void createFileSelectionControl(Composite parent) {
- Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
- GridLayout gl = new GridLayout(1, false);
- group.setLayout(gl);
- GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
- group.setLayoutData(gridData);
- group.setText("Select data to export:");
-
- taskListCheckBox = createCheckBox(group, LABEL_TASK_LIST);
- taskActivationHistoryCheckBox = createCheckBox(group, LABEL_ACTIVITY_HISTORY);
- taskContextsCheckBox = createCheckBox(group, LABEL_TASK_CONTEXTS);
- }
-
- /**
- * Create widgets for specifying the destination directory
- */
- private void createExportDirectoryControl(Composite parent) {
- Group destDirGroup = new Group(parent, SWT.SHADOW_ETCHED_IN);
- destDirGroup.setText("Export destination folder");
- destDirGroup.setLayout(new GridLayout(2, false));
- destDirGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- new Label(destDirGroup, SWT.NONE).setText("Export file: "+TaskDataExportWizard.getZipFileName());
- new Label(destDirGroup, SWT.NONE);
-
-
- destDirText = new Text(destDirGroup, SWT.BORDER);
- destDirText.setEditable(false);
- destDirText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- destDirText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- controlChanged();
- }
- });
-
- browseButton = new Button(destDirGroup, SWT.PUSH);
- browseButton.setText("Browse...");
- browseButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- DirectoryDialog dialog = new DirectoryDialog(getShell());
- dialog.setText("Folder Selection");
- dialog.setMessage("Specify the destination folder for task data");
- String dir = destDirText.getText();
- dialog.setFilterPath(dir);
- dir = dialog.open();
- if (dir == null || dir.equals(""))
- return;
- destDirText.setText(dir);
- }
- });
- }
-
- /**
- * Initializes controls with values from the Dialog Settings object
- */
- protected void initSettings() {
- IDialogSettings settings = getDialogSettings();
-
- if (settings.get(SETTINGS_SAVED) == null) {
- // Set default values
- taskListCheckBox.setSelection(true);
- taskActivationHistoryCheckBox.setSelection(true);
- taskContextsCheckBox.setSelection(true);
- destDirText.setText("");
- overwriteCheckBox.setSelection(true);
- // zipCheckBox.setSelection(false);
- } else {
- // Retrieve previous values from the dialog settings
- taskListCheckBox.setSelection(true); // force it
- // taskListCheckBox.setSelection(settings.getBoolean(TASKLIST_SETTING));
- taskActivationHistoryCheckBox.setSelection(settings.getBoolean(ACTIVATION_HISTORY_SETTING));
- taskContextsCheckBox.setSelection(settings.getBoolean(CONTEXTS_SETTING));
- String directory = settings.get(DEST_DIR_SETTING);
- if (directory != null) {
- destDirText.setText(settings.get(DEST_DIR_SETTING));
- }
- overwriteCheckBox.setSelection(settings.getBoolean(OVERWRITE_SETTING));
- // zipCheckBox.setSelection(settings.getBoolean(ZIP_SETTING));
- }
- }
-
- /**
- * Saves the control values in the dialog settings to be used as defaults
- * the next time the page is opened
- */
- public void saveSettings() {
- IDialogSettings settings = getDialogSettings();
-
- settings.put(TASKLIST_SETTING, taskListCheckBox.getSelection());
- settings.put(ACTIVATION_HISTORY_SETTING, taskActivationHistoryCheckBox.getSelection());
- settings.put(CONTEXTS_SETTING, taskContextsCheckBox.getSelection());
- settings.put(DEST_DIR_SETTING, destDirText.getText());
- settings.put(OVERWRITE_SETTING, overwriteCheckBox.getSelection());
- // settings.put(ZIP_SETTING, zipCheckBox.getSelection());
-
- settings.put(SETTINGS_SAVED, SETTINGS_SAVED);
- }
-
- /** Convenience method for creating a new checkbox */
- protected Button createCheckBox(Composite parent, String text) {
- Button newButton = new Button(parent, SWT.CHECK);
- newButton.setText(text);
-
- newButton.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- controlChanged();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // No action required
- }
- });
-
- return newButton;
- }
-
- /** Called to indicate that a control's value has changed */
- public void controlChanged() {
- setPageComplete(validate());
- }
-
- /** Returns true if the information entered by the user is valid */
- protected boolean validate() {
-
- // Check that at least one type of data has been selected
- if (!taskListCheckBox.getSelection() && !taskActivationHistoryCheckBox.getSelection()
- && !taskContextsCheckBox.getSelection()) {
- return false;
- }
-
- // Check that a destination dir has been specified
- if (destDirText.getText().equals("")) {
- return false;
- }
-
- return true;
- }
-
- /** Returns the directory where data files are to be saved */
- public String getDestinationDirectory() {
- return destDirText.getText();
- }
-
- /** True if the user wants to export the task list */
- public boolean exportTaskList() {
- return taskListCheckBox.getSelection();
- }
-
- /** True if the user wants to export task activation history */
- public boolean exportActivationHistory() {
- return taskActivationHistoryCheckBox.getSelection();
- }
-
- /** True if the user wants to export task context files */
- public boolean exportTaskContexts() {
- return taskContextsCheckBox.getSelection();
- }
-
- /** True if the user wants to overwrite files by default */
- public boolean overwrite() {
- return overwriteCheckBox.getSelection();
- }
-
- /** True if the user wants to write to a zip file */
- public boolean zip() {
- // return zipCheckBox.getSelection();
- return true;
- }
-
- /** For testing only. Sets controls to the specified values */
- public void setParameters(boolean overwrite, boolean exportTaskList, boolean exportActivationHistory,
- boolean exportTaskContexts, boolean zip, String destinationDir) {
- overwriteCheckBox.setSelection(overwrite);
- taskListCheckBox.setSelection(exportTaskList);
- taskActivationHistoryCheckBox.setSelection(exportActivationHistory);
- taskContextsCheckBox.setSelection(exportTaskContexts);
- destDirText.setText(destinationDir);
- // zipCheckBox.setSelection(zip);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java
deleted file mode 100644
index fd8a531e2..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java
+++ /dev/null
@@ -1,490 +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.tasks.ui.wizards;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-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.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.internal.context.core.util.ZipFileUtil;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TaskListDataMigration;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IImportWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * @author Rob Elves Some code leveraged from TaskDataExportWizard
- */
-public class TaskDataImportWizard extends Wizard implements IImportWizard {
-
- private final static String SETTINGS_SECTION = "org.eclipse.mylar.tasklist.ui.importWizard";
-
- private final static String WINDOW_TITLE = "Import";
-
- private TaskDataImportWizardPage importPage = null;
-
- public TaskDataImportWizard() {
- super();
- IDialogSettings masterSettings = TasksUiPlugin.getDefault().getDialogSettings();
- setDialogSettings(getSettingsSection(masterSettings));
- setNeedsProgressMonitor(true);
- setWindowTitle(WINDOW_TITLE);
- }
-
- /**
- * Finds or creates a dialog settings section that is used to make the
- * dialog control settings persistent
- */
- public IDialogSettings getSettingsSection(IDialogSettings master) {
- IDialogSettings settings = master.getSection(SETTINGS_SECTION);
- if (settings == null) {
- settings = master.addNewSection(SETTINGS_SECTION);
- }
- return settings;
- }
-
- public void addPages() {
- importPage = new TaskDataImportWizardPage();
- importPage.setWizard(this);
- addPage(importPage);
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- // no initialization needed
- }
-
- public boolean canFinish() {
- return importPage.isPageComplete();
- }
-
- /**
- * Called when the user clicks finish. Saves the task data. Waits until all
- * overwrite decisions have been made before starting to save files. If any
- * overwrite is canceled, no files are saved and the user must adjust the
- * dialog.
- */
- public boolean performFinish() {
-
- TasksUiPlugin.getTaskListManager().deactivateTask(
- TasksUiPlugin.getTaskListManager().getTaskList().getActiveTask());
-
- File sourceDirFile = null;
- File sourceZipFile = null;
- File sourceTaskListFile = null;
- File sourceRepositoriesFile = null;
- File sourceActivationHistoryFile = null;
- List<File> contextFiles = new ArrayList<File>();
- List<String> zipFilesToExtract = new ArrayList<String>();
- boolean overwrite = importPage.overwrite();
- boolean zip = importPage.zip();
-
- if (zip) {
-
- String sourceZip = importPage.getSourceZipFile();
- sourceZipFile = new File(sourceZip);
-
- if (!sourceZipFile.exists()) {
- MessageDialog
- .openError(getShell(), "File not found", sourceZipFile.toString() + " could not be found.");
- return false;
- }
-
- Enumeration entries;
- ZipFile zipFile;
-
- try {
- zipFile = new ZipFile(sourceZipFile, ZipFile.OPEN_READ);
- entries = zipFile.entries();
- while (entries.hasMoreElements()) {
- ZipEntry entry = (ZipEntry) entries.nextElement();
-
- if (entry.isDirectory()) {
- // ignore directories (shouldn't be any)
- continue;
- }
- if (!importPage.importTaskList() && entry.getName().endsWith(TasksUiPlugin.OLD_TASK_LIST_FILE)) {
- continue;
- }
-
- if (!importPage.importActivationHistory()
- && entry.getName().endsWith(
- MylarContextManager.CONTEXT_HISTORY_FILE_NAME
- + MylarContextManager.OLD_CONTEXT_FILE_EXTENSION)) {
- continue;
- }
- if (!importPage.importTaskContexts()
- && entry.getName()
- .matches(".*-\\d*" + MylarContextManager.OLD_CONTEXT_FILE_EXTENSION + "$")) {
- continue;
- }
-
- File destContextFile = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + entry.getName());
-
- if (!overwrite && destContextFile.exists()) {
- if (MessageDialog.openConfirm(getShell(), "File exists!", "Overwrite existing file?\n"
- + destContextFile.getName())) {
- zipFilesToExtract.add(entry.toString());
- } else {
- // no overwrite
- }
- } else {
- zipFilesToExtract.add(entry.toString());
- }
-
- }
-
- } catch (IOException e) {
- MylarStatusHandler.fail(e, "Could not import files", true);
- }
-
- } else {
- // Get file paths to check for existence
- String sourceDir = importPage.getSourceDirectory();
- sourceDirFile = new File(sourceDir);
- if (!sourceDirFile.exists() || !sourceDirFile.isDirectory()) {
- MessageDialog.openError(getShell(), "Source location not found",
- "Resource could not be found or is not a folder.");
- return false;
- }
-
- // make sure selected files for import are there
- sourceTaskListFile = new File(sourceDir + File.separator + TasksUiPlugin.OLD_TASK_LIST_FILE);
- sourceRepositoriesFile = new File(sourceDir + File.separator + TaskRepositoryManager.OLD_REPOSITORIES_FILE);
- sourceActivationHistoryFile = new File(sourceDir + File.separator
- + MylarContextManager.OLD_CONTEXT_HISTORY_FILE_NAME + MylarContextManager.OLD_CONTEXT_FILE_EXTENSION);
-
- File[] children = sourceDirFile.listFiles();
- for (int i = 0; i < children.length; i++) {
- if (children[i].getAbsolutePath().matches(
- ".*-\\d*" + MylarContextManager.OLD_CONTEXT_FILE_EXTENSION + "$")) {
-
- File destContextFile = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + children[i].getName());
-
- if (!overwrite && destContextFile.exists()) {
- if (MessageDialog.openConfirm(getShell(), "Context exists!",
- "Overwrite existing task context?\n" + destContextFile.getName())) {
- contextFiles.add(children[i]);
- } else {
- // no overwrite
- }
- } else {
- contextFiles.add(children[i]);
- }
- }
-
- }
-
- if (importPage.importTaskList() && !sourceTaskListFile.exists()) {
- MessageDialog.openError(getShell(), "File not found", sourceTaskListFile.toString() + " not found.");
- return false;
- } else if (importPage.importActivationHistory() && !sourceActivationHistoryFile.exists()) {
- MessageDialog.openError(getShell(), "File not found", sourceActivationHistoryFile.toString()
- + " not found.");
- return false;
- }
-
- }
-
- FileCopyJob job = new FileCopyJob(sourceDirFile, sourceZipFile, sourceTaskListFile, sourceRepositoriesFile,
- sourceActivationHistoryFile, contextFiles, zipFilesToExtract);
-
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
-
- try {
- service.run(true, false, job);
- } catch (InvocationTargetException e) {
- MylarStatusHandler.fail(e, "Could not import files", true);
- } catch (InterruptedException e) {
- MylarStatusHandler.fail(e, "Could not import files", true);
- }
-
- importPage.saveSettings();
- return true;
- }
-
- /** Job that performs the file copying and zipping */
- class FileCopyJob implements IRunnableWithProgress {
-
- private static final String JOB_LABEL = "Importing Data";
-
- private File sourceZipFile = null;
-
- private File sourceTaskListFile = null;
-
- private File sourceActivationHistoryFile = null;
-
- private File sourceRepositoriesFile = null;
-
- private boolean zip;
-
- private boolean importTaskList;
-
- private boolean importActivationHistory;
-
- private boolean importTaskContexts;
-
- private List<File> sourceContextFiles;
-
- private List<String> zipFilesToExtract;
-
- public FileCopyJob(File sourceFolder, File sourceZipFile, File sourceTaskListFile, File sourceRepositoriesFile,
- File sourceActivationHistoryFile, List<File> contextFiles, List<String> zipFiles) {
-
- this.sourceZipFile = sourceZipFile;
- this.sourceTaskListFile = sourceTaskListFile;
- this.sourceRepositoriesFile = sourceRepositoriesFile;
- this.sourceActivationHistoryFile = sourceActivationHistoryFile;
- this.sourceContextFiles = contextFiles;
- this.zipFilesToExtract = zipFiles;
-
- // Get parameters here to avoid accessing the UI thread
- this.zip = importPage.zip();
- this.importTaskList = importPage.importTaskList();
- this.importActivationHistory = importPage.importActivationHistory();
- this.importTaskContexts = importPage.importTaskContexts();
-
- }
-
- public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-
- if (zip) {
- monitor.beginTask(JOB_LABEL, zipFilesToExtract.size() + 2);
- //ZipFile zipFile;
-
- try {
- //zipFile = new ZipFile(sourceZipFile, ZipFile.OPEN_READ);
- ZipFileUtil.unzipFiles(sourceZipFile, TasksUiPlugin.getDefault().getDataDirectory());
-// for (String zipFileStr : zipFilesToExtract) {
-// ZipEntry entry = zipFile.getEntry(zipFileStr);
-// if (entry == null) {
-// MylarStatusHandler.fail(new Exception("Import Exception"),
-// "Problem occured extracting from zip file.", true);
-// return;
-// }
-//
-// File destinationFile = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator
-// + entry.getName());
-// if (destinationFile.exists()) {
-// destinationFile.delete();
-// }
-//
-// copyInputStream(zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(
-// destinationFile)));
-// monitor.worked(1);
-//
-// }
- //zipFile.close();
- } catch (IOException ioe) {
- MylarStatusHandler.fail(new Exception("Import Exception"),
- "Problem occured extracting from zip file.", true);
- return;
- }
- readTaskListData();
- monitor.done();
- return;
- }
-
- int jobSize = 1;
- if (importTaskList)
- jobSize++;
- if (importActivationHistory)
- jobSize++;
- if (importTaskContexts)
- jobSize += sourceContextFiles.size();
- monitor.beginTask(JOB_LABEL, jobSize);
-
- if (true) {
- String destRepositoriesPath = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TaskRepositoryManager.OLD_REPOSITORIES_FILE;
- File destRepositoriesFile = new File(destRepositoriesPath);
-
- if (destRepositoriesFile.exists()) {
- destRepositoriesFile.delete();
- }
-
- if (!copy(sourceRepositoriesFile, destRepositoriesFile)) {
- MylarStatusHandler.fail(new Exception("Import Exception"), "Could not import repositories file.",
- true);
- }
- monitor.worked(1);
- }
-
- if (importTaskList) {
- String destTaskListPath = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.OLD_TASK_LIST_FILE;
- File destTaskListFile = new File(destTaskListPath);
-
- if (destTaskListFile.exists()) {
- destTaskListFile.delete();
- }
-
- if (!copy(sourceTaskListFile, destTaskListFile)) {
- MylarStatusHandler
- .fail(new Exception("Import Exception"), "Could not import task list file.", true);
- }
- monitor.worked(1);
-
- }
-
- if (importActivationHistory) {
- try {
- File destActivationHistoryFile = new File(TasksUiPlugin.getDefault().getDataDirectory()
- + File.separator + MylarContextManager.OLD_CONTEXT_HISTORY_FILE_NAME
- + MylarContextManager.OLD_CONTEXT_FILE_EXTENSION);
-
- if (destActivationHistoryFile.exists()) {
- destActivationHistoryFile.delete();
- }
-
- copy(sourceActivationHistoryFile, destActivationHistoryFile);
- monitor.worked(1);
-
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not import activity history context file", true);
- }
- }
-
- if (importTaskContexts) {
- boolean errorDisplayed = false;
- for (File sourceContextFile : sourceContextFiles) {
-
- File destContextFile = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + sourceContextFile.getName());
-
- if (destContextFile.exists()) {
- destContextFile.delete();
- }
-
- if (!copy(sourceContextFile, destContextFile) && !errorDisplayed) {
- MylarStatusHandler.fail(new Exception("Import Exception: " + sourceContextFile.getPath()
- + " -> " + destContextFile.getPath()),
- "Could not import one or more task context files.", true);
- errorDisplayed = true;
- }
- monitor.worked(1);
- }
- }
- readTaskListData();
- monitor.done();
- }
- }
-
- /** Returns all tasks in the task list root or a category in the task list */
- protected List<ITask> getAllTasks() {
- List<ITask> allTasks = new ArrayList<ITask>();
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
-
- allTasks.addAll(taskList.getRootTasks());
-
- for (AbstractTaskContainer category : taskList.getCategories()) {
- allTasks.addAll(category.getChildren());
- }
-
- return allTasks;
- }
-
- private boolean copy(File src, File dst) {
-
- try {
- InputStream in = new FileInputStream(src);
- OutputStream out = new FileOutputStream(dst);
- return copyInputStream(in, new BufferedOutputStream(out));
- } catch (FileNotFoundException e) {
- return false;
- }
-
- }
-
- private boolean copyInputStream(InputStream inputStream, BufferedOutputStream stream) {
- try {
- InputStream in = inputStream;
- OutputStream out = stream;
-
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
- return true;
- } catch (IOException ioe) {
- return false;
- }
- }
-
- private void readTaskListData() {
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
-
- TaskListDataMigration migrationOperation = new TaskListDataMigration(new File(TasksUiPlugin.getDefault().getDataDirectory()));
- IWorkbench wb = PlatformUI.getWorkbench();
- IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
- Shell shell = win != null ? win.getShell() : null;
- try {
- new ProgressMonitorDialog(shell).run(true, false, migrationOperation);
- } catch (Exception e) {
- // ignore
- }
-
- TasksUiPlugin.getRepositoryManager().readRepositories(
- TasksUiPlugin.getDefault().getRepositoriesFilePath());
- ContextCorePlugin.getContextManager().loadActivityMetaContext();
- TasksUiPlugin.getTaskListManager().resetTaskList();
-
- String path = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.OLD_TASK_LIST_FILE;
- File taskListFile = new File(path);
- if (!taskListFile.exists()) {
- path = TasksUiPlugin.getDefault().getDataDirectory() + File.separator
- + TasksUiPlugin.DEFAULT_TASK_LIST_FILE;
- taskListFile = new File(path);
- }
- TasksUiPlugin.getTaskListManager().setTaskListFile(taskListFile);
- TasksUiPlugin.getTaskListManager().readExistingOrCreateNewList();
- }
- });
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizardPage.java
deleted file mode 100644
index c7cb2c9d8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizardPage.java
+++ /dev/null
@@ -1,469 +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.tasks.ui.wizards;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-
-import org.apache.commons.httpclient.util.DateUtil;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-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.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Wizard Page for the Task Data Import Wizard
- *
- * @author Wesley Coelho
- * @author Mik Kersten
- * @author Rob Elves (Adaption to Import wizard)
- */
-public class TaskDataImportWizardPage extends WizardPage {
-
- private static final String LABEL_IMPORT_FOLDER = "From 0.6.2 and older task data folder";
-
- private static final String LABEL_IMPORT_ZIP = "From zip file";
-
- private static final String LABEL_IMPORT_BACKUP = "From auto backup";
-
- private final static String PAGE_TITLE = "Import Mylar Task Data";
-
- private static final String DESCRIPTION = "WARNING: importing overwrites current task list and repositories, use with caution.";
-
- public final static String PAGE_NAME = PAGE_TITLE;
-
- private Button taskListCheckBox = null;
-
- private Button taskActivationHistoryCheckBox = null;
-
- private Button taskContextsCheckBox = null;
-
- private Button browseButtonFolder = null;
-
- private Button browseButtonZip = null;
-
- private Text sourceFolderText = null;
-
- private Text sourceZipText = null;
-
- private Button overwriteCheckBox = null;
-
- private Button importViaFolderButton;
-
- private Button importViaBackupButton;
-
- private Button importViaZipButton;
-
- private Table backupFilesTable;
-
- // Key values for the dialog settings object
- private final static String SETTINGS_SAVED = "Import Settings saved";
-
- private final static String TASKLIST_SETTING = "Import TaskList setting";
-
- private final static String ACTIVATION_HISTORY_SETTING = "Import Activation history setting";
-
- private final static String CONTEXTS_SETTING = "Import Contexts setting";
-
- private final static String SOURCE_DIR_SETTING = "Import Source directory setting";
-
- private final static String SOURCE_ZIP_SETTING = "Import Source zip file setting";
-
- private final static String OVERWRITE_SETTING = "Import Overwrite setting";
-
- private final static String IMPORT_FOLDERMETHOD_SETTING = "Import method folder";
-
- private final static String IMPORT_ZIPMETHOD_SETTING = "Import method zip";
-
- private final static String IMPORT_BACKUPMETHOD_SETTING = "Import method backup";
-
- public TaskDataImportWizardPage() {
- super("org.eclipse.mylar.tasklist.importPage", PAGE_TITLE, TasksUiPlugin.imageDescriptorFromPlugin(
- TasksUiPlugin.PLUGIN_ID, "icons/wizban/banner-import.gif"));
- setPageComplete(false);
- setDescription(DESCRIPTION);
- }
-
- public String getName() {
- return PAGE_NAME;
- }
-
- public void createControl(Composite parent) {
- try {
- Composite container = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(3, false);
- layout.verticalSpacing = 15;
- container.setLayout(layout);
-
- createContentSelectionControl(container);
- createImportDirectoryControl(container);
- createImportFromZipControl(container);
- createImportBackupControl(container);
-
- addRadioListeners();
-
- initSettings();
-
- setControl(container);
- setPageComplete(validate());
- } catch (RuntimeException e) {
- MylarStatusHandler.fail(e, "Could not create import wizard page", true);
- }
- }
-
- private void addRadioListeners() {
- SelectionListener radioListener = new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- browseButtonFolder.setEnabled(importViaFolderButton.getSelection());
- browseButtonZip.setEnabled(importViaZipButton.getSelection());
- backupFilesTable.setEnabled(importViaBackupButton.getSelection());
- sourceFolderText.setEnabled(importViaFolderButton.getSelection());
- sourceZipText.setEnabled(importViaZipButton.getSelection());
- controlChanged();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
-
- }
- };
-
- importViaFolderButton.addSelectionListener(radioListener);
- importViaZipButton.addSelectionListener(radioListener);
- importViaBackupButton.addSelectionListener(radioListener);
- }
-
- /**
- * Create widgets for selecting the content to import
- */
- private void createContentSelectionControl(Composite parent) {
- Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
- GridLayout gl = new GridLayout(2, true);
- group.setLayout(gl);
- GridDataFactory.fillDefaults().grab(true, false).span(3, SWT.DEFAULT).applyTo(group);
- group.setText("Select data to import:");
-
- taskListCheckBox = createCheckBox(group, "Task List");
- taskActivationHistoryCheckBox = createCheckBox(group, "Task Activation History");
- taskContextsCheckBox = createCheckBox(group, "Task Contexts");
- overwriteCheckBox = createCheckBox(group, "OVERWRITE existing files without warning");
- }
-
- /**
- * Create widgets for specifying the source directory
- */
- private void createImportDirectoryControl(Composite parent) {
-
- importViaFolderButton = new Button(parent, SWT.RADIO);
- importViaFolderButton.setText(LABEL_IMPORT_FOLDER);
-
- sourceFolderText = new Text(parent, SWT.BORDER);
- sourceFolderText.setEditable(true);
- GridDataFactory.fillDefaults().grab(true, false).hint(250, SWT.DEFAULT).applyTo(sourceFolderText);
- sourceFolderText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- controlChanged();
- }
- });
-
- browseButtonFolder = new Button(parent, SWT.PUSH);
- browseButtonFolder.setText("Browse...");
- browseButtonFolder.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- DirectoryDialog dialog = new DirectoryDialog(getShell());
- dialog.setText("Folder Selection");
- dialog.setMessage("Specify the source folder for task data");
- String dir = sourceFolderText.getText();
- dialog.setFilterPath(dir);
- dir = dialog.open();
- if (dir == null || dir.equals(""))
- return;
- sourceFolderText.setText(dir);
- }
- });
- }
-
- /**
- * Create widgets for specifying the source zip
- */
- private void createImportFromZipControl(Composite parent) {
-
- importViaZipButton = new Button(parent, SWT.RADIO);
- importViaZipButton.setText(LABEL_IMPORT_ZIP);
-
- sourceZipText = new Text(parent, SWT.BORDER);
- sourceZipText.setEditable(true);
- GridDataFactory.fillDefaults().grab(true, false).hint(250, SWT.DEFAULT).applyTo(sourceZipText);
- sourceZipText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- controlChanged();
- }
- });
-
- browseButtonZip = new Button(parent, SWT.PUSH);
- browseButtonZip.setText("Browse...");
- browseButtonZip.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- FileDialog dialog = new FileDialog(getShell());
- dialog.setText("Zip File Selection");
- // dialog.setText("Specify the source zip file for task data");
- String dir = sourceZipText.getText();
- dialog.setFilterPath(dir);
- dir = dialog.open();
- if (dir == null || dir.equals(""))
- return;
- sourceZipText.setText(dir);
- }
- });
-
- }
-
- private void createImportBackupControl(Composite container) {
-
- importViaBackupButton = new Button(container, SWT.RADIO);
- importViaBackupButton.setText(LABEL_IMPORT_BACKUP);
- GridDataFactory.fillDefaults().span(3, SWT.DEFAULT).applyTo(importViaBackupButton);
-
- addBackupFileView(container);
- }
-
- private void addBackupFileView(Composite composite) {
- new Label(composite, SWT.NONE);
- backupFilesTable = new Table(composite, SWT.BORDER);
- GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).grab(true, false).applyTo(backupFilesTable);
- TableColumn filenameColumn = new TableColumn(backupFilesTable, SWT.LEFT);
- filenameColumn.setWidth(200);
-
- String destination = TasksUiPlugin.getDefault().getBackupFolderPath();
-
- File backupFolder = new File(destination);
- ArrayList<File> backupFiles = new ArrayList<File>();
- if (backupFolder.exists()) {
- File[] files = backupFolder.listFiles();
- for (File file : files) {
- if (file.getName().startsWith(TaskDataExportWizard.ZIP_FILE_PREFIX)) {
- backupFiles.add(file);
- }
- }
- }
-
- File[] backupFileArray = backupFiles.toArray(new File[backupFiles.size()]);
-
- if (backupFileArray != null && backupFileArray.length > 0) {
- Arrays.sort(backupFileArray, new Comparator<File>() {
- public int compare(File file1, File file2) {
- return (new Long((file1).lastModified()).compareTo(new Long((file2).lastModified()))) * -1;
- }
-
- });
- for (File file : backupFileArray) {
- TableItem item = new TableItem(backupFilesTable, SWT.NONE);
- item.setData(file.getAbsolutePath());
- Date fileModified = new Date(file.lastModified());
- item.setText(new String[] { DateUtil.formatDate(fileModified, DateUtil.PATTERN_RFC1123) });
- }
- }
-
- backupFilesTable.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- controlChanged();
- }
- });
- }
-
- /**
- * Initializes controls with values from the Dialog Settings object
- */
- protected void initSettings() {
- IDialogSettings settings = getDialogSettings();
-
- if (settings.get(SETTINGS_SAVED) == null) {
- // Set default values
- taskListCheckBox.setSelection(true);
- taskActivationHistoryCheckBox.setSelection(true);
- taskContextsCheckBox.setSelection(true);
- sourceFolderText.setText("");
- overwriteCheckBox.setSelection(true);
- // importFromFolderGroup.setEnabled(true);
- importViaFolderButton.setSelection(true);
- sourceFolderText.setEnabled(true);
- sourceZipText.setEnabled(false);
- backupFilesTable.setEnabled(false);
-
- } else {
- // Retrieve previous values from the dialog settings
- taskListCheckBox.setSelection(settings.getBoolean(TASKLIST_SETTING));
- taskActivationHistoryCheckBox.setSelection(settings.getBoolean(ACTIVATION_HISTORY_SETTING));
- taskContextsCheckBox.setSelection(settings.getBoolean(CONTEXTS_SETTING));
- importViaFolderButton.setSelection(settings.getBoolean(IMPORT_FOLDERMETHOD_SETTING));
- importViaZipButton.setSelection(settings.getBoolean(IMPORT_ZIPMETHOD_SETTING));
- importViaBackupButton.setSelection(settings.getBoolean(IMPORT_BACKUPMETHOD_SETTING));
-
- browseButtonFolder.setEnabled(importViaFolderButton.getSelection());
- sourceFolderText.setEnabled(importViaFolderButton.getSelection());
- browseButtonZip.setEnabled(importViaZipButton.getSelection());
- sourceZipText.setEnabled(importViaZipButton.getSelection());
-
- backupFilesTable.setEnabled(importViaBackupButton.getSelection());
-
- String directory = settings.get(SOURCE_DIR_SETTING);
- if (directory != null) {
- sourceFolderText.setText(settings.get(SOURCE_DIR_SETTING));
- }
- String zipFile = settings.get(SOURCE_ZIP_SETTING);
- if (zipFile != null) {
- sourceZipText.setText(settings.get(SOURCE_ZIP_SETTING));
- }
- overwriteCheckBox.setSelection(settings.getBoolean(OVERWRITE_SETTING));
- }
- }
-
- /**
- * Saves the control values in the dialog settings to be used as defaults
- * the next time the page is opened
- */
- public void saveSettings() {
- IDialogSettings settings = getDialogSettings();
-
- settings.put(TASKLIST_SETTING, taskListCheckBox.getSelection());
- settings.put(ACTIVATION_HISTORY_SETTING, taskActivationHistoryCheckBox.getSelection());
- settings.put(CONTEXTS_SETTING, taskContextsCheckBox.getSelection());
- settings.put(SOURCE_DIR_SETTING, sourceFolderText.getText());
- settings.put(SOURCE_ZIP_SETTING, sourceZipText.getText());
- settings.put(OVERWRITE_SETTING, overwriteCheckBox.getSelection());
- settings.put(IMPORT_FOLDERMETHOD_SETTING, importViaFolderButton.getSelection());
- settings.put(IMPORT_ZIPMETHOD_SETTING, importViaZipButton.getSelection());
- settings.put(IMPORT_BACKUPMETHOD_SETTING, importViaBackupButton.getSelection());
-
- settings.put(SETTINGS_SAVED, SETTINGS_SAVED);
- }
-
- /** Convenience method for creating a new checkbox */
- protected Button createCheckBox(Composite parent, String text) {
- Button newButton = new Button(parent, SWT.CHECK);
- newButton.setText(text);
-
- newButton.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- controlChanged();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // No action required
- }
- });
-
- return newButton;
- }
-
- /** Called to indicate that a control's value has changed */
- public void controlChanged() {
- setPageComplete(validate());
- }
-
- /** Returns true if the information entered by the user is valid */
- protected boolean validate() {
-
- // Check that at least one type of data has been selected
- if (!taskListCheckBox.getSelection() && !taskActivationHistoryCheckBox.getSelection()
- && !taskContextsCheckBox.getSelection()) {
- return false;
- }
- if (importViaFolderButton.getSelection() && sourceFolderText.getText().equals("")) {
- return false;
- }
- if (importViaZipButton.getSelection() && sourceZipText.getText().equals("")) {
- return false;
- }
- if (importViaBackupButton.getSelection() && backupFilesTable.getSelection().length == 0) {
- return false;
- }
- return true;
- }
-
- /** Returns the directory where data files are to be restored from */
- public String getSourceDirectory() {
- return sourceFolderText.getText();
- }
-
- public String getSourceZipFile() {
- if (importViaZipButton.getSelection()) {
- return sourceZipText.getText();
- } else {
- if (backupFilesTable.getSelectionIndex() != -1) {
- return (String) (backupFilesTable.getSelection()[0].getData());
- }
- }
- return "<unspecified>";
- }
-
- /** True if the user wants to import the task list */
- public boolean importTaskList() {
- return taskListCheckBox.getSelection();
- }
-
- /** True if the user wants to import task activation history */
- public boolean importActivationHistory() {
- return taskActivationHistoryCheckBox.getSelection();
- }
-
- /** True if the user wants to import task context files */
- public boolean importTaskContexts() {
- return taskContextsCheckBox.getSelection();
- }
-
- /** True if the user wants to overwrite files by default */
- public boolean overwrite() {
- return overwriteCheckBox.getSelection();
- }
-
- /** True if the user wants to import from a zip file */
- public boolean zip() {
- return importViaZipButton.getSelection() || importViaBackupButton.getSelection();
- }
-
- /** For testing only. Sets controls to the specified values */
- public void setParameters(boolean overwrite, boolean importTaskList, boolean importActivationHistory,
- boolean importTaskContexts, boolean zip, String sourceDir, String sourceZip) {
- overwriteCheckBox.setSelection(overwrite);
- taskListCheckBox.setSelection(importTaskList);
- taskActivationHistoryCheckBox.setSelection(importActivationHistory);
- taskContextsCheckBox.setSelection(importTaskContexts);
- sourceFolderText.setText(sourceDir);
- sourceZipText.setText(sourceZip);
- importViaZipButton.setSelection(zip);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java
deleted file mode 100644
index ad7aeb5b3..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/AbstractRepositoryConnectorUi.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.ui;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.internal.tasks.ui.wizards.CommonAddExistingTaskWizard;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * TODO: refactor wizards into extension points
- *
- * @author Mik Kersten
- */
-public abstract class AbstractRepositoryConnectorUi {
-
- /**
- * @return the unique type of the repository, e.g. "bugzilla"
- */
- public abstract String getRepositoryType();
-
- public abstract AbstractRepositorySettingsPage getSettingsPage();
-
-// public abstract IWizard getNewQueryWizard(TaskRepository repository);
-
- /**
- * @param repository
- * @param queryToEdit can be null
- */
- public abstract IWizard getQueryWizard(TaskRepository repository, AbstractRepositoryQuery queryToEdit);
-
- public abstract IWizard getNewTaskWizard(TaskRepository taskRepository, IStructuredSelection selection);
-
- public abstract boolean hasRichEditor();
-
- public abstract boolean hasSearchPage();
-
- public void openEditQueryDialog(AbstractRepositoryQuery query) {
- try {
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(query.getRepositoryKind(),
- query.getRepositoryUrl());
- if (repository == null)
- return;
-
- IWizard wizard = this.getQueryWizard(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 Repository Query");
- dialog.setBlockOnOpen(true);
- if (dialog.open() == Dialog.CANCEL) {
- dialog.close();
- return;
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, e.getMessage(), true);
- }
- }
-
- public IWizard getAddExistingTaskWizard(TaskRepository repository) {
- return new CommonAddExistingTaskWizard(repository);
- }
-
- public WizardPage getSearchPage(TaskRepository repository, IStructuredSelection selection) {
- return null;
- }
-
- public void openRemoteTask(String repositoryUrl, String idString) {
- MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
- TasksUiPlugin.TITLE_DIALOG, "Not supported by connector: " + this.getClass().getSimpleName());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java
deleted file mode 100644
index 4ca73db63..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/RepositorySynchronizationManager.java
+++ /dev/null
@@ -1,482 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.ui;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-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.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * TODO: move into core?
- *
- * @author Mik Kersten
- * @author Rob Elves
- */
-public class RepositorySynchronizationManager {
-
- private static final int RETRY_DELAY = 3000;
-
- private boolean updateLocalCopy = false;
-
- private final MutexRule rule = new MutexRule();
-
- protected boolean forceSyncExecForTesting = false;
-
- /**
- * non-final for testing purposes
- */
- public void saveOffline(RepositoryTaskData taskData) {
- try {
- TasksUiPlugin.getDefault().getOfflineReportsFile().add(taskData);
- } catch (CoreException e) {
- MylarStatusHandler.fail(e, e.getMessage(), false);
- }
- }
-
- /**
- * Synchronize a single task. Note that if you have a collection of tasks to
- * synchronize with this connector then you should call synchronize(Set<Set<AbstractRepositoryTask>
- * repositoryTasks, ...)
- *
- * @param listener
- * can be null
- */
- public final Job synchronize(AbstractRepositoryConnector connector, AbstractRepositoryTask repositoryTask,
- boolean forceSynch, IJobChangeListener listener) {
- Set<AbstractRepositoryTask> toSync = new HashSet<AbstractRepositoryTask>();
- toSync.add(repositoryTask);
- return synchronize(connector, toSync, forceSynch, listener);
- }
-
- /**
- * @param listener
- * can be null
- */
- public final Job synchronize(AbstractRepositoryConnector connector, Set<AbstractRepositoryTask> repositoryTasks,
- boolean forceSynch, final IJobChangeListener listener) {
-
- final SynchronizeTaskJob synchronizeJob = new SynchronizeTaskJob(connector, repositoryTasks);
- synchronizeJob.setForceSynch(forceSynch);
- synchronizeJob.setPriority(Job.DECORATE);
- synchronizeJob.setRule(rule);
- if (listener != null) {
- synchronizeJob.addJobChangeListener(listener);
- }
- for (AbstractRepositoryTask repositoryTask : repositoryTasks) {
- repositoryTask.setCurrentlySynchronizing(true);
- }
- if (!forceSyncExecForTesting) {
- synchronizeJob.schedule();
- } else {
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
- synchronizeJob.run(new NullProgressMonitor());
- if (listener != null) {
- listener.done(null);
- }
- }
- });
- }
- return synchronizeJob;
-
- }
-
- /**
- * For synchronizing a single query. Use synchronize(Set,
- * IJobChangeListener) if synchronizing multiple queries at a time.
- */
- public final Job synchronize(AbstractRepositoryConnector connector, final AbstractRepositoryQuery repositoryQuery,
- IJobChangeListener listener) {
- HashSet<AbstractRepositoryQuery> items = new HashSet<AbstractRepositoryQuery>();
- items.add(repositoryQuery);
- return synchronize(connector, items, listener, Job.LONG, 0, true);
- }
-
- public final Job synchronize(AbstractRepositoryConnector connector,
- final Set<AbstractRepositoryQuery> repositoryQueries, IJobChangeListener listener, int priority,
- long delay, boolean syncTasks) {
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- SynchronizeQueryJob job = new SynchronizeQueryJob(this, connector, repositoryQueries, taskList);
- job.setSynchTasks(syncTasks);
- for (AbstractRepositoryQuery repositoryQuery : repositoryQueries) {
- repositoryQuery.setCurrentlySynchronizing(true);
- }
- if (listener != null) {
- job.addJobChangeListener(listener);
- }
- job.setRule(rule);
- job.setPriority(priority);
- job.schedule(delay);
- return job;
- }
-
- /**
- * Synchronizes only those tasks that have changed since the last time the
- * given repository was synchronized. Calls to this method update
- * TaskRepository.syncTime.
- */
- public final void synchronizeChanged(final AbstractRepositoryConnector connector, final TaskRepository repository) {
- if (connector.getOfflineTaskHandler() != null) {
- final GetChangedTasksJob getChangedTasksJob = new GetChangedTasksJob(connector, repository);
- getChangedTasksJob.setSystem(true);
- getChangedTasksJob.setRule(new RepositoryMutexRule(repository));
- if (!forceSyncExecForTesting) {
- getChangedTasksJob.schedule();
- } else {
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
- getChangedTasksJob.run(new NullProgressMonitor());
- }
- });
- }
- }
- }
-
- private class GetChangedTasksJob extends Job {
-
- private AbstractRepositoryConnector connector;
-
- private TaskRepository repository;
-
- public GetChangedTasksJob(AbstractRepositoryConnector connector, TaskRepository repository) {
- super("Get Changed Tasks");
- this.connector = connector;
- this.repository = repository;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- Set<AbstractRepositoryTask> repositoryTasks = Collections.unmodifiableSet(taskList
- .getRepositoryTasks(repository.getUrl()));
- final Set<AbstractRepositoryTask> tasksToSync = new HashSet<AbstractRepositoryTask>();
-
- Set<AbstractRepositoryTask> changedTasks = null;
- try {
- changedTasks = connector.getOfflineTaskHandler().getChangedSinceLastSync(repository, repositoryTasks,
- TasksUiPlugin.getDefault().getProxySettings());
-
- if (changedTasks != null) {
- for (AbstractRepositoryTask task : changedTasks) {
- if (task.getSyncState() == RepositoryTaskSyncState.SYNCHRONIZED
- || task.getSyncState() == RepositoryTaskSyncState.INCOMING) {
- tasksToSync.add(task);
- }
- }
- }
-
- if (tasksToSync.size() == 0) {
- return Status.OK_STATUS;
- }
-
- synchronize(connector, tasksToSync, false, new JobChangeAdapter() {
-
- @Override
- public void done(IJobChangeEvent event) {
- if (!Platform.isRunning() || TasksUiPlugin.getRepositoryManager() == null) {
- return;
- }
- Date mostRecent = new Date(0);
- String mostRecentTimeStamp = repository.getSyncTimeStamp();
- for (AbstractRepositoryTask task : tasksToSync) {
- Date taskModifiedDate;
-
- if (connector.getOfflineTaskHandler() != null && task.getTaskData() != null
- && task.getTaskData().getLastModified() != null) {
- taskModifiedDate = connector.getOfflineTaskHandler().getDateForAttributeType(
- RepositoryTaskAttribute.DATE_MODIFIED, task.getTaskData().getLastModified());
- } else {
- continue;
- }
-
- if (taskModifiedDate != null && taskModifiedDate.after(mostRecent)) {
- mostRecent = taskModifiedDate;
- mostRecentTimeStamp = task.getTaskData().getLastModified();
- }
- }
- // TODO: Get actual time stamp of query from
- // repository rather
- // than above hack
- TasksUiPlugin.getRepositoryManager().setSyncTime(repository, mostRecentTimeStamp,
- TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
- });
-
- } catch (Exception e) {
- if ((e instanceof CoreException && !(((CoreException) e).getStatus().getException() instanceof IOException))) {
- MylarStatusHandler.log(e, "Could not determine modified tasks for " + repository.getUrl() + ".");
- } else if (e instanceof UnsupportedEncodingException) {
- MylarStatusHandler.log(e, "Could not determine modified tasks for " + repository.getUrl() + ".");
- } else {
- // ignore, indicates working offline
- }
- return Status.OK_STATUS;
- }
- try {
- Thread.sleep(RETRY_DELAY);
- } catch (InterruptedException e1) {
- return Status.OK_STATUS;
- }
-
- return Status.OK_STATUS;
- };
- };
-
- /**
- * Precondition: offline file is removed upon submit to repository resulting
- * in a synchronized state
- *
- * @return true if call results in change of syc state
- */
- public synchronized boolean updateOfflineState(final AbstractRepositoryTask repositoryTask,
- final RepositoryTaskData newTaskData, boolean forceSync) {
- RepositoryTaskSyncState startState = repositoryTask.getSyncState();
- RepositoryTaskSyncState status = repositoryTask.getSyncState();
-
- if (newTaskData == null) {
- MylarStatusHandler.log("Download of " + repositoryTask.getDescription() + " from "
- + repositoryTask.getRepositoryUrl() + " failed.", this);
- return false;
- }
-
- RepositoryTaskData offlineTaskData = repositoryTask.getTaskData();
-
- if (newTaskData.hasLocalChanges()) {
- // Special case for saving changes to local task data
- status = RepositoryTaskSyncState.OUTGOING;
- } else {
-
- switch (status) {
- case OUTGOING:
- if (!forceSync) {
- // Never overwrite local task data unless forced
- return false;
- }
- case CONFLICT:
- // use a parameter rather than this null check
- if (offlineTaskData != null) {
- // TODO: pull this ui out of here
- if (!forceSyncExecForTesting) {
- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
- public void run() {
- updateLocalCopy = MessageDialog
- .openQuestion(
- null,
- "Local Task Conflicts with Repository",
- "Local copy of: "
- + repositoryTask.getDescription()
- + "\n\n on: "
- + repositoryTask.getRepositoryUrl()
- + "\n\n has changes, override local? \n\nNOTE: if you select No, only the new comment will be saved with the updated bug, all other changes will be lost.");
- }
- });
- } else {
- updateLocalCopy = true;
- }
- if (!updateLocalCopy) {
- newTaskData.setNewComment(offlineTaskData.getNewComment());
- newTaskData.setHasLocalChanges(true);
- status = RepositoryTaskSyncState.CONFLICT;
- } else {
- newTaskData.setHasLocalChanges(false);
- if (checkHasIncoming(repositoryTask, newTaskData)) {
- status = RepositoryTaskSyncState.INCOMING;
- } else {
- status = RepositoryTaskSyncState.SYNCHRONIZED;
- }
- }
- } else {
- newTaskData.setHasLocalChanges(false);
- status = RepositoryTaskSyncState.SYNCHRONIZED;
- }
- break;
- case INCOMING:
- if (!forceSync && checkHasIncoming(repositoryTask, newTaskData)) {
- status = RepositoryTaskSyncState.INCOMING;
- } else {
- status = RepositoryTaskSyncState.SYNCHRONIZED;
- }
- break;
- case SYNCHRONIZED:
- if (checkHasIncoming(repositoryTask, newTaskData)) {
- status = RepositoryTaskSyncState.INCOMING;
- } else {
- status = RepositoryTaskSyncState.SYNCHRONIZED;
- }
- break;
- }
-
- if (status == RepositoryTaskSyncState.SYNCHRONIZED || repositoryTask.getLastSyncDateStamp() == null) {
- repositoryTask.setLastSyncDateStamp(newTaskData.getLastModified());
- }
- }
-
- repositoryTask.setTaskData(newTaskData);
- repositoryTask.setSyncState(status);
- saveOffline(newTaskData);
- if (status == RepositoryTaskSyncState.INCOMING) {
- repositoryTask.setNotified(false);
- }
- return startState != repositoryTask.getSyncState();
-
- }
-
- /** public for testing purposes */
- public boolean checkHasIncoming(AbstractRepositoryTask repositoryTask, RepositoryTaskData newData) {
- String lastModified = repositoryTask.getLastSyncDateStamp();
- if (newData != null) {
- RepositoryTaskData oldTaskData = repositoryTask.getTaskData();
- if (oldTaskData != null) {
- lastModified = oldTaskData.getLastModified();
- } else if (lastModified == null && repositoryTask.getSyncState() != RepositoryTaskSyncState.INCOMING) {
- // both lastModified and oldTaskData is null!
- // (don't have a sync time or any offline data)
- // HACK: Assume this is a query hit.
- // We can't get proper date stamp from query hits
- // so mark read doesn't set proper date stamp.
- // Once we have this data this should be fixed.
- return false;
- }
- }
-
- RepositoryTaskAttribute modifiedDateAttribute = newData.getAttribute(RepositoryTaskAttribute.DATE_MODIFIED);
- if (lastModified != null && modifiedDateAttribute != null && modifiedDateAttribute.getValue() != null) {
- if (lastModified.trim().compareTo(modifiedDateAttribute.getValue().trim()) == 0
- && repositoryTask.getSyncState() != RepositoryTaskSyncState.INCOMING) {
- // Only set to synchronized state if not in incoming state.
- // Case of incoming->sync handled by markRead upon opening
- // or a forced synchronization on the task only.
- return false;
- }
- }
-
- return true;
-
- // DND - relves
- // RepositoryTaskAttribute modifiedDateAttribute =
- // newData.getAttribute(RepositoryTaskAttribute.DATE_MODIFIED);
- // if (repositoryTask.getLastSyncDateStamp() != null &&
- // modifiedDateAttribute != null
- // && modifiedDateAttribute.getValue() != null) {
- // Date newModifiedDate =
- // connector.getOfflineTaskHandler().getDateForAttributeType(
- // RepositoryTaskAttribute.DATE_MODIFIED,
- // modifiedDateAttribute.getValue());
- // Date oldModifiedDate =
- // connector.getOfflineTaskHandler().getDateForAttributeType(
- // RepositoryTaskAttribute.DATE_MODIFIED, lastModified);
- // if (oldModifiedDate != null && newModifiedDate != null) {
- // if (newModifiedDate.compareTo(oldModifiedDate) <= 0 &&
- // repositoryTask.getSyncState() != RepositoryTaskSyncState.INCOMING) {
- // // Only move to synchronized state if not in incoming state.
- // // Case of incoming->sync handled by markRead upon opening
- // // or a forced synchronization on the task.
- // return false;
- // }
- // }
- // }
- // return true;
- }
-
- /** non-final for testing purposes */
- protected void removeOfflineTaskData(RepositoryTaskData bug) {
- if (bug == null)
- return;
-
- ArrayList<RepositoryTaskData> bugList = new ArrayList<RepositoryTaskData>();
- bugList.add(bug);
- TasksUiPlugin.getDefault().getOfflineReportsFile().remove(bugList);
- }
-
- /**
- * @param repositoryTask - repository task to mark as read or unread
- * @param read - true to mark as read, false to mark as unread
- */
- public void setTaskRead(AbstractRepositoryTask repositoryTask, boolean read) {
- if (read && repositoryTask.getSyncState().equals(RepositoryTaskSyncState.INCOMING)) {
- if (repositoryTask.getTaskData() != null && repositoryTask.getTaskData().getLastModified() != null) {
- repositoryTask.setLastSyncDateStamp(repositoryTask.getTaskData().getLastModified());
- }
- repositoryTask.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED);
- TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask);
- } else if (!read && repositoryTask.getSyncState().equals(RepositoryTaskSyncState.SYNCHRONIZED)) {
- repositoryTask.setSyncState(RepositoryTaskSyncState.INCOMING);
- TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask);
- }
- }
-
- /**
- * For testing
- */
- public final void setForceSyncExec(boolean forceSyncExec) {
- this.forceSyncExecForTesting = forceSyncExec;
- }
-
- private static class MutexRule implements ISchedulingRule {
- public boolean isConflicting(ISchedulingRule rule) {
- return rule == this;
- }
-
- public boolean contains(ISchedulingRule rule) {
- return rule == this;
- }
- }
-
- private static class RepositoryMutexRule implements ISchedulingRule {
-
- private TaskRepository repository = null;
-
- public RepositoryMutexRule(TaskRepository repository) {
- this.repository = repository;
- }
-
- public boolean isConflicting(ISchedulingRule rule) {
- if (rule instanceof RepositoryMutexRule) {
- return repository.equals(((RepositoryMutexRule) rule).getRepository());
- } else {
- return false;
- }
- }
-
- public boolean contains(ISchedulingRule rule) {
- return rule == this;
- }
-
- public TaskRepository getRepository() {
- return repository;
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java
deleted file mode 100644
index 1fc3724a0..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeQueryJob.java
+++ /dev/null
@@ -1,118 +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.tasks.ui;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Date;
-import java.util.Set;
-
-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.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.util.DateUtil;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressConstants;
-
-/**
- * @author Mik Kersten
- */
-class SynchronizeQueryJob extends Job {
-
- private final AbstractRepositoryConnector connector;
-
- private static final String JOB_LABEL = "Synchronizing queries";
-
- private Set<AbstractRepositoryQuery> queries;
-
- private boolean synchTasks;
-
- private TaskList taskList;
-
- public SynchronizeQueryJob(RepositorySynchronizationManager synchronizationManager,
- AbstractRepositoryConnector connector, Set<AbstractRepositoryQuery> queries, TaskList taskList) {
- super(JOB_LABEL + ": " + connector.getRepositoryType());
- this.connector = connector;
- this.queries = queries;
- this.taskList = taskList;
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask(JOB_LABEL, queries.size());
-
- for (AbstractRepositoryQuery repositoryQuery : queries) {
- // if (repositoryQuery.isSynchronizing())
- // continue;
- monitor.setTaskName("Synchronizing: " + repositoryQuery.getDescription());
- setProperty(IProgressConstants.ICON_PROPERTY, TaskListImages.REPOSITORY_SYNCHRONIZE);
- // repositoryQuery.setCurrentlySynchronizing(true);
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- repositoryQuery.getRepositoryKind(), repositoryQuery.getRepositoryUrl());
- if (repository == null) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- MessageDialog
- .openInformation(Display.getDefault().getActiveShell(), TasksUiPlugin.TITLE_DIALOG,
- "No task repository associated with this query. Open the query to associate it with a repository.");
- }
- });
- }
-
- QueryHitCollector collector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList());
- IStatus resultingStatus = connector.performQuery(repositoryQuery, repository, TasksUiPlugin.getDefault()
- .getProxySettings(), monitor, collector);
-
- if (resultingStatus.getException() == null) {
- repositoryQuery.updateHits(collector.getHits(), taskList);
- if (synchTasks) {
- // TODO: Should sync changed per repository not per
- // query
- TasksUiPlugin.getSynchronizationManager().synchronizeChanged(connector, repository);
- }
- } else if (!(resultingStatus.getException() instanceof IOException)) {
- MylarStatusHandler.log(resultingStatus);
- repositoryQuery.setCurrentlySynchronizing(false);
- return Status.OK_STATUS;
- } else if (resultingStatus.getException() instanceof FileNotFoundException) {
- // can be caused by empty urlbase parameter on bugzilla
- // server
- MylarStatusHandler.log(resultingStatus);
- repositoryQuery.setCurrentlySynchronizing(false);
- return Status.OK_STATUS;
- } else {
- // assume working offline
- return Status.OK_STATUS;
- }
-
- repositoryQuery.setCurrentlySynchronizing(false);
- repositoryQuery.setLastRefreshTimeStamp(DateUtil.getFormattedDate(new Date(), "MMM d, H:mm:ss"));
- TasksUiPlugin.getTaskListManager().getTaskList().notifyContainerUpdated(repositoryQuery);
- monitor.worked(1);
- }
- return Status.OK_STATUS;
- }
-
- public void setSynchTasks(boolean syncTasks) {
- this.synchTasks = syncTasks;
- }
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java
deleted file mode 100644
index 7b48e6889..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/SynchronizeTaskJob.java
+++ /dev/null
@@ -1,183 +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.tasks.ui;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-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.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.TaskListImages;
-import org.eclipse.mylar.internal.tasks.ui.TaskUiUtil;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.TaskEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesView;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressConstants;
-
-/**
- * @author Mik Kersten
- * @author Rob Elves
- */
-class SynchronizeTaskJob extends Job {
-
- private static final String LABEL_SYNCHRONIZING = "Synchronizing ";
-
- private static final String LABEL_SYNCHRONIZE_TASK = "Task Synchronization";
-
- private final AbstractRepositoryConnector connector;
-
- // private final RepositorySynchronizationManager synchronizationManager;
-
- private Set<AbstractRepositoryTask> repositoryTasks;
-
- private boolean forceSync = false;
-
- public SynchronizeTaskJob(AbstractRepositoryConnector connector, Set<AbstractRepositoryTask> repositoryTasks) {
- super(LABEL_SYNCHRONIZE_TASK + " (" + repositoryTasks.size() + " tasks)");
- this.connector = connector;
- this.repositoryTasks = repositoryTasks;
- // this.synchronizationManager = synchronizationManager;
- }
-
- public void setForceSynch(boolean forceUpdate) {
- this.forceSync = forceUpdate;
- }
-
- @Override
- public IStatus run(IProgressMonitor monitor) {
- try {
- monitor.beginTask(LABEL_SYNCHRONIZE_TASK, repositoryTasks.size());
- setProperty(IProgressConstants.ICON_PROPERTY, TaskListImages.REPOSITORY_SYNCHRONIZE);
-
- for (final AbstractRepositoryTask repositoryTask : repositoryTasks) {
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- boolean canNotSynch = repositoryTask.isDirty();
- boolean hasLocalChanges = repositoryTask.getSyncState() == RepositoryTaskSyncState.OUTGOING
- || repositoryTask.getSyncState() == RepositoryTaskSyncState.CONFLICT;
- if (forceSync || (!canNotSynch && !hasLocalChanges) || !repositoryTask.isDownloaded()) {
- monitor.setTaskName(LABEL_SYNCHRONIZING + repositoryTask.getDescription());
- // repositoryTask.setCurrentlySynchronizing(true);
- TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask);
- IOfflineTaskHandler offlineHandler = connector.getOfflineTaskHandler();
- if (offlineHandler != null) {
- RepositoryTaskData downloadedTaskData = null;
- try {
- final TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- repositoryTask.getRepositoryKind(), repositoryTask.getRepositoryUrl());
- if (repository == null) {
- throw new CoreException(new Status(IStatus.ERROR, TasksUiPlugin.PLUGIN_ID, 0,
- "Associated repository could not be found. Ensure proper repository configuration of "
- + repositoryTask.getRepositoryUrl() + " in "
- + TaskRepositoriesView.NAME + ".", null));
- } else {
- downloadedTaskData = offlineHandler.downloadTaskData(repositoryTask, repository,
- TasksUiPlugin.getDefault().getProxySettings());
- }
- } catch (final LoginException e) {
- MylarStatusHandler.fail(e,
- "Report download failed. Ensure proper repository configuration of "
- + repositoryTask.getRepositoryUrl() + " in " + TaskRepositoriesView.NAME
- + ".", true);
- // throw new CoreException(new Status(IStatus.ERROR,
- // TasksUiPlugin.PLUGIN_ID, 0, "Report download
- // failed. Ensure proper repository configuration of
- // " + repositoryTask.getRepositoryUrl() + " in "
- // + TaskRepositoriesView.NAME + ".", e ));
- } catch (final CoreException e) {
- if (e.getStatus().getException() instanceof LoginException) {
- MylarStatusHandler.log(e.getStatus().getException(), "Login credentials are invalid for "+repositoryTask.getRepositoryUrl());
- } else if (!(e.getStatus().getException() instanceof IOException)) {
- MylarStatusHandler.log(e.getStatus());
- } else if (e.getStatus().getException() instanceof FileNotFoundException) {
- // can be caused by empty urlbase parameter on
- // bugzilla server
- MylarStatusHandler.log(e.getStatus());
- } else {
- // >>> bug 154729
- // MylarStatusHandler.log(e.getStatus());
- }
- continue;
- }
-
- if (downloadedTaskData != null) {
- TasksUiPlugin.getSynchronizationManager().updateOfflineState(repositoryTask,
- downloadedTaskData, forceSync);
- connector.updateTaskState(repositoryTask);
- refreshEditors(repositoryTask);
- }
- }
- repositoryTask.setCurrentlySynchronizing(false);
- TasksUiPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(repositoryTask);
-
- } else {
- repositoryTask.setCurrentlySynchronizing(false);
- }
-
- monitor.worked(1);
- }
-
- // TasksUiPlugin.getDefault().getTaskListNotificationManager().startNotification(1);
-
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not download report", false);
- } finally {
- monitor.done();
- }
-
- return Status.OK_STATUS;
- }
-
- private void refreshEditors(final AbstractRepositoryTask repositoryTask) {
- // TODO: move out of SynchronizeTaskJob (but beware of race conditions)
- if (repositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING
- || repositoryTask.getSyncState() == RepositoryTaskSyncState.CONFLICT) {
- List<MylarTaskEditor> editors = TaskUiUtil.getActiveRepositoryTaskEditors();
- for (final MylarTaskEditor editor : editors) {
- final TaskEditorInput input = (TaskEditorInput) editor.getEditorInput();
- if (input.getTask().getHandleIdentifier().equals(repositoryTask.getHandleIdentifier())) {
-
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if ((repositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING && MessageDialog
- .openConfirm(null, "Stale Editor",
- "Remote copy of report has changes. Refresh and open report?"))
- || repositoryTask.getSyncState() == RepositoryTaskSyncState.CONFLICT) {
- TaskUiUtil.closeEditorInActivePage(input.getTask());
- TaskUiUtil.refreshAndOpenTaskListElement(input.getTask());
- }
- }
- });
- }
- }
- }
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListDataMigration.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListDataMigration.java
deleted file mode 100644
index 3a7b604c1..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListDataMigration.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.ui;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.internal.context.core.util.ZipFileUtil;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-
-/**
- * Migrate 0.6 -> 0.7 mylar data format
- *
- * @author Rob Elves
- */
-public class TaskListDataMigration implements IRunnableWithProgress {
-
- private File dataDirectory = null;
-
- public TaskListDataMigration(File sourceFolder) {
- this.dataDirectory = sourceFolder;
- }
-
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- monitor.beginTask("Task Data Migration", IProgressMonitor.UNKNOWN);
- doMigration(monitor);
- } finally {
-
- }
- }
-
- public void doMigration(IProgressMonitor monitor) {
- try {
- if(dataDirectory == null || !dataDirectory.exists()) return;
- monitor.beginTask("Mylar Data Migration", 4);
- migrateTaskList(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
- monitor.worked(1);
- migrateRepositoriesData(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
- monitor.worked(1);
- migrateTaskContextData(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
- monitor.worked(1);
- migrateActivityData(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
- monitor.worked(1);
- } finally {
- monitor.done();
- }
- }
-
- public boolean migrateTaskList(IProgressMonitor monitor) {
- File oldTasklistFile = new File(dataDirectory, TasksUiPlugin.OLD_TASK_LIST_FILE);
- File newTasklistFile = new File(dataDirectory, TasksUiPlugin.DEFAULT_TASK_LIST_FILE);
- if (!oldTasklistFile.exists())
- return false;
- if (newTasklistFile.exists()) {
- if (!newTasklistFile.delete()) {
- MylarStatusHandler.fail(null, "Could not overwrite tasklist", false);
- return false;
- }
- }
- ArrayList<File> filesToZip = new ArrayList<File>();
- filesToZip.add(oldTasklistFile);
- try {
- monitor.beginTask("Migrate Tasklist Data", 1);
- ZipFileUtil.createZipFile(newTasklistFile, filesToZip, new SubProgressMonitor(monitor, 1));
- if (!oldTasklistFile.delete()) {
- MylarStatusHandler.fail(null, "Could not remove old tasklist.", false);
- return false;
- }
- monitor.worked(1);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Error occurred while migrating old tasklist: " + e.getMessage(), true);
- return false;
- } finally {
- monitor.done();
- }
- return true;
- }
-
- public boolean migrateRepositoriesData(IProgressMonitor monitor) {
- File oldRepositoriesFile = new File(dataDirectory, TaskRepositoryManager.OLD_REPOSITORIES_FILE);
- File newRepositoriesFile = new File(dataDirectory, TaskRepositoryManager.DEFAULT_REPOSITORIES_FILE);
- if (!oldRepositoriesFile.exists())
- return false;
- if (newRepositoriesFile.exists()) {
- if (!newRepositoriesFile.delete()) {
- MylarStatusHandler.fail(null,
- "Could not overwrite repositories file. Check read/write permission on data directory.", false);
- return false;
- }
- }
- ArrayList<File> filesToZip = new ArrayList<File>();
- filesToZip.add(oldRepositoriesFile);
- try {
- monitor.beginTask("Migrate Repository Data", 1);
- ZipFileUtil.createZipFile(newRepositoriesFile, filesToZip, new SubProgressMonitor(monitor, 1));
- if (!oldRepositoriesFile.delete()) {
- MylarStatusHandler
- .fail(
- null,
- "Could not remove old repositories file. Check read/write permission on data directory.",
- false);
- return false;
- }
- monitor.worked(1);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Error occurred while migrating old repositories data: " + e.getMessage(), true);
- return false;
- } finally {
- monitor.done();
- }
- return true;
- }
-
- public boolean migrateTaskContextData(IProgressMonitor monitor) {
- ArrayList<File> contextFiles = new ArrayList<File>();
- for (File file : dataDirectory.listFiles()) {
- if (file.getName().startsWith("http") || file.getName().startsWith("local") || file.getName().startsWith("task")) {
- if (!file.getName().endsWith(".zip")) {
- contextFiles.add(file);
- }
- }
- }
-
- try {
- monitor.beginTask("Task Context Migration", contextFiles.size());
-
- File contextsFolder = new File(dataDirectory, MylarContextManager.CONTEXTS_DIRECTORY);
- if (!contextsFolder.exists()) {
- if (!contextsFolder.mkdir()) {
- MylarStatusHandler.fail(null,
- "Could not create contexts folder. Check read/write permission on data directory.", false);
- return false;
- }
- }
- for (File file : contextFiles) {
- ArrayList<File> filesToZip = new ArrayList<File>();
- filesToZip.add(file);
- File newContextFile = new File(contextsFolder, file.getName()+".zip");
- if (newContextFile.exists()) {
- if (!newContextFile.delete()) {
- MylarStatusHandler.fail(null,
- "Could not overwrite context file. Check read/write permission on data directory.",
- false);
- return false;
- }
- }
- ZipFileUtil.createZipFile(newContextFile, filesToZip, new SubProgressMonitor(monitor, 1));
- if (!file.delete()) {
- MylarStatusHandler.fail(null,
- "Could not remove old context file. Check read/write permission on data directory.", false);
- return false;
- }
- monitor.worked(1);
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Error occurred while migrating old repositories data: " + e.getMessage(), true);
- return false;
- } finally {
- monitor.done();
- }
- return true;
- }
-
- public boolean migrateActivityData(IProgressMonitor monitor) {
- File oldActivityFile = new File(dataDirectory, MylarContextManager.OLD_CONTEXT_HISTORY_FILE_NAME+MylarContextManager.OLD_CONTEXT_FILE_EXTENSION);
- if (!oldActivityFile.exists())
- return false;
-
- File contextsFolder = new File(dataDirectory, MylarContextManager.CONTEXTS_DIRECTORY);
- if (!contextsFolder.exists()) {
- if (!contextsFolder.mkdir()) {
- MylarStatusHandler.fail(null,
- "Could not create contexts folder. Check read/write permission on data directory.", false);
- return false;
- }
- }
-
- File newActivityFile = new File(contextsFolder, MylarContextManager.CONTEXT_HISTORY_FILE_NAME+MylarContextManager.CONTEXT_FILE_EXTENSION);
-
- if (newActivityFile.exists()) {
- if (!newActivityFile.delete()) {
- MylarStatusHandler.fail(null,
- "Could not overwrite activity file. Check read/write permission on data directory.", false);
- return false;
- }
- }
- ArrayList<File> filesToZip = new ArrayList<File>();
- filesToZip.add(oldActivityFile);
- try {
- monitor.beginTask("Migrate Activity Data", 1);
- ZipFileUtil.createZipFile(newActivityFile, filesToZip, new SubProgressMonitor(monitor, 1));
- if (!oldActivityFile.delete()) {
- MylarStatusHandler
- .fail(
- null,
- "Could not remove old activity file. Check read/write permission on data directory.",
- false);
- return false;
- }
- monitor.worked(1);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Error occurred while migrating old activity data: " + e.getMessage(), true);
- return false;
- } finally {
- monitor.done();
- }
- return true;
- }
-
-}
-
-//public boolean migrateActivityData(IProgressMonitor monitor) {
-//File oldActivityFile = new File(dataDirectory, MylarContextManager.OLD_CONTEXT_HISTORY_FILE_NAME+MylarContextManager.OLD_CONTEXT_FILE_EXTENSION);
-//if (!oldActivityFile.exists())
-// return false;
-//
-//File newActivityFile = new File(dataDirectory, MylarContextManager.CONTEXT_HISTORY_FILE_NAME+MylarContextManager.CONTEXT_FILE_EXTENSION);
-//
-//if (newActivityFile.exists()) {
-// if (!newActivityFile.delete()) {
-// MylarStatusHandler.fail(null,
-// "Could not overwrite activity file. Check read/write permission on data directory.", false);
-// return false;
-// }
-//}
-//ArrayList<File> filesToZip = new ArrayList<File>();
-//filesToZip.add(oldActivityFile);
-//try {
-// monitor.beginTask("Migrate Activity Data", 1);
-// ZipFileUtil.createZipFile(newActivityFile, filesToZip, new SubProgressMonitor(monitor, 1));
-// if (!oldActivityFile.delete()) {
-// MylarStatusHandler
-// .fail(
-// null,
-// "Could not remove old activity file. Check read/write permission on data directory.",
-// false);
-// return false;
-// }
-// monitor.worked(1);
-//} catch (Exception e) {
-// MylarStatusHandler.fail(e, "Error occurred while migrating old activity data: " + e.getMessage(), true);
-// return false;
-//} finally {
-// monitor.done();
-//}
-//return true;
-//} \ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java
deleted file mode 100644
index 955dd19eb..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskListManager.java
+++ /dev/null
@@ -1,816 +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
- *******************************************************************************/
-/*
- * Created on Dec 26, 2004
- */
-package org.eclipse.mylar.tasks.ui;
-
-import java.io.File;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.IMylarContext;
-import org.eclipse.mylar.context.core.IMylarContextListener;
-import org.eclipse.mylar.context.core.IMylarElement;
-import org.eclipse.mylar.context.core.InteractionEvent;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.MylarContextManager;
-import org.eclipse.mylar.internal.tasks.core.WebTask;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasks.ui.util.TaskListWriter;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskActivationHistory;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.DateRangeActivityDelegate;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskActivityListener;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-
-/**
- * TODO: clean-up
- *
- * @author Mik Kersten
- * @author Rob Elves (task activity)
- */
-public class TaskListManager implements IPropertyChangeListener {
-
- private static final long SECOND = 1000;
-
- private static final long MINUTE = 60 * SECOND;
-
- private static final long ROLLOVER_DELAY = 30 * MINUTE;
-
- private static final int NUM_WEEKS_PREVIOUS = -1;
-
- private static final int NUM_WEEKS_NEXT = 1;
-
- private static final int NUM_WEEKS_FUTURE_START = 2;
-
- private static final int NUM_WEEKS_FUTURE_END = 8;
-
- private static final int NUM_WEEKS_PAST_START = -8;
-
- private static final int NUM_WEEKS_PAST_END = -2;
-
- public static final String ARCHIVE_CATEGORY_DESCRIPTION = "Archive";
-
- private static final String DESCRIPTION_THIS_WEEK = "This Week";
-
- private static final String DESCRIPTION_PREVIOUS_WEEK = "Previous Week";
-
- private static final String DESCRIPTION_NEXT_WEEK = "Next Week";
-
- private static final String DESCRIPTION_FUTURE = "Future";
-
- private static final String DESCRIPTION_PAST = "Past";
-
- public static final String[] ESTIMATE_TIMES = new String[] { "0 Hours", "1 Hours", "2 Hours", "3 Hours", "4 Hours",
- "5 Hours", "6 Hours", "7 Hours", "8 Hours", "9 Hours", "10 Hours" };
-
- private DateRangeContainer activityThisWeek;
-
- private DateRangeContainer activityNextWeek;
-
- private DateRangeContainer activityPreviousWeek;
-
- private DateRangeContainer activityFuture;
-
- private DateRangeContainer activityPast;
-
- private boolean isInactive;
-
- private long startInactive;
-
- private long totalInactive;
-
- private ArrayList<DateRangeContainer> dateRangeContainers = new ArrayList<DateRangeContainer>();
-
- private Set<ITask> tasksWithReminders = new HashSet<ITask>();
-
- private ITask currentTask = null;
-
- private String currentHandle = "";
-
- private Calendar currentTaskStart = null;
-
- private Calendar currentTaskEnd = null;
-
- private Map<ITask, Long> taskElapsedTimeMap = new HashMap<ITask, Long>();
-
- private List<ITaskActivityListener> activityListeners = new ArrayList<ITaskActivityListener>();
-
- private TaskListWriter taskListWriter;
-
- private File taskListFile;
-
- // TODO: guard against overwriting the single instance?
- private TaskList taskList = new TaskList();
-
- private TaskActivationHistory taskActivationHistory = new TaskActivationHistory();
-
- private boolean taskListInitialized = false;
-
- private boolean taskActivityHistoryInitialized = false;
-
- private int startDay;
-
- private int endDay;
-
- private int scheduledEndHour;
-
- private Timer timer;
-
- /** public for testing */
- public Date startTime = new Date();
-
- private final IMylarContextListener CONTEXT_LISTENER = new IMylarContextListener() {
-
- public void contextActivated(IMylarContext context) {
- parseTaskActivityInteractionHistory();
- }
-
- public void contextDeactivated(IMylarContext context) {
- // ignore
- }
-
- public void presentationSettingsChanging(UpdateKind kind) {
- // ignore
- }
-
- public void presentationSettingsChanged(UpdateKind kind) {
- // ignore
- }
-
- public void interestChanged(List<IMylarElement> elements) {
- List<InteractionEvent> events = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext()
- .getInteractionHistory();
- InteractionEvent event = events.get(events.size() - 1);
- parseInteractionEvent(event);
- }
-
- public void nodeDeleted(IMylarElement element) {
- // ignore
- }
-
- public void landmarkAdded(IMylarElement element) {
- // ignore
- }
-
- public void landmarkRemoved(IMylarElement element) {
- // ignore
- }
-
- public void edgesChanged(IMylarElement element) {
- // ignore
- }
- };
-
- public TaskListManager(TaskListWriter taskListWriter, File file) {
- this.taskListFile = file;
- this.taskListWriter = taskListWriter;
-
- timer = new Timer();
- timer.schedule(new RolloverCheck(), ROLLOVER_DELAY, ROLLOVER_DELAY);
- }
-
- public void init() {
- ContextCorePlugin.getContextManager().addActivityMetaContextListener(CONTEXT_LISTENER);
- }
-
- public void dispose() {
- ContextCorePlugin.getContextManager().removeActivityMetaContextListener(CONTEXT_LISTENER);
- }
-
- public TaskList resetTaskList() {
- resetActivity();
- taskList.reset();
- taskListInitialized = true;
- return taskList;
- }
-
- private void resetActivity() {
- taskElapsedTimeMap.clear();
- dateRangeContainers.clear();
- setupCalendarRanges();
- }
-
- private void parseTaskActivityInteractionHistory() {
- if (!TasksUiPlugin.getTaskListManager().isTaskListInitialized()) {
- return;
- }
- List<InteractionEvent> events = ContextCorePlugin.getContextManager().getActivityHistoryMetaContext()
- .getInteractionHistory();
- for (InteractionEvent event : events) {
- parseInteractionEvent(event);
- }
- taskActivityHistoryInitialized = true;
- }
-
- private void parseFutureReminders() {
- activityFuture.clear();
- activityNextWeek.clear();
- HashSet<ITask> toRemove = new HashSet<ITask>();
- toRemove.addAll(activityThisWeek.getChildren());
- for (ITask activity : toRemove) {
- DateRangeActivityDelegate delegate = (DateRangeActivityDelegate) activity;
- Calendar calendar = GregorianCalendar.getInstance();
- if (delegate.getReminderDate() != null) {
- calendar.setTime(delegate.getReminderDate());
- if (!activityThisWeek.includes(calendar) && activityThisWeek.getElapsed(delegate) == 0) {
- activityThisWeek.remove(delegate);
- }
- } else {
- if (activityThisWeek.getElapsed(delegate) == 0) {
- activityThisWeek.remove(delegate);
- }
- }
- }
- GregorianCalendar tempCalendar = new GregorianCalendar();
- tempCalendar.setFirstDayOfWeek(startDay);
- for (ITask task : tasksWithReminders) {
- if (task.getReminderDate() != null) {
- tempCalendar.setTime(task.getReminderDate());
- if (activityNextWeek.includes(tempCalendar)) {
- activityNextWeek.addTask(new DateRangeActivityDelegate(activityNextWeek, task, tempCalendar,
- tempCalendar));
- } else if (activityFuture.includes(tempCalendar)) {
- activityFuture.addTask(new DateRangeActivityDelegate(activityFuture, task, tempCalendar,
- tempCalendar));
- } else if (activityThisWeek.includes(tempCalendar) && !activityThisWeek.getChildren().contains(task)) {
- activityThisWeek.addTask(new DateRangeActivityDelegate(activityThisWeek, task, tempCalendar,
- tempCalendar));
- }
- }
- }
- }
-
- /** public for testing * */
- public void parseInteractionEvent(InteractionEvent event) {
- if (event.getDelta().equals(MylarContextManager.ACTIVITY_DELTA_ACTIVATED)) {
- if (!event.getStructureHandle().equals(MylarContextManager.ACTIVITY_HANDLE_ATTENTION)) {
- if (isInactive) {
- isInactive = false;
- totalInactive = 0;
- startInactive = 0;
- }
- currentTask = TasksUiPlugin.getTaskListManager().getTaskList().getTask(event.getStructureHandle());
- if (currentTask != null) {
- GregorianCalendar calendar = new GregorianCalendar();
- calendar.setFirstDayOfWeek(startDay);
- calendar.setTime(event.getDate());
- currentTaskStart = calendar;
- currentHandle = event.getStructureHandle();
- }
- } else if (event.getStructureHandle().equals(MylarContextManager.ACTIVITY_HANDLE_ATTENTION) && isInactive) {
- isInactive = false;
- totalInactive += event.getDate().getTime() - startInactive;
- }
- } else if (event.getDelta().equals(MylarContextManager.ACTIVITY_DELTA_DEACTIVATED)) {
- if (!event.getStructureHandle().equals(MylarContextManager.ACTIVITY_HANDLE_ATTENTION)
- && currentHandle.equals(event.getStructureHandle())) {
- GregorianCalendar calendarEnd = new GregorianCalendar();
- calendarEnd.setFirstDayOfWeek(startDay);
- calendarEnd.setTime(event.getDate());
- calendarEnd.getTime();
- currentTaskEnd = calendarEnd;
- if (isInactive) {
- isInactive = false;
- totalInactive += event.getDate().getTime() - startInactive;
- }
- for (DateRangeContainer week : dateRangeContainers) {
- if (week.includes(currentTaskStart)) {
- if (currentTask != null) {
- // add to date range 'bin'
- DateRangeActivityDelegate delegate = new DateRangeActivityDelegate(week, currentTask,
- currentTaskStart, currentTaskEnd, totalInactive);
- week.addTask(delegate);
- // add to running total
- if (taskElapsedTimeMap.containsKey(currentTask)) {
- taskElapsedTimeMap.put(currentTask, taskElapsedTimeMap.get(currentTask)
- + delegate.getActivity());
- } else {
- taskElapsedTimeMap.put(currentTask, delegate.getActivity());
- }
- if (taskActivityHistoryInitialized) {
- for (ITaskActivityListener listener : activityListeners) {
- listener.activityChanged(week);
- }
- }
- }
- }
- }
- currentTask = null;
- currentHandle = "";
- totalInactive = 0;
- startInactive = 0;
- } else if (event.getStructureHandle().equals(MylarContextManager.ACTIVITY_HANDLE_ATTENTION) && !isInactive) {
- if (!currentHandle.equals("")) {
- isInactive = true;
- startInactive = event.getDate().getTime();
- }
- }
- }
- }
-
- /** public for testing * */
- public DateRangeContainer getActivityThisWeek() {
- return activityThisWeek;
- }
-
- /** public for testing * */
- public DateRangeContainer getActivityPast() {
- return activityPast;
- }
-
- /** public for testing * */
- public DateRangeContainer getActivityFuture() {
- return activityFuture;
- }
-
- /** public for testing * */
- public DateRangeContainer getActivityNextWeek() {
- return activityNextWeek;
- }
-
- /** public for testing * */
- public DateRangeContainer getActivityPrevious() {
- return activityPreviousWeek;
- }
-
- /** total elapsed time based on activation history */
- public long getElapsedTime(ITask task) {
- long unaccounted = 0;
- if (task.equals(currentTask)) {
- unaccounted = Calendar.getInstance().getTimeInMillis() - currentTaskStart.getTimeInMillis() - totalInactive;
- unaccounted = unaccounted < 0 ? 0 : unaccounted;
- }
- if (taskElapsedTimeMap.containsKey(task)) {
- return unaccounted + taskElapsedTimeMap.get(task);
- } else {
- return 0;
- }
- }
-
- private void setupCalendarRanges() {
- // MylarTaskListPlugin.getMylarCorePrefs().getInt(TaskListPreferenceConstants.PLANNING_STARTDAY);
- startDay = Calendar.MONDAY;
- // MylarTaskListPlugin.getMylarCorePrefs().getInt(TaskListPreferenceConstants.PLANNING_ENDDAY);
- endDay = Calendar.SUNDAY;
- // scheduledStartHour =
- // TasksUiPlugin.getDefault().getPreferenceStore().getInt(
- // TaskListPreferenceConstants.PLANNING_STARTHOUR);
- scheduledEndHour = TasksUiPlugin.getDefault().getPreferenceStore().getInt(
- TaskListPreferenceConstants.PLANNING_ENDHOUR);
-
- GregorianCalendar currentBegin = new GregorianCalendar();
- currentBegin.setFirstDayOfWeek(startDay);
- currentBegin.setTime(startTime);
- snapToStartOfWeek(currentBegin);
- GregorianCalendar currentEnd = new GregorianCalendar();
- currentEnd.setFirstDayOfWeek(startDay);
- currentEnd.setTime(startTime);
- snapToEndOfWeek(currentEnd);
- activityThisWeek = new DateRangeContainer(currentBegin, currentEnd, DESCRIPTION_THIS_WEEK, taskList);
- dateRangeContainers.add(activityThisWeek);
-
- GregorianCalendar previousStart = new GregorianCalendar();
- previousStart.setFirstDayOfWeek(startDay);
- previousStart.setTime(startTime);
- previousStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PREVIOUS);
- snapToStartOfWeek(previousStart);
- GregorianCalendar previousEnd = new GregorianCalendar();
- previousEnd.setFirstDayOfWeek(startDay);
- previousEnd.setTime(startTime);
- previousEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PREVIOUS);
- snapToEndOfWeek(previousEnd);
- activityPreviousWeek = new DateRangeContainer(previousStart.getTime(), previousEnd.getTime(),
- DESCRIPTION_PREVIOUS_WEEK, taskList);
- dateRangeContainers.add(activityPreviousWeek);
-
- GregorianCalendar nextStart = new GregorianCalendar();
- nextStart.setFirstDayOfWeek(startDay);
- nextStart.setTime(startTime);
- nextStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_NEXT);
- snapToStartOfWeek(nextStart);
- GregorianCalendar nextEnd = new GregorianCalendar();
- nextEnd.setFirstDayOfWeek(startDay);
- nextEnd.setTime(startTime);
- nextEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_NEXT);
- snapToEndOfWeek(nextEnd);
- activityNextWeek = new DateRangeContainer(nextStart.getTime(), nextEnd.getTime(), DESCRIPTION_NEXT_WEEK,
- taskList);
- dateRangeContainers.add(activityNextWeek);
-
- GregorianCalendar futureStart = new GregorianCalendar();
- futureStart.setFirstDayOfWeek(startDay);
- futureStart.setTime(startTime);
- futureStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_FUTURE_START);
- snapToStartOfWeek(futureStart);
- GregorianCalendar futureEnd = new GregorianCalendar();
- futureEnd.setFirstDayOfWeek(startDay);
- futureEnd.setTime(startTime);
- futureEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_FUTURE_END);
- snapToEndOfWeek(futureEnd);
- activityFuture = new DateRangeContainer(futureStart.getTime(), futureEnd.getTime(), DESCRIPTION_FUTURE,
- taskList);
- dateRangeContainers.add(activityFuture);
-
- GregorianCalendar pastStart = new GregorianCalendar();
- pastStart.setFirstDayOfWeek(startDay);
- pastStart.setTime(startTime);
- pastStart.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PAST_START);
- snapToStartOfWeek(pastStart);
- GregorianCalendar pastEnd = new GregorianCalendar();
- pastEnd.setFirstDayOfWeek(startDay);
- pastEnd.setTime(startTime);
- pastEnd.add(Calendar.WEEK_OF_YEAR, NUM_WEEKS_PAST_END);
- snapToEndOfWeek(pastEnd);
- activityPast = new DateRangeContainer(pastStart.getTime(), pastEnd.getTime(), DESCRIPTION_PAST, taskList);
- dateRangeContainers.add(activityPast);
- }
-
- private void snapToStartOfWeek(GregorianCalendar cal) {
- cal.getTime();
- cal.set(Calendar.DAY_OF_WEEK, startDay);
- cal.set(Calendar.HOUR_OF_DAY, 0);
- cal.set(Calendar.MINUTE, 0);
- cal.set(Calendar.SECOND, 0);
- cal.set(Calendar.MILLISECOND, 0);
- cal.getTime();
- }
-
- private void snapToEndOfWeek(GregorianCalendar cal) {
- cal.getTime();
- cal.set(Calendar.DAY_OF_WEEK, endDay);
- cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY));
- cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE));
- cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND));
- cal.set(Calendar.MILLISECOND, cal.getMaximum(Calendar.MILLISECOND));
- cal.getTime();
- }
-
- public Calendar setSecheduledIn(Calendar calendar, int days) {
- calendar.add(Calendar.DAY_OF_MONTH, days);
- calendar.set(Calendar.HOUR_OF_DAY, scheduledEndHour);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- return calendar;
- }
-
- /**
- * Will schedule for today if past work-day's end.
- */
- public Calendar setScheduledToday(Calendar calendar) {
- Calendar now = Calendar.getInstance();
- if (now.get(Calendar.HOUR_OF_DAY) >= scheduledEndHour) {
- setSecheduledIn(calendar, 1);
- }
- calendar.set(Calendar.HOUR_OF_DAY, scheduledEndHour);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- return calendar;
- }
-
- public Object[] getDateRanges() {
- // parseFutureReminders();
- return dateRangeContainers.toArray();
- }
-
- public String genUniqueTaskHandle() {
- int nextId = taskList.findLargestTaskHandle() + 1;
- return TaskRepositoryManager.PREFIX_LOCAL + nextId;// nextLocalTaskId++;
- }
-
- public void refactorRepositoryUrl(String oldUrl, String newUrl) {
- if (oldUrl == null || newUrl == null || oldUrl.equals(newUrl)) {
- return;
- }
- List<ITask> activeTasks = taskList.getActiveTasks();
- for (ITask task : new ArrayList<ITask>(activeTasks)) {
- deactivateTask(task);
- }
- taskList.refactorRepositoryUrl(oldUrl, newUrl);
-
- File dataDir = new File(TasksUiPlugin.getDefault().getDataDirectory(), MylarContextManager.CONTEXTS_DIRECTORY);
- if (dataDir.exists() && dataDir.isDirectory()) {
- for (File file : dataDir.listFiles()) {
- int dotIndex = file.getName().lastIndexOf(".xml");
- if (dotIndex != -1) {
- String storedHandle;
- try {
- storedHandle = URLDecoder.decode(file.getName().substring(0, dotIndex),
- MylarContextManager.CONTEXT_FILENAME_ENCODING);
- int delimIndex = storedHandle.lastIndexOf(AbstractRepositoryTask.HANDLE_DELIM);
- if (delimIndex != -1) {
- String storedUrl = storedHandle.substring(0, delimIndex);
- if (oldUrl.equals(storedUrl)) {
- String id = AbstractRepositoryTask.getTaskId(storedHandle);
- String newHandle = AbstractRepositoryTask.getHandle(newUrl, id);
- File newFile = ContextCorePlugin.getContextManager().getFileForContext(newHandle);
- file.renameTo(newFile);
- }
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not move context file: " + file.getName(), false);
- }
- }
- }
- }
- saveTaskList();
- }
-
- public boolean readExistingOrCreateNewList() {
- try {
- if (taskListFile.exists()) {
- taskListWriter.readTaskList(taskList, taskListFile);
- } else {
- resetTaskList();
- }
-
- for (ITask task : taskList.getAllTasks()) {
- if (task.getReminderDate() != null)// && task.hasBeenReminded()
- // != true
- tasksWithReminders.add(task);
- }
- resetActivity();
- parseFutureReminders();
- taskListInitialized = true;
- for (ITaskActivityListener listener : new ArrayList<ITaskActivityListener>(activityListeners)) {
- listener.taskListRead();
- }
-
- // only activate the first task to avoid confusion of mutliple
- // active tasks on startup
- if (taskList.getActiveTask() != null) {
- activateTask(taskList.getActiveTask());
- }
- parseTaskActivityInteractionHistory();
- taskActivationHistory.loadPersistentHistory();
- } catch (Exception e) {
- MylarStatusHandler.log(e, "Could not read task list");
- return false;
- }
- return true;
- }
-
- /**
- * Will not save an empty task list to avoid losing data on bad startup.
- */
- public void saveTaskList() {
- try {
- if (taskListInitialized) {
- taskListWriter.writeTaskList(taskList, taskListFile);
- // TasksUiPlugin.getDefault().getPreferenceStore().setValue(TaskListPreferenceConstants.TASK_ID,
- // nextLocalTaskId);
- } else {
- MylarStatusHandler.log("task list save attempted before initialization", this);
- }
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not save task list", true);
- }
- }
-
- public TaskList getTaskList() {
- return taskList;
- }
-
- public void addActivityListener(ITaskActivityListener listener) {
- activityListeners.add(listener);
- }
-
- public void removeActivityListener(ITaskActivityListener listener) {
- activityListeners.remove(listener);
- }
-
- public void activateTask(ITask task) {
- if (!TasksUiPlugin.getDefault().isMultipleActiveTasksMode()) {
- deactivateAllTasks();
- }
-
- try {
- taskList.setActive(task, true);
- for (ITaskActivityListener listener : new ArrayList<ITaskActivityListener>(activityListeners)) {
- listener.taskActivated(task);
- }
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "could not activate task", false);
- }
- }
-
- public void deactivateAllTasks() {
- // Make a copy to avoid modification on list being traversed; can result
- // in a ConcurrentModificationException
- List<ITask> activeTasks = new ArrayList<ITask>(taskList.getActiveTasks());
- for (ITask task : activeTasks) {
- deactivateTask(task);
- }
- }
-
- public void deactivateTask(ITask task) {
- if (task == null) {
- return;
- }
-
- if (task.isActive()) {
- taskList.setActive(task, false);
- for (ITaskActivityListener listener : new ArrayList<ITaskActivityListener>(activityListeners)) {
- try {
- listener.taskDeactivated(task);
- } catch (Throwable t) {
- MylarStatusHandler.fail(t, "notification failed for: " + listener, false);
- }
- }
- }
- }
-
- public void setTaskListFile(File file) {
- this.taskListFile = file;
- }
-
- public boolean isTaskListInitialized() {
- return taskListInitialized;
- }
-
- public TaskListWriter getTaskListWriter() {
- return taskListWriter;
- }
-
- public File getTaskListFile() {
- return taskListFile;
- }
-
- public boolean isActiveThisWeek(ITask task) {
- for (ITask activityDelegateTask : activityThisWeek.getChildren()) {
- if (activityDelegateTask.getHandleIdentifier().equals(task.getHandleIdentifier())) {
- return true;
- }
- }
- return false;
- }
-
- public boolean isCompletedToday(ITask task) {
- if (task != null) {
-
- if (task instanceof AbstractRepositoryTask && !(task instanceof WebTask)) {
- AbstractRepositoryTask repositoryTask = (AbstractRepositoryTask) task;
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- repositoryTask.getRepositoryKind(), repositoryTask.getRepositoryUrl());
- if (repository != null && repositoryTask.getOwner() != null
- && !repositoryTask.getOwner().equals(repository.getUserName()))
- return false;
- }
-
- Date completionDate = task.getCompletionDate();
- if (completionDate != null) {
- Calendar tomorrow = Calendar.getInstance();
- TasksUiPlugin.getTaskListManager().setSecheduledIn(tomorrow, 1);
-
- Calendar yesterday = Calendar.getInstance();
- yesterday.set(Calendar.HOUR_OF_DAY, 0);
- yesterday.set(Calendar.MINUTE, 0);
- yesterday.set(Calendar.SECOND, 0);
- yesterday.set(Calendar.MILLISECOND, 0);
-
- return completionDate.compareTo(yesterday.getTime()) == 1
- && completionDate.compareTo(tomorrow.getTime()) == -1;
- }
- }
- return false;
- }
-
- public boolean isReminderAfterThisWeek(ITask task) {
- if (task != null) {
- Date reminder = task.getReminderDate();
- if (reminder != null) {
- return reminder.compareTo(activityNextWeek.getStart().getTime()) > -1;
- }
- }
- return false;
- }
-
- public boolean isReminderLater(ITask task) {
- if (task != null) {
- Date reminder = task.getReminderDate();
- if (reminder != null) {
- return reminder.compareTo(activityFuture.getStart().getTime()) > -1;
- }
- }
- return false;
- }
-
- public boolean isReminderThisWeek(ITask task) {
- if (task != null) {
- Date reminder = task.getReminderDate();
- if (reminder != null) {
- Date now = new Date();
- return (reminder.compareTo(now) == 1 && reminder.compareTo(activityThisWeek.getEnd().getTime()) == -1);
- }
- }
- return false;
- }
-
- public boolean isReminderToday(ITask task) {
- if (task != null) {
- Date reminder = task.getReminderDate();
- if (reminder != null) {
- Date now = new Date();
- Calendar tomorrow = GregorianCalendar.getInstance();
- TasksUiPlugin.getTaskListManager().setSecheduledIn(tomorrow, 1);
- return (reminder.compareTo(now) == 1 && reminder.compareTo(tomorrow.getTime()) == -1);
- }
- }
- return false;
- }
-
- /**
- * TODO: Need to migrate to use of this method for setting of reminders
- */
- public void setReminder(ITask task, Date reminderDate) {
- task.setReminderDate(reminderDate);
- task.setReminded(false);
- if (reminderDate == null) {
- tasksWithReminders.remove(task);
- } else {
- tasksWithReminders.add(task);
- }
- parseFutureReminders();
- taskList.notifyLocalInfoChanged(task);
- }
-
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(TaskListPreferenceConstants.PLANNING_STARTHOUR)
- || event.getProperty().equals(TaskListPreferenceConstants.PLANNING_ENDHOUR)) {
- // event.getProperty().equals(TaskListPreferenceConstants.PLANNING_STARTDAY)
- // scheduledStartHour =
- // TasksUiPlugin.getDefault().getPreferenceStore().getInt(
- // TaskListPreferenceConstants.PLANNING_STARTHOUR);
- scheduledEndHour = TasksUiPlugin.getDefault().getPreferenceStore().getInt(
- TaskListPreferenceConstants.PLANNING_ENDHOUR);
- }
- }
-
- /** public for testing */
- public void resetAndRollOver() {
- taskActivityHistoryInitialized = false;
- tasksWithReminders.clear();
- for (ITask task : taskList.getAllTasks()) {
- if (task.getReminderDate() != null) {
- tasksWithReminders.add(task);
- }
- }
- resetActivity();
- parseFutureReminders();
- parseTaskActivityInteractionHistory();
- for (ITaskActivityListener listener : activityListeners) {
- listener.calendarChanged();
- }
- }
-
- private class RolloverCheck extends TimerTask {
-
- @Override
- public void run() {
- if (!Platform.isRunning() || ContextCorePlugin.getDefault() == null) {
- return;
- } else {
- Calendar now = GregorianCalendar.getInstance();
- DateRangeContainer thisWeek = getActivityThisWeek();
- if (!thisWeek.includes(now)) {
- startTime = new Date();
- resetAndRollOver();
- }
- }
- }
- }
-
- public TaskActivationHistory getTaskActivationHistory() {
- return taskActivationHistory;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskTransfer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskTransfer.java
deleted file mode 100644
index 9e257dc6e..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TaskTransfer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.ui;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.swt.dnd.ByteArrayTransfer;
-import org.eclipse.swt.dnd.TransferData;
-
-/**
- * @author Mik Kersten
- */
-public class TaskTransfer extends ByteArrayTransfer {
-
- private static final TaskTransfer INSTANCE = new TaskTransfer();
-
- private static final String TYPE_NAME = "task-transfer-format:" + System.currentTimeMillis() + ":" + INSTANCE.hashCode();
-
- private static final int TYPEID = registerType(TYPE_NAME);
-
- private TaskTransfer() {
- }
-
- public static TaskTransfer getInstance() {
- return INSTANCE;
- }
-
- protected int[] getTypeIds() {
- return new int[] { TYPEID };
- }
-
- protected String[] getTypeNames() {
- return new String[] { TYPE_NAME };
- }
-
- protected void javaToNative(Object data, TransferData transferData) {
- if (!(data instanceof ITask[])) {
- return;
- }
-
- ITask[] tasks = (ITask[]) data;
- int resourceCount = tasks.length;
-
- try {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- DataOutputStream dataOut = new DataOutputStream(out);
-
- //write the number of resources
- dataOut.writeInt(resourceCount);
-
- //write each resource
- for (int i = 0; i < tasks.length; i++) {
- writeResource(dataOut, tasks[i]);
- }
-
- //cleanup
- dataOut.close();
- out.close();
- byte[] bytes = out.toByteArray();
- super.javaToNative(bytes, transferData);
- } catch (IOException e) {
- //it's best to send nothing if there were problems
- }
- }
-
- protected Object nativeToJava(TransferData transferData) {
- byte[] bytes = (byte[]) super.nativeToJava(transferData);
- if (bytes == null) {
- return null;
- }
- DataInputStream in = new DataInputStream(
- new ByteArrayInputStream(bytes));
- try {
- int count = in.readInt();
- ITask[] results = new ITask[count];
- for (int i = 0; i < count; i++) {
- results[i] = readTask(in);
- }
- return results;
- } catch (IOException e) {
- return null;
- }
- }
-
- private ITask readTask(DataInputStream dataIn) throws IOException {
- String handle = dataIn.readUTF();
- return TasksUiPlugin.getTaskListManager().getTaskList().getTask(handle);
- }
-
- private void writeResource(DataOutputStream dataOut, ITask task)
- throws IOException {
- dataOut.writeUTF(task.getHandleIdentifier());
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java
deleted file mode 100644
index 5ec0e55e8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java
+++ /dev/null
@@ -1,962 +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.tasks.ui;
-
-import java.io.File;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.net.Proxy.Type;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
-import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.context.core.MylarPreferenceContstants;
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-import org.eclipse.mylar.internal.tasks.ui.IDynamicSubMenuContributor;
-import org.eclipse.mylar.internal.tasks.ui.ITaskEditorFactory;
-import org.eclipse.mylar.internal.tasks.ui.ITaskHighlighter;
-import org.eclipse.mylar.internal.tasks.ui.ITaskListNotification;
-import org.eclipse.mylar.internal.tasks.ui.ITaskListNotificationProvider;
-import org.eclipse.mylar.internal.tasks.ui.OfflineTaskManager;
-import org.eclipse.mylar.internal.tasks.ui.TaskListBackupManager;
-import org.eclipse.mylar.internal.tasks.ui.TaskListColorsAndFonts;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationIncoming;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationManager;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationQueryIncoming;
-import org.eclipse.mylar.internal.tasks.ui.TaskListNotificationReminder;
-import org.eclipse.mylar.internal.tasks.ui.TaskListPreferenceConstants;
-import org.eclipse.mylar.internal.tasks.ui.TaskListSynchronizationScheduler;
-import org.eclipse.mylar.internal.tasks.ui.util.TaskListSaveManager;
-import org.eclipse.mylar.internal.tasks.ui.util.TaskListWriter;
-import org.eclipse.mylar.internal.tasks.ui.util.TasksUiExtensionReader;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskListView;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.DateRangeContainer;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskActivityListener;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.Task;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IStartup;
-import org.eclipse.ui.IWindowListener;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.update.internal.core.UpdateCore;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * @author Mik Kersten
- *
- * TODO: this class is in serious need of refactoring
- */
-public class TasksUiPlugin extends AbstractUIPlugin implements IStartup {
-
- // TODO: move constants
-
- public static final String DEFAULT_BACKUP_FOLDER_NAME = "backup";
-
- public static final String FILE_EXTENSION = ".xml.zip";
-
- public static final String OLD_TASK_LIST_FILE = "tasklist.xml";
-
- public static final String DEFAULT_TASK_LIST_FILE = "tasklist" + FILE_EXTENSION;
-
- public static final String TITLE_DIALOG = "Mylar Information";
-
- public static final String PLUGIN_ID = "org.eclipse.mylar.tasklist";
-
- public static final String URL_HOMEPAGE = "http://eclipse.org/mylar";
-
- private static final String PROPERTY_PREFIX = "project.repository";
-
- private static final String PROJECT_REPOSITORY_KIND = PROPERTY_PREFIX + ".kind";
-
- private static final String PROJECT_REPOSITORY_URL = PROPERTY_PREFIX +".url";
-
- private static final String NAME_DATA_DIR = ".mylar";
-
- private static final char DEFAULT_PATH_SEPARATOR = '/';
-
- private static final int NOTIFICATION_DELAY = 5000;
-
- private static TasksUiPlugin INSTANCE;
-
- private static TaskListManager taskListManager;
-
- private static TaskRepositoryManager taskRepositoryManager;
-
- private static TaskListSynchronizationScheduler synchronizationScheduler;
-
- private static RepositorySynchronizationManager synchronizationManager;
-
- private static Map<String, AbstractRepositoryConnectorUi> repositoryConnectorUis = new HashMap<String, AbstractRepositoryConnectorUi>();
-
- private TaskListSaveManager taskListSaveManager;
-
- private TaskListNotificationManager taskListNotificationManager;
-
- private TaskListBackupManager taskListBackupManager;
-
- private OfflineTaskManager offlineTaskManager;
-
- private List<ITaskEditorFactory> taskEditors = new ArrayList<ITaskEditorFactory>();
-
- private ArrayList<IHyperlinkDetector> hyperlinkDetectors = new ArrayList<IHyperlinkDetector>();
-
- private TaskListWriter taskListWriter;
-
- // private ResourceBundle resourceBundle;
-
- private long AUTOMATIC_BACKUP_SAVE_INTERVAL = 1 * 3600 * 1000; // every
-
- private static Date lastBackup = new Date();
-
- private ITaskHighlighter highlighter;
-
- private static boolean shellActive = true;
-
- private boolean initialized = false;
-
- private Map<String, Image> brandingIcons = new HashMap<String, Image>();
-
- private Map<String, ImageDescriptor> overlayIcons = new HashMap<String, ImageDescriptor>();
-
- public enum TaskListSaveMode {
- ONE_HOUR, THREE_HOURS, DAY;
- @Override
- public String toString() {
- switch (this) {
- case ONE_HOUR:
- return "1 hour";
- case THREE_HOURS:
- return "3 hours";
- case DAY:
- return "1 day";
- default:
- return "3 hours";
- }
- }
-
- public static TaskListSaveMode fromString(String string) {
- if (string == null)
- return null;
- if (string.equals("1 hour"))
- return ONE_HOUR;
- if (string.equals("3 hours"))
- return THREE_HOURS;
- if (string.equals("1 day"))
- return DAY;
- return null;
- }
-
- public static long fromStringToLong(String string) {
- long hour = 3600 * 1000;
- switch (fromString(string)) {
- case ONE_HOUR:
- return hour;
- case THREE_HOURS:
- return hour * 3;
- case DAY:
- return hour * 24;
- default:
- return hour * 3;
- }
- }
- }
-
- public enum ReportOpenMode {
- EDITOR, INTERNAL_BROWSER, EXTERNAL_BROWSER;
- }
-
- private static ITaskActivityListener CONTEXT_TASK_ACTIVITY_LISTENER = new ITaskActivityListener() {
-
- public void taskActivated(ITask task) {
- ContextCorePlugin.getContextManager().activateContext(task.getHandleIdentifier());
- }
-
- public void tasksActivated(List<ITask> tasks) {
- for (ITask task : tasks) {
- taskActivated(task);
- }
- }
-
- public void taskDeactivated(ITask task) {
- ContextCorePlugin.getContextManager().deactivateContext(task.getHandleIdentifier());
- }
-
- public void activityChanged(DateRangeContainer week) {
- // ignore
- }
-
- public void taskListRead() {
- // ignore
- }
-
- public void calendarChanged() {
- // ignore
- }
- };
-
- /**
- * TODO: move into reminder mechanims
- */
- private IWindowListener WINDOW_LISTENER = new IWindowListener() {
- /**
- * bug 1002249: too slow to save state here
- */
- public void windowDeactivated(IWorkbenchWindow window) {
- shellActive = false;
- }
-
- public void windowActivated(IWorkbenchWindow window) {
- getDefault().checkTaskListBackup();
- shellActive = true;
- }
-
- public void windowOpened(IWorkbenchWindow window) {
- // ignore
- }
-
- public void windowClosed(IWorkbenchWindow window) {
- taskListSaveManager.saveTaskList(true);
- }
- };
-
- private static ITaskListNotificationProvider REMINDER_NOTIFICATION_PROVIDER = new ITaskListNotificationProvider() {
-
- public Set<ITaskListNotification> getNotifications() {
- Date currentDate = new Date();
- Collection<ITask> allTasks = TasksUiPlugin.getTaskListManager().getTaskList().getAllTasks();
- Set<ITaskListNotification> reminders = new HashSet<ITaskListNotification>();
- for (ITask task : allTasks) {
- if (!task.isCompleted() && task.getReminderDate() != null && !task.hasBeenReminded()
- && task.getReminderDate().compareTo(currentDate) < 0) {
- reminders.add(new TaskListNotificationReminder(task));
- task.setReminded(true);
- }
- }
- return reminders;
- }
- };
-
- private static ITaskListNotificationProvider INCOMING_NOTIFICATION_PROVIDER = new ITaskListNotificationProvider() {
-
- public Set<ITaskListNotification> getNotifications() {
- Set<ITaskListNotification> notifications = new HashSet<ITaskListNotification>();
- // Incoming Changes
- for (TaskRepository repository : getRepositoryManager().getAllRepositories()) {
- for (AbstractRepositoryTask repositoryTask : TasksUiPlugin.getTaskListManager().getTaskList()
- .getRepositoryTasks(repository.getUrl())) {
- if (repositoryTask.getSyncState() == RepositoryTaskSyncState.INCOMING
- && repositoryTask.isNotified() == false) {
- TaskListNotificationIncoming notification = new TaskListNotificationIncoming(repositoryTask);
-
- if (repositoryTask.getTaskData() != null) {
- List<TaskComment> taskComments = repositoryTask.getTaskData().getComments();
- if (taskComments != null && taskComments.size() > 0) {
- TaskComment lastComment = taskComments.get(taskComments.size() - 1);
- if (lastComment != null) {
- notification.setDescription(lastComment.getText());
- }
- } else {
- String description = repositoryTask.getTaskData().getDescription();
- if (description != null) {
- notification.setDescription(description);
- }
- }
-
- AbstractRepositoryConnector connector = getRepositoryManager().getRepositoryConnector(
- repositoryTask.getRepositoryKind());
- if (connector != null) {
- IOfflineTaskHandler offlineHandler = connector.getOfflineTaskHandler();
- if (offlineHandler != null && repositoryTask.getTaskData().getLastModified() != null) {
- Date modified = offlineHandler.getDateForAttributeType(
- RepositoryTaskAttribute.DATE_MODIFIED, repositoryTask.getTaskData()
- .getLastModified());
- notification.setDate(modified);
- }
- }
-
- }
-
- notifications.add(notification);
- repositoryTask.setNotified(true);
- }
- }
- }
- // New query hits
- for (AbstractRepositoryQuery query : TasksUiPlugin.getTaskListManager().getTaskList().getQueries()) {
- for (AbstractQueryHit hit : query.getHits()) {
- if (hit.getCorrespondingTask() == null && hit.isNotified() == false) {
- notifications.add(new TaskListNotificationQueryIncoming(hit));
- hit.setNotified(true);
- }
- }
- }
- return notifications;
- }
- };
-
- private final IPropertyChangeListener PREFERENCE_LISTENER = new IPropertyChangeListener() {
-
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().equals(TaskListPreferenceConstants.MULTIPLE_ACTIVE_TASKS)) {
- TaskListView.getFromActivePerspective().togglePreviousAction(
- !getPreferenceStore().getBoolean(TaskListPreferenceConstants.MULTIPLE_ACTIVE_TASKS));
- // TaskListView.getFromActivePerspective().toggleNextAction(
- // !getPreferenceStore().getBoolean(TaskListPreferenceConstants.MULTIPLE_ACTIVE_TASKS));
- // TaskListView.getFromActivePerspective().clearTaskHistory();
- getTaskListManager().getTaskActivationHistory().clear();
-
- }
- // TODO: do we ever get here?
- if (event.getProperty().equals(MylarPreferenceContstants.PREF_DATA_DIR)) {
- if (event.getOldValue() instanceof String) {
- String newDirPath = getDefault().getDataDirectory();
- String taskListFilePath = newDirPath + File.separator + DEFAULT_TASK_LIST_FILE;
- reloadFromNewFolder(taskListFilePath);
- // if (TaskListView.getFromActivePerspective() != null) {
- // TaskListView.getFromActivePerspective().clearTaskHistory();
- // }
- }
- }
- }
-
- };
-
- private final org.eclipse.jface.util.IPropertyChangeListener PROPERTY_LISTENER = new org.eclipse.jface.util.IPropertyChangeListener() {
-
- public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {
- if (event.getProperty().equals(MylarPreferenceContstants.PREF_DATA_DIR)) {
- if (event.getOldValue() instanceof String) {
- String newDirPath = getDefault().getDataDirectory();
- String taskListFilePath = newDirPath + File.separator + DEFAULT_TASK_LIST_FILE;
- reloadFromNewFolder(taskListFilePath);
- }
- }
- }
-
- };
-
- public TasksUiPlugin() {
- super();
- INSTANCE = this;
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- // NOTE: Startup order is very sensitive
- try {
- WebClientUtil.initCommonsLoggingSettings();
- initializeDefaultPreferences(getPreferenceStore());
- taskListWriter = new TaskListWriter();
-
- File dataDir = new File(getDataDirectory());
- dataDir.mkdirs();
- String path = getDataDirectory() + File.separator + DEFAULT_TASK_LIST_FILE;
- File taskListFile = new File(path);
-
- taskListManager = new TaskListManager(taskListWriter, taskListFile);
- taskRepositoryManager = new TaskRepositoryManager(taskListManager.getTaskList());
- synchronizationManager = new RepositorySynchronizationManager();
-
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- try {
- TasksUiExtensionReader.initExtensions(taskListWriter);
- taskRepositoryManager.readRepositories(getRepositoriesFilePath());
- // Must be called after repositories read
- readOfflineReportsFile();
-
- taskListManager.init();
- taskListManager.addActivityListener(CONTEXT_TASK_ACTIVITY_LISTENER);
- taskListManager.readExistingOrCreateNewList();
- initialized = true;
-
- PlatformUI.getWorkbench().addWindowListener(WINDOW_LISTENER);
-
- taskListNotificationManager = new TaskListNotificationManager();
- taskListNotificationManager.addNotificationProvider(REMINDER_NOTIFICATION_PROVIDER);
- taskListNotificationManager.addNotificationProvider(INCOMING_NOTIFICATION_PROVIDER);
- taskListNotificationManager.startNotification(NOTIFICATION_DELAY);
- getPreferenceStore().addPropertyChangeListener(taskListNotificationManager);
-
- taskListBackupManager = new TaskListBackupManager();
- getPreferenceStore().addPropertyChangeListener(taskListBackupManager);
-
- synchronizationScheduler = new TaskListSynchronizationScheduler(true);
- synchronizationScheduler.startSynchJob();
-
- taskListSaveManager = new TaskListSaveManager();
- taskListManager.getTaskList().addChangeListener(taskListSaveManager);
-
- ContextCorePlugin.getDefault().getPluginPreferences().addPropertyChangeListener(
- PREFERENCE_LISTENER);
-
- getPreferenceStore().addPropertyChangeListener(PROPERTY_LISTENER);
- getPreferenceStore().addPropertyChangeListener(synchronizationScheduler);
- getPreferenceStore().addPropertyChangeListener(taskListManager);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Mylar Tasks UI start failed", false);
- }
- }
- });
-
- } catch (Exception e) {
- e.printStackTrace();
- MylarStatusHandler.fail(e, "Mylar Task List initialization failed", false);
- }
- }
-
- public void earlyStartup() {
- // ignore
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- super.stop(context);
- INSTANCE = null;
- try {
- if (PlatformUI.isWorkbenchRunning()) {
- getPreferenceStore().removePropertyChangeListener(taskListNotificationManager);
- getPreferenceStore().removePropertyChangeListener(taskListBackupManager);
- getPreferenceStore().removePropertyChangeListener(taskListManager);
- getPreferenceStore().removePropertyChangeListener(synchronizationScheduler);
- getPreferenceStore().removePropertyChangeListener(PROPERTY_LISTENER);
- taskListManager.getTaskList().removeChangeListener(taskListSaveManager);
- taskListManager.dispose();
- TaskListColorsAndFonts.dispose();
- if (ContextCorePlugin.getDefault() != null) {
- ContextCorePlugin.getDefault().getPluginPreferences().removePropertyChangeListener(
- PREFERENCE_LISTENER);
- }
- PlatformUI.getWorkbench().removeWindowListener(WINDOW_LISTENER);
- }
- } catch (Exception e) {
- MylarStatusHandler.log(e, "Mylar Task List stop terminated abnormally");
- }
- }
-
- public String getDefaultDataDirectory() {
- return ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + '/' + NAME_DATA_DIR;
- }
-
- public String getDataDirectory() {
- return getPreferenceStore().getString(MylarPreferenceContstants.PREF_DATA_DIR);
- }
-
- public void setDataDirectory(String newPath) {
- getPreferenceStore().setValue(MylarPreferenceContstants.PREF_DATA_DIR, newPath);
- ContextCorePlugin.getDefault().getContextStore().notifyContextStoreMoved();
- }
-
- private void reloadFromNewFolder(String taskListFilePath) {
- getTaskListSaveManager().saveTaskList(true);
- getTaskListManager().resetTaskList();
- getTaskListManager().setTaskListFile(new File(taskListFilePath));
- getTaskListManager().readExistingOrCreateNewList();
- getTaskListManager().getTaskActivationHistory().clear();
- }
-
- // // TODO: delete post 0.6?
- // private void migrateHandlesToRepositorySupport() {
- // boolean migrated = false;
- // getMylarCorePrefs().setDefault(TaskListPreferenceConstants.CONTEXTS_MIGRATED,
- // false);
- // // NOTE: gets/checks preference in both stores to accidental migration
- // if
- // (!(getMylarCorePrefs().getBoolean(TaskListPreferenceConstants.CONTEXTS_MIGRATED)
- // || getPreferenceStore()
- // .getBoolean(TaskListPreferenceConstants.CONTEXTS_MIGRATED))) {
- // try {
- // File dataDir = new
- // File(ContextCorePlugin.getDefault().getDataDirectory());
- // TaskRepository defaultRepository =
- // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(
- // TaskRepositoryManager.PREFIX_REPOSITORY_OLD.toLowerCase());
- // if (defaultRepository != null) {
- // String repositoryUrl = defaultRepository.getUrl();
- // migrated = true;
- // if (dataDir.exists() && dataDir.isDirectory()) {
- // for (File file : dataDir.listFiles()) {
- // int dotIndex = file.getName().lastIndexOf('.');
- // if (dotIndex != -1) {
- // String oldHandle = file.getName().substring(0, dotIndex);
- // if (oldHandle.startsWith(TaskRepositoryManager.PREFIX_REPOSITORY_OLD)) {
- // String id = AbstractRepositoryTask.getTaskId(oldHandle);
- // String newHandle = AbstractRepositoryTask.getHandle(repositoryUrl, id);
- // File newFile =
- // ContextCorePlugin.getContextManager().getFileForContext(newHandle);
- // file.renameTo(newFile);
- // }
- // }
- // }
- // }
- // for (ITask task : taskListManager.getTaskList().getAllTasks()) {
- // if (task instanceof AbstractRepositoryTask) {
- // String id = AbstractRepositoryTask.getTaskId(task.getHandleIdentifier());
- // String newHandle = AbstractRepositoryTask.getHandle(repositoryUrl, id);
- // task.setHandleIdentifier(newHandle);
- // }
- // }
- //
- // for (AbstractRepositoryQuery query :
- // taskListManager.getTaskList().getQueries()) {
- // query.setRepositoryUrl(repositoryUrl);
- // for (AbstractQueryHit hit : query.getHits()) {
- // hit.setRepositoryUrl(repositoryUrl);
- // }
- // }
- // taskListManager.saveTaskList();
- // taskListManager.readExistingOrCreateNewList();
- // }
- // } catch (Throwable t) {
- // MylarStatusHandler.fail(t, "task list migration failed", true);
- // }
- // }
- // if (migrated) {
- // MylarStatusHandler.log("Migrated context files to repository-aware
- // paths", this);
- // getMylarCorePrefs().setValue(TaskListPreferenceConstants.CONTEXTS_MIGRATED,
- // true);
- // getPreferenceStore().setValue(TaskListPreferenceConstants.CONTEXTS_MIGRATED,
- // true);
- // }
- // }
-
- @Override
- protected void initializeDefaultPreferences(IPreferenceStore store) {
- store.setDefault(MylarPreferenceContstants.PREF_DATA_DIR, getDefaultDataDirectory());
-
- store.setDefault(TaskListPreferenceConstants.NOTIFICATIONS_ENABLED, true);
- store.setDefault(TaskListPreferenceConstants.SELECTED_PRIORITY, Task.PriorityLevel.P5.toString());
- store.setDefault(TaskListPreferenceConstants.REPORT_OPEN_EDITOR, true);
- store.setDefault(TaskListPreferenceConstants.REPORT_OPEN_INTERNAL, false);
- store.setDefault(TaskListPreferenceConstants.REPORT_DISABLE_INTERNAL, false);
- store.setDefault(TaskListPreferenceConstants.ACTIVATE_ON_OPEN, false);
- store.setDefault(TaskListPreferenceConstants.REPORT_OPEN_EXTERNAL, false);
- // store.setDefault(TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP,
- // false);
-
- store.setDefault(TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED, true);
- store.setDefault(TaskListPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_MILISECONDS, "" + (20 * 60 * 1000));
-
- // store.setDefault(TaskListPreferenceConstants.BACKUP_AUTOMATICALLY,
- // true);
- // store.setDefault(TaskListPreferenceConstants.BACKUP_FOLDER,
- // ContextCorePlugin.getDefault().getDataDirectory()
- // + DEFAULT_PATH_SEPARATOR + DEFAULT_BACKUP_FOLDER_NAME);
- store.setDefault(TaskListPreferenceConstants.BACKUP_SCHEDULE, 1);
- store.setDefault(TaskListPreferenceConstants.BACKUP_MAXFILES, 20);
- store.setDefault(TaskListPreferenceConstants.BACKUP_LAST, 0f);
-
- store.setDefault(TaskListPreferenceConstants.FILTER_ARCHIVE_MODE, true);
- store.setDefault(TaskListPreferenceConstants.MULTIPLE_ACTIVE_TASKS, false);
- store.setValue(TaskListPreferenceConstants.MULTIPLE_ACTIVE_TASKS, false);
-
- // store.setDefault(TaskListPreferenceConstants.PLANNING_STARTDAY, 2);
- // store.setDefault(TaskListPreferenceConstants.PLANNING_ENDDAY, 6);
- store.setDefault(TaskListPreferenceConstants.PLANNING_STARTHOUR, 9);
- store.setDefault(TaskListPreferenceConstants.PLANNING_ENDHOUR, 17);
-
- store.setDefault(TaskListPreferenceConstants.SAVE_TASKLIST_MODE, TaskListSaveMode.THREE_HOURS.toString());
- }
-
- public Proxy getProxySettings() {
- Proxy proxy = Proxy.NO_PROXY;
- if (UpdateCore.getPlugin().getPluginPreferences().getBoolean(UpdateCore.HTTP_PROXY_ENABLE)) {
- String proxyHost = UpdateCore.getPlugin().getPluginPreferences().getString(UpdateCore.HTTP_PROXY_HOST);
- int proxyPort = UpdateCore.getPlugin().getPluginPreferences().getInt(UpdateCore.HTTP_PROXY_PORT);
-
- InetSocketAddress sockAddr = new InetSocketAddress(proxyHost, proxyPort);
- proxy = new Proxy(Type.HTTP, sockAddr);
- }
- return proxy;
- }
-
- public static TaskListManager getTaskListManager() {
- return taskListManager;
- }
-
- public TaskListNotificationManager getTaskListNotificationManager() {
- return taskListNotificationManager;
- }
-
- /**
- * Returns the shared instance.
- */
- public static TasksUiPlugin getDefault() {
- return INSTANCE;
- }
-
- // public static IPreferenceStore getMylarCorePrefs() {
- // // TODO: should be using the task list's prefernece store, but can't
- // // change without migrating because this will cause people to lose
- // // repositories
- // return ContextCorePlugin.getDefault().getPreferenceStore();
- // }
-
- private void checkTaskListBackup() {
- Date currentTime = new Date();
- if (currentTime.getTime() > lastBackup.getTime() + AUTOMATIC_BACKUP_SAVE_INTERVAL) {// TaskListSaveMode.fromStringToLong(getPrefs().getString(SAVE_TASKLIST_MODE)))
- // {
- TasksUiPlugin.getDefault().getTaskListSaveManager().createTaskListBackupFile();
- lastBackup = new Date();
- }
- }
-
- private List<IDynamicSubMenuContributor> menuContributors = new ArrayList<IDynamicSubMenuContributor>();
-
- public List<IDynamicSubMenuContributor> getDynamicMenuContributers() {
- return menuContributors;
- }
-
- public void addDynamicPopupContributor(IDynamicSubMenuContributor contributor) {
- menuContributors.add(contributor);
- }
-
- public boolean isMultipleActiveTasksMode() {
- return getPreferenceStore().getBoolean(TaskListPreferenceConstants.MULTIPLE_ACTIVE_TASKS);
- }
-
- public String[] getSaveOptions() {
- String[] options = { TaskListSaveMode.ONE_HOUR.toString(), TaskListSaveMode.THREE_HOURS.toString(),
- TaskListSaveMode.DAY.toString() };
- return options;
- }
-
- public String getBackupFolderPath() {
- return getDataDirectory() + DEFAULT_PATH_SEPARATOR + DEFAULT_BACKUP_FOLDER_NAME;
- }
-
- public ITaskHighlighter getHighlighter() {
- return highlighter;
- }
-
- public void setHighlighter(ITaskHighlighter highlighter) {
- this.highlighter = highlighter;
- }
-
- public List<ITaskEditorFactory> getTaskEditorFactories() {
- return taskEditors;
- }
-
- public void addContextEditor(ITaskEditorFactory contextEditor) {
- if (contextEditor != null)
- this.taskEditors.add(contextEditor);
- }
-
- public TaskListSaveManager getTaskListSaveManager() {
- return taskListSaveManager;
- }
-
- public boolean isShellActive() {
- return TasksUiPlugin.shellActive;
- }
-
- public static TaskRepositoryManager getRepositoryManager() {
- return taskRepositoryManager;
- }
-
- public void addBrandingIcon(String repositoryType, Image icon) {
- brandingIcons.put(repositoryType, icon);
- }
-
- public Image getBrandingIcon(String repositoryType) {
- return brandingIcons.get(repositoryType);
- }
-
- public void addOverlayIcon(String repositoryType, ImageDescriptor icon) {
- overlayIcons.put(repositoryType, icon);
- }
-
- public ImageDescriptor getOverlayIcon(String repositoryType) {
- return overlayIcons.get(repositoryType);
- }
-
- public boolean isInitialized() {
- return initialized;
- }
-
- public IHyperlinkDetector[] getTaskHyperlinkDetectors() {
- return hyperlinkDetectors.toArray(new IHyperlinkDetector[1]);
- }
-
- public void addTaskHyperlinkDetector(IHyperlinkDetector listener) {
- if (listener != null)
- this.hyperlinkDetectors.add(listener);
- }
-
- public TaskListBackupManager getBackupManager() {
- return taskListBackupManager;
- }
-
- // TODO: clean-up
- private void readOfflineReportsFile() {
- IPath offlineReportsPath = getOfflineReportsFilePath();
-
- try {
- offlineTaskManager = new OfflineTaskManager(offlineReportsPath.toFile(), true);
- } catch (Exception e) {
- MylarStatusHandler
- .log(e,
- "Could not restore offline repository tasks file, creating new one (possible version incompatibility)");
- boolean deleted = offlineReportsPath.toFile().delete();
- if (!deleted) {
- MylarStatusHandler.log(e, "could not delete offline repository tasks file");
- }
- try {
- offlineTaskManager = new OfflineTaskManager(offlineReportsPath.toFile(), false);
- } catch (Exception e1) {
- MylarStatusHandler.log(e, "could not reset offline repository tasks file");
- }
- }
- }
-
- /**
- * Returns the path to the file cacheing the offline bug reports.
- */
- private IPath getOfflineReportsFilePath() {
- IPath stateLocation = Platform.getStateLocation(TasksUiPlugin.getDefault().getBundle());
- IPath configFile = stateLocation.append("offlineReports");
- return configFile;
- }
-
- public OfflineTaskManager getOfflineReportsFile() {
- if (offlineTaskManager == null) {
- MylarStatusHandler.fail(null, "Offline reports file not created, try restarting.", true);
- }
- return offlineTaskManager;
- }
-
- public static void addRepositoryConnectorUi(AbstractRepositoryConnectorUi repositoryConnectorUi) {
- if (!repositoryConnectorUis.values().contains(repositoryConnectorUi)) {
- repositoryConnectorUis.put(repositoryConnectorUi.getRepositoryType(), repositoryConnectorUi);
- }
- }
-
- public static AbstractRepositoryConnectorUi getRepositoryUi(String kind) {
- return repositoryConnectorUis.get(kind);
- }
-
- public static TaskListSynchronizationScheduler getSynchronizationScheduler() {
- return synchronizationScheduler;
- }
-
- public static RepositorySynchronizationManager getSynchronizationManager() {
- return synchronizationManager;
- }
-
- public String getRepositoriesFilePath() {
- return getDataDirectory() + File.separator + TaskRepositoryManager.DEFAULT_REPOSITORIES_FILE;
- }
-
- /**
- * Associate a Task Repository with a workbench project
- * @param resource project or resource belonging to a project
- * @param repository task repository to associate with given project
- * @throws CoreException
- */
- public void setRepositoryForResource(IResource resource, TaskRepository repository) throws CoreException {
- if(resource == null || repository == null) return;
- IProject project = resource.getProject();
- if(project == null) return;
- IScopeContext projectScope = new ProjectScope(project);
- IEclipsePreferences projectNode = projectScope.getNode(PLUGIN_ID);
- if (projectNode != null) {
- projectNode.put(PROJECT_REPOSITORY_KIND, repository.getKind());
- projectNode.put(PROJECT_REPOSITORY_URL, repository.getUrl());
- try {
- projectNode.flush();
- } catch (BackingStoreException e) {
- MylarStatusHandler.fail(e, "Failed to save task repository to project association preference", false);
- }
- }
- }
-
- /**
- * Retrieve the task repository that has been associated with the given
- * project (or resource belonging to a project)
- */
- public TaskRepository getRepositoryForResource(IResource resource, boolean silent) {
- if(resource == null) return null;
- IProject project = resource.getProject();
- if(project == null) return null;
- TaskRepository taskRepository = null;
- IScopeContext projectScope = new ProjectScope(project);
- IEclipsePreferences projectNode = projectScope.getNode(PLUGIN_ID);
- if (projectNode != null) {
- String kind = projectNode.get(PROJECT_REPOSITORY_KIND, "");
- String urlString = projectNode.get(PROJECT_REPOSITORY_URL, "");
- taskRepository = getRepositoryManager().getRepository(kind, urlString);
- if (taskRepository == null && !silent) {
- MessageDialog.openInformation(null, "No Repository Found",
- "No repository was found. Associate a Task Repository with this project via the project's property page.");
- }
- }
- return taskRepository;
- }
-
-}
-
-// public Map<String, IHyperlinkListener> getTaskHyperlinkListeners() {
-// return taskHyperlinkListeners;
-// }
-
-// public void addTaskHyperlinkListener(String type, IHyperlinkListener
-// listener) {
-// if (listener != null)
-// this.taskHyperlinkListeners.put(type, listener);
-// }
-
-// /**
-// * Returns the string from the INSTANCE's resource bundle, or 'key' if not
-// * found.
-// */
-// public static String getResourceString(String key) {
-// ResourceBundle bundle = MylarTaskListPlugin.getDefault().getResourceBundle();
-// try {
-// return (bundle != null) ? bundle.getString(key) : key;
-// } catch (MissingResourceException e) {
-// return key;
-// }
-// }
-//
-// /**
-// * Returns the INSTANCE's resource bundle,
-// */
-// public ResourceBundle getResourceBundle() {
-// try {
-// if (resourceBundle == null)
-// resourceBundle =
-// ResourceBundle.getBundle("taskListPlugin.TaskListPluginPluginResources");
-// } catch (MissingResourceException x) {
-// resourceBundle = null;
-// }
-// return resourceBundle;
-// }
-
-// public static void setCurrentPriorityLevel(Task.PriorityLevel pl) {
-// getPrefs().setValue(TaskListPreferenceConstants.SELECTED_PRIORITY,
-// pl.toString());
-// }
-
-// public void setFilterCompleteMode(boolean isFilterOn) {
-// getPrefs().setValue(TaskListPreferenceConstants.FILTER_COMPLETE_MODE,
-// isFilterOn);
-// }
-
-// public boolean isFilterCompleteMode() {
-// if
-// (getPrefs().contains(TaskListPreferenceConstants.FILTER_COMPLETE_MODE)) {
-// return
-// getPrefs().getBoolean(TaskListPreferenceConstants.FILTER_COMPLETE_MODE);
-// } else {
-// return false;
-// }
-// }
-
-// public void setFilterInCompleteMode(boolean isFilterOn) {
-// getPrefs().setValue(TaskListPreferenceConstants.FILTER_INCOMPLETE_MODE,
-// isFilterOn);
-// }
-
-// public boolean isFilterInCompleteMode() {
-// if
-// (getPrefs().contains(TaskListPreferenceConstants.FILTER_INCOMPLETE_MODE))
-// {
-// return
-// getPrefs().getBoolean(TaskListPreferenceConstants.FILTER_INCOMPLETE_MODE);
-// } else {
-// return false;
-// }
-// }
-
-// public List<ITaskHandler> getTaskHandlers() {
-// return taskHandlers;
-// }
-
-// public ITaskHandler getHandlerForElement(ITaskListElement element) {
-// for (ITaskHandler taskHandler : taskHandlers) {
-// if (taskHandler.acceptsItem(element))
-// return taskHandler;
-// }
-// return null;
-// }
-
-// public void addTaskHandler(ITaskHandler taskHandler) {
-// taskHandlers.add(taskHandler);
-// }
-
-// private void restoreTaskHandlerState() {
-// for (ITaskHandler handler : taskHandlers) {
-// handler.restoreState(TaskListView.getDefault());
-// }
-// }
-
-// /**
-// * Sets the directory containing the task list file to use.
-// * Switches immediately to use the data at that location.
-// */
-// public void setDataDirectory(String newDirPath) {
-// String taskListFilePath = newDirPath + File.separator +
-// DEFAULT_TASK_LIST_FILE;
-// getTaskListManager().setTaskListFile(new File(taskListFilePath));
-// getTaskListManager().createNewTaskList();
-// getTaskListManager().readTaskList();
-//
-// if (TaskListView.getDefault() != null)
-// TaskListView.getDefault().clearTaskHistory();
-// }
-
-// private List<ITaskActivationListener> taskListListeners = new
-// ArrayList<ITaskActivationListener>();
-//
-// public List<ITaskActivationListener> getTaskListListeners() {
-// return taskListListeners;
-// }
-//
-// public void addTaskListListener(ITaskActivationListener taskListListner) {
-// taskListListeners.add(taskListListner);
-// }
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/properties/ProjectTaskRepositoryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/properties/ProjectTaskRepositoryPage.java
deleted file mode 100644
index afd19773c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/properties/ProjectTaskRepositoryPage.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.tasks.ui.properties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.DecoratingLabelProvider;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.actions.AddRepositoryAction;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoriesViewSorter;
-import org.eclipse.mylar.internal.tasks.ui.views.TaskRepositoryLabelProvider;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-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.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.Label;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.internal.dialogs.DialogUtil;
-
-/**
- * @author Rob Elves
- * @see Adapted from org.eclipse.ui.internal.ide.dialogs.ProjectReferencePage
- */
-public class ProjectTaskRepositoryPage extends PropertyPage {
-
- private static final int REPOSITORY_LIST_MULTIPLIER = 30;
-
- private IProject project;
-
- private boolean modified = false;
-
- private CheckboxTableViewer listViewer;
-
- public ProjectTaskRepositoryPage() {
- // Do nothing on creation
- }
-
- protected Control createContents(Composite parent) {
-
- Font font = parent.getFont();
-
- Composite composite = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- composite.setFont(font);
-
- initialize();
-
- Label description = createDescriptionLabel(composite);
- description.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-
- listViewer = CheckboxTableViewer.newCheckList(composite, SWT.TOP | SWT.BORDER);
- listViewer.getTable().setFont(font);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.grabExcessHorizontalSpace = true;
-
- // Only set a height hint if it will not result in a cut off dialog
- if (DialogUtil.inRegularFontMode(parent)) {
- data.heightHint = getDefaultFontHeight(listViewer.getTable(), REPOSITORY_LIST_MULTIPLIER);
- }
- listViewer.getTable().setLayoutData(data);
- listViewer.getTable().setFont(font);
-
- listViewer.setLabelProvider(new DecoratingLabelProvider(new TaskRepositoryLabelProvider(), PlatformUI
- .getWorkbench().getDecoratorManager().getLabelDecorator()));
- listViewer.setContentProvider(new IStructuredContentProvider() {
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
-
- public Object[] getElements(Object parent) {
- return TasksUiPlugin.getRepositoryManager().getAllRepositories().toArray();
- }
-
- });
-
- listViewer.setSorter(new TaskRepositoriesViewSorter());
- listViewer.setInput(project.getWorkspace());
-
- TaskRepository repository = TasksUiPlugin.getDefault().getRepositoryForResource(project, true);
-
- if (repository != null) {
- listViewer.setCheckedElements(new Object[] { repository });
- }
- listViewer.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- if (event.getChecked()) {
- // only allow single selection
- listViewer.setAllChecked(false);
- listViewer.setChecked(event.getElement(), event.getChecked());
- }
- modified = true;
- }
- });
-
- final AddRepositoryAction action = new AddRepositoryAction();
-
- Button button = new Button(composite, SWT.NONE);
- button.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING));
- button.setText(AddRepositoryAction.TITLE);
- button.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- action.run();
- listViewer.setInput(project.getWorkspace());
- }
- });
-
- return composite;
- }
-
- private static int getDefaultFontHeight(Control control, int lines) {
- FontData[] viewerFontData = control.getFont().getFontData();
- int fontHeight = 10;
-
- // If we have no font data use our guess
- if (viewerFontData.length > 0) {
- fontHeight = viewerFontData[0].getHeight();
- }
- return lines * fontHeight;
-
- }
-
- /**
- * Initializes a ProjectReferencePage.
- */
- private void initialize() {
- project = (IProject) getElement().getAdapter(IResource.class);
- noDefaultAndApplyButton();
- setDescription("Select a task repository to associate with this project below:");
- }
-
- /**
- * @see PreferencePage#performOk
- */
- public boolean performOk() {
- if (!modified) {
- return true;
- }
- if (listViewer.getCheckedElements().length > 0) {
- TaskRepository selectedRepository = (TaskRepository) listViewer.getCheckedElements()[0];
- try {
- TasksUiPlugin.getDefault().setRepositoryForResource(project, selectedRepository);
- } catch (CoreException e) {
- MylarStatusHandler.fail(e, "Unable to associate project with task repository", true);
- }
- }
- return true;
- }
-}
diff --git a/org.eclipse.mylyn.trac.core/.classpath b/org.eclipse.mylyn.trac.core/.classpath
deleted file mode 100644
index 751c8f2e5..000000000
--- a/org.eclipse.mylyn.trac.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 8cf54a7c4..000000000
--- a/org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,256 +0,0 @@
-#Thu Feb 09 16:45:35 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 0dcf62d0c..000000000
--- a/org.eclipse.mylyn.trac.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jun 16 16:18:53 PDT 2006
-eclipse.preferences.version=1
-formatter_profile=_Mylar based on Eclipse [built-in]
-formatter_settings_version=9
-internal.default.compliance=default
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">/*******************************************************************************\r\n * Copyright (c) 2004 - 2006 Mylar committers and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n *******************************************************************************/\r\n\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/org.eclipse.mylyn.trac.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.trac.core/META-INF/MANIFEST.MF
deleted file mode 100644
index f8db4d886..000000000
--- a/org.eclipse.mylyn.trac.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Trac Core Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.trac.core;singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.mylar.context.core,
- org.eclipse.mylar.tasks.core,
- org.eclipse.search
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.mylar.internal.trac.core,
- org.eclipse.mylar.internal.trac.core.model,
- org.eclipse.mylar.internal.trac.core.util
-Bundle-Activator: org.eclipse.mylar.internal.trac.core.TracCorePlugin
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/AbstractTracClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/AbstractTracClient.java
deleted file mode 100644
index 345be816a..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/AbstractTracClient.java
+++ /dev/null
@@ -1,132 +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.trac.core;
-
-import java.net.Proxy;
-import java.net.URL;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.mylar.internal.trac.core.model.TracComponent;
-import org.eclipse.mylar.internal.trac.core.model.TracMilestone;
-import org.eclipse.mylar.internal.trac.core.model.TracPriority;
-import org.eclipse.mylar.internal.trac.core.model.TracSeverity;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketResolution;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketStatus;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketType;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-
-/**
- * @author Steffen Pingel
- */
-public abstract class AbstractTracClient implements ITracClient {
-
- protected String username;
-
- protected String password;
-
- protected URL repositoryUrl;
-
- protected Version version;
-
- protected TracClientData data;
-
- protected Proxy proxy;
-
- public AbstractTracClient(URL repositoryUrl, Version version, String username, String password) {
- this.repositoryUrl = repositoryUrl;
- this.version = version;
- this.username = username;
- this.password = password;
-
- this.data = new TracClientData();
- }
-
- public Version getVersion() {
- return version;
- }
-
- protected boolean hasAuthenticationCredentials() {
- return username != null && username.length() > 0;
- }
-
-
- public TracComponent[] getComponents() {
- return (data.components != null) ? data.components.toArray(new TracComponent[0]) : null;
- }
-
- public TracMilestone[] getMilestones() {
- return (data.milestones != null) ? data.milestones.toArray(new TracMilestone[0]) : null;
- }
-
- public TracPriority[] getPriorities() {
- return (data.priorities != null) ? data.priorities.toArray(new TracPriority[0]) : null;
- }
-
- public TracSeverity[] getSeverities() {
- return (data.severities != null) ? data.severities.toArray(new TracSeverity[0]) : null;
- }
-
- public TracTicketResolution[] getTicketResolutions() {
- return (data.ticketResolutions != null) ? data.ticketResolutions.toArray(new TracTicketResolution[0]) : null;
- }
-
- public TracTicketStatus[] getTicketStatus() {
- return (data.ticketStatus != null) ? data.ticketStatus.toArray(new TracTicketStatus[0]) : null;
- }
-
- public TracTicketType[] getTicketTypes() {
- return (data.ticketTypes != null) ? data.ticketTypes.toArray(new TracTicketType[0]) : null;
- }
-
- public TracVersion[] getVersions() {
- return (data.versions != null) ? data.versions.toArray(new TracVersion[0]) : null;
- }
-
- public void updateAttributes(IProgressMonitor monitor, boolean force) throws TracException {
- if (data.lastUpdate == 0 || force) {
- updateAttributes(monitor);
- data.lastUpdate = System.currentTimeMillis();
- }
- }
-
- public abstract void updateAttributes(IProgressMonitor monitor) throws TracException;
-
- public void setData(TracClientData data) {
- this.data = data;
- }
-
- public String[] getDefaultTicketResolutions() {
- return new String[] { "fixed", "invalid", "wontfix", "duplicate", "worksforme" };
- }
-
- public String[] getDefaultTicketActions(String status) {
- if ("new".equals(status)) {
- return new String[] { "leave", "resolve", "reassign", "accept" };
- } else if ("assigned".equals(status)) {
- return new String[] { "leave", "resolve", "reassign" };
- } else if ("reopened".equals(status)) {
- return new String[] { "leave", "resolve", "reassign" };
- } else if ("closed".equals(status)) {
- return new String[] { "leave", "reopen" };
- }
- return null;
- }
-
- public void setProxy(Proxy proxy) {
- this.proxy = proxy;
- }
-
- public Proxy getProxy() {
- return proxy;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java
deleted file mode 100644
index 90c1430d8..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/ITracClient.java
+++ /dev/null
@@ -1,161 +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.trac.core;
-
-import java.net.Proxy;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.mylar.internal.trac.core.model.TracComponent;
-import org.eclipse.mylar.internal.trac.core.model.TracMilestone;
-import org.eclipse.mylar.internal.trac.core.model.TracPriority;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracSeverity;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketResolution;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketStatus;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketType;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-
-/**
- * Defines the requirements for classes that provide remote access to Trac
- * repositories.
- *
- * @author Steffen Pingel
- */
-public interface ITracClient {
-
- public enum Version {
- TRAC_0_9, XML_RPC;
-
- public static Version fromVersion(String version) {
- try {
- return Version.valueOf(version);
- } catch (IllegalArgumentException e) {
- return null;
- }
- }
-
- @Override
- public String toString() {
- switch (this) {
- case TRAC_0_9:
- return "Trac 0.9 and later";
- case XML_RPC:
- return "XML-RPC Plugin (Rev. " + TracXmlRpcClient.REQUIRED_REVISION + ")";
- default:
- return null;
- }
- }
-
- }
-
- public static final String CHARSET = "UTF-8";
-
- public static final String TIME_ZONE = "UTC";
-
- public static final String LOGIN_URL = "/login";
-
- public static final String QUERY_URL = "/query?format=tab";
-
- public static final String TICKET_URL = "/ticket/";
-
- public static final String NEW_TICKET_URL = "/newticket";
-
- public static final String TICKET_ATTACHMENT_URL = "/attachment/ticket/";
-
- public static final String DEFAULT_USERNAME = "anonymous";
-
- /**
- * Gets ticket with <code>id</code> from repository.
- *
- * @param id
- * the id of the ticket to get
- * @return the ticket
- * @throws TracException
- * thrown in case of a connection error
- */
- TracTicket getTicket(int id) throws TracException;
-
- /**
- * Returns the access type.
- */
- Version getVersion();
-
- /**
- * Queries tickets from repository. All found tickets are added to
- * <code>result</code>.
- *
- * @param query
- * the search criteria
- * @param result
- * the list of found tickets
- * @throws TracException
- * thrown in case of a connection error
- */
- void search(TracSearch query, List<TracTicket> result) throws TracException;
-
- /**
- * Validates the repository connection.
- *
- * @throws TracException
- * thrown in case of a connection error
- */
- void validate() throws TracException;
-
- /**
- * Updates cached repository details: milestones, versions etc.
- *
- * @throws TracException
- * thrown in case of a connection error
- */
- void updateAttributes(IProgressMonitor monitor, boolean force) throws TracException;
-
- TracComponent[] getComponents();
-
- TracMilestone[] getMilestones();
-
- TracPriority[] getPriorities();
-
- TracSeverity[] getSeverities();
-
- TracTicketResolution[] getTicketResolutions();
-
- TracTicketStatus[] getTicketStatus();
-
- TracTicketType[] getTicketTypes();
-
- TracVersion[] getVersions();
-
- byte[] getAttachmentData(int id, String filename) throws TracException;
-
- void putAttachmentData(int id, String name, String description, byte[] data) throws TracException;
-
- void createTicket(TracTicket ticket) throws TracException;
-
- void updateTicket(TracTicket ticket, String comment) throws TracException;
-
- /**
- * Sets a reference to the cached repository attributes.
- *
- * @param data
- * cached repository attributes
- */
- void setData(TracClientData data);
-
- Set<Integer> getChangedTickets(Date since) throws TracException;
-
- void setProxy(Proxy proxy);
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/Trac09Client.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/Trac09Client.java
deleted file mode 100644
index 9e114f26a..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/Trac09Client.java
+++ /dev/null
@@ -1,478 +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.trac.core;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import javax.security.auth.login.LoginException;
-
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.cookie.CookiePolicy;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer;
-import org.eclipse.mylar.internal.tasks.core.HtmlTag;
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-import org.eclipse.mylar.internal.tasks.core.HtmlStreamTokenizer.Token;
-import org.eclipse.mylar.internal.trac.core.model.TracComponent;
-import org.eclipse.mylar.internal.trac.core.model.TracMilestone;
-import org.eclipse.mylar.internal.trac.core.model.TracPriority;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter;
-import org.eclipse.mylar.internal.trac.core.model.TracSeverity;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketResolution;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketStatus;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketType;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter.CompareOperator;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.internal.trac.core.util.TracHttpClientTransportFactory.TracHttpException;
-
-/**
- * Represents a Trac repository that is accessed through the Trac's query script
- * and web interface.
- *
- * @author Steffen Pingel
- */
-public class Trac09Client extends AbstractTracClient {
-
- private HttpClient httpClient = new HttpClient();
-
- private boolean authenticated;
-
- public Trac09Client(URL url, Version version, String username, String password) {
- super(url, version, username, password);
- }
-
- private GetMethod connect(String serverURL) throws TracException {
- try {
- return connectInternal(serverURL);
- } catch (TracException e) {
- throw e;
- } catch (Exception e) {
- throw new TracException(e);
- }
- }
-
- private GetMethod connectInternal(String serverURL) throws TracLoginException, IOException, TracHttpException {
- WebClientUtil.setupHttpClient(httpClient, proxy, serverURL);
-
- for (int attempt = 0; attempt < 2; attempt++) {
- // force authentication
- if (!authenticated && hasAuthenticationCredentials()) {
- authenticate();
- }
-
- GetMethod method = new GetMethod(WebClientUtil.getRequestPath(serverURL));
- method.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
- int code;
- try {
- code = httpClient.executeMethod(method);
- } catch (IOException e) {
- method.releaseConnection();
- throw e;
- }
-
- if (code == HttpURLConnection.HTTP_OK) {
- return method;
- } else if (code == HttpURLConnection.HTTP_UNAUTHORIZED || code == HttpURLConnection.HTTP_FORBIDDEN) {
- // login or reauthenticate due to an expired session
- method.releaseConnection();
- authenticated = false;
- authenticate();
- } else {
- throw new TracHttpException(code);
- }
- }
-
- throw new TracLoginException();
- }
-
- private void authenticate() throws TracLoginException, IOException {
- if (!hasAuthenticationCredentials()) {
- throw new TracLoginException();
- }
-
- Credentials credentials = new UsernamePasswordCredentials(username, password);
- httpClient.getState().setCredentials(
- new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM), credentials);
-
- GetMethod method = new GetMethod(WebClientUtil.getRequestPath(repositoryUrl + LOGIN_URL));
- method.setFollowRedirects(false);
-
- try {
- httpClient.getParams().setAuthenticationPreemptive(true);
- int code = httpClient.executeMethod(method);
- if (code == HttpURLConnection.HTTP_UNAUTHORIZED || code == HttpURLConnection.HTTP_FORBIDDEN) {
- throw new TracLoginException();
- }
- } finally {
- method.releaseConnection();
- httpClient.getParams().setAuthenticationPreemptive(false);
- }
-
- authenticated = true;
- }
-
- /**
- * Fetches the web site of a single ticket and returns the Trac ticket.
- *
- * @param id
- * Trac id of ticket
- * @throws LoginException
- */
- public TracTicket getTicket(int id) throws TracException {
- GetMethod method = connect(repositoryUrl + ITracClient.TICKET_URL + id);
- try {
- TracTicket ticket = new TracTicket(id);
-
- BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),
- ITracClient.CHARSET));
- HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(reader, null);
- 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.TD) {
- String headers = tag.getAttribute("headers");
- if ("h_component".equals(headers)) {
- ticket.putBuiltinValue(Key.COMPONENT, getText(tokenizer));
- } else if ("h_milestone".equals(headers)) {
- ticket.putBuiltinValue(Key.MILESTONE, getText(tokenizer));
- } else if ("h_priority".equals(headers)) {
- ticket.putBuiltinValue(Key.PRIORITY, getText(tokenizer));
- } else if ("h_severity".equals(headers)) {
- ticket.putBuiltinValue(Key.SEVERITY, getText(tokenizer));
- } else if ("h_version".equals(headers)) {
- ticket.putBuiltinValue(Key.VERSION, getText(tokenizer));
- } else if ("h_keywords".equals(headers)) {
- ticket.putBuiltinValue(Key.KEYWORDS, getText(tokenizer));
- } else if ("h_cc".equals(headers)) {
- ticket.putBuiltinValue(Key.CC, getText(tokenizer));
- } else if ("h_owner".equals(headers)) {
- ticket.putBuiltinValue(Key.OWNER, getText(tokenizer));
- } else if ("h_reporter".equals(headers)) {
- ticket.putBuiltinValue(Key.REPORTER, getText(tokenizer));
- }
- // TODO handle custom fields
- } else if (tag.getTagType() == HtmlTag.Type.H2 && "summary".equals(tag.getAttribute("class"))) {
- ticket.putBuiltinValue(Key.SUMMARY, getText(tokenizer));
- } else if (tag.getTagType() == HtmlTag.Type.H3 && "status".equals(tag.getAttribute("class"))) {
- String text = getStrongText(tokenizer);
- if (text.length() > 0) {
- int i = text.indexOf(" (");
- if (i != -1) {
- // status contains resolution as well
- ticket.putBuiltinValue(Key.STATUS, text.substring(0, i));
- ticket.putBuiltinValue(Key.RESOLUTION, text.substring(i, text.length() - 1));
- } else {
- ticket.putBuiltinValue(Key.STATUS, text);
- }
- }
- }
- // TODO parse description
- }
- }
-
- if (ticket.isValid() && ticket.getValue(Key.SUMMARY) != null) {
- return ticket;
- }
-
- throw new InvalidTicketException();
- } catch (IOException e) {
- throw new TracException(e);
- } catch (ParseException e) {
- throw new TracException(e);
- } finally {
- method.releaseConnection();
- }
- }
-
- public void search(TracSearch query, List<TracTicket> tickets) throws TracException {
- GetMethod method = connect(repositoryUrl + ITracClient.QUERY_URL + query.toUrl());
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),
- ITracClient.CHARSET));
- String line;
-
- Map<String, String> constantValues = getExactMatchValues(query);
-
- // first line contains names of returned ticket fields
- line = reader.readLine();
- if (line == null) {
- throw new InvalidTicketException();
- }
- StringTokenizer t = new StringTokenizer(line, "\t");
- Key[] fields = new Key[t.countTokens()];
- for (int i = 0; i < fields.length; i++) {
- fields[i] = Key.fromKey(t.nextToken());
- }
-
- // create a ticket for each following line of output
- while ((line = reader.readLine()) != null) {
- t = new StringTokenizer(line, "\t");
- TracTicket ticket = new TracTicket();
- for (int i = 0; i < fields.length && t.hasMoreTokens(); i++) {
- if (fields[i] != null) {
- try {
- if (fields[i] == Key.ID) {
- ticket.setId(Integer.parseInt(t.nextToken()));
- } else if (fields[i] == Key.TIME) {
- ticket.setCreated(Integer.parseInt(t.nextToken()));
- } else if (fields[i] == Key.CHANGE_TIME) {
- ticket.setLastChanged(Integer.parseInt(t.nextToken()));
- } else {
- ticket.putBuiltinValue(fields[i], parseTicketValue(t.nextToken()));
- }
- } catch (NumberFormatException e) {
- MylarStatusHandler.log(e, "Error parsing repsonse: " + line);
- }
- }
- }
-
- if (ticket.isValid()) {
- for (String key : constantValues.keySet()) {
- ticket.putValue(key, parseTicketValue(constantValues.get(key)));
- }
-
- tickets.add(ticket);
- }
- }
- } catch (IOException e) {
- throw new TracException(e);
- } finally {
- method.releaseConnection();
- }
- }
-
- /**
- * Trac has sepcial encoding rules for the returned output: None is
- * represented by "--".
- */
- private String parseTicketValue(String value) {
- if ("--".equals(value)) {
- return "";
- }
- return value;
- }
-
- /**
- * Extracts constant values from <code>query</code>. The Trac query
- * script does not return fields that matched exactly againt a single value.
- */
- private Map<String, String> getExactMatchValues(TracSearch query) {
- Map<String, String> values = new HashMap<String, String>();
- List<TracSearchFilter> filters = query.getFilters();
- for (TracSearchFilter filter : filters) {
- if (filter.getOperator() == CompareOperator.IS && filter.getValues().size() == 1) {
- values.put(filter.getFieldName(), filter.getValues().get(0));
- }
- }
- return values;
- }
-
- public void validate() throws TracException {
- GetMethod method = connect(repositoryUrl + "/");
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),
- ITracClient.CHARSET));
- HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(reader, null);
- 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.A) {
- String id = tag.getAttribute("id");
- if ("tracpowered".equals(id)) {
- return;
- }
- }
- }
- }
-
- throw new TracException("Not a valid Trac repository");
- } catch (IOException e) {
- throw new TracException(e);
- } catch (ParseException e) {
- throw new TracException(e);
- } finally {
- method.releaseConnection();
- }
- }
-
- public void updateAttributes(IProgressMonitor monitor) throws TracException {
- monitor.beginTask("Updating attributes", IProgressMonitor.UNKNOWN);
-
- GetMethod method = connect(repositoryUrl + ITracClient.NEW_TICKET_URL);
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),
- ITracClient.CHARSET));
- HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(reader, null);
- for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
-
- if (token.getType() == Token.TAG) {
- HtmlTag tag = (HtmlTag) token.getValue();
- if (tag.getTagType() == HtmlTag.Type.SELECT) {
- String name = tag.getAttribute("id");
- if ("component".equals(name)) {
- List<String> values = getOptionValues(tokenizer);
- data.components = new ArrayList<TracComponent>(values.size());
- for (String value : values) {
- data.components.add(new TracComponent(value));
- }
- } else if ("milestone".equals(name)) {
- List<String> values = getOptionValues(tokenizer);
- data.milestones = new ArrayList<TracMilestone>(values.size());
- for (String value : values) {
- data.milestones.add(new TracMilestone(value));
- }
- } else if ("priority".equals(name)) {
- List<String> values = getOptionValues(tokenizer);
- data.priorities = new ArrayList<TracPriority>(values.size());
- for (int i = 0; i < values.size(); i++) {
- data.priorities.add(new TracPriority(values.get(i), i + 1));
- }
- } else if ("severity".equals(name)) {
- List<String> values = getOptionValues(tokenizer);
- data.severities = new ArrayList<TracSeverity>(values.size());
- for (int i = 0; i < values.size(); i++) {
- data.severities.add(new TracSeverity(values.get(i), i + 1));
- }
- } else if ("type".equals(name)) {
- List<String> values = getOptionValues(tokenizer);
- data.ticketTypes = new ArrayList<TracTicketType>(values.size());
- for (int i = 0; i < values.size(); i++) {
- data.ticketTypes.add(new TracTicketType(values.get(i), i + 1));
- }
- } else if ("version".equals(name)) {
- List<String> values = getOptionValues(tokenizer);
- data.versions = new ArrayList<TracVersion>(values.size());
- for (String value : values) {
- data.versions.add(new TracVersion(value));
- }
- }
- }
- }
- }
-
- data.ticketResolutions = new ArrayList<TracTicketResolution>(5);
- data.ticketResolutions.add(new TracTicketResolution("fixed", 1));
- data.ticketResolutions.add(new TracTicketResolution("invalid", 2));
- data.ticketResolutions.add(new TracTicketResolution("wontfix", 3));
- data.ticketResolutions.add(new TracTicketResolution("duplicate", 4));
- data.ticketResolutions.add(new TracTicketResolution("worksforme", 5));
-
- data.ticketStatus = new ArrayList<TracTicketStatus>(4);
- data.ticketStatus.add(new TracTicketStatus("new", 1));
- data.ticketStatus.add(new TracTicketStatus("assigned", 2));
- data.ticketStatus.add(new TracTicketStatus("reopened", 3));
- data.ticketStatus.add(new TracTicketStatus("closed", 4));
- } catch (IOException e) {
- throw new TracException(e);
- } catch (ParseException e) {
- throw new TracException(e);
- } finally {
- method.releaseConnection();
- }
- }
-
- private List<String> getOptionValues(HtmlStreamTokenizer tokenizer) throws IOException, ParseException {
- List<String> values = new ArrayList<String>();
- 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.OPTION && !tag.isEndTag()) {
- String value = getText(tokenizer).trim();
- if (value.length() > 0) {
- values.add(value);
- }
- } else {
- return values;
- }
- }
- }
- return values;
- }
-
- private String getText(HtmlStreamTokenizer tokenizer) throws IOException, ParseException {
- StringBuffer sb = new StringBuffer();
- for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
- if (token.getType() == Token.TEXT) {
- sb.append(token.toString());
- } else if (token.getType() == Token.COMMENT) {
- // ignore
- } else {
- break;
- }
- }
- return HtmlStreamTokenizer.unescape(sb).toString();
- }
-
- /**
- * Looks for a <code>strong</code> tag and returns the text enclosed by
- * the tag.
- */
- private String getStrongText(HtmlStreamTokenizer tokenizer) throws IOException, ParseException {
- for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
- if (token.getType() == Token.TAG && ((HtmlTag) token.getValue()).getTagType() == HtmlTag.Type.STRONG) {
- return getText(tokenizer);
- } else if (token.getType() == Token.COMMENT) {
- // ignore
- } else if (token.getType() == Token.TEXT) {
- // ignore
- } else {
- break;
- }
- }
- return "";
- }
-
- public byte[] getAttachmentData(int id, String filename) throws TracException {
- throw new TracException("Unsupported operation");
- }
-
- public void putAttachmentData(int id, String name, String description, byte[] data) throws TracException {
- throw new TracException("Unsupported operation");
- }
-
- public void createTicket(TracTicket ticket) throws TracException {
- throw new TracException("Unsupported operation");
- }
-
- public void updateTicket(TracTicket ticket, String comment) throws TracException {
- throw new TracException("Unsupported operation");
- }
-
- public Set<Integer> getChangedTickets(Date since) throws TracException {
- return null;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttachmentHandler.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttachmentHandler.java
deleted file mode 100644
index 3584a92ac..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttachmentHandler.java
+++ /dev/null
@@ -1,118 +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.trac.core;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Proxy;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Steffen Pingel
- */
-public class TracAttachmentHandler implements IAttachmentHandler {
-
- private TracRepositoryConnector connector;
-
- public TracAttachmentHandler(TracRepositoryConnector connector) {
- this.connector = connector;
- }
-
- public void downloadAttachment(TaskRepository repository, AbstractRepositoryTask task, RepositoryAttachment attachment, File file, Proxy proxySettings) throws CoreException {
- String filename = attachment.getAttributeValue(RepositoryTaskAttribute.ATTACHMENT_FILENAME);
- if (filename == null) {
- throw new CoreException(new Status(IStatus.ERROR, TracCorePlugin.PLUGIN_ID, IStatus.OK, "Attachment download from " + task.getRepositoryUrl() + " failed, missing attachment filename.", null));
- }
-
- try {
- ITracClient client = connector.getClientManager().getRepository(repository);
- int id = Integer.parseInt(AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()));
- byte[] data = client.getAttachmentData(id, filename);
- writeData(file, data);
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, TracCorePlugin.PLUGIN_ID, 0, "Attachment download from " + task.getRepositoryUrl() + " failed, please see details.", e ));
- }
- }
-
- private void writeData(File file, byte[] data) throws IOException {
- OutputStream out = new FileOutputStream(file);
- try {
- out.write(data);
- } finally {
- out.close();
- }
- }
-
- public void uploadAttachment(TaskRepository repository, AbstractRepositoryTask task, String comment, String description, File file, String contentType, boolean isPatch, Proxy proxySettings) throws CoreException {
- if (!connector.hasAttachmentSupport(repository, task)) {
- throw new CoreException(new Status(IStatus.INFO, TracCorePlugin.PLUGIN_ID, IStatus.OK, "Attachments are not supported by this repository access type.", null));
- }
-
- try {
- ITracClient client = connector.getClientManager().getRepository(repository);
- int id = Integer.parseInt(AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()));
- byte[] data = readData(file);
- client.putAttachmentData(id, file.getName(), description, data);
- if (comment != null && comment.length() > 0) {
- TracTicket ticket = new TracTicket(id);
- client.updateTicket(ticket, comment);
- }
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, TracCorePlugin.PLUGIN_ID, 0, "Attachment upload to " + task.getRepositoryUrl() + " failed, please see details.", e ));
- }
- }
-
- private byte[] readData(File file) throws IOException {
- if (file.length() > Integer.MAX_VALUE) {
- throw new IOException("Can not upload files larger than " + Integer.MAX_VALUE + " bytes");
- }
-
- InputStream in = new FileInputStream(file);
- try {
- byte[] data = new byte[(int) file.length()];
- in.read(data, 0, (int) file.length());
- return data;
- } finally {
- in.close();
- }
- }
-
- public boolean canDownloadAttachment(TaskRepository repository, AbstractRepositoryTask task) {
- return connector.hasAttachmentSupport(repository, task);
- }
-
- public boolean canUploadAttachment(TaskRepository repository, AbstractRepositoryTask task) {
- return connector.hasAttachmentSupport(repository, task);
- }
-
- public boolean canDeprecate(TaskRepository repository, RepositoryAttachment attachment) {
- return false;
- }
-
- public void updateAttachment(TaskRepository repository, RepositoryAttachment attachment) throws CoreException {
- // ignore
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttributeFactory.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttributeFactory.java
deleted file mode 100644
index 386e6febd..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracAttributeFactory.java
+++ /dev/null
@@ -1,136 +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.trac.core;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-
-/**
- * Provides a mapping from Mylar task keys to Trac ticket keys.
- *
- * @author Steffen Pingel
- */
-public class TracAttributeFactory extends AbstractAttributeFactory {
-
- private static final long serialVersionUID = 5333211422546115138L;
-
- private static Map<String, Attribute> attributeByTracKey = new HashMap<String, Attribute>();
-
- private static Map<String, String> tracKeyByTaskKey = new HashMap<String, String>();
-
- public enum Attribute {
- CC(Key.CC, "CC:", RepositoryTaskAttribute.USER_CC),
- CHANGE_TIME(Key.CHANGE_TIME, "Last Modification:", RepositoryTaskAttribute.DATE_MODIFIED, true, true),
- COMPONENT(Key.COMPONENT, "Component:", null),
- DESCRIPTION(Key.DESCRIPTION, "Description:", RepositoryTaskAttribute.DESCRIPTION, true, false),
- ID(Key.ID, "<used by search engine>", null, true),
- KEYWORDS(Key.KEYWORDS, "Keywords:", RepositoryTaskAttribute.KEYWORDS),
- MILESTONE(Key.MILESTONE, "Milestone:", null),
- OWNER(Key.OWNER, "Owner:", RepositoryTaskAttribute.USER_OWNER, false, true),
- PRIORITY(Key.PRIORITY, "Priority:", null),
- REPORTER(Key.REPORTER, "Reporter:", RepositoryTaskAttribute.USER_REPORTER, false, true),
- RESOLUTION(Key.RESOLUTION, "Resolution:", RepositoryTaskAttribute.RESOLUTION, false, true),
- SEVERITY(Key.SEVERITY, "Severity:", null),
- STATUS(Key.STATUS, "Status:", RepositoryTaskAttribute.STATUS, false, true),
- SUMMARY(Key.SUMMARY, "Summary:", RepositoryTaskAttribute.SUMMARY, true),
- TIME(Key.TIME, "Created:", RepositoryTaskAttribute.DATE_CREATION, true, true),
- TYPE(Key.TYPE, "Type:", null),
- VERSION(Key.VERSION, "Version:", null);
-
- private final boolean isHidden;
-
- private final boolean isReadOnly;
-
- private final String tracKey;
-
- private final String prettyName;
-
- private final String taskKey;
-
- Attribute(Key key, String prettyName, String taskKey, boolean hidden, boolean readonly) {
- this.tracKey = key.getKey();
- this.taskKey = taskKey;
- this.prettyName = prettyName;
- this.isHidden = hidden;
- this.isReadOnly = readonly;
-
- attributeByTracKey.put(tracKey, this);
- if (taskKey != null) {
- tracKeyByTaskKey.put(taskKey, tracKey);
- }
- }
-
- Attribute(Key key, String prettyName, String taskKey, boolean hidden) {
- this(key, prettyName, taskKey, hidden, false);
- }
-
- Attribute(Key key, String prettyName, String taskKey) {
- this(key, prettyName, taskKey, false, false);
- }
-
- public String getTaskKey() {
- return taskKey;
- }
-
- public String getTracKey() {
- return tracKey;
- }
-
- public boolean isHidden() {
- return isHidden;
- }
-
- public boolean isReadOnly() {
- return isReadOnly;
- }
-
- public String toString() {
- return prettyName;
- }
- }
-
- static {
- // make sure hash maps get initialized when class is loaded
- Attribute.values();
- }
-
- @Override
- public boolean getIsHidden(String key) {
- Attribute attribute = attributeByTracKey.get(key);
- return (attribute != null) ? attribute.isHidden() : false;
- }
-
- @Override
- public String getName(String key) {
- Attribute attribute = attributeByTracKey.get(key);
- // TODO if attribute == null it is probably a custom field: need
- // to query custom field information from repoository
- return (attribute != null) ? attribute.toString() : key;
- }
-
- @Override
- public boolean isReadOnly(String key) {
- Attribute attribute = attributeByTracKey.get(key);
- return (attribute != null) ? attribute.isReadOnly() : false;
- }
-
- @Override
- public String mapCommonAttributeKey(String key) {
- String tracKey = tracKeyByTaskKey.get(key);
- return (tracKey != null) ? tracKey : key;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientFactory.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientFactory.java
deleted file mode 100644
index 50b7ea6e3..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientFactory.java
+++ /dev/null
@@ -1,65 +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.trac.core;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-
-/**
- * @author Steffen Pingel
- */
-public class TracClientFactory {
-
- public static ITracClient createClient(String location, Version version, String username, String password)
- throws MalformedURLException {
- URL url = new URL(location);
-
- if (version == Version.TRAC_0_9) {
- return new Trac09Client(url, version, username, password);
- } else if (version == Version.XML_RPC) {
- return new TracXmlRpcClient(url, version, username, password);
- }
-
- throw new RuntimeException("Invalid repository version: " + version);
- }
-
- /**
- * Tries all supported access types for <code>location</code> and returns
- * the corresponding version if successful; throws an exception otherwise.
- *
- * <p>
- * Order of the tried access types: XML-RPC, Trac 0.9
- */
- public static Version probeClient(String location, String username, String password) throws MalformedURLException,
- TracException {
- URL url = new URL(location);
- try {
- ITracClient repository = new TracXmlRpcClient(url, Version.XML_RPC, username, password);
- repository.validate();
- return Version.XML_RPC;
- } catch (TracException e) {
- try {
- ITracClient repository = new Trac09Client(url, Version.TRAC_0_9, username, password);
- repository.validate();
- return Version.TRAC_0_9;
- } catch (TracLoginException e2) {
- throw e;
- } catch (TracException e2) {
- }
- }
-
- throw new TracException();
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientManager.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientManager.java
deleted file mode 100644
index 329b7104f..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracClientManager.java
+++ /dev/null
@@ -1,141 +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.trac.core;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.net.MalformedURLException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.tasks.core.ITaskRepositoryListener;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * Caches {@link ITracClient} objects.
- *
- * @author Steffen Pingel
- */
-public class TracClientManager implements ITaskRepositoryListener {
-
- private Map<String, ITracClient> clientByUrl = new HashMap<String, ITracClient>();
-
- private Map<String, TracClientData> clientDataByUrl = new HashMap<String, TracClientData>();
-
- private File cacheFile;
-
- public TracClientManager(File cacheFile) {
- this.cacheFile = cacheFile;
-
- readCache();
- }
-
- public synchronized ITracClient getRepository(TaskRepository taskRepository) throws MalformedURLException {
- ITracClient repository = clientByUrl.get(taskRepository.getUrl());
- if (repository == null) {
- repository = TracClientFactory.createClient(taskRepository.getUrl(), Version.fromVersion(taskRepository
- .getVersion()), taskRepository.getUserName(), taskRepository.getPassword());
- clientByUrl.put(taskRepository.getUrl(), repository);
-
- TracClientData data = clientDataByUrl.get(taskRepository.getUrl());
- if (data == null) {
- data = new TracClientData();
- clientDataByUrl.put(taskRepository.getUrl(), data);
- }
- repository.setData(data);
- }
- return repository;
- }
-
- public void repositoriesRead() {
- // ignore
- }
-
- public synchronized void repositoryAdded(TaskRepository repository) {
- // make sure there is no stale client still in the cache, bug #149939
- clientByUrl.remove(repository.getUrl());
- clientDataByUrl.remove(repository.getUrl());
- }
-
- public synchronized void repositoryRemoved(TaskRepository repository) {
- clientByUrl.remove(repository.getUrl());
- clientDataByUrl.remove(repository.getUrl());
- }
-
- public synchronized void repositorySettingsChanged(TaskRepository repository) {
- clientByUrl.remove(repository.getUrl());
- // if url is changed a stale data object will be left in clientDataByUrl, bug #149939
- }
-
- @SuppressWarnings("unchecked")
- public void readCache() {
- if (cacheFile == null || !cacheFile.exists()) {
- return;
- }
-
- ObjectInputStream in = null;
- try {
- in = new ObjectInputStream(new FileInputStream(cacheFile));
- int size = in.readInt();
- for (int i = 0; i < size; i++) {
- String url = (String) in.readObject();
- TracClientData data = (TracClientData) in.readObject();
- if (url != null && data != null) {
- clientDataByUrl.put(url, data);
- }
- }
- } catch (Throwable e) {
- TracCorePlugin.log(e);
- } finally {
- if (in != null) {
- try {
- in.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
-
- }
-
- public void writeCache() {
- if (cacheFile == null) {
- return;
- }
-
- ObjectOutputStream out = null;
- try {
- out = new ObjectOutputStream(new FileOutputStream(cacheFile));
- out.writeInt(clientDataByUrl.size());
- for (String url : clientDataByUrl.keySet()) {
- out.writeObject(url);
- out.writeObject(clientDataByUrl.get(url));
- }
- } catch (IOException e) {
- TracCorePlugin.log(e);
- } finally {
- if (out != null) {
- try {
- out.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracCorePlugin.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracCorePlugin.java
deleted file mode 100644
index 20f14607b..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracCorePlugin.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * 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.trac.core;
-
-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 headless Trac plug-in class.
- *
- * @author Steffen Pingel
- */
-public class TracCorePlugin extends Plugin {
-
- public static final String PLUGIN_ID = "org.eclipse.mylar.trac.core";
-
- public static final String ENCODING_UTF_8 = "UTF-8";
-
- private static TracCorePlugin plugin;
-
- public final static String REPOSITORY_KIND = "trac";
-
- private TracRepositoryConnector connector;
-
- public TracCorePlugin() {
- }
-
- public static TracCorePlugin getDefault() {
- return plugin;
- }
-
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- @Override
- public void stop(BundleContext context) throws Exception {
- if (connector != null) {
- connector.stop();
- connector = null;
- }
-
- plugin = null;
- super.stop(context);
- }
-
- public TracRepositoryConnector getConnector() {
- return connector;
- }
-
- void setConnector(TracRepositoryConnector connector) {
- this.connector = connector;
- }
-
- /**
- * Returns the path to the file caching repository attributes.
- */
- protected IPath getRepostioryAttributeCachePath() {
- IPath stateLocation = Platform.getStateLocation(TracCorePlugin.getDefault().getBundle());
- IPath cacheFile = stateLocation.append("repositoryConfigurations");
- return cacheFile;
- }
-
- public static IStatus toStatus(Throwable e) {
- if (e instanceof TracLoginException) {
- return new Status(Status.ERROR, PLUGIN_ID, IStatus.INFO,
- "Your login name or password is incorrect. Ensure proper repository configuration in Task Repositories View.", null);
- } else if (e instanceof TracException) {
- return new Status(Status.ERROR, PLUGIN_ID, IStatus.INFO, "Connection Error: " + e.getMessage(), e);
- } else if (e instanceof ClassCastException) {
- return new Status(Status.ERROR, PLUGIN_ID, IStatus.INFO, "Error parsing server response", e);
- } else {
- return new Status(Status.ERROR, PLUGIN_ID, IStatus.ERROR, "Unexpected error", e);
- }
- }
-
- /**
- * Convenience method for logging statuses to the plug-in log
- *
- * @param status
- * the status to log
- */
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
-
- /**
- * Convenience method for logging exceptions to the plug-in log
- *
- * @param e
- * the exception to log
- */
- public static void log(Throwable e) {
- String message = e.getMessage();
- if (e.getMessage() == null) {
- message = e.getClass().toString();
- }
- log(new Status(Status.ERROR, TracCorePlugin.PLUGIN_ID, 0, message, e));
- }
-
-}
-
-
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracException.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracException.java
deleted file mode 100644
index f38b02a4a..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracException.java
+++ /dev/null
@@ -1,38 +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.trac.core;
-
-/**
- * Indicates an error during repository access.
- *
- * @author Steffen Pingel
- */
-public class TracException extends Exception {
-
- private static final long serialVersionUID = 1929614326467463462L;
-
- public TracException() {
- }
-
- public TracException(String message) {
- super(message);
- }
-
- public TracException(Throwable cause) {
- super(cause);
- }
-
- public TracException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracOfflineTaskHandler.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracOfflineTaskHandler.java
deleted file mode 100644
index 9c18d60e3..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracOfflineTaskHandler.java
+++ /dev/null
@@ -1,275 +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.trac.core;
-
-import java.io.UnsupportedEncodingException;
-import java.net.Proxy;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.mylar.internal.trac.core.TracAttributeFactory.Attribute;
-import org.eclipse.mylar.internal.trac.core.model.TracAttachment;
-import org.eclipse.mylar.internal.trac.core.model.TracComment;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.util.TracUtils;
-import org.eclipse.mylar.tasks.core.AbstractAttributeFactory;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.RepositoryAttachment;
-import org.eclipse.mylar.tasks.core.RepositoryOperation;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskComment;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Steffen Pingel
- */
-public class TracOfflineTaskHandler implements IOfflineTaskHandler {
-
- private AbstractAttributeFactory attributeFactory = new TracAttributeFactory();
-
- private TracRepositoryConnector connector;
-
- public TracOfflineTaskHandler(TracRepositoryConnector connector) {
- this.connector = connector;
- }
-
- public RepositoryTaskData downloadTaskData(final AbstractRepositoryTask task, TaskRepository repository, Proxy proxySettings) throws CoreException {
- if (!connector.hasRichEditor(repository, task)) {
- // offline mode is only supported for XML-RPC
- return null;
- }
-
- try {
- int id = Integer.parseInt(AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()));
- RepositoryTaskData data = new RepositoryTaskData(attributeFactory, TracCorePlugin.REPOSITORY_KIND,
- repository.getUrl(), id + "");
- ITracClient client = connector.getClientManager().getRepository(repository);
- client.updateAttributes(new NullProgressMonitor(), false);
- TracTicket ticket = client.getTicket(id);
- createDefaultAttributes(attributeFactory, data, client);
- updateTaskData(repository, attributeFactory, data, ticket);
- return data;
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, TracCorePlugin.PLUGIN_ID, 0, "Ticket download from "
- + task.getRepositoryUrl() + " failed, please see details.", e));
- }
- }
-
- public AbstractAttributeFactory getAttributeFactory() {
- return attributeFactory;
- }
-
- public Date getDateForAttributeType(String attributeKey, String dateString) {
- if (dateString == null || dateString.length() == 0) {
- return null;
- }
-
- try {
- String mappedKey = attributeFactory.mapCommonAttributeKey(attributeKey);
- if (mappedKey.equals(Attribute.TIME.getTracKey()) || mappedKey.equals(Attribute.CHANGE_TIME.getTracKey())) {
- return TracUtils.parseDate(Integer.valueOf(dateString));
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- public static void updateTaskData(TaskRepository repository, AbstractAttributeFactory factory,
- RepositoryTaskData data, TracTicket ticket) {
- if (ticket.getCreated() != null) {
- data.setAttributeValue(Attribute.TIME.getTracKey(), TracUtils.toTracTime(ticket.getCreated()) + "");
- }
- if (ticket.getLastChanged() != null) {
- data.setAttributeValue(Attribute.CHANGE_TIME.getTracKey(), TracUtils.toTracTime(ticket.getLastChanged())
- + "");
- }
- Map<String, String> valueByKey = ticket.getValues();
- for (String key : valueByKey.keySet()) {
- data.setAttributeValue(key, valueByKey.get(key));
- }
-
- TracComment[] comments = ticket.getComments();
- if (comments != null) {
- for (int i = 0; i < comments.length; i++) {
- if (!"comment".equals(comments[i].getField()) || "".equals(comments[i].getNewValue())) {
- continue;
- }
-
- TaskComment taskComment = new TaskComment(factory, data, data.getComments().size() + 1);
- taskComment.setAttributeValue(RepositoryTaskAttribute.USER_OWNER, comments[i].getAuthor());
- taskComment
- .setAttributeValue(RepositoryTaskAttribute.COMMENT_DATE, comments[i].getCreated().toString());
- taskComment.setAttributeValue(RepositoryTaskAttribute.COMMENT_TEXT, comments[i].getNewValue());
- data.addComment(taskComment);
- }
- }
-
- TracAttachment[] attachments = ticket.getAttachments();
- if (attachments != null) {
- for (int i = 0; i < attachments.length; i++) {
- RepositoryAttachment taskAttachment = new RepositoryAttachment(factory);
- taskAttachment.setCreator(attachments[i].getAuthor());
- taskAttachment.setAttributeValue(Attribute.DESCRIPTION.getTracKey(), attachments[i].getDescription());
- taskAttachment.setAttributeValue(RepositoryTaskAttribute.ATTACHMENT_FILENAME, attachments[i]
- .getFilename());
- taskAttachment.setAttributeValue(RepositoryTaskAttribute.USER_OWNER, attachments[i].getAuthor());
- taskAttachment.setAttributeValue(RepositoryTaskAttribute.ATTACHMENT_DATE, attachments[i].getCreated()
- .toString());
- taskAttachment.setAttributeValue(RepositoryTaskAttribute.ATTACHMENT_URL, repository.getUrl()
- + ITracClient.TICKET_ATTACHMENT_URL + ticket.getId() + "/" + attachments[i].getFilename());
- taskAttachment.setAttributeValue(RepositoryTaskAttribute.ATTACHMENT_ID, i + "");
- data.addAttachment(taskAttachment);
- }
- }
-
- String[] actions = ticket.getActions();
- if (actions != null) {
- // add operations in a defined order
- List<String> actionList = new ArrayList<String>(Arrays.asList(actions));
- addOperation(repository, data, ticket, actionList, "leave");
- addOperation(repository, data, ticket, actionList, "accept");
- addOperation(repository, data, ticket, actionList, "resolve");
- addOperation(repository, data, ticket, actionList, "reassign");
- addOperation(repository, data, ticket, actionList, "reopen");
- }
- }
-
- // TODO Reuse Labels from BugzillaServerFacade
- private static void addOperation(TaskRepository repository, RepositoryTaskData data, TracTicket ticket,
- List<String> actions, String action) {
- if (!actions.remove(action)) {
- return;
- }
-
- RepositoryOperation operation = null;
- if ("leave".equals(action)) {
- operation = new RepositoryOperation(action, "Leave as " + data.getStatus() + " " + data.getResolution());
- operation.setChecked(true);
- } else if ("accept".equals(action)) {
- operation = new RepositoryOperation(action, "Accept");
- } else if ("resolve".equals(action)) {
- operation = new RepositoryOperation(action, "Resolve bug, changing resolution to");
- operation.setUpOptions("resolution");
- for (String resolution : ticket.getResolutions()) {
- operation.addOption(resolution, resolution);
- }
- } else if ("reassign".equals(action)) {
- operation = new RepositoryOperation(action, "Reassing bug to");
- operation.setInputName("owner");
- operation.setInputValue(TracRepositoryConnector.getDisplayUsername(repository));
- } else if ("reopen".equals(action)) {
- operation = new RepositoryOperation(action, "Reopen");
- }
-
- if (operation != null) {
- data.addOperation(operation);
- }
- }
-
- public static void createDefaultAttributes(AbstractAttributeFactory factory, RepositoryTaskData data,
- ITracClient client) {
- createAttribute(factory, data, Attribute.STATUS, client.getTicketStatus());
- createAttribute(factory, data, Attribute.RESOLUTION, client.getTicketResolutions());
-
- createAttribute(factory, data, Attribute.COMPONENT, client.getComponents());
- createAttribute(factory, data, Attribute.VERSION, client.getVersions(), true);
- createAttribute(factory, data, Attribute.PRIORITY, client.getPriorities());
- createAttribute(factory, data, Attribute.SEVERITY, client.getSeverities());
-
- createAttribute(factory, data, Attribute.TYPE, client.getTicketTypes());
- createAttribute(factory, data, Attribute.OWNER);
- createAttribute(factory, data, Attribute.MILESTONE, client.getMilestones(), true);
- createAttribute(factory, data, Attribute.REPORTER);
-
- createAttribute(factory, data, Attribute.CC);
- createAttribute(factory, data, Attribute.KEYWORDS);
- }
-
- private static RepositoryTaskAttribute createAttribute(AbstractAttributeFactory factory, RepositoryTaskData data,
- Attribute attribute, Object[] values, boolean allowEmtpy) {
- RepositoryTaskAttribute attr = factory.createAttribute(attribute.getTracKey());
- if (values != null && values.length > 0) {
- if (allowEmtpy) {
- attr.addOptionValue("", "");
- }
- for (int i = 0; i < values.length; i++) {
- attr.addOptionValue(values[i].toString(), values[i].toString());
- }
- } else {
- // attr.setHidden(true);
- attr.setReadOnly(true);
- }
- data.addAttribute(attribute.getTracKey(), attr);
- return attr;
- }
-
- private static RepositoryTaskAttribute createAttribute(AbstractAttributeFactory factory, RepositoryTaskData data,
- Attribute attribute) {
- RepositoryTaskAttribute attr = factory.createAttribute(attribute.getTracKey());
- data.addAttribute(attribute.getTracKey(), attr);
- return attr;
- }
-
- private static RepositoryTaskAttribute createAttribute(AbstractAttributeFactory factory, RepositoryTaskData data,
- Attribute attribute, Object[] values) {
- return createAttribute(factory, data, attribute, values, false);
- }
-
- public Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository,
- Set<AbstractRepositoryTask> tasks, Proxy proxySettings) throws CoreException, UnsupportedEncodingException {
- if (repository.getSyncTimeStamp() == null) {
- return tasks;
- }
-
- if (!connector.hasChangedSince(repository)) {
- // return an empty list to avoid causing all tasks to synchronized
- return Collections.emptySet();
- }
-
- Date since = new Date(0);
- try {
- since = TracUtils.parseDate(Integer.parseInt(repository.getSyncTimeStamp()));
- } catch (NumberFormatException e) {
- }
-
- ITracClient client;
- try {
- client = connector.getClientManager().getRepository(repository);
- Set<Integer> ids = client.getChangedTickets(since);
-
- Set<AbstractRepositoryTask> result = new HashSet<AbstractRepositoryTask>();
- if (!ids.isEmpty()) {
- for (AbstractRepositoryTask task : tasks) {
- Integer id = Integer.parseInt(AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()));
- if (ids.contains(id)) {
- result.add(task);
- }
- }
- }
- return result;
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, TracCorePlugin.PLUGIN_ID, IStatus.OK, "could not determine changed tasks", e));
- }
- }
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracQueryHit.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracQueryHit.java
deleted file mode 100644
index 261312ed8..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracQueryHit.java
+++ /dev/null
@@ -1,81 +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.trac.core;
-
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-/**
- * @author Steffen Pingel
- */
-public class TracQueryHit extends AbstractQueryHit {
-
- private TracTask task;
-
- private boolean completed;
-
- private TaskList taskList;
-
- public TracQueryHit(TaskList taskList, String repositoryUrl, String description, String id) {
- super(repositoryUrl, description, id);
-
- this.taskList = taskList;
- }
-
- public TracQueryHit(TaskList taskList, String handle) {
- super(AbstractRepositoryTask.getRepositoryUrl(handle), "", AbstractRepositoryTask.getTaskId(handle));
-
- this.taskList = taskList;
- }
-
- @Override
- public AbstractRepositoryTask getCorrespondingTask() {
- return task;
- }
-
- @Override
- public AbstractRepositoryTask getOrCreateCorrespondingTask() {
- ITask existingTask = taskList.getTask(getHandleIdentifier());
- if (existingTask instanceof TracTask) {
- this.task = (TracTask) existingTask;
- } else {
- this.task = new TracTask(getHandleIdentifier(), getDescription(), true);
- task.setCompleted(completed);
- task.setPriority(priority);
- taskList.addTask(task);
- }
- return task;
- }
-
- @Override
- public boolean isCompleted() {
- return (task != null) ? task.isCompleted() : completed;
- }
-
- @Override
- public void setCorrespondingTask(AbstractRepositoryTask task) {
- if (task instanceof TracTask) {
- this.task = (TracTask) task;
- }
- }
-
- public String getUrl() {
- return getRepositoryUrl() + ITracClient.TICKET_URL + getId();
- }
-
- public void setCompleted(boolean completed) {
- this.completed = completed;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java
deleted file mode 100644
index c6ade79f6..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java
+++ /dev/null
@@ -1,239 +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.trac.core;
-
-import java.io.File;
-import java.net.Proxy;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.TracTask.Kind;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Steffen Pingel
- */
-public class TracRepositoryConnector extends AbstractRepositoryConnector {
-
- private final static String CLIENT_LABEL = "Trac (supports 0.9 and later or XML-RPC)";
-
- private List<String> supportedVersions;
-
- private TracClientManager clientManager;
-
- private TracOfflineTaskHandler offlineTaskHandler = new TracOfflineTaskHandler(this);
-
- private TracAttachmentHandler attachmentHandler = new TracAttachmentHandler(this);
-
- public TracRepositoryConnector() {
- TracCorePlugin.getDefault().setConnector(this);
- }
-
- @Override
- public boolean canCreateNewTask(TaskRepository repository) {
- return true;
- }
-
- @Override
- public boolean canCreateTaskFromKey(TaskRepository repository) {
- return true;
- }
-
- @Override
- public String getLabel() {
- return CLIENT_LABEL;
- }
-
- @Override
- public String getRepositoryType() {
- return TracCorePlugin.REPOSITORY_KIND;
- }
-
- @Override
- public String getRepositoryUrlFromTaskUrl(String url) {
- if (url == null) {
- return null;
- }
- int i = url.lastIndexOf(ITracClient.TICKET_URL);
- return (i != -1) ? url.substring(0, i) : null;
- }
-
- @Override
- public List<String> getSupportedVersions() {
- if (supportedVersions == null) {
- supportedVersions = new ArrayList<String>();
- for (Version version : Version.values()) {
- supportedVersions.add(version.toString());
- }
- }
- return supportedVersions;
- }
-
- @Override
- public IAttachmentHandler getAttachmentHandler() {
- return attachmentHandler;
- }
-
- @Override
- public IOfflineTaskHandler getOfflineTaskHandler() {
- return offlineTaskHandler;
- }
-
- @Override
- public void updateTaskState(AbstractRepositoryTask repositoryTask) {
- // TODO Auto-generated method stub
- }
-
- @Override
- public IStatus performQuery(AbstractRepositoryQuery query, TaskRepository repository,
- Proxy proxySettings, IProgressMonitor monitor, QueryHitCollector resultCollector) {
-
- final List<TracTicket> tickets = new ArrayList<TracTicket>();
-
- ITracClient tracClient;
- try {
- tracClient = getClientManager().getRepository(repository);
- if (query instanceof TracRepositoryQuery) {
- tracClient.search(((TracRepositoryQuery) query).getTracSearch(), tickets);
- }
-
- for (TracTicket ticket : tickets) {
- TracQueryHit hit = new TracQueryHit(taskList, query.getRepositoryUrl(), getTicketDescription(ticket), ticket
- .getId()
- + "");
- hit.setCompleted(TracTask.isCompleted(ticket.getValue(Key.STATUS)));
- hit.setPriority(TracTask.getMylarPriority(ticket.getValue(Key.PRIORITY)));
- resultCollector.accept(hit);
- }
- } catch (Throwable e) {
- return TracCorePlugin.toStatus(e);
- }
-
- return Status.OK_STATUS;
- }
-
- @Override
- public ITask createTaskFromExistingKey(TaskRepository repository, String id, Proxy proxySettings) throws CoreException {
- try {
- ITracClient connection = getClientManager().getRepository(repository);
- TracTicket ticket = connection.getTicket(Integer.parseInt(id));
-
- String handleIdentifier = AbstractRepositoryTask.getHandle(repository.getUrl(), ticket.getId());
- TracTask task = createTask(ticket, handleIdentifier);
- updateTaskDetails(task, ticket, true);
-
- return task;
- } catch (Exception e) {
- throw new CoreException(TracCorePlugin.toStatus(e));
- }
- }
-
- public synchronized TracClientManager getClientManager() {
- if (clientManager == null) {
- File cacheFile = null;
- if (TracCorePlugin.getDefault().getRepostioryAttributeCachePath() != null) {
- cacheFile = TracCorePlugin.getDefault().getRepostioryAttributeCachePath().toFile();
- }
- clientManager = new TracClientManager(cacheFile);
- }
- return clientManager;
- }
-
- public TracTask createTask(TracTicket ticket, String handleIdentifier) {
- TracTask task;
- ITask existingTask = taskList.getTask(handleIdentifier);
- if (existingTask instanceof TracTask) {
- task = (TracTask) existingTask;
- } else {
- task = new TracTask(handleIdentifier, getTicketDescription(ticket), true);
- taskList.addTask(task);
- }
- return task;
- }
-
- /**
- * Updates fields of <code>task</code> from <code>ticket</code>.
- */
- public void updateTaskDetails(TracTask task, TracTicket ticket, boolean notify) {
- if (ticket.getValue(Key.SUMMARY) != null) {
- task.setDescription(getTicketDescription(ticket));
- }
- task.setCompleted(TracTask.isCompleted(ticket.getValue(Key.STATUS)));
- task.setPriority(TracTask.getMylarPriority(ticket.getValue(Key.PRIORITY)));
- if (ticket.getValue(Key.TYPE) != null) {
- Kind kind = TracTask.Kind.fromType(ticket.getValue(Key.TYPE));
- task.setKind((kind != null) ? kind.toString() : ticket.getValue(Key.TYPE));
- }
- if (ticket.getCreated() != null) {
- task.setCreationDate(ticket.getCreated());
- }
-
- if (notify) {
- taskList.notifyLocalInfoChanged(task);
- }
- }
-
- private static String getTicketDescription(TracTicket ticket) {
- return ticket.getId() + ": " + ticket.getValue(Key.SUMMARY);
- }
-
- public boolean hasChangedSince(TaskRepository repository) {
- return Version.XML_RPC.name().equals(repository.getVersion());
- }
-
- public boolean hasRichEditor(TaskRepository repository, AbstractRepositoryTask task) {
- return Version.XML_RPC.name().equals(repository.getVersion());
- }
-
- public boolean hasAttachmentSupport(TaskRepository repository, AbstractRepositoryTask task) {
- return Version.XML_RPC.name().equals(repository.getVersion());
- }
-
- public void stop() {
- if (clientManager != null) {
- clientManager.writeCache();
- }
- }
-
- @Override
- public void updateAttributes(TaskRepository repository, Proxy proxySettings, IProgressMonitor monitor) throws CoreException {
- try {
- ITracClient client = getClientManager().getRepository(repository);
- client.updateAttributes(monitor, true);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not update attributes", false);
- }
- }
-
- public static String getDisplayUsername(TaskRepository repository) {
- if (!repository.hasCredentials()) {
- return ITracClient.DEFAULT_USERNAME;
- }
- return repository.getUserName();
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryQuery.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryQuery.java
deleted file mode 100644
index 03daac842..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryQuery.java
+++ /dev/null
@@ -1,88 +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.trac.core;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.StringTokenizer;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskList;
-
-/**
- * @author Steffen Pingel
- */
-public class TracRepositoryQuery extends AbstractRepositoryQuery {
-
- public TracRepositoryQuery(String repositoryUrl, String queryUrl, String description, TaskList taskList) {
- super(description, taskList);
-
- assert queryUrl.startsWith(repositoryUrl + ITracClient.QUERY_URL);
-
- setRepositoryUrl(repositoryUrl);
- setUrl(queryUrl);
- }
-
- @Override
- public String getRepositoryKind() {
- return TracCorePlugin.REPOSITORY_KIND;
- }
-
- public String getQueryParameter() {
- String url = getUrl();
- int i = url.indexOf(ITracClient.QUERY_URL);
- if (i == -1) {
- return null;
- }
- return url.substring(i + ITracClient.QUERY_URL.length());
- }
-
- /**
- * Creates a <code>TracSearch</code> object from this query.
- */
- public TracSearch getTracSearch() {
- TracSearch list = new TracSearch();
- String url = getQueryParameter();
- if (url == null) {
- return list;
- }
-
- StringTokenizer t = new StringTokenizer(url, "&");
- while (t.hasMoreTokens()) {
- String token = t.nextToken();
- int i = token.indexOf("=");
- if (i != -1) {
- try {
- String key = URLDecoder.decode(token.substring(0, i), ITracClient.CHARSET);
- String value = URLDecoder.decode(token.substring(i + 1), ITracClient.CHARSET);
-
- if ("order".equals(key)) {
- list.setOrderBy(value);
- } else if ("desc".equals(key)) {
- list.setAscending(!"1".equals(value));
- } else if ("group".equals(key) || "groupdesc".equals(key) || "verbose".equals(key)) {
- // ignore these parameters
- } else {
- list.addFilter(key, value);
- }
- } catch (UnsupportedEncodingException e) {
- MylarStatusHandler.log(e, "Unexpected exception while decoding URL");
- }
- }
- }
-
- return list;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTask.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTask.java
deleted file mode 100644
index fabd76cd2..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTask.java
+++ /dev/null
@@ -1,183 +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.trac.core;
-
-import org.eclipse.mylar.internal.trac.core.TracAttributeFactory.Attribute;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.Task;
-
-/**
- * @author Steffen Pingel
- */
-public class TracTask extends AbstractRepositoryTask {
-
- public enum PriorityLevel {
- BLOCKER, CRITICAL, MAJOR, MINOR, TRIVIAL;
-
- @Override
- public String toString() {
- switch (this) {
- case BLOCKER:
- return "P1";
- case CRITICAL:
- return "P2";
- case MAJOR:
- return "P3";
- case MINOR:
- return "P4";
- case TRIVIAL:
- return "P5";
- default:
- return "P5";
- }
- }
-
- public static PriorityLevel fromPriority(String priority) {
- if (priority == null)
- return null;
- if (priority.equals("blocker"))
- return BLOCKER;
- if (priority.equals("critical"))
- return CRITICAL;
- if (priority.equals("major"))
- return MAJOR;
- if (priority.equals("minor"))
- return MINOR;
- if (priority.equals("trivial"))
- return TRIVIAL;
- return null;
- }
- }
-
- public enum Kind {
- DEFECT, ENHANCEMENT, TASK;
-
- @Override
- public String toString() {
- switch (this) {
- case DEFECT:
- return "Defect";
- case ENHANCEMENT:
- return "Enhancement";
- case TASK:
- return "Task";
- default:
- return "";
- }
- }
-
- public static Kind fromType(String type) {
- if (type == null)
- return null;
- if (type.equals("defect"))
- return DEFECT;
- if (type.equals("enhancement"))
- return ENHANCEMENT;
- if (type.equals("task"))
- return TASK;
- return null;
- }
-
- }
-
- public enum Status {
- NEW, ASSIGNED, REOPENED, CLOSED;
-
- @Override
- public String toString() {
- switch (this) {
- case NEW:
- return "New";
- case ASSIGNED:
- return "Assigned";
- case REOPENED:
- return "Reopened";
- case CLOSED:
- return "Closed";
- default:
- return "";
- }
- }
-
- public static Status fromStatus(String status) {
- if (status == null)
- return null;
- if (status.equals("new"))
- return NEW;
- if (status.equals("assigned"))
- return ASSIGNED;
- if (status.equals("reopened"))
- return REOPENED;
- if (status.equals("closed"))
- return CLOSED;
- return null;
- }
-
- }
-
- public TracTask(String handle, String label, boolean newTask) {
- super(handle, label, newTask);
-
- setUrl(AbstractRepositoryTask.getRepositoryUrl(handle) + ITracClient.TICKET_URL
- + AbstractRepositoryTask.getTaskId(handle));
- }
-
- @Override
- public boolean isCompleted() {
- if (taskData != null) {
- return isCompleted(taskData.getStatus());
- } else {
- return super.isCompleted();
- }
- }
-
- @Override
- public String getRepositoryKind() {
- return TracCorePlugin.REPOSITORY_KIND;
- }
-
- @Override
- public String getPriority() {
- if (taskData != null && taskData.getAttribute(Attribute.PRIORITY.getTracKey()) != null) {
- return getMylarPriority(taskData.getAttributeValue(Attribute.PRIORITY.getTracKey()));
- } else {
- return super.getPriority();
- }
- }
-
- @Override
- public String getOwner() {
- if (taskData != null && taskData.getAttribute(RepositoryTaskAttribute.USER_OWNER) != null) {
- return taskData.getAttributeValue(RepositoryTaskAttribute.USER_OWNER);
- } else {
- return super.getOwner();
- }
- }
-
- // TODO use priority attributes from repository instead of hard coded enum
- public static String getMylarPriority(String tracPriority) {
- if (tracPriority != null) {
- PriorityLevel priority = PriorityLevel.fromPriority(tracPriority);
- if (priority != null) {
- return priority.toString();
- }
- }
- return Task.PriorityLevel.P3.toString();
- }
-
- public static boolean isCompleted(String tracStatus) {
- TracTask.Status status = TracTask.Status.fromStatus(tracStatus);
- return status == TracTask.Status.CLOSED;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java
deleted file mode 100644
index 8e7a694fa..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracXmlRpcClient.java
+++ /dev/null
@@ -1,449 +0,0 @@
-package org.eclipse.mylar.internal.trac.core;
-
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-
-import org.apache.xmlrpc.XmlRpcException;
-import org.apache.xmlrpc.client.XmlRpcClient;
-import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.trac.core.model.TracAttachment;
-import org.eclipse.mylar.internal.trac.core.model.TracComment;
-import org.eclipse.mylar.internal.trac.core.model.TracComponent;
-import org.eclipse.mylar.internal.trac.core.model.TracMilestone;
-import org.eclipse.mylar.internal.trac.core.model.TracPriority;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracSeverity;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketResolution;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketStatus;
-import org.eclipse.mylar.internal.trac.core.model.TracTicketType;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.internal.trac.core.util.TracHttpClientTransportFactory;
-import org.eclipse.mylar.internal.trac.core.util.TracUtils;
-import org.eclipse.mylar.internal.trac.core.util.TracHttpClientTransportFactory.TracHttpException;
-
-/**
- * Represents a Trac repository that is accessed through the Trac XmlRpcPlugin.
- *
- * @author Steffen Pingel
- */
-public class TracXmlRpcClient extends AbstractTracClient {
-
- public static final String XMLRPC_URL = "/xmlrpc";
-
- public static final String REQUIRED_REVISION = "1188";
-
- private XmlRpcClient xmlrpc;
-
- public TracXmlRpcClient(URL url, Version version, String username, String password) {
- super(url, version, username, password);
- }
-
- public synchronized XmlRpcClient getClient() throws TracException {
- if (xmlrpc != null) {
- return xmlrpc;
- }
-
- XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
- config.setEncoding(ITracClient.CHARSET);
- config.setBasicUserName(username);
- config.setBasicPassword(password);
- config.setServerURL(getXmlRpcUrl());
- config.setTimeZone(TimeZone.getTimeZone(ITracClient.TIME_ZONE));
-
- xmlrpc = new XmlRpcClient();
- xmlrpc.setConfig(config);
-
- TracHttpClientTransportFactory factory = new TracHttpClientTransportFactory(xmlrpc);
- xmlrpc.setTransportFactory(factory);
-
- return xmlrpc;
- }
-
- private URL getXmlRpcUrl() throws TracException {
- try {
- String location = repositoryUrl.toString();
- if (hasAuthenticationCredentials()) {
- location += LOGIN_URL;
- }
- location += XMLRPC_URL;
-
- return new URL(location);
- } catch (Exception e) {
- throw new TracException(e);
- }
- }
-
- private Object call(String method, Object... parameters) throws TracException {
- getClient();
-
- try {
- return xmlrpc.execute(method, parameters);
- } catch (TracHttpException e) {
- if (e.code == HttpURLConnection.HTTP_FORBIDDEN || e.code == HttpURLConnection.HTTP_UNAUTHORIZED) {
- throw new TracLoginException();
- } else {
- throw new TracException(e);
- }
- } catch (XmlRpcException e) {
- throw new TracRemoteException(e);
- } catch (Exception e) {
- throw new TracException(e);
- }
- }
-
- private Object[] multicall(Map<String, Object>... calls) throws TracException {
- Object[] result = (Object[]) call("system.multicall", new Object[] { calls });
- for (Object item : result) {
- try {
- checkForException(item);
- } catch (XmlRpcException e) {
- throw new TracRemoteException(e);
- } catch (Exception e) {
- throw new TracException(e);
- }
- }
- return result;
- }
-
- private void checkForException(Object result) throws NumberFormatException, XmlRpcException {
- if (result instanceof Map) {
- Map exceptionData = (Map) result;
- if (exceptionData.containsKey("faultCode") && exceptionData.containsKey("faultString")) {
- throw new XmlRpcException(Integer.parseInt(exceptionData.get("faultCode").toString()),
- (String) exceptionData.get("faultString"));
- }
- }
- }
-
- private Map<String, Object> createMultiCall(String methodName, Object... parameters) throws TracException {
- Map<String, Object> table = new HashMap<String, Object>();
- table.put("methodName", methodName);
- table.put("params", parameters);
- return table;
- }
-
- private Object getMultiCallResult(Object item) {
- return ((Object[]) item)[0];
- }
-
- public void validate() throws TracException {
- Object[] result = (Object[]) call("system.listMethods");
- boolean hasGetTicket = false, hasQuery = false, isRecentRevision = false;
- for (Object methodName : result) {
- if ("ticket.get".equals(methodName)) {
- hasGetTicket = true;
- }
- if ("ticket.query".equals(methodName)) {
- hasQuery = true;
- }
- if ("ticket.getRecentChanges".equals(methodName)) {
- // this call was added in rev. 1188
- isRecentRevision = true;
- }
-
- if (hasGetTicket && hasQuery && isRecentRevision) {
- return;
- }
- }
-
- throw new TracException("Required API calls are missing, please update your Trac XML-RPC Plugin to revision " + REQUIRED_REVISION + " or later");
- }
-
- public TracTicket getTicket(int id) throws TracException {
- Object[] result = (Object[]) call("ticket.get", id);
- TracTicket ticket = parseTicket(result);
-
- result = (Object[]) call("ticket.changeLog", id, 0);
- for (Object item : result) {
- ticket.addComment(parseChangeLogEntry((Object[]) item));
- }
-
- result = (Object[]) call("ticket.listAttachments", id);
- for (Object item : result) {
- ticket.addAttachment(parseAttachment((Object[]) item));
- }
-
- String[] actions = getActions(id);
- ticket.setActions(actions);
-
- ticket.setResolutions(getDefaultTicketResolutions());
-
- return ticket;
- }
-
- private TracAttachment parseAttachment(Object[] entry) {
- TracAttachment attachment = new TracAttachment((String) entry[0]);
- attachment.setDescription((String) entry[1]);
- attachment.setSize((Integer) entry[2]);
- attachment.setCreated(TracUtils.parseDate((Integer) entry[3]));
- attachment.setAuthor((String) entry[4]);
- return attachment;
- }
-
- private TracComment parseChangeLogEntry(Object[] entry) {
- TracComment comment = new TracComment();
- comment.setCreated(TracUtils.parseDate((Integer) entry[0]));
- comment.setAuthor((String) entry[1]);
- comment.setField((String) entry[2]);
- comment.setOldValue((String) entry[3]);
- comment.setNewValue((String) entry[4]);
- return comment;
- }
-
- /* public for testing */
- @SuppressWarnings("unchecked")
- public List<TracTicket> getTickets(int[] ids) throws TracException {
- Map<String, Object>[] calls = new Map[ids.length];
- for (int i = 0; i < calls.length; i++) {
- calls[i] = createMultiCall("ticket.get", ids[i]);
- }
-
- Object[] result = multicall(calls);
- assert result.length == ids.length;
-
- List<TracTicket> tickets = new ArrayList<TracTicket>(result.length);
- for (Object item : result) {
- Object[] ticketResult = (Object[]) getMultiCallResult(item);
- tickets.add(parseTicket(ticketResult));
- }
-
- return tickets;
- }
-
- @SuppressWarnings("unchecked")
- public void search(TracSearch query, List<TracTicket> tickets) throws TracException {
- // an empty query string is not valid, therefore prepend order
- Object[] result = (Object[]) call("ticket.query", "order=id" + query.toQuery());
-
- Map<String, Object>[] calls = new Map[result.length];
- for (int i = 0; i < calls.length; i++) {
- calls[i] = createMultiCall("ticket.get", result[i]);
- }
- result = multicall(calls);
-
- for (Object item : result) {
- Object[] ticketResult = (Object[]) getMultiCallResult(item);
- tickets.add(parseTicket(ticketResult));
- }
- }
-
- private TracTicket parseTicket(Object[] ticketResult) throws InvalidTicketException {
- TracTicket ticket = new TracTicket((Integer) ticketResult[0]);
- ticket.setCreated((Integer) ticketResult[1]);
- ticket.setLastChanged((Integer) ticketResult[2]);
- Map attributes = (Map) ticketResult[3];
- for (Object key : attributes.keySet()) {
- ticket.putValue(key.toString(), attributes.get(key).toString());
- }
- return ticket;
- }
-
- public synchronized void updateAttributes(IProgressMonitor monitor) throws TracException {
- monitor.beginTask("Updating attributes", 8);
-
- Object[] result = getAttributes("ticket.component");
- data.components = new ArrayList<TracComponent>(result.length);
- for (Object item : result) {
- data.components.add(parseComponent((Map) getMultiCallResult(item)));
- }
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- result = getAttributes("ticket.milestone");
- data.milestones = new ArrayList<TracMilestone>(result.length);
- for (Object item : result) {
- data.milestones.add(parseMilestone((Map) getMultiCallResult(item)));
- }
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- List<TicketAttributeResult> attributes = getTicketAttributes("ticket.priority");
- data.priorities = new ArrayList<TracPriority>(result.length);
- for (TicketAttributeResult attribute : attributes) {
- data.priorities.add(new TracPriority(attribute.name, attribute.value));
- }
- Collections.sort(data.priorities);
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- attributes = getTicketAttributes("ticket.resolution");
- data.ticketResolutions = new ArrayList<TracTicketResolution>(result.length);
- for (TicketAttributeResult attribute : attributes) {
- data.ticketResolutions.add(new TracTicketResolution(attribute.name, attribute.value));
- }
- Collections.sort(data.ticketResolutions);
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- attributes = getTicketAttributes("ticket.severity");
- data.severities = new ArrayList<TracSeverity>(result.length);
- for (TicketAttributeResult attribute : attributes) {
- data.severities.add(new TracSeverity(attribute.name, attribute.value));
- }
- Collections.sort(data.severities);
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- attributes = getTicketAttributes("ticket.status");
- data.ticketStatus = new ArrayList<TracTicketStatus>(result.length);
- for (TicketAttributeResult attribute : attributes) {
- data.ticketStatus.add(new TracTicketStatus(attribute.name, attribute.value));
- }
- Collections.sort(data.ticketStatus);
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- attributes = getTicketAttributes("ticket.type");
- data.ticketTypes = new ArrayList<TracTicketType>(result.length);
- for (TicketAttributeResult attribute : attributes) {
- data.ticketTypes.add(new TracTicketType(attribute.name, attribute.value));
- }
- Collections.sort(data.ticketTypes);
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
-
- result = getAttributes("ticket.version");
- data.versions = new ArrayList<TracVersion>(result.length);
- for (Object item : result) {
- data.versions.add(parseVersion((Map) getMultiCallResult(item)));
- }
- monitor.worked(1);
- if (monitor.isCanceled())
- throw new OperationCanceledException();
- }
-
- private TracComponent parseComponent(Map result) {
- TracComponent component = new TracComponent((String) result.get("name"));
- component.setOwner((String) result.get("owner"));
- component.setDescription((String) result.get("description"));
- return component;
- }
-
- private TracMilestone parseMilestone(Map result) {
- TracMilestone milestone = new TracMilestone((String) result.get("name"));
- milestone.setCompleted(TracUtils.parseDate((Integer) result.get("completed")));
- milestone.setDue(TracUtils.parseDate((Integer) result.get("due")));
- milestone.setDescription((String) result.get("description"));
- return milestone;
- }
-
- private TracVersion parseVersion(Map result) {
- TracVersion version = new TracVersion((String) result.get("name"));
- version.setTime(TracUtils.parseDate((Integer) result.get("time")));
- version.setDescription((String) result.get("description"));
- return version;
- }
-
- @SuppressWarnings("unchecked")
- private Object[] getAttributes(String attributeType) throws TracException {
- Object[] ids = (Object[]) call(attributeType + ".getAll");
- Map<String, Object>[] calls = new Map[ids.length];
- for (int i = 0; i < calls.length; i++) {
- calls[i] = createMultiCall(attributeType + ".get", ids[i]);
- }
-
- Object[] result = multicall(calls);
- assert result.length == ids.length;
-
- return result;
- }
-
- @SuppressWarnings("unchecked")
- private List<TicketAttributeResult> getTicketAttributes(String attributeType) throws TracException {
- Object[] ids = (Object[]) call(attributeType + ".getAll");
- Map<String, Object>[] calls = new Map[ids.length];
- for (int i = 0; i < calls.length; i++) {
- calls[i] = createMultiCall(attributeType + ".get", ids[i]);
- }
-
- Object[] result = multicall(calls);
- assert result.length == ids.length;
-
- List<TicketAttributeResult> attributes = new ArrayList<TicketAttributeResult>(result.length);
- for (int i = 0; i < calls.length; i++) {
- try {
- TicketAttributeResult attribute = new TicketAttributeResult();
- attribute.name = (String) ids[i];
- attribute.value = Integer.parseInt((String) getMultiCallResult(result[i]));
- attributes.add(attribute);
- } catch (NumberFormatException e) {
- MylarStatusHandler.log(e, "Invalid response from Trac repository for attribute type: '" + attributeType
- + "'");
- }
- }
-
- return attributes;
- }
-
- public byte[] getAttachmentData(int ticketId, String filename) throws TracException {
- return (byte[]) call("ticket.getAttachment", ticketId, filename);
- }
-
- public void putAttachmentData(int ticketId, String filename, String description, byte[] data) throws TracException {
- call("ticket.putAttachment", ticketId, filename, description, data, true);
- }
-
- private class TicketAttributeResult {
-
- String name;
-
- int value;
-
- }
-
- public void createTicket(TracTicket ticket) throws TracException {
- Map<String, String> attributes = ticket.getValues();
- String summary = attributes.remove(Key.SUMMARY.getKey());
- String description = attributes.remove(Key.DESCRIPTION.getKey());
- if (summary == null || description == null) {
- throw new InvalidTicketException();
- }
- call("ticket.create", summary, description, attributes);
- }
-
- public void updateTicket(TracTicket ticket, String comment) throws TracException {
- Map<String, String> attributes = ticket.getValues();
- call("ticket.update", ticket.getId(), comment, attributes);
- }
-
- public Set<Integer> getChangedTickets(Date since) throws TracException {
- Object[] ids;
- ids = (Object[]) call("ticket.getRecentChanges", since);
- Set<Integer> result = new HashSet<Integer>();
- for (Object id : ids) {
- result.add((Integer) id);
- }
- return result;
- }
-
- public String[] getActions(int id) throws TracException {
- Object[] actions = (Object[]) call("ticket.getAvailableActions", id);
- String[] result = new String[actions.length];
- for (int i = 0; i < result.length; i++) {
- result[i] = (String) actions[i];
- }
- return result;
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearch.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearch.java
deleted file mode 100644
index bcc8784c8..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearch.java
+++ /dev/null
@@ -1,150 +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.trac.core.model;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter.CompareOperator;
-
-/**
- * Represents a Trac search. A search can have multiple {@link TracSearchFilter}s
- * that all need to match.
- *
- * @author Steffen Pingel
- */
-public class TracSearch {
-
- /** Stores search criteria in the order entered by the user. */
- private Map<String, TracSearchFilter> filterByFieldName = new LinkedHashMap<String, TracSearchFilter>();
-
- /** The field the result is ordered by. */
- private String orderBy;
-
- private boolean ascending = true;
-
- public TracSearch() {
- }
-
- public void addFilter(String key, String value) {
- TracSearchFilter filter = filterByFieldName.get(key);
- if (filter == null) {
- filter = new TracSearchFilter(key);
- CompareOperator operator = CompareOperator.fromUrl(value);
- filter.setOperator(operator);
- filterByFieldName.put(key, filter);
- }
-
- filter.addValue(value.substring(filter.getOperator().getQueryValue().length()));
- }
-
- public void addFilter(TracSearchFilter filter) {
- filterByFieldName.put(filter.getFieldName(), filter);
- }
-
- public List<TracSearchFilter> getFilters() {
- return new ArrayList<TracSearchFilter>(filterByFieldName.values());
- }
-
- public void setAscending(boolean ascending) {
- this.ascending = ascending;
- }
-
- public boolean isAscending() {
- return ascending;
- }
-
- public void setOrderBy(String orderBy) {
- this.orderBy = orderBy;
- }
-
- public String getOrderBy() {
- return orderBy;
- }
-
- /**
- * Returns a Trac query string that conforms to the format defined at
- * {@link http://projects.edgewall.com/trac/wiki/TracQuery#QueryLanguage}.
- *
- * @return the empty string, if no search order and criteria are defined; a
- * string that starts with &amp;, otherwise
- */
- public String toQuery() {
- StringBuilder sb = new StringBuilder();
- if (orderBy != null) {
- sb.append("&order=");
- sb.append(orderBy);
- if (!ascending) {
- sb.append("&desc=1");
- }
- }
- for (TracSearchFilter filter : filterByFieldName.values()) {
- sb.append("&");
- sb.append(filter.getFieldName());
- sb.append(filter.getOperator().getQueryValue());
- sb.append("=");
- List<String> values = filter.getValues();
- for (Iterator<String> it = values.iterator(); it.hasNext();) {
- sb.append(it.next());
- if (it.hasNext()) {
- sb.append("|");
- }
- }
- }
- return sb.toString();
- }
-
- /**
- * Returns a URL encoded string that can be passed as an argument to the
- * Trac query script.
- *
- * @return the empty string, if no search order and criteria are defined; a
- * string that starts with &amp;, otherwise
- */
- public String toUrl() {
- StringBuilder sb = new StringBuilder();
- if (orderBy != null) {
- sb.append("&order=");
- sb.append(orderBy);
- if (!ascending) {
- sb.append("&desc=1");
- }
- } else if (filterByFieldName.isEmpty()) {
- // TODO figure out why search must be ordered when logged in (otherwise
- // no results will be returned)
- sb.append("&order=id");
- }
-
- for (TracSearchFilter filter : filterByFieldName.values()) {
- for (String value : filter.getValues()) {
- sb.append("&");
- sb.append(filter.getFieldName());
- sb.append("=");
- try {
- sb.append(URLEncoder.encode(filter.getOperator().getQueryValue(), ITracClient.CHARSET));
- sb.append(URLEncoder.encode(value, ITracClient.CHARSET));
- } catch (UnsupportedEncodingException e) {
- MylarStatusHandler.log(e, "Unexpected exception while decoding URL");
- }
- }
- }
- return sb.toString();
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearchFilter.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearchFilter.java
deleted file mode 100644
index 42f5c2942..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracSearchFilter.java
+++ /dev/null
@@ -1,108 +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.trac.core.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents a search criterion. Each criterion is applied to a field such as
- * milestone or priority. It has a compare operator and a list of values. The
- * compare mode is <code>OR</code> for the operators <code>contains</code>,
- * <code>starts with</code>, <code>ends with</code> and <code>is</code>.
- * The compare mode is <code>AND</code> for all other (negated) operators.
- *
- * @author Steffen Pingel
- */
-public class TracSearchFilter {
-
- public enum CompareOperator {
- CONTAINS("~"), CONTAINS_NOT("!~"), BEGINS_WITH("^"), NOT_BEGINS_WITH("!^"), ENDS_WITH("$"), NOT_ENDS_WITH("!$"), IS(
- ""), IS_NOT("!");
-
- public static CompareOperator fromUrl(String value) {
- for (CompareOperator operator : values()) {
- if (operator != IS && operator != IS_NOT && value.startsWith(operator.queryValue)) {
- return operator;
- }
- }
- if (value.startsWith(IS_NOT.queryValue)) {
- return IS_NOT;
- }
- return IS;
- }
-
- /** The string that represent the operator in a Trac query. */
- private String queryValue;
-
- CompareOperator(String queryValue) {
- this.queryValue = queryValue;
- }
-
- public String getQueryValue() {
- return queryValue;
- }
-
- public String toString() {
- switch (this) {
- case CONTAINS:
- return "contains";
- case CONTAINS_NOT:
- return "does not contain";
- case BEGINS_WITH:
- return "begins with";
- case NOT_BEGINS_WITH:
- return "does not begin with";
- case ENDS_WITH:
- return "ends with";
- case NOT_ENDS_WITH:
- return "does not end with";
- case IS_NOT:
- return "is not";
- default:
- return "is";
- }
- }
-
- }
-
- private String fieldName;
-
- private CompareOperator operator;
-
- private List<String> values = new ArrayList<String>();
-
- public TracSearchFilter(String fieldName) {
- this.fieldName = fieldName;
- }
-
- public void addValue(String value) {
- values.add(value);
- }
-
- public String getFieldName() {
- return fieldName;
- }
-
- public CompareOperator getOperator() {
- return operator;
- }
-
- public List<String> getValues() {
- return values;
- }
-
- public void setOperator(CompareOperator operator) {
- this.operator = operator;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracTicket.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracTicket.java
deleted file mode 100644
index 9c91acd5b..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/model/TracTicket.java
+++ /dev/null
@@ -1,225 +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.trac.core.model;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.mylar.internal.trac.core.InvalidTicketException;
-import org.eclipse.mylar.internal.trac.core.util.TracUtils;
-
-/**
- * Represents a Trac ticket as it is retrieved from a Trac repository.
- *
- * @author Steffen Pingel
- */
-public class TracTicket {
-
- /**
- * Represents the key of a string propertiy of a ticket.
- *
- * @author Steffen Pingel
- */
- public enum Key {
- CC("cc"), CHANGE_TIME("changetime"), COMPONENT("component"), DESCRIPTION("description"), ID("id"), KEYWORDS(
- "keywords"), MILESTONE("milestone"), OWNER("owner"), PRIORITY("priority"), REPORTER("reporter"), RESOLUTION(
- "resolution"), STATUS("status"), SEVERITY("severity"), SUMMARY("summary"), TIME("time"), TYPE("type"), VERSION(
- "version");
-
- public static Key fromKey(String name) {
- for (Key key : Key.values()) {
- if (key.getKey().equals(name)) {
- return key;
- }
- }
- return null;
- }
-
- private String key;
-
- Key(String key) {
- this.key = key;
- }
-
- public String toString() {
- return key;
- }
-
- public String getKey() {
- return key;
- }
- }
-
- public static final int INVALID_ID = -1;
-
- private Date created;
-
- /**
- * User defined custom ticket fields.
- *
- * @see http://projects.edgewall.com/trac/wiki/TracTicketsCustomFields
- */
- private Map<String, String> customValueByKey;
-
- private int id = INVALID_ID;
-
- private Date lastChanged;
-
- /** Trac's built-in ticket properties. */
- private Map<Key, String> valueByKey = new HashMap<Key, String>();
-
- private List<TracComment> comments;
-
- private List<TracAttachment> attachments;
-
- private String[] actions;
-
- private String[] resolutions;
-
- public TracTicket() {
- }
-
- /**
- * Constructs a Trac ticket.
- *
- * @param id
- * the nummeric Trac ticket id
- */
- public TracTicket(int id) {
- this.id = id;
- }
-
- public Date getCreated() {
- return created;
- }
-
- public int getId() {
- return id;
- }
-
- public Date getLastChanged() {
- return lastChanged;
- }
-
- public String getCustomValue(String key) {
- if (customValueByKey == null) {
- return null;
- }
- return customValueByKey.get(key);
- }
-
- public String getValue(Key key) {
- return valueByKey.get(key);
- }
-
- public Map<String, String> getValues() {
- Map<String, String> result = new HashMap<String, String>();
- for (Key key : valueByKey.keySet()) {
- result.put(key.getKey(), valueByKey.get(key));
- }
- if (customValueByKey != null) {
- result.putAll(customValueByKey);
- }
- return result;
- }
-
- public boolean isValid() {
- return getId() != TracTicket.INVALID_ID;
- }
-
- public void putBuiltinValue(Key key, String value) throws InvalidTicketException {
- valueByKey.put(key, value);
- }
-
- public void putCustomValue(String key, String value) {
- if (customValueByKey == null) {
- customValueByKey = new HashMap<String, String>();
- }
- customValueByKey.put(key, value);
- }
-
- /**
- * Stores a value as it is retrieved from the repository.
- *
- * @throws InvalidTicketException
- * thrown if the type of <code>value</code> is not valid
- */
- public boolean putValue(String keyName, String value) throws InvalidTicketException {
- Key key = Key.fromKey(keyName);
- if (key != null) {
- if (key == Key.ID || key == Key.TIME || key == Key.CHANGE_TIME) {
- return false;
- }
- putBuiltinValue(key, value);
- } else if (value instanceof String) {
- putCustomValue(keyName, (String) value);
- } else {
- throw new InvalidTicketException("Expected string value for custom key '" + keyName + "', got '" + value
- + "'");
- }
- return true;
- }
-
- public void setCreated(int created) {
- this.created = TracUtils.parseDate(created);
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public void setLastChanged(int lastChanged) {
- this.lastChanged = TracUtils.parseDate(lastChanged);
- }
-
- public void addComment(TracComment comment) {
- if (comments == null) {
- comments = new ArrayList<TracComment>();
- }
- comments.add(comment);
- }
-
- public void addAttachment(TracAttachment attachment) {
- if (attachments == null) {
- attachments = new ArrayList<TracAttachment>();
- }
- attachments.add(attachment);
- }
-
- public TracComment[] getComments() {
- return (comments != null) ? comments.toArray(new TracComment[0]) : null;
- }
-
- public TracAttachment[] getAttachments() {
- return (attachments != null) ? attachments.toArray(new TracAttachment[0]) : null;
- }
-
- public void setActions(String[] actions) {
- this.actions = actions;
- }
-
- public String[] getActions() {
- return actions;
- }
-
- public void setResolutions(String[] resolutions) {
- this.resolutions = resolutions;
- }
-
- public String[] getResolutions() {
- return resolutions;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/util/TracHttpClientTransportFactory.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/util/TracHttpClientTransportFactory.java
deleted file mode 100644
index bc94ce5d8..000000000
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/util/TracHttpClientTransportFactory.java
+++ /dev/null
@@ -1,234 +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.trac.core.util;
-
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.net.HttpURLConnection;
-import java.net.Proxy;
-import java.util.zip.GZIPInputStream;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpVersion;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.xmlrpc.XmlRpcException;
-import org.apache.xmlrpc.XmlRpcRequest;
-import org.apache.xmlrpc.client.XmlRpcClient;
-import org.apache.xmlrpc.client.XmlRpcCommonsTransport;
-import org.apache.xmlrpc.client.XmlRpcHttpClientConfig;
-import org.apache.xmlrpc.client.XmlRpcTransport;
-import org.apache.xmlrpc.client.XmlRpcTransportFactoryImpl;
-import org.apache.xmlrpc.util.XmlRpcIOException;
-import org.eclipse.mylar.internal.tasks.core.WebClientUtil;
-
-/**
- * A custom transport factory used to establish XML-RPC connections. Uses the
- * Mylar proxy settings.
- *
- * @author Steffen Pingel
- */
-public class TracHttpClientTransportFactory extends XmlRpcTransportFactoryImpl {
-
- public static class TracHttpException extends XmlRpcException {
-
- private static final long serialVersionUID = 9032521978140685830L;
-
- public TracHttpException(int responseCode) {
- super(responseCode, "HTTP Error " + responseCode);
- }
-
- }
-
- /**
- * A transport that uses the Apache HttpClient library.
- */
- public static class TracHttpClientTransport extends XmlRpcCommonsTransport {
-
- private int contentLength;
- private Proxy proxy;
-
- public TracHttpClientTransport(XmlRpcClient client) {
- super(client);
-
- XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) client.getConfig();
- // this needs to be set to avoid exceptions
- getHttpClient().getParams().setAuthenticationPreemptive(config.getBasicUserName() != null);
- }
-
- public HttpClient getHttpClient() {
- return (HttpClient) getValue("client");
- }
-
- @Override
- protected InputStream getInputStream() throws XmlRpcException {
- int responseCode = getMethod().getStatusCode();
- if (responseCode != HttpURLConnection.HTTP_OK) {
- throw new TracHttpException(responseCode);
- }
-
- return super.getInputStream();
- }
-
- public PostMethod getMethod() {
- return (PostMethod) getValue("method");
- }
-
- public void setMethod(PostMethod method) {
- setValue("method", method);
- }
-
- private Object getValue(String name) {
- try {
- Field field = XmlRpcCommonsTransport.class.getDeclaredField(name);
- field.setAccessible(true);
- return field.get(this);
- } catch (Throwable t) {
- throw new RuntimeException("Internal error accessing HttpClient", t);
- }
- }
-
- private void setValue(String name, Object value) {
- try {
- Field field = XmlRpcCommonsTransport.class.getDeclaredField(name);
- field.setAccessible(true);
- field.set(this, value);
- } catch (Throwable t) {
- throw new RuntimeException("Internal error accessing HttpClient", t);
- }
- }
-
- /**
- * Based on the implementation of XmlRpcCommonsTransport and its super classes.
- */
- @Override
- public Object sendRequest(XmlRpcRequest pRequest) throws XmlRpcException {
- XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig();
-
- String url = config.getServerURL().toString();
- WebClientUtil.setupHttpClient(getHttpClient(), proxy, url);
-
- PostMethod method = new PostMethod(WebClientUtil.getRequestPath(url));
-
- if (config.getConnectionTimeout() != 0)
- getHttpClient().getHttpConnectionManager().getParams().setConnectionTimeout(config.getConnectionTimeout());
-
- if (config.getReplyTimeout() != 0)
- getHttpClient().getHttpConnectionManager().getParams().setSoTimeout(config.getConnectionTimeout());
-
- method.getParams().setVersion(HttpVersion.HTTP_1_1);
-
- setMethod(method);
-
- initHttpHeaders(pRequest);
-
- boolean closed = false;
- try {
- RequestWriter writer = newRequestWriter(pRequest);
- writeRequest(writer);
- InputStream istream = getInputStream();
- if (isResponseGzipCompressed(config)) {
- istream = new GZIPInputStream(istream);
- }
- Object result = readResponse(config, istream);
- closed = true;
- close();
- return result;
- } catch (IOException e) {
- throw new XmlRpcException("Failed to read servers response: "
- + e.getMessage(), e);
- } finally {
- if (!closed) { try { close(); } catch (Throwable ignore) {} }
- }
- }
-
- @Override
- protected void writeRequest(final RequestWriter pWriter) throws XmlRpcException {
- getMethod().setRequestEntity(new RequestEntity(){
- public boolean isRepeatable() { return true; }
- public void writeRequest(OutputStream pOut) throws IOException {
- /* Make sure, that the socket is not closed by replacing it with our
- * own BufferedOutputStream.
- */
- BufferedOutputStream bos = new BufferedOutputStream(pOut){
- public void close() throws IOException {
- flush();
- }
- };
- try {
- Method m = RequestWriter.class.getDeclaredMethod("write", new Class[] { OutputStream.class });
- m.setAccessible(true);
- m.invoke(pWriter, bos);
- } catch (Exception e) {
- throw new XmlRpcIOException(e);
- }
- }
- public long getContentLength() { return contentLength; }
- public String getContentType() { return "text/xml"; }
- });
-
- try {
- getHttpClient().executeMethod(getMethod());
- } catch (XmlRpcIOException e) {
- Throwable t = e.getLinkedException();
- if (t instanceof XmlRpcException) {
- throw (XmlRpcException) t;
- } else {
- throw new XmlRpcException("Unexpected exception: " + t.getMessage(), t);
- }
- } catch (IOException e) {
- throw new XmlRpcException("I/O error while communicating with HTTP server: " + e.getMessage(), e);
- }
- }
-
- @Override
- protected void setContentLength(int pLength) {
- super.setContentLength(pLength);
-
- this.contentLength = pLength;
- }
-
- public void setProxy(Proxy proxy) {
- this.proxy = proxy;
- }
-
- public Proxy getProxy() {
- return this.proxy;
- }
-
- }
-
- private final TracHttpClientTransport transport;
-
- public TracHttpClientTransportFactory(XmlRpcClient client) {
- super(client);
-
- transport = new TracHttpClientTransport(client);
- }
-
- public XmlRpcTransport getTransport() {
- return transport;
- }
-
- public void setProxy(Proxy proxy) {
- transport.setProxy(proxy);
- }
-
- public Proxy getProxy() {
- return transport.getProxy();
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/.classpath b/org.eclipse.mylyn.trac.tests/.classpath
deleted file mode 100644
index 751c8f2e5..000000000
--- a/org.eclipse.mylyn.trac.tests/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index a5c3d9bab..000000000
--- a/org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,256 +0,0 @@
-#Fri Feb 10 11:16:20 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 86dbfc675..000000000
--- a/org.eclipse.mylyn.trac.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-#Fri Jun 16 09:36:17 PDT 2006
-eclipse.preferences.version=1
-formatter_profile=_Mylar based on Eclipse [built-in]
-formatter_settings_version=9
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template></templates>
diff --git a/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 9d869a7d4..000000000
--- a/org.eclipse.mylyn.trac.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Trac Tests Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.trac.tests
-Bundle-Version: 0.0.0
-Bundle-Localization: plugin
-Require-Bundle: org.junit,
- org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.mylar.context.core,
- org.eclipse.mylar.tasks.ui,
- org.eclipse.mylar.tasks.core,
- org.eclipse.mylar.core.tests,
- org.eclipse.mylar.trac.ui,
- org.eclipse.mylar.trac.core,
- org.eclipse.search
-Export-Package: org.eclipse.mylar.trac.tests
-Bundle-Activator: org.eclipse.mylar.trac.tests.TracTestPlugin
-Eclipse-LazyStart: true
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientRepositoryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientRepositoryTest.java
deleted file mode 100644
index 017f036bd..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientRepositoryTest.java
+++ /dev/null
@@ -1,72 +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.trac.tests;
-
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.trac.core.TracException;
-import org.eclipse.mylar.internal.trac.core.TracLoginException;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-
-/**
- * Test cases for classes that implement {@link ITracClient}.
- *
- * @author Steffen Pingel
- */
-public class AbstractTracClientRepositoryTest extends AbstractTracClientTest {
-
- public AbstractTracClientRepositoryTest(Version version) {
- super(version);
- }
-
- public void testValidate010() throws Exception {
- validate(Constants.TEST_TRAC_010_URL);
- }
-
- public void testValidate010DigestAuth() throws Exception {
- validate(Constants.TEST_TRAC_010_DIGEST_AUTH_URL);
- }
-
- protected void validate(String url) throws Exception {
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
-
- // standard connect
- connect(url);
- repository.validate();
-
- // invalid url
- connect("http://non.existant/repository");
- try {
- repository.validate();
- fail("Expected TracException");
- } catch (TracException e) {
- }
-
- // invalid password
- connect(url, credentials.username, "wrongpassword");
- try {
- repository.validate();
- fail("Expected TracLoginException");
- } catch (TracLoginException e) {
- }
-
- // invalid username
- connect(url, "wrongusername", credentials.password);
- try {
- repository.validate();
- fail("Expected TracLoginException");
- } catch (TracLoginException e) {
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientSearchTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientSearchTest.java
deleted file mode 100644
index 7c90e140d..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientSearchTest.java
+++ /dev/null
@@ -1,144 +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.trac.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracException;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.trac.tests.support.TestFixture;
-import org.eclipse.mylar.trac.tests.support.XmlRpcServer.TestData;
-import org.eclipse.mylar.trac.tests.support.XmlRpcServer.Ticket;
-
-/**
- * Test cases that validate search results for classes that implement
- * {@link ITracClient}.
- *
- * @author Steffen Pingel
- */
-public abstract class AbstractTracClientSearchTest extends AbstractTracClientTest {
-
- protected List<Ticket> tickets;
-
- private TestData data;
-
- public AbstractTracClientSearchTest(Version version) {
- super(version);
- }
-
- protected void setUp() throws Exception {
- super.setUp();
-
- data = TestFixture.init010();
- tickets = data.tickets;
-
- connect010();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
-
- // TestFixture.cleanupRepository1();
- }
-
- protected void assertTicketEquals(Ticket ticket, TracTicket tracTicket) throws Exception {
- assertTrue(tracTicket.isValid());
-
- Map expectedValues = ticket.getValues();
- Map<String, String> values = tracTicket.getValues();
- for (String key : values.keySet()) {
- assertEquals("Values for key '" + key + "' did not match", expectedValues.get(key), values.get(key));
- }
- }
-
- public void testGetTicket() throws Exception {
- TracTicket ticket = repository.getTicket(tickets.get(0).getId());
- assertTicketEquals(tickets.get(0), ticket);
-
- ticket = repository.getTicket(tickets.get(1).getId());
- assertTicketEquals(tickets.get(1), ticket);
- }
-
- public void testGetTicketInvalidId() throws Exception {
- try {
- repository.getTicket(Integer.MAX_VALUE);
- fail("Expected TracException");
- } catch (TracException e) {
- }
- }
-
- public void testGetTicketUmlaute() throws Exception {
- TracTicket ticket = repository.getTicket(data.htmlEntitiesTicketId);
- assertEquals("test html entities: äöü", ticket.getValue(Key.SUMMARY));
- if (version == Version.XML_RPC) {
- assertEquals("ÄÖÜ\n\nmulti\nline\n\n'''bold'''\n", ticket.getValue(Key.DESCRIPTION));
- } else {
- assertEquals(null, ticket.getValue(Key.DESCRIPTION));
- }
- }
-
- public void testSearchAll() throws Exception {
- TracSearch search = new TracSearch();
- List<TracTicket> result = new ArrayList<TracTicket>();
- repository.search(search, result);
- assertEquals(tickets.size(), result.size());
- }
-
- public void testSearchEmpty() throws Exception {
- TracSearch search = new TracSearch();
- search.addFilter("milestone", "does not exist");
- List<TracTicket> result = new ArrayList<TracTicket>();
- repository.search(search, result);
- assertEquals(0, result.size());
- }
-
- public void testSearchMilestone1() throws Exception {
- TracSearch search = new TracSearch();
- search.addFilter("milestone", "milestone1");
- List<TracTicket> result = new ArrayList<TracTicket>();
- repository.search(search, result);
- assertEquals(1, result.size());
- assertTicketEquals(tickets.get(0), result.get(0));
- }
-
- public void testSearchMilestone2() throws Exception {
- TracSearch search = new TracSearch();
- search.addFilter("milestone", "milestone1");
- search.addFilter("milestone", "milestone2");
- search.setOrderBy("id");
- List<TracTicket> result = new ArrayList<TracTicket>();
- repository.search(search, result);
- assertEquals(3, result.size());
- assertTicketEquals(tickets.get(0), result.get(0));
- assertTicketEquals(tickets.get(1), result.get(1));
- assertTicketEquals(tickets.get(2), result.get(2));
- }
-
- public void testSearchExactMatch() throws Exception {
- TracSearch search = new TracSearch();
- search.addFilter("milestone", "milestone1");
- search.addFilter("summary", "summary1");
- List<TracTicket> result = new ArrayList<TracTicket>();
- repository.search(search, result);
- assertEquals(1, result.size());
- assertTicketEquals(tickets.get(0), result.get(0));
- assertEquals("milestone1", result.get(0).getValue(Key.MILESTONE));
- assertEquals("summary1", result.get(0).getValue(Key.SUMMARY));
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientTest.java
deleted file mode 100644
index 9c3e50a2a..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AbstractTracClientTest.java
+++ /dev/null
@@ -1,70 +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.trac.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracClientFactory;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-
-/**
- * Provides a base implementation for test cases that access trac repositories.
- *
- * @author Steffen Pingel
- */
-public abstract class AbstractTracClientTest extends TestCase {
-
- public String repositoryUrl;
-
- public ITracClient repository;
-
- public String username;
-
- public String password;
-
- public Version version;
-
- public AbstractTracClientTest(Version version) {
- this.version = version;
- }
-
- public ITracClient connect096() throws Exception {
- return connect(Constants.TEST_TRAC_096_URL);
- }
-
- public ITracClient connect010() throws Exception {
- return connect(Constants.TEST_TRAC_010_URL);
- }
-
- public ITracClient connect010DigestAuth() throws Exception {
- return connect(Constants.TEST_TRAC_010_DIGEST_AUTH_URL);
- }
-
- public ITracClient connect(String url) throws Exception {
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
- return connect(url, credentials.username, credentials.password);
- }
-
- public ITracClient connect(String url, String username, String password) throws Exception {
- this.repositoryUrl = url;
- this.username = username;
- this.password = password;
- this.repository = TracClientFactory.createClient(url, version, username, password);
-
- return this.repository;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java
deleted file mode 100644
index d01300bcb..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java
+++ /dev/null
@@ -1,49 +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.trac.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class AllTracTests {
-
- public static Test suite() {
-// UrlConnectionUtil.initCommonsLoggingSettings();
-
- TestSuite suite = new TestSuite("Test for org.eclipse.mylar.trac.tests");
- // $JUnit-BEGIN$
- // suite.addTestSuite(TracXmlRpcTest.class);
- suite.addTestSuite(TracSearchTest.class);
- suite.addTestSuite(TracTicketTest.class);
- suite.addTestSuite(TracXmlRpcClientTest.class);
- suite.addTestSuite(TracXmlRpcClientSearchTest.class);
- suite.addTestSuite(Trac09ClientTest.class);
- suite.addTestSuite(Trac09ClientSearchTest.class);
- suite.addTestSuite(TracClientFactoryTest.class);
- suite.addTestSuite(TracRepositoryConnectorTest.class);
- suite.addTestSuite(TracQueryTest.class);
- suite.addTestSuite(TracRepositoryQueryTest.class);
- suite.addTestSuite(TracClientManagerTest.class);
- suite.addTestSuite(TracAttachmentHandlerTest.class);
- suite.addTestSuite(RepositorySearchQueryTest.class);
- suite.addTestSuite(TracOfflineTaskHandlerTest.class);
- suite.addTestSuite(TracTaskTest.class);
- suite.addTestSuite(TracQueryHitTest.class);
- // $JUnit-END$
- return suite;
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Constants.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Constants.java
deleted file mode 100644
index 9b3d23f02..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Constants.java
+++ /dev/null
@@ -1,29 +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.trac.tests;
-
-/**
- * @author Steffen Pingel
- */
-public class Constants {
-
- public static final String TEST_TRAC_096_URL = "http://mylar.eclipse.org/trac096";
-
- public static final String TEST_TRAC_010_URL = "http://mylar.eclipse.org/trac010";
-
- public static final String TEST_TRAC_010_SSL_URL = "https://mylar.eclipse.org/trac010";
-
- public static final String TEST_TRAC_010_DIGEST_AUTH_URL = "http://mylar.eclipse.org/trac010digest";
-
- public static final String TEST_TRAC_INVALID_URL = "http://mylar.eclipse.org/doesnotexist";
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java
deleted file mode 100644
index 7feac3b10..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java
+++ /dev/null
@@ -1,91 +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.trac.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.tasks.ui.search.SearchHitCollector;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.mylar.trac.tests.support.TestFixture;
-import org.eclipse.mylar.trac.tests.support.XmlRpcServer.TestData;
-
-/**
- * @author Steffen Pingel
- */
-public class RepositorySearchQueryTest extends TestCase {
-
- private TestData data;
-
- private TaskRepositoryManager manager;
-
-// private TracRepositoryConnector connector;
-
- private TaskRepository repository;
-
- public RepositorySearchQueryTest() {
- }
-
- protected void setUp() throws Exception {
- super.setUp();
-
- data = TestFixture.init010();
- manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
-// connector = (TracRepositoryConnector) manager.getRepositoryConnector(TracUiPlugin.REPOSITORY_KIND);
- TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
- }
-
- protected void init(String url, Version version) {
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
-
- repository = new TaskRepository(TracCorePlugin.REPOSITORY_KIND, url);
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
- repository.setTimeZoneId(ITracClient.TIME_ZONE);
- repository.setCharacterEncoding(ITracClient.CHARSET);
- repository.setVersion(version.name());
-
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- public void testSearch() {
- init(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
-
- TracSearch search = new TracSearch();
- String queryUrl = repository.getUrl() + ITracClient.QUERY_URL + search.toUrl();
- TracRepositoryQuery query = new TracRepositoryQuery(repository.getUrl(), queryUrl, "description", null);
-
- SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskListManager()
- .getTaskList(), repository, query, null) {
- @Override
- public void addMatch(AbstractQueryHit hit) {
- super.addMatch(hit);
- assertEquals(Constants.TEST_TRAC_096_URL, hit.getRepositoryUrl());
- }
- };
- collector.run(new NullProgressMonitor());
- assertEquals(data.tickets.size(), collector.getHits().size());
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientSearchTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientSearchTest.java
deleted file mode 100644
index 27c6b809f..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientSearchTest.java
+++ /dev/null
@@ -1,25 +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.trac.tests;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-
-/**
- * @author Steffen Pingel
- */
-public class Trac09ClientSearchTest extends AbstractTracClientSearchTest {
-
- public Trac09ClientSearchTest() {
- super(Version.TRAC_0_9);
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientTest.java
deleted file mode 100644
index 13e13ac29..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/Trac09ClientTest.java
+++ /dev/null
@@ -1,67 +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.trac.tests;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.trac.core.TracException;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-
-/**
- * @author Steffen Pingel
- */
-public class Trac09ClientTest extends AbstractTracClientRepositoryTest {
-
- public Trac09ClientTest() {
- super(Version.TRAC_0_9);
- }
-
- public void testValidate096() throws Exception {
- validate(Constants.TEST_TRAC_096_URL);
- }
-
- public void testValidateAnyPage() throws Exception {
- connect("http://mylar.eclipse.org/");
- try {
- repository.validate();
- fail("Expected TracException");
- } catch (TracException e) {
- }
- }
-
- public void testValidateAnonymousLogin() throws Exception {
- connect(Constants.TEST_TRAC_010_URL, "", "");
- repository.validate();
-
- connect(Constants.TEST_TRAC_096_URL, "", "");
- repository.validate();
- }
-
- public void testUpdateAttributes() throws Exception {
- connect010();
- assertNull(repository.getMilestones());
- repository.updateAttributes(new NullProgressMonitor(), true);
- TracVersion[] versions = repository.getVersions();
- assertEquals(2, versions.length);
- Arrays.sort(versions, new Comparator<TracVersion>() {
- public int compare(TracVersion o1, TracVersion o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
- assertEquals("1.0", versions[0].getName());
- assertEquals("2.0", versions[1].getName());
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java
deleted file mode 100644
index c2a32a74e..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java
+++ /dev/null
@@ -1,153 +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.trac.tests;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Proxy;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.IAttachmentHandler;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.mylar.trac.tests.support.TestFixture;
-import org.eclipse.mylar.trac.tests.support.XmlRpcServer.TestData;
-
-/**
- * @author Steffen Pingel
- */
-public class TracAttachmentHandlerTest extends TestCase {
-
- private TaskRepository repository;
-
- private TaskRepositoryManager manager;
-
- private TracRepositoryConnector connector;
-
- private IAttachmentHandler attachmentHandler;
-
- private Proxy proxySettings;
-
- private TestData data;
-
- protected void setUp() throws Exception {
- super.setUp();
-
- manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- proxySettings = TasksUiPlugin.getDefault().getProxySettings();
-
- data = TestFixture.init010();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- protected void init(String url, Version version) {
- String kind = TracCorePlugin.REPOSITORY_KIND;
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
-
- repository = new TaskRepository(kind, url);
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
- repository.setTimeZoneId(ITracClient.TIME_ZONE);
- repository.setCharacterEncoding(ITracClient.CHARSET);
- repository.setVersion(version.name());
-
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- AbstractRepositoryConnector abstractConnector = manager.getRepositoryConnector(kind);
- connector = (TracRepositoryConnector) abstractConnector;
- TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
-
- attachmentHandler = connector.getAttachmentHandler();
- }
-
- public void testDownloadAttachmentXmlRpc() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- assertTrue(task.getTaskData().getAttachments().size() > 0);
- File file = File.createTempFile("attachment", null);
- file.deleteOnExit();
- attachmentHandler.downloadAttachment(repository, task, task.getTaskData().getAttachments().get(0), file, proxySettings);
-
- byte[] result = new byte[6];
- InputStream in = new FileInputStream(file);
- try {
- in.read(result);
- assertEquals("Mylar\n", new String(result));
- assertEquals(-1, in.read());
- } finally {
- in.close();
- }
- }
-
- public void testUploadAttachmentXmlRpc() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- File file = File.createTempFile("attachment", null);
- file.deleteOnExit();
- OutputStream out = new FileOutputStream(file);
- try {
- out.write("Mylar".getBytes());
- } finally {
- out.close();
- }
- attachmentHandler.uploadAttachment(repository, task, "comment", "description", file, "", false, proxySettings);
-
- ITracClient client = connector.getClientManager().getRepository(repository);
- byte[] result = client.getAttachmentData(data.attachmentTicketId, file.getName());
- assertEquals("Mylar", new String(result));
- }
-
- public void testCanUploadAttachmentXmlRpc() throws CoreException {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- assertTrue(attachmentHandler.canUploadAttachment(repository, task));
- }
-
- public void testCanUploadAttachmentWeb() throws CoreException {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- assertFalse(attachmentHandler.canUploadAttachment(repository, task));
- }
-
- public void testCanDownloadAttachmentXmlRpc() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- assertTrue(attachmentHandler.canDownloadAttachment(repository, task));
- }
-
- public void testCanDownloadAttachmentWeb() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- assertFalse(attachmentHandler.canDownloadAttachment(repository, task));
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracClientFactoryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracClientFactoryTest.java
deleted file mode 100644
index 91dc9105f..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracClientFactoryTest.java
+++ /dev/null
@@ -1,90 +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.trac.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.Trac09Client;
-import org.eclipse.mylar.internal.trac.core.TracClientFactory;
-import org.eclipse.mylar.internal.trac.core.TracException;
-import org.eclipse.mylar.internal.trac.core.TracLoginException;
-import org.eclipse.mylar.internal.trac.core.TracXmlRpcClient;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-
-/**
- * @author Steffen Pingel
- */
-public class TracClientFactoryTest extends TestCase {
-
- public void testCreateClient() throws Exception {
- ITracClient client = TracClientFactory.createClient(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9, "user",
- "password");
- assertTrue(client instanceof Trac09Client);
- client = TracClientFactory.createClient(Constants.TEST_TRAC_010_SSL_URL, Version.TRAC_0_9, "user", "password");
- assertTrue(client instanceof Trac09Client);
-
- client = TracClientFactory.createClient(Constants.TEST_TRAC_010_URL, Version.XML_RPC, "user", "password");
- assertTrue(client instanceof TracXmlRpcClient);
- client = TracClientFactory.createClient(Constants.TEST_TRAC_010_SSL_URL, Version.XML_RPC, "user", "password");
- assertTrue(client instanceof TracXmlRpcClient);
- }
-
- public void testCreateClientNull() throws Exception {
- try {
- TracClientFactory.createClient(Constants.TEST_TRAC_010_URL, null, "user", "password");
- fail("Expected Exception");
- } catch (Exception e) {
- }
- }
-
- public void testProbeClient096() throws Exception {
- probeClient(Constants.TEST_TRAC_096_URL, false);
- }
-
- public void testProbeClient010() throws Exception {
- probeClient(Constants.TEST_TRAC_010_URL, true);
- }
-
- public void testProbeClient010DigestAuth() throws Exception {
- probeClient(Constants.TEST_TRAC_010_DIGEST_AUTH_URL, true);
- }
-
- protected void probeClient(String url, boolean xmlrpcInstalled) throws Exception {
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
- Version version = TracClientFactory.probeClient(url, credentials.username, credentials.password);
- if (xmlrpcInstalled) {
- assertEquals(Version.XML_RPC, version);
- } else {
- assertEquals(Version.TRAC_0_9, version);
- }
-
- version = TracClientFactory.probeClient(url, "", "");
- assertEquals(Version.TRAC_0_9, version);
-
- try {
- version = TracClientFactory.probeClient(url, "invaliduser", "password");
- fail("Expected TracLoginException, got " + version);
- } catch (TracLoginException e) {
- }
-
- try {
- version = TracClientFactory.probeClient(url + "/nonexistant", "", "");
- fail("Expected TracException, got " + version);
- } catch (TracException e) {
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracOfflineTaskHandlerTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracOfflineTaskHandlerTest.java
deleted file mode 100644
index 4fc0d5372..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracOfflineTaskHandlerTest.java
+++ /dev/null
@@ -1,136 +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.trac.tests;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.IOfflineTaskHandler;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.mylar.trac.tests.support.TestFixture;
-import org.eclipse.mylar.trac.tests.support.XmlRpcServer.TestData;
-
-/**
- * @author Steffen Pingel
- */
-public class TracOfflineTaskHandlerTest extends TestCase {
-
- private TracRepositoryConnector connector;
-
- private IOfflineTaskHandler offlineHandler;
-
- private TaskRepository repository;
-
- private TaskRepositoryManager manager;
-
- private TestData data;
-
- public TracOfflineTaskHandlerTest() {
- }
-
- protected void setUp() throws Exception {
- super.setUp();
-
- data = TestFixture.init010();
-
- manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- connector = (TracRepositoryConnector) manager.getRepositoryConnector(TracCorePlugin.REPOSITORY_KIND);
- TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
-
- offlineHandler = connector.getOfflineTaskHandler();
- }
-
- protected void init(String url, Version version) {
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
-
- repository = new TaskRepository(TracCorePlugin.REPOSITORY_KIND, url);
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
- repository.setTimeZoneId(ITracClient.TIME_ZONE);
- repository.setCharacterEncoding(ITracClient.CHARSET);
- repository.setVersion(version.name());
-
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
- }
-
- public void testGetChangedSinceLastSyncWeb096() throws Exception {
- init(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.offlineHandlerTicketId + "", null);
-
- Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
- tasks.add(task);
-
- assertEquals(null, repository.getSyncTimeStamp());
- Set<AbstractRepositoryTask> result = offlineHandler.getChangedSinceLastSync(repository, tasks, null);
- assertEquals(tasks, result);
- assertEquals(null, repository.getSyncTimeStamp());
-
- int time = (int)(System.currentTimeMillis() / 1000) + 1;
- repository.setSyncTimeStamp(time + "");
- assertEquals(tasks, result);
- }
-
- public void testGetChangedSinceLastSyncXmlRpc010() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.offlineHandlerTicketId + "", null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- int lastModified = Integer.parseInt(task.getTaskData().getLastModified());
-
- Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
- tasks.add(task);
-
- assertEquals(null, repository.getSyncTimeStamp());
- Set<AbstractRepositoryTask> result = offlineHandler.getChangedSinceLastSync(repository, tasks, null);
- assertEquals(tasks, result);
-
- // always returns the ticket because time comparison mode is >=
- repository.setSyncTimeStamp(lastModified + "");
- result = offlineHandler.getChangedSinceLastSync(repository, tasks, null);
- assertEquals(tasks, result);
-
- repository.setSyncTimeStamp((lastModified + 1) + "");
- result = offlineHandler.getChangedSinceLastSync(repository, tasks, null);
- assertTrue(result.isEmpty());
-
- // change ticket making sure it gets a new change time
- Thread.sleep(1000);
- ITracClient client = connector.getClientManager().getRepository(repository);
- TracTicket ticket = client.getTicket(data.offlineHandlerTicketId);
- if (ticket.getValue(Key.DESCRIPTION).equals(lastModified + "")) {
- ticket.putBuiltinValue(Key.DESCRIPTION, lastModified + "x");
- } else {
- ticket.putBuiltinValue(Key.DESCRIPTION, lastModified + "");
- }
- client.updateTicket(ticket, "comment");
-
- repository.setSyncTimeStamp((lastModified + 1) + "");
- result = offlineHandler.getChangedSinceLastSync(repository, tasks, null);
- assertEquals(tasks, result);
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryHitTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryHitTest.java
deleted file mode 100644
index 2ee96735d..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryHitTest.java
+++ /dev/null
@@ -1,38 +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.trac.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.trac.core.TracQueryHit;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Steffen Pingel
- */
-public class TracQueryHitTest extends TestCase {
-
- public void testAttributes() {
- TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
- TracQueryHit hit = new TracQueryHit(taskList, "url", "description", "123");
- hit.setPriority("P1");
- hit.setCompleted(true);
-
- TracTask task = (TracTask) hit.getOrCreateCorrespondingTask();
- assertEquals("url-123", task.getHandleIdentifier());
- assertEquals("P1", task.getPriority());
- assertEquals(true, task.isCompleted());
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java
deleted file mode 100644
index a17f63605..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java
+++ /dev/null
@@ -1,37 +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.trac.tests;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-
-/**
- * @author Steffen Pingel
- */
-public class TracQueryTest extends TestCase {
-
- private TracRepositoryQuery createQuery(String parameter) {
- String url = "http://oss.steffenpingel.de/mylar-trac-connector";
- return new TracRepositoryQuery(url, url + ITracClient.QUERY_URL + parameter, "description", null);
- }
-
- public void testGetTracSearch() {
- String queryParameter = "&order=priority&status=new&status=assigned&status=reopened&milestone=M1&owner=%7E%C3%A4%C3%B6%C3%BC";
- TracRepositoryQuery query = createQuery(queryParameter);
- TracSearch search = query.getTracSearch();
- assertEquals(queryParameter, search.toUrl());
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java
deleted file mode 100644
index 78b830d04..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java
+++ /dev/null
@@ -1,311 +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.trac.tests;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.mylar.context.core.ContextCorePlugin;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.tasks.ui.wizards.EditRepositoryWizard;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.InvalidTicketException;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.internal.trac.ui.wizard.TracRepositorySettingsPage;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.QueryHitCollector;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.mylar.trac.tests.support.TestFixture;
-import org.eclipse.mylar.trac.tests.support.XmlRpcServer.TestData;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * @author Steffen Pingel
- */
-public class TracRepositoryConnectorTest extends TestCase {
-
- private TestData data;
-
- private TaskRepository repository;
-
- private TaskRepositoryManager manager;
-
- private TracRepositoryConnector connector;
-
- private TaskList tasklist;
-
- protected void setUp() throws Exception {
- super.setUp();
-
- manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- tasklist = TasksUiPlugin.getTaskListManager().getTaskList();
-
- data = TestFixture.init010();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
-
- // TestFixture.cleanupRepository1();
- }
-
- protected void init(String url, Version version) {
- String kind = TracCorePlugin.REPOSITORY_KIND;
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
-
- repository = new TaskRepository(kind, url);
- repository.setAuthenticationCredentials(credentials.username, credentials.password);
- repository.setTimeZoneId(ITracClient.TIME_ZONE);
- repository.setCharacterEncoding(ITracClient.CHARSET);
- repository.setVersion(version.name());
-
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- AbstractRepositoryConnector abstractConnector = manager.getRepositoryConnector(kind);
- assertEquals(abstractConnector.getRepositoryType(), kind);
-
- connector = (TracRepositoryConnector) abstractConnector;
- TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
- }
-
- public void testGetRepositoryUrlFromTaskUrl() {
- TracRepositoryConnector connector = new TracRepositoryConnector();
- assertEquals("http://host/repo", connector.getRepositoryUrlFromTaskUrl("http://host/repo/ticket/1"));
- assertEquals("http://host", connector.getRepositoryUrlFromTaskUrl("http://host/ticket/2342"));
- assertEquals(null, connector.getRepositoryUrlFromTaskUrl("http://host/repo/2342"));
- assertEquals(null, connector.getRepositoryUrlFromTaskUrl("http://host/repo/ticket-2342"));
- }
-
- public void testCreateTaskFromExistingKeyXmlRpc010() throws CoreException {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- createTaskFromExistingKey();
- }
-
- public void testCreateTaskFromExistingKeyTracWeb010() throws CoreException {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
- createTaskFromExistingKey();
- }
-
- public void testCreateTaskFromExistingKeyTracWeb096() throws CoreException {
- init(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
- createTaskFromExistingKey();
- }
-
- protected void createTaskFromExistingKey() throws CoreException {
- String id = data.tickets.get(0).getId() + "";
- ITask task = connector.createTaskFromExistingKey(repository, id, null);
- assertNotNull(task);
- assertEquals(TracTask.class, task.getClass());
- assertTrue(task.getDescription().contains("summary1"));
- assertEquals(repository.getUrl() + ITracClient.TICKET_URL + id, task.getUrl());
-
- try {
- task = connector.createTaskFromExistingKey(repository, "does not exist", null);
- fail("Expected CoreException");
- } catch (CoreException e) {
- }
-
- try {
- task = connector.createTaskFromExistingKey(repository, Integer.MAX_VALUE + "", null);
- fail("Expected CoreException");
- } catch (CoreException e) {
- }
- }
-
- public void testClientManagerChangeTaskRepositorySettings() throws MalformedURLException {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
- ITracClient client = connector.getClientManager().getRepository(repository);
- assertEquals(Version.TRAC_0_9, client.getVersion());
-
- EditRepositoryWizard wizard = new EditRepositoryWizard(repository);
- Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
-
- ((TracRepositorySettingsPage) wizard.getSettingsPage()).setTracVersion(Version.XML_RPC);
- assertTrue(wizard.performFinish());
-
- client = connector.getClientManager().getRepository(repository);
- assertEquals(Version.XML_RPC, client.getVersion());
- }
-
- public void testPerformQueryXmlRpc010() {
- performQuery(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- }
-
- public void testPerformQueryWeb010() {
- performQuery(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
- }
-
- public void testPerformQueryWeb096() {
- performQuery(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
- }
-
- protected void performQuery(String url, Version version) {
- init(url, version);
-
- TracSearch search = new TracSearch();
- search.addFilter("milestone", "milestone1");
- search.addFilter("milestone", "milestone2");
- search.setOrderBy("id");
-
- String queryUrl = url + ITracClient.QUERY_URL + search.toUrl();
- TracRepositoryQuery query = new TracRepositoryQuery(url, queryUrl, "description", tasklist);
-
- //MultiStatus queryStatus = new MultiStatus(TracUiPlugin.PLUGIN_ID, IStatus.OK, "Query result", null);
- final List<AbstractQueryHit> result = new ArrayList<AbstractQueryHit>();
- QueryHitCollector hitCollector = new QueryHitCollector(TasksUiPlugin.getTaskListManager().getTaskList()) {
-
- @Override
- public void addMatch(AbstractQueryHit hit) {
- result.add(hit);
- }};
- IStatus queryStatus = connector.performQuery(query, repository, TasksUiPlugin.getDefault().getProxySettings(), new NullProgressMonitor(), hitCollector);
-
- assertTrue(queryStatus.isOK());
- assertEquals(3, result.size());
- assertEquals(data.tickets.get(0).getId() + "", result.get(0).getId());
- assertEquals(data.tickets.get(1).getId() + "", result.get(1).getId());
- assertEquals(data.tickets.get(2).getId() + "", result.get(2).getId());
- }
-
- public void testUpdateTaskDetails() throws InvalidTicketException {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
-
- TracTicket ticket = new TracTicket(123);
- ticket.putBuiltinValue(Key.DESCRIPTION, "mydescription");
- ticket.putBuiltinValue(Key.PRIORITY, "mypriority");
- ticket.putBuiltinValue(Key.SUMMARY, "mysummary");
- ticket.putBuiltinValue(Key.TYPE, "mytype");
-
- TracTask task = new TracTask(AbstractRepositoryTask.getHandle(Constants.TEST_TRAC_010_URL, 123), "desc", true);
- assertEquals(Constants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "123", task.getUrl());
- assertEquals("desc", task.getDescription());
-
- connector.updateTaskDetails(task, ticket, false);
- assertEquals(Constants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "123", task.getUrl());
- assertEquals("123: mysummary", task.getDescription());
- assertEquals("P3", task.getPriority());
- assertEquals("mytype", task.getTaskType());
- }
-
- public void testUpdateTaskDetailsSummaryOnly() throws InvalidTicketException {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
-
- TracTicket ticket = new TracTicket(456);
- ticket.putBuiltinValue(Key.SUMMARY, "mysummary");
-
- TracTask task = new TracTask(AbstractRepositoryTask.getHandle(Constants.TEST_TRAC_010_URL, 456), "desc", true);
-
- connector.updateTaskDetails(task, ticket, false);
- assertEquals(Constants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "456", task.getUrl());
- assertEquals("456: mysummary", task.getDescription());
- assertEquals("P3", task.getPriority());
- assertEquals(null, task.getTaskType());
- }
-
- public void testUpdateAttributesWeb096() throws Exception {
- init(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
- updateAttributes();
- }
-
- public void testUpdateAttributesWeb010() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.TRAC_0_9);
- updateAttributes();
- }
-
- public void testUpdateAttributesXmlRpc010() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- updateAttributes();
- }
-
- protected void updateAttributes() throws Exception {
- connector.updateAttributes(repository, null, new NullProgressMonitor());
-
- ITracClient server = connector.getClientManager().getRepository(repository);
- TracVersion[] versions = server.getVersions();
- assertEquals(2, versions.length);
- Arrays.sort(versions, new Comparator<TracVersion>() {
- public int compare(TracVersion o1, TracVersion o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
- assertEquals("1.0", versions[0].getName());
- assertEquals("2.0", versions[1].getName());
- }
-
- public void testContext010() throws Exception {
- init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
-
- //int size = task.getTaskData().getAttachments().size();
-
- File sourceContextFile = ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
- sourceContextFile.createNewFile();
- sourceContextFile.deleteOnExit();
-
- assertTrue(connector.attachContext(repository, task, "", TasksUiPlugin.getDefault().getProxySettings()));
-
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- // TODO attachment may have been overridden therefore size may not have changed
- //assertEquals(size + 1, task.getTaskData().getAttachments().size());
-
- //RepositoryAttachment attachment = task.getTaskData().getAttachments().get(size);
- //assertTrue(connector.retrieveContext(repository, task, attachment, TasksUiPlugin.getDefault().getProxySettings(), TasksUiPlugin.getDefault().getDataDirectory()));
- }
-
- public void testContext096() throws Exception {
- init(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
- TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.attachmentTicketId + "", null);
-
- File sourceContextFile = ContextCorePlugin.getContextManager().getFileForContext(task.getHandleIdentifier());
- sourceContextFile.createNewFile();
- sourceContextFile.deleteOnExit();
-
- try {
- connector.attachContext(repository, task, "", TasksUiPlugin.getDefault().getProxySettings());
- fail("expected CoreException"); // operation should not be supported
- } catch (CoreException e) {
- }
- }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java
deleted file mode 100644
index c4619561f..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java
+++ /dev/null
@@ -1,74 +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.trac.tests;
-
-import java.util.Arrays;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-
-/**
- * @author Steffen Pingel
- */
-public class TracRepositoryQueryTest extends TestCase {
-
- public void testChangeRepositoryUrl() {
- TaskRepositoryManager manager = TasksUiPlugin.getRepositoryManager();
- manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- TaskRepository repository = new TaskRepository(TracCorePlugin.REPOSITORY_KIND, Constants.TEST_TRAC_096_URL);
- manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
-
- TracSearch search = new TracSearch();
- String queryUrl = repository.getUrl() + ITracClient.QUERY_URL + search.toUrl();
- TracRepositoryQuery query = new TracRepositoryQuery(repository.getUrl(), queryUrl, "description", null);
- TasksUiPlugin.getTaskListManager().getTaskList().addQuery(query);
-
- String oldUrl = repository.getUrl();
- String newUrl = Constants.TEST_TRAC_010_URL;
- TasksUiPlugin.getTaskListManager().refactorRepositoryUrl(oldUrl, newUrl);
- repository.setUrl(newUrl);
-
- assertEquals(newUrl, query.getRepositoryUrl());
- assertEquals(newUrl + ITracClient.QUERY_URL + search.toUrl(), query.getUrl());
- }
-
- public void testGetFilterList() {
- String repositoryUrl = "https://foo.bar/repo";
- String parameterUrl = "&status=new&status=assigned&status=reopened&milestone=0.1";
- String queryUrl = repositoryUrl + ITracClient.QUERY_URL + parameterUrl;
- TracRepositoryQuery query = new TracRepositoryQuery(repositoryUrl, queryUrl, "description", null);
-
- TracSearch filterList = query.getTracSearch();
-
- assertEquals(parameterUrl, filterList.toUrl());
- assertEquals("&status=new|assigned|reopened&milestone=0.1", filterList.toQuery());
-
- List<TracSearchFilter> list = filterList.getFilters();
- TracSearchFilter filter = list.get(0);
- assertEquals("status", filter.getFieldName());
- assertEquals(Arrays.asList("new", "assigned", "reopened"), filter.getValues());
- filter = list.get(1);
- assertEquals("milestone", filter.getFieldName());
- assertEquals(Arrays.asList("0.1"), filter.getValues());
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTestPlugin.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTestPlugin.java
deleted file mode 100644
index 35aa3f5f7..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTestPlugin.java
+++ /dev/null
@@ -1,52 +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.trac.tests;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- *
- * @author Steffen Pingel
- */
-public class TracTestPlugin extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.eclipse.mylar.trac.tests";
-
- // The shared instance
- private static TracTestPlugin plugin;
-
- public TracTestPlugin() {
- plugin = this;
- }
-
- public void start(BundleContext context) throws Exception {
- super.start(context);
- }
-
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static TracTestPlugin getDefault() {
- return plugin;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTicketTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTicketTest.java
deleted file mode 100644
index a4be81343..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTicketTest.java
+++ /dev/null
@@ -1,69 +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.trac.tests;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.internal.trac.core.InvalidTicketException;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-
-/**
- * @author Steffen Pingel
- */
-public class TracTicketTest extends TestCase {
-
- public void testValid() {
- TracTicket ticket = new TracTicket();
- assertFalse(ticket.isValid());
-
- ticket.setId(1);
- assertTrue(ticket.isValid());
- }
-
- public void testPutTracValue() throws InvalidTicketException {
- TracTicket ticket = new TracTicket(1);
- ticket.putValue("summary", "a");
- assertEquals("a", ticket.getValue(Key.SUMMARY));
- assertEquals(null, ticket.getCustomValue("summary"));
- assertEquals(null, ticket.getCustomValue("a"));
-
- ticket.putValue("summary", "b");
- ticket.putValue("custom", "c");
- assertEquals("b", ticket.getValue(Key.SUMMARY));
- assertEquals(null, ticket.getCustomValue("summary"));
- assertEquals("c", ticket.getCustomValue("custom"));
- }
-
- public void testPutTracValueId() throws InvalidTicketException {
- TracTicket ticket = new TracTicket();
- assertFalse(ticket.putValue("id", "1"));
- }
-
- public void testSetCreated() throws InvalidTicketException {
- TracTicket ticket = new TracTicket(1);
- ticket.setCreated(0);
- assertEquals(TimeZone.getTimeZone("GMT").getOffset(0) * 1000, ticket.getCreated().getTime());
-
- Date date = new Date();
- Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
- utc.setTime(date);
- ticket.setCreated((int) (utc.getTimeInMillis() / 1000));
-
- assertEquals(date.getTime() / 1000, ticket.getCreated().getTime() / 1000);
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientSearchTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientSearchTest.java
deleted file mode 100644
index a7d1ac9c7..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientSearchTest.java
+++ /dev/null
@@ -1,46 +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.trac.tests;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-
-/**
- * @author Steffen Pingel
- */
-public class TracXmlRpcClientSearchTest extends AbstractTracClientSearchTest {
-
- public TracXmlRpcClientSearchTest() {
- super(Version.XML_RPC);
- }
-
- public void testSearchValidateTicket() throws Exception {
- TracSearch search = new TracSearch();
- search.addFilter("summary", "summary1");
- List<TracTicket> result = new ArrayList<TracTicket>();
- repository.search(search, result);
- assertEquals(1, result.size());
- assertTicketEquals(tickets.get(0), result.get(0));
- assertEquals("component1", result.get(0).getValue(Key.COMPONENT));
- assertEquals("description1", result.get(0).getValue(Key.DESCRIPTION));
- assertEquals("milestone1", result.get(0).getValue(Key.MILESTONE));
- assertEquals("anonymous", result.get(0).getValue(Key.REPORTER));
- assertEquals("summary1", result.get(0).getValue(Key.SUMMARY));
- // assertEquals("", result.get(0).getValue(Key.VERSION));
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientTest.java
deleted file mode 100644
index 475863559..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcClientTest.java
+++ /dev/null
@@ -1,71 +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.trac.tests;
-
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.mylar.internal.trac.core.TracLoginException;
-import org.eclipse.mylar.internal.trac.core.TracRemoteException;
-import org.eclipse.mylar.internal.trac.core.TracXmlRpcClient;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.core.model.TracVersion;
-
-/**
- * @author Steffen Pingel
- */
-public class TracXmlRpcClientTest extends AbstractTracClientRepositoryTest {
-
- public TracXmlRpcClientTest() {
- super(Version.XML_RPC);
- }
-
- public void testValidateFailNoAuth() throws Exception {
- connect(Constants.TEST_TRAC_010_URL, "", "");
- try {
- repository.validate();
- fail("Expected TracLoginException");
- } catch (TracLoginException e) {
- }
- }
-
- public void testMulticallExceptions() throws Exception {
- connect010();
- try {
- ((TracXmlRpcClient) repository).getTickets(new int[] { 1, Integer.MAX_VALUE });
- fail("Expected TracRemoteException");
- } catch (TracRemoteException e) {
- }
- }
-
- public void testUpdateAttributes() throws Exception {
- connect010();
- assertNull(repository.getMilestones());
- repository.updateAttributes(new NullProgressMonitor(), true);
- TracVersion[] versions = repository.getVersions();
- assertEquals(2, versions.length);
- Arrays.sort(versions, new Comparator<TracVersion>() {
- public int compare(TracVersion o1, TracVersion o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
- assertEquals("1.0", versions[0].getName());
- assertEquals("", versions[0].getDescription());
- assertEquals(new Date(0), versions[0].getTime());
- assertEquals("2.0", versions[1].getName());
- assertEquals("", versions[1].getDescription());
- assertEquals(new Date(0), versions[1].getTime());
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcTest.java
deleted file mode 100644
index 1b4001a83..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracXmlRpcTest.java
+++ /dev/null
@@ -1,501 +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.trac.tests;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import junit.framework.TestCase;
-
-import org.apache.xmlrpc.XmlRpcException;
-import org.apache.xmlrpc.client.XmlRpcClient;
-import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.internal.trac.core.util.TracHttpClientTransportFactory;
-
-/**
- * Test cases for <a href="http://trac-hacks.org/wiki/XmlRpcPlugin">Trac XML-RPC
- * Plugin</a> API. Revision 1188 or higher is required.
- *
- * <p>
- * This class does not depend on any Mylar (connector) classes except for
- * TracHttpClientTransportFactory which is needed for initialization of
- * HttpClient.
- *
- * @author Steffen Pingel
- */
-public class TracXmlRpcTest extends TestCase {
-
- public static final String XMLRPC_URL = "/login/xmlrpc";
-
- private XmlRpcClient xmlrpc;
-
- private String username;
-
- // private String password;
-
- private Random random;
-
- private ArrayList<Integer> tickets;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- random = new Random();
-
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.ADMIN);
- createConnection(new URL(Constants.TEST_TRAC_010_URL + XMLRPC_URL), credentials.username, credentials.password);
-
- tickets = new ArrayList<Integer>();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
-
- for (int id : tickets) {
- call("ticket.delete", id);
- }
- }
-
- private void createConnection(URL url, String username, String password) throws Exception {
- XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
- config.setEncoding("UTF-8");
- config.setBasicUserName(username);
- config.setBasicPassword(password);
- config.setServerURL(url);
-
- xmlrpc = new XmlRpcClient();
- xmlrpc.setConfig(config);
-
- TracHttpClientTransportFactory factory = new TracHttpClientTransportFactory(xmlrpc);
- xmlrpc.setTransportFactory(factory);
-
- this.username = username;
- // this.password = password;
- }
-
- private int createTicket(String summary, String description, Map attributes) throws XmlRpcException, IOException {
- int id = (Integer) call("ticket.create", summary, description, attributes);
- tickets.add(id);
- return id;
- }
-
- private Object call(String method, Object... parameters) throws XmlRpcException, IOException {
- Object result = xmlrpc.execute(method, parameters);
- if (result instanceof XmlRpcException) {
- throw (XmlRpcException) result;
- }
- return result;
- }
-
- public Map<String, Object> createMultiCall(String methodName, Object... parameters) throws XmlRpcException,
- IOException {
- Map<String, Object> table = new Hashtable<String, Object>();
- table.put("methodName", methodName);
- table.put("params", parameters);
- return table;
- }
-
- private void internalTestCrud(String module) throws XmlRpcException, IOException {
- try {
- call(module + ".delete", "foo");
- } catch (XmlRpcException e) {
- }
-
- call(module + ".create", "foo", "bar");
- try {
- assertHasValue((Object[]) call(module + ".getAll"), "foo");
- assertEquals("bar", (String) (call(module + ".get", "foo")));
-
- call(module + ".update", "foo", "baz");
- assertEquals("baz", (String) (call(module + ".get", "foo")));
- } finally {
- call(module + ".delete", "foo");
- }
- }
-
- private Object createValue(Object fieldName, Object clazz) {
- if (clazz == String.class) {
- return fieldName.toString() + random.nextInt();
- } else if (clazz == Date.class) {
- return new Date();
- } else if (clazz == Boolean.class) {
- return random.nextBoolean();
- } else if (clazz == Double.class) {
- return random.nextDouble();
- } else if (clazz == Integer.class) {
- return random.nextInt();
- }
-
- throw new RuntimeException("Invalid test data: " + fieldName + ", " + clazz);
- }
-
- private void internalTestComponent(String module, Object... fields) throws XmlRpcException, IOException {
- try {
- call(module + ".delete", "foo");
- } catch (XmlRpcException e) {
- }
-
- Map<String, Object> attributes = new Hashtable<String, Object>();
- for (int i = 0; i < fields.length; i += 2) {
- attributes.put((String) fields[i], createValue(fields[i], fields[i + 1]));
- }
-
- call(module + ".create", "foo", attributes);
-
- try {
- assertHasValue((Object[]) call(module + ".getAll"), "foo");
- Map values = (Map) call(module + ".get", "foo");
- for (String attribute : attributes.keySet()) {
- assertEquals(attributes.get(attribute), values.get(attribute));
- }
-
- for (int i = 0; i < fields.length; i += 2) {
- attributes.put((String) fields[i], createValue(fields[i], fields[i + 1]));
- }
-
- call(module + ".update", "foo", attributes);
- values = (Map) call(module + ".get", "foo");
- for (String attribute : attributes.keySet()) {
- assertEquals(attributes.get(attribute), values.get(attribute));
- }
- } finally {
- call(module + ".delete", "foo");
- }
- }
-
- public void testMilestoneDate() throws XmlRpcException, IOException {
- try {
- call("ticket.milestone.delete", "foo");
- } catch (XmlRpcException e) {
- }
-
- int due = (int) (System.currentTimeMillis() / 1000) + 1000;
- int completed = (int) (System.currentTimeMillis() / 1000);
-
- Map<String, Object> attributes = new Hashtable<String, Object>();
- attributes.put("description", "description");
- attributes.put("due", due);
- attributes.put("completed", completed);
-
- call("ticket.milestone.create", "foo", attributes);
-
- Map values = (Map) call("ticket.milestone.get", "foo");
- assertEquals(new Integer(due), (Integer) values.get("due"));
- assertEquals(new Integer(completed), (Integer) values.get("completed"));
-
- call("ticket.milestone.delete", "foo");
- }
-
- private void assertHasValue(Object[] items, Object value) {
- for (Object item : items) {
- if (item.equals(value)) {
- return;
- }
- }
- fail("Could not find expected value: " + value);
- }
-
- private void assertTicketHasAttributes(Map<String, Object> attributes, int id, Object[] ticket) {
- assertTicketHasAttributes(attributes, id, ticket, true);
- }
-
- private void assertTicketHasAttributes(Map<String, Object> attributes, int id, Object[] ticket, boolean newTicket) {
- assertEquals(id, ticket[0]);
- assertTrue(ticket[1] instanceof Integer); // time created
- // time changed
- if (newTicket) {
- assertEquals(ticket[1], ticket[2]);
- } else {
- assertTrue((Integer) ticket[2] >= (Integer) ticket[1]);
- }
- Map values = (Map) ticket[3];
- for (String attribute : attributes.keySet()) {
- assertEquals(attributes.get(attribute), values.get(attribute));
- }
- }
-
- public void testGetTicket() throws XmlRpcException, IOException {
- Map<String, Object> attributes = new Hashtable<String, Object>();
- attributes.put("type", "task");
- attributes.put("status", "closed");
- int id = createTicket("summary", "description", attributes);
-
- attributes.put("summary", "summary");
- attributes.put("description", "description");
-
- Object[] ticket = (Object[]) call("ticket.get", id);
- assertTicketHasAttributes(attributes, id, ticket);
- }
-
- public void testGetTicketNonExistant() throws XmlRpcException, IOException {
- try {
- call("ticket.delete", Integer.MAX_VALUE);
- } catch (Exception e) {
- // ignore
- }
-
- try {
- List ticket = (List) call("ticket.get", Integer.MAX_VALUE);
- fail("Expected XmlRpcException, got ticket instead: " + ticket);
- } catch (XmlRpcException e) {
- // ignore
- }
- }
-
- public void testGetTicketUmlaute() throws XmlRpcException, IOException {
- Map<String, Object> attributes = new Hashtable<String, Object>();
- int id = createTicket("summaryäÖÜ", "ßßß", attributes);
-
- attributes.put("summary", "summaryäÖÜ");
- attributes.put("description", "ßßß");
-
- Object[] ticket = (Object[]) call("ticket.get", id);
- assertTicketHasAttributes(attributes, id, ticket);
- }
-
- public void testUpdateTicket() throws XmlRpcException, IOException {
- int id = createTicket("summary", "description", new Hashtable());
-
- Map<String, Object> attributes = new Hashtable<String, Object>();
- attributes.put("summary", "changed");
- call("ticket.update", id, "my comment", attributes);
-
- attributes.put("description", "description");
-
- Object[] ticket = (Object[]) call("ticket.get", id);
- Map values = (Map) ticket[3];
- for (String attribute : attributes.keySet()) {
- assertEquals(attributes.get(attribute), values.get(attribute));
- }
- }
-
- public void testTicketCustomFields() throws XmlRpcException, IOException {
- Map<String, Object> attributes = new Hashtable<String, Object>();
- attributes.put("custom_text_field", "myvalue");
- int id = createTicket("summary", "description", attributes);
-
- // check for default values
- attributes.put("custom_checkbox_field", "1");
- attributes.put("custom_select_field", "two");
- attributes.put("custom_radio_field", "baz");
- attributes.put("custom_textarea_field", "default text");
-
- Object[] ticket = (Object[]) call("ticket.get", id);
- assertTicketHasAttributes(attributes, id, ticket);
-
- attributes.put("custom_text_field", "myvalue2");
- attributes.put("custom_checkbox_field", "0");
- attributes.put("custom_select_field", "one");
- attributes.put("custom_radio_field", "foo");
- attributes.put("custom_textarea_field", "mytext");
-
- call("ticket.update", id, "my comment", attributes);
-
- ticket = (Object[]) call("ticket.get", id);
- assertTicketHasAttributes(attributes, id, ticket, false);
- }
-
- public void testGetChangeLog() throws XmlRpcException, IOException {
- int id = createTicket("summary", "description", new Hashtable());
-
- Map<String, Object> attributes = new Hashtable<String, Object>();
- attributes.put("summary", "changed");
- call("ticket.update", id, "my comment", attributes);
-
- Object[] log = (Object[]) call("ticket.changeLog", id, 0);
- Object[] entry = (Object[]) log[0];
- assertTrue(entry[0] instanceof Integer); // time
- assertEquals(username, entry[1]); // author
- assertEquals("summary", entry[2]); // field
- assertEquals("summary", entry[3]); // old value
- assertEquals("changed", entry[4]); // new value
- }
-
- public void testMultiGetTicket() throws XmlRpcException, IOException {
- int id1 = createTicket("summary1", "description1", new Hashtable());
- int id2 = createTicket("summary2", "description2", new Hashtable());
-
- List<Map> calls = new ArrayList<Map>();
- calls.add(createMultiCall("ticket.get", id1));
- calls.add(createMultiCall("ticket.get", id2));
- Object[] ret = (Object[]) call("system.multicall", calls);
-
- Object[] ticket = (Object[]) ((Object[]) ret[0])[0];
- Map<String, Object> attributes = new Hashtable<String, Object>();
- attributes.put("summary", "summary1");
- attributes.put("description", "description1");
- assertTicketHasAttributes(attributes, id1, ticket);
-
- ticket = (Object[]) ((Object[]) ret[1])[0];
- attributes.clear();
- attributes.put("summary", "summary2");
- attributes.put("description", "description2");
- assertTicketHasAttributes(attributes, id2, ticket);
- }
-
- public void testAttachment() throws XmlRpcException, IOException {
- int id = createTicket("summary", "description", new Hashtable());
-
- String filename = (String) call("ticket.putAttachment", id, "attach.txt", "description", "data".getBytes(), true);
- // the returned filename may differ, since another ticket may have an
- // attachment named "attach.txt"
- // assertEquals("attach.txt", filename);
-
- Object[] ret = (Object[]) call("ticket.listAttachments", id);
- assertEquals(1, ret.length);
- Object[] attachment = (Object[]) ret[0];
- assertEquals("attach.txt", attachment[0]);
- assertEquals("description", attachment[1]);
- assertEquals(4, attachment[2]);
- // date
- assertEquals(username, attachment[4]);
-
- byte[] bytes = (byte[]) call("ticket.getAttachment", id, filename);
- String data = new String(bytes);
- assertEquals("data", data);
-
- // test override
-
- String filename2 = (String) call("ticket.putAttachment", id, filename, "newdescription", "newdata".getBytes(), true);
- assertEquals(filename, filename2);
- ret = (Object[]) call("ticket.listAttachments", id);
- assertEquals(1, ret.length);
- attachment = (Object[]) ret[0];
- assertEquals("attach.txt", attachment[0]);
- assertEquals("newdescription", attachment[1]);
- assertEquals(7, attachment[2]);
- // date
- assertEquals(username, attachment[4]);
- bytes = (byte[]) call("ticket.getAttachment", id, filename);
- data = new String(bytes);
- assertEquals("newdata", data);
-
-
- String filename3 = (String) call("ticket.putAttachment", id, "attach.txt", "description", "data".getBytes(), false);
- assertFalse("attach.txt".equals(filename3));
- ret = (Object[]) call("ticket.listAttachments", id);
- assertEquals(2, ret.length);
- }
-
- public void testDeleteAttachment() throws XmlRpcException, IOException {
- int id = createTicket("summary", "description", new Hashtable());
-
- String filename = (String) call("ticket.putAttachment", id, "attach.txt", "description", "data".getBytes(), true);
-
- Object[] ret = (Object[]) call("ticket.listAttachments", id);
- assertEquals(1, ret.length);
-
- call("ticket.deleteAttachment", id, filename);
-
- ret = (Object[]) call("ticket.listAttachments", id);
- assertEquals(0, ret.length);
- }
-
- public void testDuplicateAttachment() throws XmlRpcException, IOException {
- int id1 = createTicket("summary", "description", new Hashtable());
- int id2 = createTicket("summary", "description", new Hashtable());
-
- String filename1 = (String) call("ticket.putAttachment", id1, "attach.txt", "description", "data".getBytes(), true);
- String filename2 = (String) call("ticket.putAttachment", id2, "attach.txt", "description", "data2".getBytes(), true);
- assertEquals("attach.txt", filename1);
- assertEquals(filename1, filename2);
-
- byte[] bytes = (byte[]) call("ticket.getAttachment", id1, "attach.txt");
- String data = new String(bytes);
- assertEquals("data", data);
-
- bytes = (byte[]) call("ticket.getAttachment", id2, "attach.txt");
- data = new String(bytes);
- assertEquals("data2", data);
- }
-
- public void testQuery() throws XmlRpcException, IOException {
- Object[] ret = (Object[]) call("ticket.query", "summary~=foo|bar|baz");
- for (Object id : ret) {
- call("ticket.delete", (Integer) id);
- }
-
- int id1 = createTicket("foobarsum1", "description", new Hashtable());
- int id2 = createTicket("foobaz sum2", "description", new Hashtable());
- int id3 = createTicket("foobarbaz3", "foobarbaz description3", new Hashtable());
-
- ret = (Object[]) call("ticket.query", "summary=foobarsum1|foobaz sum2");
- assertEquals(2, ret.length);
- assertEquals(id1, ret[0]);
- assertEquals(id2, ret[1]);
-
- // the first criterium is ignored
- ret = (Object[]) call("ticket.query", "summary~=foobarsum1&summary~=foobaz sum2");
- assertEquals(1, ret.length);
- assertEquals(id2, ret[0]);
-
- ret = (Object[]) call("ticket.query", "summary~=bar|baz");
- assertEquals(3, ret.length);
-
- ret = (Object[]) call("ticket.query", "description~=foobarbaz description3");
- assertEquals(1, ret.length);
- assertEquals(id3, ret[0]);
- }
-
- public void testQueryAll() throws XmlRpcException, IOException {
- int id = createTicket("foo", "description", new Hashtable());
-
- Object[] ret = (Object[]) call("ticket.query", "order=id");
- assertTrue(ret.length > 0);
- assertHasValue(ret, id);
- }
-
- public void testPriorities() throws XmlRpcException, IOException {
- internalTestCrud("ticket.priority");
- }
-
- public void testSeverities() throws XmlRpcException, IOException {
- internalTestCrud("ticket.severity");
- }
-
- public void testType() throws XmlRpcException, IOException {
- internalTestCrud("ticket.type");
- }
-
- public void testStatus() throws XmlRpcException, IOException {
- internalTestCrud("ticket.status");
- }
-
- public void testResolutions() throws XmlRpcException, IOException {
- internalTestCrud("ticket.resolution");
- }
-
- public void testVersions() throws XmlRpcException, IOException {
- internalTestComponent("ticket.version", "time", Integer.class, "description", String.class);
- }
-
- public void testComponents() throws XmlRpcException, IOException {
- internalTestComponent("ticket.component", "owner", String.class, "description", String.class);
- }
-
- public void testMilestones() throws XmlRpcException, IOException {
- internalTestComponent("ticket.milestone", "due", Integer.class, "completed", Integer.class, "description",
- String.class);
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TestFixture.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TestFixture.java
deleted file mode 100644
index 1b6872b35..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TestFixture.java
+++ /dev/null
@@ -1,97 +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.trac.tests.support;
-
-import org.eclipse.mylar.context.tests.support.MylarTestUtils;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
-import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
-import org.eclipse.mylar.trac.tests.Constants;
-
-/**
- * Initializes Trac repositories to a defined state. This is done once per test
- * run, since cleaning and initializing the repository for each test method
- * would take too long.
- *
- * @author Steffen Pingel
- */
-public class TestFixture {
-
- public static XmlRpcServer.TestData data010;
-
- /**
- * Adds the existing repository content to the test data of
- * <code>server</code>.
- */
- private static void initializeTestData(XmlRpcServer server) throws Exception {
- server.ticketMilestone("milestone1").itemCreated();
- server.ticketMilestone("milestone2").itemCreated();
- server.ticketMilestone("milestone3").itemCreated();
- server.ticketMilestone("milestone4").itemCreated();
-
- server.ticketVersion("1.0").itemCreated();
- server.ticketVersion("2.0").itemCreated();
-
- server.ticket(1).itemCreated();
- server.ticket(2).itemCreated();
- server.ticket(3).itemCreated();
- server.ticket(4).itemCreated();
- server.ticket(5).itemCreated();
- server.ticket(6).itemCreated();
- server.ticket(7).itemCreated();
- }
-
-// private static void initializeRepository(XmlRpcServer server) throws Exception {
-// server.ticketVersion(null).deleteAll();
-// server.ticketVersion("1.0").create(0, "");
-// server.ticketVersion("2.0").create(0, "");
-//
-// server.ticketMilestone(null).deleteAll();
-// server.ticketMilestone("milestone1").create();
-// server.ticketMilestone("milestone2").create();
-// server.ticketMilestone("milestone3").create();
-// server.ticketMilestone("milestone4").create();
-//
-// server.ticket().deleteAll();
-// Ticket ticket = server.ticket().create("summary1", "description1");
-// ticket.update("comment", "milestone", "milestone1");
-// ticket = server.ticket().create("summary2", "description2");
-// ticket.update("comment", "milestone", "milestone2");
-// ticket = server.ticket().create("summary3", "description3");
-// ticket.update("comment", "milestone", "milestone2");
-// ticket = server.ticket().create("summary4", "description4");
-//
-// ticket = server.ticket().create("attachment test", "");
-// // create attachment named attachment.txt that contains the text "Mylar"
-// ticket = server.ticket().create("test html entities: äöü", "ÄÖÜ\n\nmulti\nline\n\n'''bold'''\n");
-// ticket = server.ticket().create("offline handler test", "");
-// }
-
- public static XmlRpcServer.TestData init010() throws Exception {
- if (data010 == null) {
- Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
- XmlRpcServer server = new XmlRpcServer(Constants.TEST_TRAC_010_URL, credentials.username,
- credentials.password);
-
- initializeTestData(server);
- data010 = server.getData();
- }
- return data010;
- }
-
- public static void cleanup010() throws Exception {
- if (data010 != null) {
- // data010.cleanup();
- data010 = null;
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/XmlRpcServer.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/XmlRpcServer.java
deleted file mode 100644
index 4e8a4f6cc..000000000
--- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/XmlRpcServer.java
+++ /dev/null
@@ -1,366 +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.trac.tests.support;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.apache.xmlrpc.XmlRpcException;
-import org.apache.xmlrpc.client.XmlRpcClient;
-import org.eclipse.mylar.internal.trac.core.TracXmlRpcClient;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-
-/**
- * @author Steffen Pingel
- */
-public class XmlRpcServer {
-
- public abstract class AbstractTracItem {
-
- public abstract void delete() throws Exception;
-
- void itemCreated() {
- data.items.add(this);
- }
-
- void itemDeleted() {
- data.items.remove(this);
- }
-
- }
-
- /**
- * Represents a Trac type with multiple attributes such as a milestone.
- */
- public class ModelEnum extends AbstractTracItem {
-
- private String[] attributes;
-
- private String id;
-
- private String module;
-
- public ModelEnum(String module, String id, String... attributes) {
- this.module = module;
- this.id = id;
- this.attributes = attributes;
- }
-
- public ModelEnum create(Object... params) throws Exception {
- call(module + ".create", id, toMap(params));
- itemCreated();
- return this;
- }
-
- public void delete() throws Exception {
- call(module + ".delete", id);
- itemDeleted();
- }
-
- public void deleteAll() throws Exception {
- String[] ids = getAll();
- for (String id : ids) {
- call(module + ".delete", id);
- }
- }
-
- public ModelEnum deleteAndCreate(Object... params) throws Exception {
- if (Arrays.asList(getAll()).contains(id)) {
- delete();
- }
-
- return create(params);
- }
-
- public Object[] get() throws Exception {
- Hashtable values = (Hashtable) call(module + ".get", id);
- Object[] result = new Object[values.size()];
- for (int i = 0; i < result.length && i < attributes.length; i++) {
- result[i] = values.get(attributes[i]);
- }
- return result;
- }
-
- @SuppressWarnings("unchecked")
- public String[] getAll() throws Exception {
- return Arrays.asList((Object[]) call(module + ".getAll")).toArray(new String[0]);
- }
-
- private Hashtable<String, Object> toMap(Object... params) {
- Hashtable<String, Object> attrs = new Hashtable<String, Object>();
- for (int i = 0; i < attributes.length && i < params.length; i++) {
- attrs.put((String) attributes[i], params[i]);
- }
- return attrs;
- }
-
- public ModelEnum update(Object... params) throws Exception {
- call(module + ".update", id, toMap(params));
- return this;
- }
-
- }
-
- /**
- * Records changes to the repository.
- */
- public class TestData {
-
- // all created items
- List<AbstractTracItem> items = new ArrayList<AbstractTracItem>();
-
- // all created tickets
- public List<Ticket> tickets = new ArrayList<Ticket>();
-
- public int attachmentTicketId = 5;
-
- public int htmlEntitiesTicketId = 6;
-
- public int offlineHandlerTicketId = 7;
-
- /**
- * Undo all changes.
- */
- public void cleanup() throws Exception {
- while (!items.isEmpty()) {
- items.get(0).delete();
- }
- }
-
- }
-
- /**
- * Represents a Trac ticket.
- */
- public class Ticket extends AbstractTracItem {
-
- private Integer id;
-
- public Ticket(Integer id) {
- this.id = id;
- }
-
- public Ticket create(String summary, String description) throws Exception {
- this.id = (Integer) call("ticket.create", summary, description, new Hashtable());
- if (id == null) {
- throw new RuntimeException("Could not create ticket: " + summary);
- }
- itemCreated();
- return this;
- }
-
- public void delete() throws Exception {
- call("ticket.delete", id);
- itemDeleted();
- }
-
- public void deleteAll() throws Exception {
- Integer[] ids = getAll();
- for (Integer id : ids) {
- call("ticket.delete", id);
- }
- }
-
- public Object getValue(String key) throws Exception {
- return getValues().get(key);
- }
-
- public Map getValues() throws Exception {
- return (Map) ((Object[]) call("ticket.get", id))[3];
- }
-
- @SuppressWarnings("unchecked")
- public Integer[] getAll() throws Exception {
- return Arrays.asList((Object[]) call("ticket.query", "order=id")).toArray(new Integer[0]);
- }
-
- public int getId() {
- return id;
- }
-
- @Override
- protected void itemCreated() {
- super.itemCreated();
- data.tickets.add(this);
- }
-
- @Override
- protected void itemDeleted() {
- super.itemDeleted();
- data.tickets.remove(this);
- }
-
- public Ticket update(String comment, String key, String value) throws Exception {
- Hashtable<String, Object> attrs = new Hashtable<String, Object>();
- attrs.put(key, value);
- call("ticket.update", id, comment, attrs);
- return this;
- }
-
- }
-
- /**
- * Represents a Trac type that has a single attribute such as a priority.
- */
- public class TicketEnum extends AbstractTracItem {
-
- private String id;
-
- private String module;
-
- public TicketEnum(String module, String id) {
- this.module = module;
- this.id = id;
- }
-
- public TicketEnum create(String param) throws Exception {
- call(module + ".create", id, param);
- itemCreated();
- return this;
- }
-
- public void delete() throws Exception {
- call(module + ".delete", id);
- itemDeleted();
- }
-
- public void deleteAll() throws Exception {
- String[] ids = getAll();
- for (String id : ids) {
- call(module + ".delete", id);
- }
- }
-
- public TicketEnum deleteAndCreate(String param) throws Exception {
- if (Arrays.asList(getAll()).contains(id)) {
- delete();
- }
-
- return create(param);
- }
-
- public String get() throws Exception {
- return (String) call(module + ".get", id);
- }
-
- @SuppressWarnings("unchecked")
- public String[] getAll() throws Exception {
- return Arrays.asList((Object[]) call(module + ".getAll")).toArray(new String[0]);
- }
-
- public TicketEnum update(String param) throws Exception {
- call(module + ".update", id, param);
- return this;
- }
-
- }
-
- private XmlRpcClient client;
-
- private TestData data;
-
- private String password;
-
- private TracXmlRpcClient repository;
-
- private String url;
-
- private String username;
-
- public XmlRpcServer(String url, String username, String password) throws Exception {
- this.url = url;
- this.username = username;
- this.password = password;
-
- this.data = new TestData();
-
- this.repository = new TracXmlRpcClient(new URL(url), Version.XML_RPC, username, password);
- this.client = repository.getClient();
- }
-
- private Object call(String method, Object... parameters) throws XmlRpcException, IOException {
- Vector<Object> params = new Vector<Object>(parameters.length);
- for (Object parameter : parameters) {
- params.add(parameter);
- }
-
- Object result = client.execute(method, params);
- if (result instanceof XmlRpcException) {
- throw (XmlRpcException) result;
- }
- return result;
- }
-
- public TestData getData() {
- return data;
- }
-
- public String getPassword() {
- return password;
- }
-
- public TracXmlRpcClient getRepository() throws MalformedURLException {
- return repository;
- }
-
- public String getUrl() {
- return url;
- }
-
- public String getUsername() {
- return username;
- }
-
- public Ticket ticket() throws Exception {
- return new Ticket(null);
- }
-
- public Ticket ticket(int id) throws Exception {
- return new Ticket(id);
- }
-
- public ModelEnum ticketComponent(String id) throws Exception {
- return new ModelEnum("ticket.component", id, "owner", "description");
- }
-
- public ModelEnum ticketMilestone(String id) throws Exception {
- return new ModelEnum("ticket.milestone", id, "due", "completed", "description");
- }
-
- public TicketEnum ticketPriority(String id) throws Exception {
- return new TicketEnum("ticket.priority", id);
- }
-
- public TicketEnum ticketSeverity(String id) throws Exception {
- return new TicketEnum("ticket.severity", id);
- }
-
- public TicketEnum ticketStatus(String id) throws Exception {
- return new TicketEnum("ticket.status", id);
- }
-
- public TicketEnum ticketType(String id) throws Exception {
- return new TicketEnum("ticket.type", id);
- }
-
- public ModelEnum ticketVersion(String id) throws Exception {
- return new ModelEnum("ticket.version", id, "time", "description");
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/.classpath b/org.eclipse.mylyn.trac.ui/.classpath
deleted file mode 100644
index 751c8f2e5..000000000
--- a/org.eclipse.mylyn.trac.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.mylyn.trac.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.mylyn.trac.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 8cf54a7c4..000000000
--- a/org.eclipse.mylyn.trac.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,256 +0,0 @@
-#Thu Feb 09 16:45:35 PST 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=1
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
-org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=120
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
diff --git a/org.eclipse.mylyn.trac.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.trac.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index 736f3f35f..000000000
--- a/org.eclipse.mylyn.trac.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Mylar Trac UI Plug-in
-Bundle-SymbolicName: org.eclipse.mylar.trac.ui;singleton:=true
-Bundle-Version: 0.7.0
-Bundle-Activator: org.eclipse.mylar.internal.trac.ui.TracUiPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.ui.forms,
- org.eclipse.core.runtime,
- org.eclipse.mylar.context.core,
- org.eclipse.mylar.tasks.ui,
- org.eclipse.mylar.tasks.core,
- org.eclipse.search,
- org.eclipse.mylar.trac.core
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.mylar.internal.trac.ui,
- org.eclipse.mylar.internal.trac.ui.editor,
- org.eclipse.mylar.internal.trac.ui.wizard
diff --git a/org.eclipse.mylyn.trac.ui/plugin.xml b/org.eclipse.mylyn.trac.ui/plugin.xml
deleted file mode 100644
index fbbda527a..000000000
--- a/org.eclipse.mylyn.trac.ui/plugin.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
- <extension
- id="org.eclipse.mylar.trac.repository"
- name="Trac Repository"
- point="org.eclipse.mylar.tasks.ui.repositories">
- <connectorCore
- class="org.eclipse.mylar.internal.trac.core.TracRepositoryConnector"
- id="org.eclipse.mylar.trac.tasklist.repositories"
- name="Trac Repository Connector"
- type="trac"/>
- <connectorUi
- brandingIcon="icons/eview16/trac-icon.gif"
- class="org.eclipse.mylar.internal.trac.ui.TracRepositoryUi"
- id="Trac Repository UI"
- overlayIcon="icons/eview16/overlay-trac.gif"/>
- <externalizer
- class="org.eclipse.mylar.internal.trac.ui.TracTaskExternalizer"
- id="org.eclipse.mylar.trac.tasklist.externalizer"
- name="Trac Externalizer"/>
- </extension>
- <extension
- point="org.eclipse.mylar.tasks.ui.templates">
- <repository
- addAutomatically="false"
- anonymous="true"
- label="Edgewall"
- repositoryKind="trac"
- urlRepository="http://trac.edgewall.org"
- version="TRAC_0_9"/>
- </extension>
- <extension
- point="org.eclipse.mylar.tasks.ui.editors">
- <editorFactory class="org.eclipse.mylar.internal.trac.ui.editor.TracTaskEditorFactory"/>
- </extension>
-
-</plugin>
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracRepositoryUi.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracRepositoryUi.java
deleted file mode 100644
index b484613b1..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracRepositoryUi.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.trac.ui;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.IWizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.internal.tasks.ui.wizards.NewWebTaskWizard;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.ui.wizard.EditTracQueryWizard;
-import org.eclipse.mylar.internal.trac.ui.wizard.NewTracQueryWizard;
-import org.eclipse.mylar.internal.trac.ui.wizard.TracCustomQueryPage;
-import org.eclipse.mylar.internal.trac.ui.wizard.TracRepositorySettingsPage;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-
-/**
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class TracRepositoryUi extends AbstractRepositoryConnectorUi {
-
- @Override
- public AbstractRepositorySettingsPage getSettingsPage() {
- return new TracRepositorySettingsPage(this);
- }
-
- @Override
- public boolean hasRichEditor() {
- return true;
- }
-
- @Override
- public WizardPage getSearchPage(TaskRepository repository, IStructuredSelection selection) {
- return new TracCustomQueryPage(repository);
- }
-
- @Override
- public boolean hasSearchPage() {
- return true;
- }
-
- @Override
- public IWizard getNewTaskWizard(TaskRepository taskRepository, IStructuredSelection selection) {
- return new NewWebTaskWizard(taskRepository, taskRepository.getUrl() + ITracClient.NEW_TICKET_URL);
- }
-
- public IWizard getQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) {
- if (query instanceof TracRepositoryQuery) {
- return new EditTracQueryWizard(repository, query);
- } else {
- return new NewTracQueryWizard(repository);
- }
- }
-
- @Override
- public String getRepositoryType() {
- return TracCorePlugin.REPOSITORY_KIND;
- }
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskExternalizer.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskExternalizer.java
deleted file mode 100644
index b0bf54765..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskExternalizer.java
+++ /dev/null
@@ -1,229 +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.trac.ui;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.OfflineTaskManager;
-import org.eclipse.mylar.internal.trac.core.TracQueryHit;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.tasks.core.AbstractQueryHit;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.AbstractTaskContainer;
-import org.eclipse.mylar.tasks.core.DelegatingTaskExternalizer;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.ITaskListExternalizer;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.core.TaskExternalizationException;
-import org.eclipse.mylar.tasks.core.TaskList;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask.RepositoryTaskSyncState;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * @author Steffen Pingel
- */
-public class TracTaskExternalizer extends DelegatingTaskExternalizer {
-
- private static final String KEY_TRAC = "Trac";
-
- private static final String KEY_TRAC_CATEGORY = KEY_TRAC + KEY_CATEGORY;
-
- private static final String KEY_TRAC_TASK = KEY_TRAC + KEY_TASK;
-
- private static final String KEY_TRAC_QUERY_HIT = KEY_TRAC + KEY_QUERY_HIT;
-
- private static final String KEY_TRAC_QUERY = KEY_TRAC + KEY_QUERY;
-
- // category related methods
-
- @Override
- public boolean canReadCategory(Node node) {
- return node.getNodeName().equals(KEY_TRAC_CATEGORY);
- }
-
- @Override
- public String getCategoryTagName() {
- return KEY_TRAC_CATEGORY;
- }
-
- // task related methods
-
- @Override
- public boolean canCreateElementFor(ITask task) {
- return task instanceof TracTask;
- }
-
- @Override
- public String getTaskTagName() {
- return KEY_TRAC_TASK;
- }
-
- @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 task");
- }
- if (element.hasAttribute(KEY_LABEL)) {
- label = element.getAttribute(KEY_LABEL);
- } else {
- throw new TaskExternalizationException("Description not stored for task");
- }
-
- TracTask task = new TracTask(handle, label, false);
- readTaskInfo(task, taskList, element, parent, category);
- return task;
- }
-
- // TODO move to DelegatingTaskExternalizer
- @Override
- public void readTaskData(AbstractRepositoryTask task) {
- RepositoryTaskData data = OfflineTaskManager.findBug(task.getRepositoryUrl(), AbstractRepositoryTask
- .getTaskId(task.getHandleIdentifier()));
- task.setTaskData((RepositoryTaskData) data);
-
- if (data != null && data.hasLocalChanges()) {
- task.setSyncState(RepositoryTaskSyncState.OUTGOING);
- }
- }
-
- // query related methods
-
- @Override
- public boolean canCreateElementFor(AbstractQueryHit queryHit) {
- return queryHit instanceof TracQueryHit;
- }
-
- @Override
- public boolean canCreateElementFor(AbstractRepositoryQuery category) {
- return category instanceof TracRepositoryQuery;
- }
-
- @Override
- public boolean canReadQuery(Node node) {
- return node.getNodeName().equals(KEY_TRAC_QUERY);
- }
-
- @Override
- public boolean canReadQueryHit(Node node) {
- return node.getNodeName().equals(KEY_TRAC_QUERY_HIT);
- }
-
- @Override
- public Element createQueryElement(AbstractRepositoryQuery query, Document doc, Element parent) {
- String queryTagName = getQueryTagNameForElement(query);
- Element node = doc.createElement(queryTagName);
-
- node.setAttribute(KEY_LABEL, query.getDescription());
- node.setAttribute(KEY_REPOSITORY_URL, query.getRepositoryUrl());
- node.setAttribute(KEY_QUERY, query.getUrl());
-
- for (AbstractQueryHit hit : query.getHits()) {
- try {
- Element element = null;
- for (ITaskListExternalizer externalizer : super.getDelegateExternalizers()) {
- if (externalizer.canCreateElementFor(hit))
- element = externalizer.createQueryHitElement(hit, doc, node);
- }
- if (element == null)
- createQueryHitElement(hit, doc, node);
- } catch (Exception e) {
- MylarStatusHandler.log(e, e.getMessage());
- }
- }
- parent.appendChild(node);
- return node;
- }
-
- @Override
- public String getQueryHitTagName() {
- return KEY_TRAC_QUERY_HIT;
- }
-
- @Override
- public String getQueryTagNameForElement(AbstractRepositoryQuery query) {
- if (query instanceof TracRepositoryQuery) {
- return KEY_TRAC_QUERY;
- }
- return "";
- }
-
- @Override
- public AbstractRepositoryQuery readQuery(Node node, TaskList taskList) throws TaskExternalizationException {
- Element element = (Element) node;
- String repositoryUrl;
- String queryUrl;
- String label;
- if (element.hasAttribute(KEY_REPOSITORY_URL)) {
- repositoryUrl = element.getAttribute(KEY_REPOSITORY_URL);
- } else {
- throw new TaskExternalizationException("Repository URL not stored for task");
- }
- if (element.hasAttribute(KEY_QUERY)) {
- queryUrl = element.getAttribute(KEY_QUERY);
- } else {
- throw new TaskExternalizationException("Query URL not stored for task");
- }
- if (element.hasAttribute(KEY_LABEL)) {
- label = element.getAttribute(KEY_LABEL);
- } else {
- throw new TaskExternalizationException("Description not stored for task");
- }
-
- TracRepositoryQuery query = new TracRepositoryQuery(repositoryUrl, queryUrl, label, taskList);
-
- 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) {
- MylarStatusHandler.log(e, e.getMessage());
- }
- }
- return query;
- }
-
- @Override
- public void readQueryHit(Node node, TaskList taskList, AbstractRepositoryQuery query)
- throws TaskExternalizationException {
- Element element = (Element) node;
-
- String handle;
- if (element.hasAttribute(KEY_HANDLE)) {
- handle = element.getAttribute(KEY_HANDLE);
- } else {
- throw new TaskExternalizationException("Handle not stored for bug report");
- }
-
- TracQueryHit hit = new TracQueryHit(taskList, handle);
- // TODO move to DelegationTaskExternalizer
- if (element.hasAttribute(KEY_COMPLETE)
- && element.getAttribute(KEY_COMPLETE).compareTo(VAL_TRUE) == 0) {
- hit.setCompleted(true);
- } else {
- hit.setCompleted(false);
- }
- readQueryHitInfo(hit, taskList, query, element);
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java
deleted file mode 100644
index 6dae3bf05..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java
+++ /dev/null
@@ -1,68 +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.trac.ui;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * @author Mik Kersten
- * @author Steffen Pingel
- */
-public class TracUiPlugin extends AbstractUIPlugin {
-
- public static final String PLUGIN_ID = "org.eclipse.mylar.trac.ui";
-
- public final static String TITLE_MESSAGE_DIALOG = "Mylar Trac Client";
-
- private static TracUiPlugin plugin;
-
- public TracUiPlugin() {
- plugin = this;
- }
-
- public void start(BundleContext context) throws Exception {
- super.start(context);
-
- TasksUiPlugin.getRepositoryManager().addListener(TracCorePlugin.getDefault().getConnector().getClientManager());
- }
-
- public void stop(BundleContext context) throws Exception {
- TasksUiPlugin.getRepositoryManager().removeListener(TracCorePlugin.getDefault().getConnector().getClientManager());
-
- plugin = null;
- super.stop(context);
- }
-
- public static TracUiPlugin getDefault() {
- return plugin;
- }
-
- public static void handleTracException(Throwable e) {
- handleTracException(TracCorePlugin.toStatus(e));
- }
-
- public static void handleTracException(IStatus status) {
- if (status.getCode() == IStatus.ERROR) {
- MylarStatusHandler.log(status);
- ErrorDialog.openError(null, TITLE_MESSAGE_DIALOG, null, status);
- } else if (status.getCode() == IStatus.INFO) {
- ErrorDialog.openError(null, TITLE_MESSAGE_DIALOG, null, status);
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditor.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditor.java
deleted file mode 100644
index 99a5ed90a..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditor.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.trac.ui.editor;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.AbstractRepositoryTaskEditor;
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.internal.tasks.ui.editors.RepositoryTaskOutlineNode;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.InvalidTicketException;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket;
-import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
-import org.eclipse.mylar.internal.trac.ui.TracUiPlugin;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.RepositoryOperation;
-import org.eclipse.mylar.tasks.core.RepositoryTaskAttribute;
-import org.eclipse.mylar.tasks.core.RepositoryTaskData;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.forms.editor.FormEditor;
-
-/**
- * @author Steffen Pingel
- */
-public class TracTaskEditor extends AbstractRepositoryTaskEditor {
-
- private static final String SUBMIT_JOB_LABEL = "Submitting to Trac repository";
-
- private TracRepositoryConnector connector;
-
- public TracTaskEditor(FormEditor editor) {
- super(editor);
- }
-
- @Override
- protected void addAttachContextButton(Composite buttonComposite, ITask task) {
- // disabled, see bug 155151
- }
-
- @Override
- protected void addSelfToCC(Composite composite) {
- // disabled, see bug 155151
- }
-
- @Override
- protected void createCustomAttributeLayout(Composite composite) {
- }
-
- @Override
- public RepositoryTaskData getRepositoryTaskData() {
- return editorInput.getRepositoryTaskData();
- }
-
- @Override
- protected String getTitleString() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public void init(IEditorSite site, IEditorInput input) {
- if (!(input instanceof ExistingBugEditorInput))
- return;
-
- editorInput = (AbstractBugEditorInput) input;
- repository = editorInput.getRepository();
- connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- repository.getKind());
-
- setSite(site);
- setInput(input);
-
- taskOutlineModel = RepositoryTaskOutlineNode.parseBugReport(editorInput.getRepositoryTaskData());
-
- isDirty = false;
- updateEditorTitle();
- }
-
- @Override
- protected void submitBug() {
- if (isDirty()) {
- this.doSave(new NullProgressMonitor());
- }
- updateBug();
- submitButton.setEnabled(false);
- showBusy(true);
-
- final TracTicket ticket;
- try {
- ticket = getTracTicket();
- } catch (InvalidTicketException e) {
- TracUiPlugin.handleTracException(e);
- return;
- }
- final String comment = getNewCommentText();
- final AbstractRepositoryTask task = (AbstractRepositoryTask) TasksUiPlugin.getTaskListManager().getTaskList()
- .getTask(AbstractRepositoryTask.getHandle(repository.getUrl(), getRepositoryTaskData().getId()));
- final boolean attachContext = false; // getAttachContext();
-
- JobChangeAdapter listener = new JobChangeAdapter() {
- public void done(final IJobChangeEvent event) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (event.getJob().getResult().isOK()) {
- if (attachContext) {
- // TODO should be done as part of job
- try {
- connector.attachContext(repository, (AbstractRepositoryTask) task, "",
- TasksUiPlugin.getDefault().getProxySettings());
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- close();
- } else {
- // TracUiPlugin.handleTracException(event.getResult());
- submitButton.setEnabled(true);
- TracTaskEditor.this.showBusy(false);
- }
- }
- });
- }
- };
-
- Job submitJob = new Job(SUBMIT_JOB_LABEL) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- ITracClient server = connector.getClientManager().getRepository(repository);
- server.updateTicket(ticket, comment);
- // XXX hack to avoid message about lost changes to local
- // task
- task.setTaskData(null);
- TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
- return Status.OK_STATUS;
- } catch (Exception e) {
- return TracCorePlugin.toStatus(e);
- }
- }
-
- };
-
- submitJob.addJobChangeListener(listener);
- submitJob.schedule();
-
- }
-
- @Override
- protected void updateBug() {
- getRepositoryTaskData().setHasLocalChanges(true);
- }
-
- @Override
- protected void validateInput() {
- }
-
- TracTicket getTracTicket() throws InvalidTicketException {
- RepositoryTaskData data = getRepositoryTaskData();
-
- TracTicket ticket = new TracTicket(Integer.parseInt(data.getId()));
-
- List<RepositoryTaskAttribute> attributes = data.getAttributes();
- for (RepositoryTaskAttribute attribute : attributes) {
- if (!attribute.isReadOnly()) {
- ticket.putValue(attribute.getID(), attribute.getValue());
- }
- }
- // TODO "1" should not be hard coded here
- if ("1".equals(data.getAttributeValue(RepositoryTaskAttribute.ADD_SELF_CC))) {
- String cc = data.getAttributeValue(RepositoryTaskAttribute.USER_CC);
- ticket.putBuiltinValue(Key.CC, cc + "," + repository.getUserName());
- }
-
- RepositoryOperation operation = data.getSelectedOperation();
- if (operation != null) {
- String action = operation.getKnobName();
- if (!"leave".equals(action)) {
- if ("accept".equals(action)) {
- ticket.putValue("status", "assigned");
- ticket.putValue("owner", TracRepositoryConnector.getDisplayUsername(repository));
- } else if ("resolve".equals(action)) {
- ticket.putValue("status", "closed");
- ticket.putValue("resolution", operation.getOptionSelection());
- } else if ("reopen".equals(action)) {
- ticket.putValue("status", "reopened");
- ticket.putValue("resolution", "");
- } else if ("reassign".equals(operation.getKnobName())) {
- ticket.putValue("status", "new");
- ticket.putValue("owner", operation.getInputValue());
- }
- }
- }
-
- return ticket;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java
deleted file mode 100644
index 19b71e386..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorFactory.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-package org.eclipse.mylar.internal.trac.ui.editor;
-
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.ITaskEditorFactory;
-import org.eclipse.mylar.internal.tasks.ui.editors.MylarTaskEditor;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.tasks.core.ITask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-
-/**
- * @author Steffen Pingel
- */
-public class TracTaskEditorFactory implements ITaskEditorFactory {
-
- public boolean canCreateEditorFor(ITask task) {
- if (task instanceof TracTask) {
- TracRepositoryConnector connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
- TracCorePlugin.REPOSITORY_KIND);
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(TracCorePlugin.REPOSITORY_KIND,
- ((TracTask)task).getRepositoryUrl());
- return connector.hasRichEditor(repository, (TracTask) task);
- }
- return task instanceof TracTask;
- }
-
- public boolean canCreateEditorFor(IEditorInput input) {
- if (input instanceof TracTaskEditorInput) {
- return ((TracTaskEditorInput) input).getRepositoryTaskData() != null;
- }
- return false;
- }
-
- public IEditorPart createEditor(MylarTaskEditor parentEditor) {
- return new TracTaskEditor(parentEditor);
- }
-
- public IEditorInput createEditorInput(ITask task) {
- TracTask tracTask = (TracTask) task;
- TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
- TracCorePlugin.REPOSITORY_KIND, tracTask.getRepositoryUrl());
- try {
- return new TracTaskEditorInput(repository, tracTask);
- } catch (Exception e) {
- MylarStatusHandler.fail(e, "Could not create Trac editor input", true);
- }
- return null;
- }
-
- public String getTitle() {
- return "Trac";
- }
-
- public void notifyEditorActivationChange(IEditorPart editor) {
- // TODO Auto-generated method stub
-
- }
-
- public boolean providesOutline() {
- return true;
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorInput.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorInput.java
deleted file mode 100644
index 518301998..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorInput.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2006 Mylar committers and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-package org.eclipse.mylar.internal.trac.ui.editor;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-
-import org.eclipse.mylar.internal.tasks.ui.editors.ExistingBugEditorInput;
-import org.eclipse.mylar.internal.trac.core.TracTask;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Steffen Pingel
- */
-public class TracTaskEditorInput extends ExistingBugEditorInput {
-
- public TracTaskEditorInput(TaskRepository repository, TracTask task) throws IOException, GeneralSecurityException {
- super(repository, task.getTaskData(), AbstractRepositoryTask.getTaskId(task.getHandleIdentifier()));
- // TODO Auto-generated constructor stub
- }
-
- public String getName() {
- // TODO fix super implementation
- return repositoryTask.getDescription();
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/EditTracQueryWizard.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/EditTracQueryWizard.java
deleted file mode 100644
index 8e2ec65e9..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/EditTracQueryWizard.java
+++ /dev/null
@@ -1,61 +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.trac.ui.wizard;
-
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractEditQueryWizard;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-
-/**
- * @author Steffen Pingel
- */
-public class EditTracQueryWizard extends AbstractEditQueryWizard {
-
-// private TracCustomQueryPage queryPage;
-
- public EditTracQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) {
- super(repository, query);
- }
-
- @Override
- public void addPages() {
- page = new TracCustomQueryPage(repository, query);
- page.setWizard(this);
- addPage(page);
- }
-
- @Override
- public boolean canFinish() {
- if (page.getNextPage() == null) {
- return page.isPageComplete();
- }
- return page.getNextPage().isPageComplete();
- }
-
-// @Override
-// public boolean performFinish() {
-// AbstractRepositoryQuery q = queryPage.getQuery();
-// if (q != null) {
-// TasksUiPlugin.getTaskListManager().getTaskList().deleteQuery(query);
-// TasksUiPlugin.getTaskListManager().getTaskList().addQuery(q);
-//
-// AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
-// repository.getKind());
-// if (connector != null) {
-// TasksUiPlugin.getSynchronizationManager().synchronize(connector, q, null);
-// }
-// }
-//
-// return true;
-// }
-
-} \ No newline at end of file
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracCustomQueryPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracCustomQueryPage.java
deleted file mode 100644
index 2298bc19c..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracCustomQueryPage.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*******************************************************************************
- * 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.trac.ui.wizard;
-
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.Proxy;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage;
-import org.eclipse.mylar.internal.tasks.ui.search.SearchHitCollector;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
-import org.eclipse.mylar.internal.trac.core.TracException;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter.CompareOperator;
-import org.eclipse.mylar.internal.trac.ui.TracUiPlugin;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * Trac search page. Provides a form similar to the one the Bugzilla connector
- * uses.
- *
- * @author Steffen Pingel
- */
-public class TracCustomQueryPage extends AbstractRepositoryQueryPage {
-
- private static final String TITLE = "New Trac Query";
-
- private static final String DESCRIPTION = "Add search filters to define query.";
-
- private static final String TITLE_QUERY_TITLE = "Query Title:";
-
- private TaskRepository repository;
-
- private TracRepositoryQuery query;
-
- private Text titleText;
-
- private static final int PRODUCT_HEIGHT = 60;
-
- private static final int STATUS_HEIGHT = 40;
-
- protected Combo summaryText = null;
-
- protected Combo repositoryCombo = null;
-
- private TextSearchField summaryField;
-
- private TextSearchField descriptionField;
-
- private ListSearchField componentField;
-
- private ListSearchField versionField;
-
- private ListSearchField milestoneField;
-
- private ListSearchField priorityField;
-
- private ListSearchField typeField;
-
- private ListSearchField resolutionField;
-
- private ListSearchField statusField;
-
- private Button updateButton;
-
- private TextSearchField keywordsField;
-
- private TextSearchField ownerField;
-
- private Map<String, SearchField> searchFieldByName = new HashMap<String, SearchField>();
-
- private boolean firstTime = true;
-
- public TracCustomQueryPage(TaskRepository repository, AbstractRepositoryQuery query) {
- super(TITLE);
-
- this.repository = repository;
- this.query = (TracRepositoryQuery) query;
-
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- }
-
- public TracCustomQueryPage(TaskRepository repository) {
- this(repository, null);
- }
-
- public void createControl(Composite parent) {
-
- Composite control = new Composite(parent, SWT.NONE);
- GridData gd = new GridData(GridData.FILL_BOTH);
- control.setLayoutData(gd);
- GridLayout layout = new GridLayout(3, false);
- control.setLayout(layout);
-
- createTitleGroup(control);
-
- summaryField = new TextSearchField("summary");
- summaryField.createControls(control, "Summary");
-
- descriptionField = new TextSearchField("description");
- descriptionField.createControls(control, "Description");
-
- ownerField = new TextSearchField("owner");
- ownerField.createControls(control, "Owner");
-
- keywordsField = new TextSearchField("keywords");
- keywordsField.createControls(control, "Keywords");
-
- createOptionsGroup(control);
-
- if (query != null) {
- titleText.setText(query.getDescription());
- restoreSearchFilterFromQuery(query);
- }
-
- setControl(control);
- }
-
- public boolean canFlipToNextPage() {
- return false;
- }
-
- private void restoreSearchFilterFromQuery(TracRepositoryQuery query) {
- TracSearch search = query.getTracSearch();
- java.util.List<TracSearchFilter> filters = search.getFilters();
- for (TracSearchFilter filter : filters) {
- SearchField field = searchFieldByName.get(filter.getFieldName());
- if (field != null) {
- field.setFilter(filter);
- } else {
- MylarStatusHandler.log("Ignoring invalid search filter: " + filter, this);
- }
- }
- }
-
- private void createTitleGroup(Composite control) {
- if (inSearchContainer()) {
- return;
- }
-
- Label titleLabel = new Label(control, SWT.NONE);
- titleLabel.setText(TITLE_QUERY_TITLE);
-
- titleText = new Text(control, SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- gd.horizontalSpan = 2;
- titleText.setLayoutData(gd);
- titleText.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- // ignore
- }
-
- public void keyReleased(KeyEvent e) {
- getContainer().updateButtons();
- }
- });
- }
-
- protected Control createOptionsGroup(Composite control) {
- Group group = new Group(control, SWT.NONE);
- // group.setText("Ticket Attributes");
- GridLayout layout = new GridLayout();
- layout.numColumns = 1;
- group.setLayout(layout);
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.horizontalSpan = 3;
- group.setLayoutData(gd);
-
- createProductAttributes(group);
- createTicketAttributes(group);
- createUpdateButton(group);
-
- return group;
- }
-
- /**
- * Creates the area for selection on product attributes
- * component/version/milestone.
- */
- protected Control createProductAttributes(Composite control) {
- Composite group = new Composite(control, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- group.setLayout(layout);
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.horizontalSpan = 1;
- group.setLayoutData(gd);
-
- Label 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");
-
- componentField = new ListSearchField("component");
- componentField.createControls(group, PRODUCT_HEIGHT);
-
- versionField = new ListSearchField("version");
- versionField.createControls(group, PRODUCT_HEIGHT);
-
- milestoneField = new ListSearchField("milestone");
- milestoneField.createControls(group, PRODUCT_HEIGHT);
-
- return group;
- }
-
- /**
- * Creates the area for selection of ticket attributes
- * status/resolution/priority.
- */
- protected Control createTicketAttributes(Composite control) {
- Composite group = new Composite(control, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 4;
- group.setLayout(layout);
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.horizontalSpan = 1;
- group.setLayoutData(gd);
-
- 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("Type");
-
- label = new Label(group, SWT.LEFT);
- label.setText("Priority");
-
- statusField = new ListSearchField("status");
- statusField.createControls(group, STATUS_HEIGHT);
-
- resolutionField = new ListSearchField("resolution");
- resolutionField.createControls(group, STATUS_HEIGHT);
-
- typeField = new ListSearchField("type");
- typeField.createControls(group, STATUS_HEIGHT);
-
- priorityField = new ListSearchField("priority");
- priorityField.createControls(group, STATUS_HEIGHT);
-
- return group;
- }
-
- protected Control createUpdateButton(final Composite control) {
- Composite group = new Composite(control, SWT.NONE);
- GridLayout layout = new GridLayout(2, false);
- group.setLayout(layout);
- group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- updateButton = new Button(group, SWT.PUSH);
- updateButton.setText("Update Attributes from Repository");
- updateButton.setLayoutData(new GridData());
- updateButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- if (repository != null) {
- updateAttributesFromRepository(true);
- } else {
- MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
- TracUiPlugin.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
- }
- }
- });
-
- return group;
- }
-
- @Override
- public void setVisible(boolean visible) {
- super.setVisible(visible);
-
- if (scontainer != null) {
- scontainer.setPerformActionEnabled(true);
- }
-
- if (visible && firstTime) {
- firstTime = false;
- // delay the execution so the dialog's progress bar is visible when
- // the attributes are updated
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- if (getControl() != null && !getControl().isDisposed()) {
- updateAttributesFromRepository(false);
- }
- }
- });
- }
- }
-
- private void updateAttributesFromRepository(final boolean force) {
- TracRepositoryConnector connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager()
- .getRepositoryConnector(TracCorePlugin.REPOSITORY_KIND);
- final ITracClient client;
- try {
- client = connector.getClientManager().getRepository(repository);
- } catch (MalformedURLException e) {
- TracUiPlugin.handleTracException(e);
- return;
- }
-
- try {
- IRunnableWithProgress runnable = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- try {
- client.updateAttributes(monitor, force);
- } catch (TracException e) {
- throw new InvocationTargetException(e);
- }
- }
- };
-
- if (getContainer() != null) {
- getContainer().run(true, true, runnable);
- } else {
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
- service.run(true, true, runnable);
- }
- } catch (InvocationTargetException e) {
- TracUiPlugin.handleTracException(e.getCause());
- } catch (InterruptedException e) {
- return;
- }
-
- statusField.setValues(client.getTicketStatus());
- resolutionField.setValues(client.getTicketResolutions());
- typeField.setValues(client.getTicketTypes());
- priorityField.setValues(client.getPriorities());
-
- componentField.setValues(client.getComponents());
- versionField.setValues(client.getVersions());
- milestoneField.setValues(client.getMilestones());
- }
-
- public TaskRepository getRepository() {
- return repository;
- }
-
- public void setRepository(TaskRepository repository) {
- this.repository = repository;
- }
-
- @Override
- public boolean isPageComplete() {
- if (titleText != null && titleText.getText().length() > 0) {
- return true;
- }
- return false;
- }
-
- public String getQueryUrl(String repsitoryUrl) {
- TracSearch search = new TracSearch();
- for (SearchField field : searchFieldByName.values()) {
- TracSearchFilter filter = field.getFilter();
- if (filter != null) {
- search.addFilter(filter);
- }
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append(repsitoryUrl);
- sb.append(ITracClient.QUERY_URL);
- sb.append(search.toUrl());
- return sb.toString();
- }
-
- public TracRepositoryQuery getQuery() {
- return new TracRepositoryQuery(repository.getUrl(), getQueryUrl(repository.getUrl()), getTitleText(),
- TasksUiPlugin.getTaskListManager().getTaskList());
- }
-
- private String getTitleText() {
- return (titleText != null) ? titleText.getText() : "<search>";
- }
-
- public boolean performAction() {
- if (repository == null) {
- MessageDialog.openInformation(Display.getCurrent().getActiveShell(), TracUiPlugin.TITLE_MESSAGE_DIALOG,
- TaskRepositoryManager.MESSAGE_NO_REPOSITORY);
- return false;
- }
-
- Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings();
- SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskListManager()
- .getTaskList(), repository, getQuery(), proxySettings);
- NewSearchUI.runQueryInBackground(collector);
-
- return true;
- }
-
- private abstract class SearchField {
-
- protected String fieldName;
-
- public SearchField(String fieldName) {
- this.fieldName = fieldName;
-
- assert !searchFieldByName.containsKey(fieldName);
- searchFieldByName.put(fieldName, this);
- }
-
- public String getFieldName() {
- return fieldName;
- }
-
- public abstract TracSearchFilter getFilter();
-
- public abstract void setFilter(TracSearchFilter filter);
-
- }
-
- private class TextSearchField extends SearchField {
-
- private Combo conditionCombo;
-
- private Text searchText;
-
- private Label label;
-
- private CompareOperator[] compareOperators = { CompareOperator.CONTAINS, CompareOperator.CONTAINS_NOT,
- CompareOperator.BEGINS_WITH, CompareOperator.ENDS_WITH, CompareOperator.IS, CompareOperator.IS_NOT, };
-
- public TextSearchField(String fieldName) {
- super(fieldName);
- }
-
- public void createControls(Composite parent, String labelText) {
- label = new Label(parent, SWT.LEFT);
- label.setText(labelText);
-
- conditionCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
- for (CompareOperator op : compareOperators) {
- conditionCombo.add(op.toString());
- }
- conditionCombo.setText(compareOperators[0].toString());
-
- searchText = new Text(parent, SWT.BORDER);
- GridData gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL);
- searchText.setLayoutData(gd);
- }
-
- public CompareOperator getCondition() {
- return compareOperators[conditionCombo.getSelectionIndex()];
- }
-
- public String getSearchText() {
- return searchText.getText();
- }
-
- public boolean setCondition(CompareOperator operator) {
- if (conditionCombo != null) {
- int i = conditionCombo.indexOf(operator.toString());
- if (i != -1) {
- conditionCombo.select(i);
- return true;
- }
- }
- return false;
- }
-
- public void setSearchText(String text) {
- searchText.setText(text);
- }
-
- @Override
- public TracSearchFilter getFilter() {
- String text = getSearchText();
- if (text.length() == 0) {
- return null;
- }
-
- TracSearchFilter newFilter = new TracSearchFilter(getFieldName());
- newFilter.setOperator(getCondition());
- newFilter.addValue(getSearchText());
- return newFilter;
- }
-
- @Override
- public void setFilter(TracSearchFilter filter) {
- setCondition(filter.getOperator());
- java.util.List<String> values = filter.getValues();
- setSearchText(values.get(0));
- }
-
- }
-
- private class ListSearchField extends SearchField {
-
- private List list;
-
- public ListSearchField(String fieldName) {
- super(fieldName);
- }
-
- public void setValues(Object[] items) {
- // preserve selected values
- TracSearchFilter filter = getFilter();
-
- list.removeAll();
- if (items != null) {
- list.setEnabled(true);
- for (Object item : items) {
- list.add(item.toString());
- }
-
- // restore selected values
- if (filter != null) {
- setFilter(filter);
- }
- } else {
- list.setEnabled(false);
- }
- }
-
- public void createControls(Composite parent, int height) {
- list = new List(parent, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
- GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.heightHint = height;
- list.setLayoutData(gd);
- }
-
- @Override
- public TracSearchFilter getFilter() {
- int[] indicies = list.getSelectionIndices();
- if (indicies.length == 0) {
- return null;
- }
-
- TracSearchFilter newFilter = new TracSearchFilter(getFieldName());
- newFilter.setOperator(CompareOperator.IS);
- for (int i : indicies) {
- newFilter.addValue(list.getItem(i));
- }
- return newFilter;
- }
-
- @Override
- public void setFilter(TracSearchFilter filter) {
- list.deselectAll();
- java.util.List<String> values = filter.getValues();
- for (String item : values) {
- int i = list.indexOf(item);
- if (i != -1) {
- list.select(i);
- } else {
- list.add(item, 0);
- list.select(0);
- }
- }
- }
-
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryWizardPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryWizardPage.java
deleted file mode 100644
index 0d8925598..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryWizardPage.java
+++ /dev/null
@@ -1,445 +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.trac.ui.wizard;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.mylar.context.core.MylarStatusHandler;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracRepositoryQuery;
-import org.eclipse.mylar.internal.trac.core.model.TracSearch;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter;
-import org.eclipse.mylar.internal.trac.core.model.TracSearchFilter.CompareOperator;
-import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery;
-import org.eclipse.mylar.tasks.core.TaskRepository;
-import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-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.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Steffen Pingel
- */
-public class TracQueryWizardPage extends WizardPage {
-
- private static final String TITLE = "New Trac Query";
-
- private static final String DESCRIPTION = "Add search filters to define query.";
-
- private static final String TITLE_QUERY_TITLE = "Query Title";
-
- private TaskRepository repository;
-
- private TracRepositoryQuery query;
-
- private Text titleText;
-
- private Composite scrollComposite;
-
- /* Maintain order of criterions in order to be able to restore this later. */
- private Set<SearchField> visibleSearchFields = new LinkedHashSet<SearchField>();
-
- private List<SearchField> searchFields;
-
- public TracQueryWizardPage(TaskRepository repository, AbstractRepositoryQuery query) {
- super(TITLE);
-
- this.repository = repository;
- this.query = (TracRepositoryQuery) query;
-
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- }
-
- public TracQueryWizardPage(TaskRepository repository) {
- this(repository, null);
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayoutData(new GridData());
- composite.setLayout(new GridLayout(1, false));
-
- createTitleGroup(composite);
-
- ScrolledComposite scrolledComposite = new ScrolledComposite(composite, SWT.V_SCROLL | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- scrolledComposite.setExpandHorizontal(true);
- scrolledComposite.setLayoutData(gd);
-
- scrollComposite = new Composite(scrolledComposite, SWT.None);
- scrolledComposite.setContent(scrollComposite);
- scrollComposite.setLayout(new GridLayout(4, false));
-
- createAddFilterGroup(composite);
-
- if (query != null) {
- titleText.setText(query.getDescription());
- restoreSearchFilterFromQuery(query);
- }
-
- setControl(composite);
- }
-
- private void restoreSearchFilterFromQuery(TracRepositoryQuery query) {
- TracSearch search = query.getTracSearch();
- List<TracSearchFilter> filters = search.getFilters();
- for (TracSearchFilter filter : filters) {
- SearchField field = getSearchField(filter.getFieldName());
- if (field != null) {
- showSearchField(field, filter);
- } else {
- MylarStatusHandler.log("Ignoring invalid search filter: " + filter, this);
- }
- }
- }
-
- private SearchField getSearchField(String fieldName) {
- for (SearchField searchField : searchFields) {
- if (searchField.getFieldName().equals(fieldName)) {
- return searchField;
- }
- }
- return null;
- }
-
- private void createAddFilterGroup(Composite parent) {
- GridLayout layout;
- GridData gd;
-
- Composite composite = new Composite(parent, SWT.NONE);
- layout = new GridLayout(2, false);
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- composite.setLayoutData(gd);
-
- Label label = new Label(composite, SWT.LEFT);
- label.setText("Select to add filter: ");
-
- // condition
- final Combo filterCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
-
- searchFields = new ArrayList<SearchField>();
- searchFields.add(new TextSearchField("summary", "Summary"));
- searchFields.add(new TextSearchField("reporter", "Reporter"));
- searchFields.add(new TextSearchField("owner", "Owner"));
- searchFields.add(new TextSearchField("type", "Type"));
- searchFields.add(new TextSearchField("status", "Status"));
- searchFields.add(new TextSearchField("priority", "Priority"));
- searchFields.add(new TextSearchField("milestone", "Milestone"));
- searchFields.add(new TextSearchField("component", "Component"));
- searchFields.add(new TextSearchField("version", "Version"));
- searchFields.add(new TextSearchField("resoution", "Resolution"));
- searchFields.add(new TextSearchField("keywords", "Keywords"));
- searchFields.add(new TextSearchField("cc", "CC"));
-
- filterCombo.add("");
- for (SearchField field : searchFields) {
- filterCombo.add(field.getDisplayName());
- }
-
- filterCombo.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- if (filterCombo.getText().length() > 0) {
- SearchField field = searchFields.get(filterCombo.getSelectionIndex() - 1);
- showSearchField(field, null);
- filterCombo.setText("");
- }
- }
- });
- }
-
- private void createTitleGroup(Composite composite) {
- Group group = new Group(composite, SWT.NONE);
- group.setText(TITLE_QUERY_TITLE);
- group.setLayout(new GridLayout(1, false));
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- group.setLayoutData(gd);
-
- titleText = new Text(group, SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- titleText.setLayoutData(gd);
-
- titleText.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- // ignore
- }
-
- public void keyReleased(KeyEvent e) {
- getContainer().updateButtons();
- }
- });
- }
-
- @Override
- public boolean isPageComplete() {
- if (titleText != null && titleText.getText().length() > 0) {
- return true;
- }
- return false;
- }
-
- private void showSearchField(SearchField field, TracSearchFilter filter) {
- assert filter == null || !visibleSearchFields.contains(field);
-
- if (!visibleSearchFields.contains(field)) {
- field.createControls(scrollComposite, filter);
- visibleSearchFields.add(field);
- } else {
- field.addControl(scrollComposite);
- }
- updateScrollPane();
- }
-
- public String getQueryUrl(String repsitoryUrl) {
- TracSearch search = new TracSearch();
- for (SearchField field : visibleSearchFields) {
- search.addFilter(field.getFilter());
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append(repsitoryUrl);
- sb.append(ITracClient.QUERY_URL);
- sb.append(search.toUrl());
- return sb.toString();
- }
-
- public TracRepositoryQuery getQuery() {
- return new TracRepositoryQuery(repository.getUrl(), getQueryUrl(repository.getUrl()), titleText.getText(),
- TasksUiPlugin.getTaskListManager().getTaskList());
- }
-
- private void hideSearchField(SearchField field) {
- visibleSearchFields.remove(field);
- }
-
- private void updateScrollPane() {
- scrollComposite.setSize(scrollComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
- scrollComposite.layout();
- }
-
- private abstract class SearchField {
-
- protected String fieldName;
-
- private String displayName;
-
- public SearchField(String fieldName, String displayName) {
- this.fieldName = fieldName;
- this.displayName = displayName;
- }
-
- public abstract void createControls(Composite parent, TracSearchFilter filter);
-
- public abstract void addControl(Composite parent);
-
- public String getFieldName() {
- return fieldName;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public abstract TracSearchFilter getFilter();
-
- }
-
- private class TextSearchField extends SearchField {
-
- private CompareOperator[] compareOperators = { CompareOperator.CONTAINS, CompareOperator.CONTAINS_NOT,
- CompareOperator.BEGINS_WITH, CompareOperator.ENDS_WITH, CompareOperator.IS, CompareOperator.IS_NOT, };
-
- private List<TextCriterion> criterions;
-
- public TextSearchField(String fieldName, String displayName) {
- super(fieldName, displayName);
- }
-
- public void createControls(Composite parent, TracSearchFilter filter) {
- if (filter != null) {
- TextCriterion first = addCriterion(parent);
- first.setCondition(filter.getOperator());
- List<String> values = filter.getValues();
- if (!values.isEmpty()) {
- first.setSearchText(values.get(0));
- for (int i = 1; i < values.size(); i++) {
- TextCriterion criterion = addCriterion(parent);
- criterion.setSearchText(values.get(1));
- }
- }
- } else {
- addCriterion(parent);
- }
-
- }
-
- public void addControl(Composite parent) {
- addCriterion(parent);
- }
-
- public TextCriterion addCriterion(Composite parent) {
- TextCriterion criterion = new TextCriterion();
- if (criterions == null) {
- criterions = new ArrayList<TextCriterion>();
- criterion.createControl(parent);
- } else {
- criterion.createControl(parent, criterions.get(criterions.size() - 1));
- }
- criterions.add(criterion);
- return criterion;
- }
-
- @Override
- public TracSearchFilter getFilter() {
- TracSearchFilter newFilter = new TracSearchFilter(getFieldName());
- newFilter.setOperator(criterions.get(0).getCondition());
- for (TextCriterion criterion : criterions) {
- newFilter.addValue(criterion.getSearchText());
- }
- return newFilter;
- }
-
- public void removeCriterion(TextCriterion criterion) {
- int i = criterions.indexOf(criterion);
- if (i == -1) {
- throw new RuntimeException();
- }
- if (i == 0) {
- // the first criterion is special since it contains the compare
- // operator combo
- if (criterions.size() > 1) {
- // copy the value from the second criterion to the first
- TextCriterion sourceCriterion = criterions.get(1);
- criterion.searchText.setText(sourceCriterion.searchText.getText());
- removeCriterionByIndex(1);
- } else {
- // no more criterions, remove all controls
- removeCriterionByIndex(0);
- hideSearchField(this);
- }
- } else {
- removeCriterionByIndex(i);
- }
- }
-
- private void removeCriterionByIndex(int i) {
- criterions.get(i).remove();
- criterions.remove(i);
- updateScrollPane();
- }
-
- private class TextCriterion {
-
- private Combo conditionCombo;
-
- private Text searchText;
-
- private Label label;
-
- private Button removeButton;
-
- public void createControl(Composite parent) {
- label = new Label(parent, SWT.LEFT);
- label.setText(getDisplayName() + ": ");
-
- conditionCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
- for (CompareOperator op : compareOperators) {
- conditionCombo.add(op.toString());
- }
- conditionCombo.setText(compareOperators[0].toString());
-
- createSearchTextAndRemoveButton(parent);
- }
-
- public void createControl(Composite parent, TextCriterion top) {
- label = new Label(parent, SWT.RIGHT);
- GridData gd = new GridData();
- gd.horizontalAlignment = SWT.END;
- gd.horizontalSpan = 2;
- label.setLayoutData(gd);
- label.setText("or");
-
- createSearchTextAndRemoveButton(parent);
-
- label.moveBelow(top.removeButton);
- searchText.moveBelow(label);
- removeButton.moveBelow(searchText);
- }
-
- private void createSearchTextAndRemoveButton(Composite parent) {
- searchText = new Text(parent, SWT.BORDER);
- GridData gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL);
- searchText.setLayoutData(gd);
-
- removeButton = new Button(parent, SWT.PUSH);
- removeButton.setText("-");
- removeButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
- TextSearchField.this.removeCriterion(TextCriterion.this);
- }
- });
- }
-
- public void remove() {
- label.dispose();
- if (conditionCombo != null) {
- conditionCombo.dispose();
- }
- searchText.dispose();
- removeButton.dispose();
- }
-
- public CompareOperator getCondition() {
- return (conditionCombo != null) ? compareOperators[conditionCombo.getSelectionIndex()] : null;
- }
-
- public String getSearchText() {
- return searchText.getText();
- }
-
- public boolean setCondition(CompareOperator operator) {
- if (conditionCombo != null) {
- int i = conditionCombo.indexOf(operator.toString());
- if (i != -1) {
- conditionCombo.select(i);
- return true;
- }
- }
- return false;
- }
-
- public void setSearchText(String text) {
- searchText.setText(text);
- }
-
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java
deleted file mode 100644
index 0a8021415..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java
+++ /dev/null
@@ -1,225 +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.trac.ui.wizard;
-
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage;
-import org.eclipse.mylar.internal.trac.core.ITracClient;
-import org.eclipse.mylar.internal.trac.core.TracClientFactory;
-import org.eclipse.mylar.internal.trac.core.TracException;
-import org.eclipse.mylar.internal.trac.core.TracLoginException;
-import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
-import org.eclipse.mylar.internal.trac.ui.TracUiPlugin;
-import org.eclipse.mylar.tasks.core.RepositoryTemplate;
-import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnectorUi;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-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 Steffen Pingel
- */
-public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage {
-
- private static final String MESSAGE_FAILURE_UNKNOWN = "Unknown error occured. Check that server url and credentials are valid.";
-
- private static final String TITLE = "Trac Repository Settings";
-
- private static final String DESCRIPTION = "Example: http://trac.edgewall.org";
-
- private Combo accessTypeCombo;
-
- // private static RepositoryTemplate[] REPOSITORY_TEMPLATES = { new
- // RepositoryTemplate("Edgewall",
- // "http://trac.edgewall.org", Version.TRAC_0_9.toString(), null, null,
- // true),
- // // new TracRepositoryInfo("Mylar Trac Client",
- // // "http://mylar.eclipse.org/mylar-trac-client", true, Version.XML_RPC),
- // };
-
- /** Supported access types. */
- private Version[] versions;
-
- public TracRepositorySettingsPage(AbstractRepositoryConnectorUi repositoryUi) {
- super(TITLE, DESCRIPTION, repositoryUi);
-
- setNeedsAnonymousLogin(true);
- setNeedsEncoding(false);
- setNeedsTimeZone(false);
- }
-
- protected void createAdditionalControls(final Composite parent) {
-
- for (RepositoryTemplate template : connector.getTemplates()) {
- serverUrlCombo.add(template.label);
- }
- serverUrlCombo.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- String text = serverUrlCombo.getText();
- RepositoryTemplate template = connector.getTemplate(text);
- if (template != null) {
- repositoryLabelEditor.setStringValue(template.label);
- setUrl(template.repositoryUrl);
- setAnonymous(template.anonymous);
-
- try {
- Version version = Version.valueOf(template.version);
- setTracVersion(version);
- } catch (RuntimeException ex) {
- setTracVersion(Version.TRAC_0_9);
- }
-
- getContainer().updateButtons();
- return;
- }
- }
- });
-
- Label accessTypeLabel = new Label(parent, SWT.NONE);
- accessTypeLabel.setText("Access Type: ");
- accessTypeCombo = new Combo(parent, SWT.READ_ONLY);
-
- accessTypeCombo.add("Automatic (Use Validate Settings)");
- versions = Version.values();
- for (Version version : versions) {
- accessTypeCombo.add(version.toString());
- }
- if (repository != null) {
- setTracVersion(Version.fromVersion(repository.getVersion()));
- } else {
- setTracVersion(null);
- }
- accessTypeCombo.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- if (accessTypeCombo.getSelectionIndex() > 0) {
- setVersion(versions[accessTypeCombo.getSelectionIndex() - 1].name());
- }
- getWizard().getContainer().updateButtons();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- // ignore
- }
- });
- }
-
- @Override
- public boolean isPageComplete() {
- // make sure "Automatic" is not selected as a version
- return super.isPageComplete() && accessTypeCombo != null && accessTypeCombo.getSelectionIndex() != 0;
- }
-
- @Override
- protected boolean isValidUrl(String name) {
- if ((name.startsWith(URL_PREFIX_HTTPS) || name.startsWith(URL_PREFIX_HTTP)) && !name.endsWith("/")) {
- try {
- new URL(name);
- return true;
- } catch (MalformedURLException e) {
- }
- }
- return false;
- }
-
- public Version getTracVersion() {
- if (accessTypeCombo.getSelectionIndex() == 0) {
- return null;
- } else {
- return versions[accessTypeCombo.getSelectionIndex() - 1];
- }
- }
-
- public void setTracVersion(Version version) {
- if (version == null) {
- // select "Automatic"
- accessTypeCombo.select(0);
- } else {
- int i = accessTypeCombo.indexOf(version.toString());
- if (i != -1) {
- accessTypeCombo.select(i);
- }
- setVersion(version.name());
- }
- }
-
- protected void validateSettings() {
-
- try {
- final String serverUrl = getServerUrl();
- final Version version = getTracVersion();
- final String username = getUserName();
- final String password = getPassword();
-
- final Version[] result = new Version[1];
- getWizard().getContainer().run(true, false, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- monitor.beginTask("Validating server settings", IProgressMonitor.UNKNOWN);
- try {
- if (version != null) {
- ITracClient client = TracClientFactory.createClient(serverUrl, version, username, password);
- client.validate();
- } else {
- result[0] = TracClientFactory.probeClient(serverUrl, username, password);
- }
-
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- });
-
- if (username.length() > 0) {
- MessageDialog.openInformation(null, TracUiPlugin.TITLE_MESSAGE_DIALOG,
- "Authentication credentials are valid.");
- } else {
- MessageDialog.openInformation(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, "Repository is valid.");
- }
-
- if (result[0] != null) {
- setTracVersion(result[0]);
- }
- } catch (InvocationTargetException e) {
- if (e.getCause() instanceof MalformedURLException) {
- MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, "Repository url is invalid.");
- } else if (e.getCause() instanceof TracLoginException) {
- MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG,
- "Unable to authenticate with repository. Login credentials invalid.");
- } else if (e.getCause() instanceof TracException) {
- String message = "No Trac repository found at url";
- if (e.getCause().getMessage() != null) {
- message += ": " + e.getCause().getMessage();
- }
- MessageDialog
- .openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, message);
- } else {
- MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, MESSAGE_FAILURE_UNKNOWN);
- }
- } catch (InterruptedException e) {
- MessageDialog.openWarning(null, TracUiPlugin.TITLE_MESSAGE_DIALOG, MESSAGE_FAILURE_UNKNOWN);
- }
-
- super.getWizard().getContainer().updateButtons();
- }
-} \ No newline at end of file

Back to the top