Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 46620 Details for
Bug 143567
support automatic duplicate detection before submitting reports
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Add duplicate detection
add-duplicate-detection.txt (text/plain), 70.57 KB, created by
Jeff Pound
on 2006-07-20 22:58:31 EDT
(
hide
)
Description:
Add duplicate detection
Filename:
MIME Type:
Creator:
Jeff Pound
Created:
2006-07-20 22:58:31 EDT
Size:
70.57 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylar.bugzilla.tests >Index: src/org/eclipse/mylar/bugzilla/tests/headless/BugzillaDuplicateDetectionTest.java >=================================================================== >RCS file: src/org/eclipse/mylar/bugzilla/tests/headless/BugzillaDuplicateDetectionTest.java >diff -N src/org/eclipse/mylar/bugzilla/tests/headless/BugzillaDuplicateDetectionTest.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/bugzilla/tests/headless/BugzillaDuplicateDetectionTest.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+/******************************************************************************* >+ * Copyright (c) 2004 - 2006 University Of British Columbia and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and 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.util.List; >+ >+import junit.framework.TestCase; >+ >+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; >+import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; >+import org.eclipse.mylar.internal.bugzilla.ui.wizard.NewBugzillaReportWizard; >+import org.eclipse.mylar.internal.tasks.ui.wizards.DuplicateDetectionData; >+import org.eclipse.mylar.tasks.core.AbstractRepositoryTask; >+import org.eclipse.mylar.tasks.core.TaskRepository; >+ >+/** >+ * >+ * @author Jeff Pound >+ */ >+public class BugzillaDuplicateDetectionTest extends TestCase { >+ >+ private TaskRepository repository; >+ >+ @Override >+ protected void setUp() throws Exception { >+ super.setUp(); >+ repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL); >+ } >+ >+ public void testDuplicateDetection() throws Exception { >+ String stackTrace = "java.lang.NullPointerException\njeff.testing.stack.trace.functionality"; >+ String fakeStackTrace = "thisisnotreallyastacktrace"; >+ int numMatches = 2; >+ >+ NewBugzillaReportWizard wizard = new NewBugzillaReportWizard(repository, null); >+ DuplicateDetectionData dupData = new DuplicateDetectionData(); >+ dupData.setStackTrace(stackTrace); >+ >+ List<AbstractRepositoryTask> tasks = wizard.searchForDuplicates(dupData); >+ assertNotNull(tasks); >+ assertEquals(numMatches, tasks.size()); >+ >+ dupData.setStackTrace(fakeStackTrace); >+ tasks = wizard.searchForDuplicates(dupData); >+ assertNotNull(tasks); >+ assertEquals(0, tasks.size()); >+ } >+} >#P org.eclipse.mylar.tasks.ui >Index: .refactorings/2006/7/29/refactorings.index >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/.refactorings/2006/7/29/refactorings.index,v >retrieving revision 1.6 >diff -u -r1.6 refactorings.index >--- .refactorings/2006/7/29/refactorings.index 20 Jul 2006 01:13:39 -0000 1.6 >+++ .refactorings/2006/7/29/refactorings.index 21 Jul 2006 02:51:06 -0000 >@@ -1,7 +1,27 @@ >+1153336811591 Extract constant 'PAGE_MESSAGE' >+1153449640944 Rename field 'PAGE_MESSAGE' >+1153449614236 Rename field 'PAGE_MESSAGE' >+1153449255563 Extract constant 'PAGE_MESSAGE' >+1153428756437 Extract local variable 'toolTip' >+1153425711932 Rename local variable 'task' >+1153421109772 Rename method 'getOpenDuplicates' >+1153420907136 Rename local variable 'findDups' >+1153420896786 Rename local variable 'findDups' >+1153333894241 Rename field 'MAX_LINES' >+1153331525833 Rename method 'formatTreeItem' >+1153284985053 Rename field 'duplicateTable' >+1153282340626 Extract method 'packTable' >+1153282009126 Extract local variable 'wizardPage' >+1153280662552 Rename field 'table' >+1153259010314 Rename local variable 'par' >+1153259005916 Rename local variable 'parent' >+1153253087544 Rename field 'TITLE' >+1153252992402 Rename type 'DisplayRelatedReportsPagea' >+1153251783149 Rename local variable 'stackTraceComposite' >+1153250472070 Rename type 'IDuplicateDetectingReportWizard' >+1153250308422 Rename method 'addPage' >+1153243073460 Rename local variable 'container' >+1153243032746 Rename local variable 'parent' >+1153242560562 Extract method 'createTableViewer' > 1153144519218 Rename type 'TaskListPreferencePage' >-1153343986885 Rename method 'createFileSelectionControl' >-1153330764104 Rename method 'addCustomProperties' >-1153253684609 Rename type 'TasksUitExtensionReader' >-1153249815125 Rename field 'ELMNT_TMPL_SERVERURL' >-1153249484093 Rename field 'ELMNT_TMPL_TASKURLPREFIX' > 1153121623921 Rename type 'RepositoryAwareStatusNotifier' >Index: .refactorings/2006/7/29/refactorings.history >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/.refactorings/2006/7/29/refactorings.history,v >retrieving revision 1.6 >diff -u -r1.6 refactorings.history >--- .refactorings/2006/7/29/refactorings.history 20 Jul 2006 01:13:39 -0000 1.6 >+++ .refactorings/2006/7/29/refactorings.history 21 Jul 2006 02:51:06 -0000 >@@ -1,10 +1,30 @@ > <?xml version="1.0" encoding="utf-8"?> > <session version="1.0"> >+<refactoring comment="Extract constant 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.PAGE_MESSAGE' from expression '"If you see a duplicate candidate select it to open and comment. If not press finish to create new one."' - Constant name: 'PAGE_MESSAGE' - Constant expression: '"If you see a duplicate candidate select it to open and comment. If not press finish to create new one."' - Declared visibility: 'private' - Replace occurrences of expression with constant" description="Extract constant 'PAGE_MESSAGE'" flags="786432" id="org.eclipse.jdt.ui.extract.constant" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java" name="PAGE_MESSAGE" qualify="false" replace="true" selection="2128 105" stamp="1153336811591" version="1.0" visibility="2"/> >+<refactoring comment="Rename field 'MAX_LINES' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' to 'LINES_PER_ITEM' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.MAX_LINES' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.LINES_PER_ITEM' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'MAX_LINES'" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java[DisplayRelatedReportsPage^MAX_LINES" name="LINES_PER_ITEM" references="true" setter="false" stamp="1153333894241" textual="false" version="1.0"/> >+<refactoring comment="Rename method 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.formatTreeItem(...)' to 'formatTreeText' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.formatTreeItem(...)' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.formatTreeText(...)' - Update references to refactored element" delegate="false" deprecate="true" description="Rename method 'formatTreeItem'" flags="589826" id="org.eclipse.jdt.ui.rename.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java[DisplayRelatedReportsPage~formatTreeItem~QString;~I" name="formatTreeText" references="true" stamp="1153331525833" version="1.0"/> >+<refactoring comment="Rename field 'duplicateTable' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' to 'duplicatesTree' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.duplicateTable' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.duplicatesTree' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'duplicateTable'" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java[DisplayRelatedReportsPage^duplicateTable" name="duplicatesTree" references="true" setter="false" stamp="1153284985053" textual="false" version="1.0"/> >+<refactoring comment="Extract method 'private void packTable()' from 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl()' to 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' - Method name: 'packTable' - Destination type: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' - Declared visibility: 'private'" comments="false" description="Extract method 'packTable'" destination="0" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java" name="packTable" replace="false" selection="3599 91" stamp="1153282340626" version="1.0" visibility="2"/> >+<refactoring comment="Extract local variable 'wizardPage' from expression 'super.getNextPage()' - Variable name: 'wizardPage' - Destination method: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.getNextPage()' - Variable expression: 'super.getNextPage()' - Replace occurrences of expression with variable" description="Extract local variable 'wizardPage'" final="false" id="org.eclipse.jdt.ui.extract.temp" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{FindRelatedReportsPage.java" name="wizardPage" replace="true" selection="2851 19" stamp="1153282009126" version="1.0"/> >+<refactoring comment="Rename field 'table' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' to 'duplicateTable' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.table' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.duplicateTable' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'table'" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java[DisplayRelatedReportsPage^table" name="duplicateTable" references="true" setter="false" stamp="1153280662552" textual="false" version="1.0"/> >+<refactoring comment="Rename local variable 'par' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl(...)' to 'parent' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl(Composite).par' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl(Composite).parent' - Update references to refactored element" description="Rename local variable 'par'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java" name="parent" references="true" selection="1282 3" stamp="1153259010314" version="1.0"/> >+<refactoring comment="Rename local variable 'parent' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl(...)' to 'composite' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl(Composite).parent' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.createControl(Composite).composite' - Update references to refactored element" description="Rename local variable 'parent'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java" name="composite" references="true" selection="1301 6" stamp="1153259005916" version="1.0"/> >+<refactoring comment="Rename field 'TITLE' in 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage' to 'PAGE_TITLE' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.TITLE' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.PAGE_TITLE' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'TITLE'" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{FindRelatedReportsPage.java[FindRelatedReportsPage^TITLE" name="PAGE_TITLE" references="true" setter="false" stamp="1153253087544" textual="false" version="1.0"/> >+<refactoring comment="Rename type 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPagea' to 'DisplayRelatedReportsPage' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPagea' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' - Update references to refactored element - Update textual occurrences in comments and strings" description="Rename type 'DisplayRelatedReportsPagea'" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPagea.java[DisplayRelatedReportsPagea" matchStrategy="1" name="DisplayRelatedReportsPage" qualified="false" references="true" similarDeclarations="false" stamp="1153252992402" textual="false" version="1.0"/> >+<refactoring comment="Rename local variable 'stackTraceComposite' in 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.createControl(...)' to 'composite' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.createControl(Composite).stackTraceComposite' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.createControl(Composite).composite' - Update references to refactored element" description="Rename local variable 'stackTraceComposite'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{FindRelatedReportsPage.java" name="composite" references="true" selection="2029 19" stamp="1153251783149" version="1.0"/> >+<refactoring comment="Rename type 'org.eclipse.mylar.internal.tasks.ui.wizards.IDuplicateDetectingReportWizard' to 'AbstractDuplicateDetectingReportWizard' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.IDuplicateDetectingReportWizard' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard' - Update references to refactored element - Update textual occurrences in comments and strings" description="Rename type 'IDuplicateDetectingReportWizard'" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{IDuplicateDetectingReportWizard.java[IDuplicateDetectingReportWizard" matchStrategy="1" name="AbstractDuplicateDetectingReportWizard" qualified="false" references="true" similarDeclarations="false" stamp="1153250472070" textual="false" version="1.0"/> >+<refactoring comment="Rename method 'org.eclipse.mylar.internal.tasks.ui.wizards.IDuplicateDetectingReportWizard.addPage(...)' to 'queuePage' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.IDuplicateDetectingReportWizard.addPage(...)' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.IDuplicateDetectingReportWizard.queuePage(...)' - Update references to refactored element" delegate="false" deprecate="true" description="Rename method 'addPage'" flags="589830" id="org.eclipse.jdt.ui.rename.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{IDuplicateDetectingReportWizard.java[IDuplicateDetectingReportWizard~addPage~QIWizardPage;" name="queuePage" references="true" stamp="1153250308422" version="1.0"/> >+<refactoring comment="Rename local variable 'container' in 'org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskPage.createControl(...)' to 'parent' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskPage.createControl(Composite).container' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskPage.createControl(Composite).parent' - Update references to refactored element" description="Rename local variable 'container'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{NewRepositoryTaskPage.java" name="parent" references="true" selection="1846 9" stamp="1153243073460" version="1.0"/> >+<refactoring comment="Rename local variable 'parent' in 'org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskPage.createControl(...)' to 'container' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskPage.createControl(Composite).parent' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskPage.createControl(Composite).container' - Update references to refactored element" description="Rename local variable 'parent'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{NewRepositoryTaskPage.java" name="container" references="true" selection="1846 6" stamp="1153243032746" version="1.0"/> >+<refactoring comment="Extract method 'protected void createTableViewer(Composite container)' from 'org.eclipse.mylar.internal.tasks.ui.wizards.SelectRepositoryPage.createControl()' to 'org.eclipse.mylar.internal.tasks.ui.wizards.SelectRepositoryPage' - Method name: 'createTableViewer' - Destination type: 'org.eclipse.mylar.internal.tasks.ui.wizards.SelectRepositoryPage' - Declared visibility: 'protected'" comments="false" description="Extract method 'createTableViewer'" destination="0" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{SelectRepositoryPage.java" name="createTableViewer" replace="false" selection="3645 1048" stamp="1153242560562" version="1.0" visibility="4"/> > <refactoring comment="Rename type 'org.eclipse.mylar.internal.tasks.ui.preferences.TaskListPreferencePage' to 'TasksPreferencePage' - Original element: 'org.eclipse.mylar.internal.tasks.ui.preferences.TaskListPreferencePage' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.preferences.TasksPreferencePage' - Update references to refactored element - Rename similarly named elements - Update fully qualified names in *.xml, *.mf files - Update textual occurrences in comments and strings" description="Rename type 'TaskListPreferencePage'" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src<org.eclipse.mylar.internal.tasks.ui.preferences{TaskListPreferencePage.java[TaskListPreferencePage" matchStrategy="1" name="TasksPreferencePage" patterns="*.xml, *.mf" qualified="true" references="true" similarDeclarations="true" stamp="1153144519218" textual="false" version="1.0"/> > <refactoring comment="Rename type 'org.eclipse.mylar.internal.tasks.ui.RepositoryAwareStatusNotifier' to 'RepositoryAwareStatusHandler' - Original element: 'org.eclipse.mylar.internal.tasks.ui.RepositoryAwareStatusNotifier' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.RepositoryAwareStatusHandler' - Update references to refactored element - Rename similarly named elements - Update fully qualified names in *.xml, *.mf files - Update textual occurrences in comments and strings" description="Rename type 'RepositoryAwareStatusNotifier'" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src<org.eclipse.mylar.internal.tasks.ui{RepositoryAwareStatusNotifier.java[RepositoryAwareStatusNotifier" matchStrategy="1" name="RepositoryAwareStatusHandler" patterns="*.xml, *.mf" qualified="true" references="true" similarDeclarations="true" stamp="1153121623921" textual="false" version="1.0"/> >-<refactoring comment="Rename field 'ELMNT_TMPL_TASKURLPREFIX' in 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader' to 'ELMNT_TMPL_TASKPREFIXURL' - Original element: 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader.ELMNT_TMPL_TASKURLPREFIX' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader.ELMNT_TMPL_TASKPREFIXURL' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'ELMNT_TMPL_TASKURLPREFIX'" flags="589830" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.util{TasksUitExtensionReader.java[TasksUitExtensionReader^ELMNT_TMPL_TASKURLPREFIX" name="ELMNT_TMPL_TASKPREFIXURL" references="true" setter="false" stamp="1153249484093" textual="true" version="1.0"/> >-<refactoring comment="Rename field 'ELMNT_TMPL_SERVERURL' in 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader' to 'ELMNT_TMPL_REPOSITORYURL' - Original element: 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader.ELMNT_TMPL_SERVERURL' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader.ELMNT_TMPL_REPOSITORYURL' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'ELMNT_TMPL_SERVERURL'" flags="589830" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.util{TasksUitExtensionReader.java[TasksUitExtensionReader^ELMNT_TMPL_SERVERURL" name="ELMNT_TMPL_REPOSITORYURL" references="true" setter="false" stamp="1153249815125" textual="true" version="1.0"/> >-<refactoring comment="Rename type 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader' to 'TasksUiExtensionReader' - Original element: 'org.eclipse.mylar.internal.tasks.ui.util.TasksUitExtensionReader' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.util.TasksUiExtensionReader' - Update references to refactored element - Update fully qualified names in *.xml files - Update textual occurrences in comments and strings" description="Rename type 'TasksUitExtensionReader'" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src<org.eclipse.mylar.internal.tasks.ui.util{TasksUitExtensionReader.java[TasksUitExtensionReader" matchStrategy="1" name="TasksUiExtensionReader" patterns="*.xml" qualified="true" references="true" similarDeclarations="false" stamp="1153253684609" textual="true" version="1.0"/> >-<refactoring comment="Rename method 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage.addCustomProperties(...)' to 'updateProperties' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage.addCustomProperties(...)' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractRepositorySettingsPage.updateProperties(...)' - Update references to refactored element" delegate="false" deprecate="true" description="Rename method 'addCustomProperties'" flags="589830" id="org.eclipse.jdt.ui.rename.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{AbstractRepositorySettingsPage.java[AbstractRepositorySettingsPage~addCustomProperties~QTaskRepository;" name="updateProperties" references="true" stamp="1153330764104" version="1.0"/> >-<refactoring comment="Rename method 'org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataImportWizardPage.createFileSelectionControl(...)' to 'createContentSelectionControl' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataImportWizardPage.createFileSelectionControl(...)' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.TaskDataImportWizardPage.createContentSelectionControl(...)' - Update references to refactored element" delegate="false" deprecate="true" description="Rename method 'createFileSelectionControl'" flags="589826" id="org.eclipse.jdt.ui.rename.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{TaskDataImportWizardPage.java[TaskDataImportWizardPage~createFileSelectionControl~QComposite;" name="createContentSelectionControl" references="true" stamp="1153343986885" version="1.0"/> >+<refactoring comment="Rename local variable 'findDups' in 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.getOpenDuplicates()' to 'displayDups' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.getOpenDuplicates().findDups' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.getOpenDuplicates().displayDups' - Update references to refactored element" description="Rename local variable 'findDups'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{AbstractDuplicateDetectingReportWizard.java" name="displayDups" references="true" selection="1543 8" stamp="1153420896786" version="1.0"/> >+<refactoring comment="Rename local variable 'findDups' in 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.openDuplicates()' to 'displayDups' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.openDuplicates().findDups' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.openDuplicates().displayDups' - Update references to refactored element" description="Rename local variable 'findDups'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{AbstractDuplicateDetectingReportWizard.java" name="displayDups" references="true" selection="1761 8" stamp="1153420907136" version="1.0"/> >+<refactoring comment="Rename method 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.getOpenDuplicates()' to 'getSelectedDuplicates' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.getOpenDuplicates()' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.AbstractDuplicateDetectingReportWizard.getSelectedDuplicates()' - Update references to refactored element" delegate="false" deprecate="true" description="Rename method 'getOpenDuplicates'" flags="589830" id="org.eclipse.jdt.ui.rename.method" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{AbstractDuplicateDetectingReportWizard.java[AbstractDuplicateDetectingReportWizard~getOpenDuplicates" name="getSelectedDuplicates" references="true" stamp="1153421109772" version="1.0"/> >+<refactoring comment="Rename local variable 'task' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.setRelatedTasks(...)' to 'taskData' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.setRelatedTasks(List<AbstractRepositoryTask>).task' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.setRelatedTasks(List<AbstractRepositoryTask>).taskData' - Update references to refactored element" description="Rename local variable 'task'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java" name="taskData" references="true" selection="11025 4" stamp="1153425711932" version="1.0"/> >+<refactoring comment="Extract local variable 'toolTip' from expression '"Report " + taskData.getId() + " - Created on "+ taskData.getCreated()+ " by "+ taskData.getReporter()+ " Assigned to "+ taskData.getAssignedTo()' - Variable name: 'toolTip' - Destination method: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.setRelatedTasks()' - Variable expression: '"Report " + taskData.getId() + " - Created on "+ taskData.getCreated()+ " by "+ taskData.getReporter()+ " Assigned to "+ taskData.getAssignedTo()' - Replace occurrences of expression with variable" description="Extract local variable 'toolTip'" final="false" id="org.eclipse.jdt.ui.extract.temp" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java" name="toolTip" replace="true" selection="8519 155" stamp="1153428756437" version="1.0"/> >+<refactoring comment="Extract constant 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.PAGE_MESSAGE' from expression '"Enter the stack trace to search for, you can trim the stack trace to make your search more general"' - Constant name: 'PAGE_MESSAGE' - Constant expression: '"Enter the stack trace to search for, you can trim the stack trace to make your search more general"' - Declared visibility: 'private' - Replace occurrences of expression with constant" description="Extract constant 'PAGE_MESSAGE'" flags="786432" id="org.eclipse.jdt.ui.extract.constant" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{FindRelatedReportsPage.java" name="PAGE_MESSAGE" qualify="false" replace="true" selection="1515 0" stamp="1153449255563" version="1.0" visibility="2"/> >+<refactoring comment="Rename field 'PAGE_MESSAGE' in 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage' to 'PAGE_DESCRIPTION' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.PAGE_MESSAGE' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.FindRelatedReportsPage.PAGE_DESCRIPTION' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'PAGE_MESSAGE'" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{FindRelatedReportsPage.java[FindRelatedReportsPage^PAGE_MESSAGE" name="PAGE_DESCRIPTION" references="true" setter="false" stamp="1153449614236" textual="false" version="1.0"/> >+<refactoring comment="Rename field 'PAGE_MESSAGE' in 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage' to 'PAGE_DESCRIPTION' - Original element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.PAGE_MESSAGE' - Renamed element: 'org.eclipse.mylar.internal.tasks.ui.wizards.DisplayRelatedReportsPage.PAGE_DESCRIPTION' - Update references to refactored element - Update textual occurrences in comments and strings" delegate="false" deprecate="true" description="Rename field 'PAGE_MESSAGE'" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src<org.eclipse.mylar.internal.tasks.ui.wizards{DisplayRelatedReportsPage.java[DisplayRelatedReportsPage^PAGE_MESSAGE" name="PAGE_DESCRIPTION" references="true" setter="false" stamp="1153449640944" textual="false" version="1.0"/> > </session> >Index: src/org/eclipse/mylar/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java,v >retrieving revision 1.9 >diff -u -r1.9 AbstractRepositoryTaskEditor.java >--- src/org/eclipse/mylar/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java 21 Jul 2006 01:19:34 -0000 1.9 >+++ src/org/eclipse/mylar/internal/tasks/ui/editors/AbstractRepositoryTaskEditor.java 21 Jul 2006 02:51:10 -0000 >@@ -1872,6 +1872,7 @@ > > public void setSummaryText(String text) { > this.summaryText.setText(text); >+ handleSummaryEvent(); > } > > public void setDescriptionText(String text) { >Index: src/org/eclipse/mylar/internal/tasks/ui/actions/NewTaskFromErrorAction.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/actions/NewTaskFromErrorAction.java,v >retrieving revision 1.1 >diff -u -r1.1 NewTaskFromErrorAction.java >--- src/org/eclipse/mylar/internal/tasks/ui/actions/NewTaskFromErrorAction.java 14 Jul 2006 15:39:07 -0000 1.1 >+++ src/org/eclipse/mylar/internal/tasks/ui/actions/NewTaskFromErrorAction.java 21 Jul 2006 02:51:06 -0000 >@@ -17,9 +17,10 @@ > import org.eclipse.jface.viewers.ISelectionProvider; > import org.eclipse.jface.viewers.SelectionChangedEvent; > import org.eclipse.jface.viewers.TreeViewer; >-import org.eclipse.jface.wizard.IWizard; > import org.eclipse.jface.wizard.WizardDialog; > 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.wizards.DuplicateDetectionData; > import org.eclipse.mylar.internal.tasks.ui.wizards.NewRepositoryTaskWizard; > import org.eclipse.pde.internal.runtime.logview.LogEntry; > import org.eclipse.swt.widgets.Shell; >@@ -41,12 +42,13 @@ > private TreeViewer treeViewer; > > public void run() { >-// boolean offline = MylarTaskListPlugin.getDefault().getPreferenceStore().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE); >-// if (offline) { >-// MessageDialog.openInformation(null, "Unable to create bug report", >-// "Unable to create a new bug report since you are currently offline"); >-// return; >-// } >+ // boolean offline = >+ // MylarTaskListPlugin.getDefault().getPreferenceStore().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE); >+ // if (offline) { >+ // MessageDialog.openInformation(null, "Unable to create bug report", >+ // "Unable to create a new bug report since you are currently offline"); >+ // return; >+ // } > > TreeItem[] items = treeViewer.getTree().getSelection(); > LogEntry selection = null; >@@ -54,7 +56,14 @@ > selection = (LogEntry) items[0].getData(); > } > >- IWizard wizard = new NewRepositoryTaskWizard(); >+ NewRepositoryTaskWizard wizard = new NewRepositoryTaskWizard(); >+ if (selection != null) { >+ DuplicateDetectionData dup = new DuplicateDetectionData(); >+ dup.setStackTrace(((selection.getStack() == null) ? "no stack trace available" : selection.getStack())); >+ // getSummaryString(selection); >+ >+ wizard.setDuplicateData(dup); >+ } > > Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); > if (wizard != null && shell != null && !shell.isDisposed()) { >@@ -74,9 +83,10 @@ > System.err.println(e); > } > >- if (selection == null) { >+ if (selection == null || editor.getEditorInput() instanceof ExistingBugEditorInput) { > return; > } >+ > editor.setSummaryText(selection.getSeverityText() + ": \"" + selection.getMessage() + "\" in " > + selection.getPluginId()); > editor.setDescriptionText("\n\n-- Error Log --\nDate: " + selection.getDate() + "\nMessage: " >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java,v >retrieving revision 1.1 >diff -u -r1.1 NewRepositoryTaskWizard.java >--- src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java 14 Jul 2006 15:38:59 -0000 1.1 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskWizard.java 21 Jul 2006 02:51:11 -0000 >@@ -45,4 +45,9 @@ > } > return connectorKinds; > } >+ >+ public void setDuplicateData(DuplicateDetectionData duplicateData) { >+ ((NewRepositoryTaskPage)getSelectRepositoryPage()).setDuplicateData(duplicateData); >+ ((NewRepositoryTaskPage)getSelectRepositoryPage()).setUseStackTrace(true); >+ } > } >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/SelectRepositoryPage.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/wizards/SelectRepositoryPage.java,v >retrieving revision 1.1 >diff -u -r1.1 SelectRepositoryPage.java >--- src/org/eclipse/mylar/internal/tasks/ui/wizards/SelectRepositoryPage.java 14 Jul 2006 15:39:00 -0000 1.1 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/SelectRepositoryPage.java 21 Jul 2006 02:51:11 -0000 >@@ -37,6 +37,7 @@ > import org.eclipse.swt.graphics.Point; > import org.eclipse.swt.layout.FillLayout; > import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Table; > > /** > * @author Mik Kersten >@@ -103,6 +104,19 @@ > FillLayout layout = new FillLayout(); > container.setLayout(layout); > >+ createTableViewer(container); >+ >+ // TaskRepository defaultRepository = >+ // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( >+ // repositoryKind); >+ // if (defaultRepository != null) { >+ // viewer.setSelection(new StructuredSelection(defaultRepository)); >+ // } >+ >+ 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()); >@@ -130,15 +144,7 @@ > }); > viewer.getTable().showSelection(); > viewer.getTable().setFocus(); >- >- // TaskRepository defaultRepository = >- // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( >- // repositoryKind); >- // if (defaultRepository != null) { >- // viewer.setSelection(new StructuredSelection(defaultRepository)); >- // } >- >- setControl(container); >+ return viewer.getTable(); > } > > protected TaskRepository getSelectedRepository() { >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskPage.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskPage.java,v >retrieving revision 1.1 >diff -u -r1.1 NewRepositoryTaskPage.java >--- src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskPage.java 14 Jul 2006 15:39:00 -0000 1.1 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/NewRepositoryTaskPage.java 21 Jul 2006 02:51:11 -0000 >@@ -14,16 +14,35 @@ > import java.util.List; > > import org.eclipse.jface.wizard.IWizard; >+import org.eclipse.jface.wizard.IWizardPage; > import org.eclipse.mylar.tasks.core.TaskRepository; > import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnector; > import org.eclipse.mylar.tasks.ui.TasksUiPlugin; >+import org.eclipse.swt.SWT; >+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.Link; > > /** > * @author Mik Kersten > * @author Euegene Kuleshov > */ > public class NewRepositoryTaskPage extends SelectRepositoryPage { >- >+ >+ private Button searchForDuplicatesButton; >+ >+ private DuplicateDetectionData duplicateData; >+ >+ private boolean initUseStackTrace = false; >+ >+ private IWizard newWizard; >+ >+ private boolean dupPagesAdded = false; >+ > public NewRepositoryTaskPage(List<String> kinds) { > super(kinds); > } >@@ -32,6 +51,75 @@ > protected IWizard createWizard(TaskRepository taskRepository) { > AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector( > taskRepository.getKind()); >- return connector.getNewTaskWizard(taskRepository, getSelection()); >+ newWizard = connector.getNewTaskWizard(taskRepository, getSelection()); >+ if (newWizard instanceof AbstractDuplicateDetectingReportWizard && getUseStackTrace()) { >+ AbstractDuplicateDetectingReportWizard dupWizard = (AbstractDuplicateDetectingReportWizard) newWizard; >+ // queue the duplicate detection pages to be added to the >+ // wizard when it gets created >+ dupWizard.queuePage(new FindRelatedReportsPage(duplicateData)); >+ dupWizard.queuePage(new DisplayRelatedReportsPage()); >+ dupPagesAdded = true; >+ } >+ return newWizard; >+ } >+ >+ public IWizardPage getNextPage() { >+ // ensure the dup pages are added (in the case of going "back" in the >+ // wizard) >+ if (!dupPagesAdded && newWizard instanceof AbstractDuplicateDetectingReportWizard && getUseStackTrace()) { >+ AbstractDuplicateDetectingReportWizard dupWizard = (AbstractDuplicateDetectingReportWizard) newWizard; >+ dupWizard.addPage(new FindRelatedReportsPage(duplicateData)); >+ dupWizard.addPage(new DisplayRelatedReportsPage()); >+ dupPagesAdded = true; >+ } >+ return super.getNextPage(); >+ } >+ >+ public void createControl(Composite parent) { >+ Composite container = new Composite(parent, SWT.NONE); >+ container.setLayout(new GridLayout()); >+ // super.createControl(container); >+ createTableViewer(container).setLayoutData(new GridData(GridData.FILL_BOTH)); >+ >+ searchForDuplicatesButton = new Button(container, SWT.CHECK); >+ searchForDuplicatesButton.setText("Search for related stack traces before creating"); >+ searchForDuplicatesButton.setSelection(initUseStackTrace); >+ >+ Link link = new Link(container, SWT.NONE); >+ link.setText("<A>Close wizard and search for related reports before continuing</A>"); >+ final IWizardPage thisPage = this; >+ link.addSelectionListener(new SelectionListener() { >+ public void widgetDefaultSelected(SelectionEvent arg0) { >+ // ignore >+ } >+ >+ public void widgetSelected(SelectionEvent arg0) { >+ thisPage.getWizard().performCancel(); >+ } >+ }); >+ >+ setControl(container); >+ } >+ >+ public DuplicateDetectionData getDuplicateData() { >+ return duplicateData; >+ } >+ >+ public void setDuplicateData(DuplicateDetectionData duplicateData) { >+ this.duplicateData = duplicateData; >+ } >+ >+ public void setUseStackTrace(boolean use) { >+ if (searchForDuplicatesButton != null) { >+ searchForDuplicatesButton.setSelection(use); >+ } >+ initUseStackTrace = use; >+ } >+ >+ public boolean getUseStackTrace() { >+ if (searchForDuplicatesButton != null) { >+ return searchForDuplicatesButton.getSelection(); >+ } >+ return initUseStackTrace; > } > } >\ No newline at end of file >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/MultiRepositoryAwareWizard.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/wizards/MultiRepositoryAwareWizard.java,v >retrieving revision 1.1 >diff -u -r1.1 MultiRepositoryAwareWizard.java >--- src/org/eclipse/mylar/internal/tasks/ui/wizards/MultiRepositoryAwareWizard.java 14 Jul 2006 15:38:59 -0000 1.1 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/MultiRepositoryAwareWizard.java 21 Jul 2006 02:51:11 -0000 >@@ -52,4 +52,8 @@ > // Can't finish on the first page > return false; > } >+ >+ public SelectRepositoryPage getSelectRepositoryPage() { >+ return selectRepositoryPage; >+ } > } >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/FindRelatedReportsPage.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/wizards/FindRelatedReportsPage.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/wizards/FindRelatedReportsPage.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/FindRelatedReportsPage.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,112 @@ >+/******************************************************************************* >+ * Copyright (c) 2004 - 2006 University Of British Columbia and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and 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.IWizardPage; >+import org.eclipse.jface.wizard.WizardPage; >+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.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 Jeff Pound >+ */ >+public class FindRelatedReportsPage extends WizardPage implements IWizardPage { >+ >+ private static final String PAGE_DESCRIPTION = "Enter the stack trace to search for, you can trim the stack trace to make your search more general"; >+ >+ private static final String PAGE_TITLE = "Find Related Reports"; >+ >+ static final String PAGE_NAME = "FindRelatedReportsPage"; >+ >+ private Text stackTraceBox; >+ >+ private Text searchTermsText; >+ >+ private DuplicateDetectionData duplicateData; >+ >+ public FindRelatedReportsPage(DuplicateDetectionData duplicateData) { >+ super(PAGE_NAME); >+ setTitle(PAGE_TITLE); >+ setDescription(PAGE_DESCRIPTION); >+ >+ // Description doesn't show up without an image present TODO: proper image. >+ setImageDescriptor(TasksUiPlugin.imageDescriptorFromPlugin("org.eclipse.mylar.bugzilla.ui", >+ "icons/wizban/bug-wizard.gif")); >+ this.duplicateData = duplicateData; >+ if (this.duplicateData == null) { >+ this.duplicateData = new DuplicateDetectionData(); >+ } >+ } >+ >+ public void createControl(Composite parent) { >+ Composite composite = new Composite(parent, SWT.NONE); >+ composite.setLayout(new GridLayout(2, false)); >+ setControl(composite); >+ >+ Label searchLabel = new Label(composite, SWT.LEFT); >+ searchLabel.setText("Search Terms "); >+ searchTermsText = new Text(composite, SWT.SINGLE); >+ searchTermsText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); >+ searchTermsText.setText(""); >+ searchTermsText.setEnabled(false); >+ >+ Label stackLabel = new Label(composite, SWT.LEFT); >+ stackLabel.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false, 2, 1)); >+ stackLabel.setText("Stack trace"); >+ stackTraceBox = new Text(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); >+ stackTraceBox.setText(duplicateData.getStackTrace()); >+ GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1); >+ // prevent the box from oversizing the wizard dialog >+ if (!"".equals(duplicateData.getStackTrace())) { >+ gd.heightHint = 200; >+ gd.widthHint = 600; >+ } >+ stackTraceBox.setLayoutData(gd); >+ stackTraceBox.addModifyListener(new ModifyListener() { >+ public void modifyText(ModifyEvent arg0) { >+ if ("".equals(stackTraceBox.getText().trim())) { >+ setPageComplete(false); >+ } else { >+ setPageComplete(true); >+ } >+ } >+ }); >+ } >+ >+ public DuplicateDetectionData getDuplicateData() { >+ if (stackTraceBox != null) { >+ // in case stack trace is user modified >+ duplicateData.setStackTrace(stackTraceBox.getText()); >+ } >+ return duplicateData; >+ } >+ >+ public IWizardPage getNextPage() { >+ DisplayRelatedReportsPage nextPage = (DisplayRelatedReportsPage) super.getNextPage(); >+ nextPage.setRelatedTasks(((AbstractDuplicateDetectingReportWizard) getWizard()) >+ .searchForDuplicates(getDuplicateData())); >+ >+ return super.getNextPage(); >+ } >+ >+ public boolean canFlipToNextPage() { >+ return !"".equals(stackTraceBox.getText()); >+ } >+} >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/DisplayRelatedReportsPage.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/wizards/DisplayRelatedReportsPage.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/wizards/DisplayRelatedReportsPage.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/DisplayRelatedReportsPage.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,357 @@ >+/******************************************************************************* >+ * 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.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+import java.util.StringTokenizer; >+ >+import org.eclipse.jface.wizard.WizardPage; >+import org.eclipse.mylar.tasks.core.AbstractRepositoryTask; >+import org.eclipse.mylar.tasks.core.RepositoryTaskData; >+import org.eclipse.mylar.tasks.ui.TasksUiPlugin; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.events.SelectionListener; >+import org.eclipse.swt.events.TreeEvent; >+import org.eclipse.swt.events.TreeListener; >+import org.eclipse.swt.graphics.GC; >+import org.eclipse.swt.graphics.Point; >+import org.eclipse.swt.graphics.Rectangle; >+import org.eclipse.swt.layout.FillLayout; >+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.Display; >+import org.eclipse.swt.widgets.Event; >+import org.eclipse.swt.widgets.Label; >+import org.eclipse.swt.widgets.Listener; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.TableItem; >+import org.eclipse.swt.widgets.Tree; >+import org.eclipse.swt.widgets.TreeColumn; >+import org.eclipse.swt.widgets.TreeItem; >+ >+/** >+ * >+ * @author Jeff Pound >+ */ >+public class DisplayRelatedReportsPage extends WizardPage { >+ >+ private static final String PAGE_DESCRIPTION = "Select duplicate report candidates to open and comment on them. Otherwise press finish to create new one."; >+ >+ static final String PAGE_NAME = "DisplayRelatedReportsPage"; >+ >+ private static final String PAGE_TITLE = "Related Reports"; >+ >+ private static final int LINES_PER_ITEM = 3; >+ >+ private List<AbstractRepositoryTask> relatedTasks; >+ >+ private String[] columnHeaders = { "Related Reports" }; >+ >+ private Tree duplicatesTree; >+ >+ private int[] columnWidths = { 550 }; >+ >+ protected DisplayRelatedReportsPage() { >+ super(PAGE_NAME); >+ setTitle(PAGE_TITLE); >+ setDescription(PAGE_DESCRIPTION); >+ // Description doesn't show up without an image present TODO: proper image. >+ setImageDescriptor(TasksUiPlugin.imageDescriptorFromPlugin("org.eclipse.mylar.bugzilla.ui", >+ "icons/wizban/bug-wizard.gif")); >+ } >+ >+ public void createControl(Composite parent) { >+ Composite composite = new Composite(parent, SWT.NONE); >+ composite.setLayout(new GridLayout()); >+ setControl(composite); >+ >+ duplicatesTree = new Tree(composite, SWT.MULTI | SWT.CHECK | SWT.FULL_SELECTION); >+ duplicatesTree.setLayoutData(new GridData(GridData.FILL_BOTH)); >+ >+ RowLayout gl = new RowLayout(); >+ gl.spacing = 30; >+ duplicatesTree.setLayout(gl); >+ >+ duplicatesTree.setHeaderVisible(true); >+ duplicatesTree.setLinesVisible(true); >+ >+ for (int i = 0; i < columnHeaders.length; i++) { >+ TreeColumn column = new TreeColumn(duplicatesTree, SWT.NONE); >+ column.setText(columnHeaders[i]); >+ } >+ >+ /* >+ * Adapted from snippet 227 >+ * http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet227.java?rev=HEAD&content-type=text/vnd.viewcvs-markup >+ */ >+ Listener paintListener = new Listener() { >+ public void handleEvent(Event event) { >+ switch (event.type) { >+ case SWT.MeasureItem: { >+ String text = ((TreeItem) event.item).getText(); >+ Point size = event.gc.textExtent(text); >+ event.width = size.x; >+ event.height = Math.max(event.height, size.y); >+ break; >+ } >+ case SWT.PaintItem: { >+ String text = ((TreeItem) event.item).getText(); >+ Point size = event.gc.textExtent(text); >+ int offset2 = event.index == 0 ? Math.max(0, (event.height - size.y) / 2) : 0; >+ event.gc.drawText(text, event.x, event.y + offset2, true); >+ break; >+ } >+ case SWT.EraseItem: { >+ event.detail &= ~SWT.FOREGROUND; >+ break; >+ } >+ } >+ } >+ }; >+ duplicatesTree.addListener(SWT.MeasureItem, paintListener); >+ duplicatesTree.addListener(SWT.PaintItem, paintListener); >+ duplicatesTree.addListener(SWT.EraseItem, paintListener); >+ duplicatesTree.addTreeListener(new TreeListener() { >+ public void treeCollapsed(TreeEvent arg0) { >+ // packTable(); >+ } >+ >+ public void treeExpanded(TreeEvent arg0) { >+ // packTable(); >+ } >+ }); >+ >+ registerToolTipListeners(); >+ } >+ >+ /* >+ * Adapted from SWT snippet 125 >+ * http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet125.java?rev=HEAD&content-type=text/vnd.viewcvs-markup >+ */ >+ private void registerToolTipListeners() { >+ final Shell shell = duplicatesTree.getShell(); >+ final Display display = duplicatesTree.getDisplay(); >+ >+ // Disable native tooltip >+ duplicatesTree.setToolTipText(""); >+ >+ // Implement a "fake" tooltip >+ final Listener labelListener = new Listener() { >+ public void handleEvent(Event event) { >+ Label label = (Label) event.widget; >+ Shell shell = label.getShell(); >+ switch (event.type) { >+ case SWT.MouseDown: >+ Event e = new Event(); >+ e.item = (TableItem) label.getData("_TABLEITEM"); >+ // Assuming table is single select, set the selection as if >+ // the mouse down event went through to the table >+ duplicatesTree.setSelection(new TreeItem[] { (TreeItem) e.item }); >+ duplicatesTree.notifyListeners(SWT.Selection, e); >+ // fall through >+ case SWT.MouseExit: >+ shell.dispose(); >+ break; >+ } >+ } >+ }; >+ >+ Listener tableListener = new Listener() { >+ Shell tip = null; >+ >+ Label label = null; >+ >+ public void handleEvent(Event event) { >+ switch (event.type) { >+ case SWT.Dispose: >+ case SWT.KeyDown: >+ case SWT.MouseMove: { >+ if (tip == null) >+ break; >+ tip.dispose(); >+ tip = null; >+ label = null; >+ break; >+ } >+ case SWT.MouseHover: { >+ TreeItem item = duplicatesTree.getItem(new Point(event.x, event.y)); >+ if (item != null) { >+ if (tip != null && !tip.isDisposed()) >+ tip.dispose(); >+ tip = new Shell(shell, SWT.ON_TOP | SWT.TOOL); >+ tip.setLayout(new FillLayout()); >+ label = new Label(tip, SWT.NONE); >+ label.setForeground(display.getSystemColor(SWT.COLOR_INFO_FOREGROUND)); >+ label.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND)); >+ label.setData("_TABLEITEM", item); >+ label.setText((String) item.getData()); >+ label.addListener(SWT.MouseExit, labelListener); >+ label.addListener(SWT.MouseDown, labelListener); >+ Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT); >+ Rectangle rect = item.getBounds(0); >+ Point pt = duplicatesTree.toDisplay(rect.x, rect.y); >+ tip.setBounds(pt.x, pt.y, size.x, size.y); >+ tip.setVisible(true); >+ } >+ } >+ } >+ } >+ }; >+ duplicatesTree.addListener(SWT.Dispose, tableListener); >+ duplicatesTree.addListener(SWT.KeyDown, tableListener); >+ duplicatesTree.addListener(SWT.MouseMove, tableListener); >+ duplicatesTree.addListener(SWT.MouseHover, tableListener); >+ >+ } >+ >+ private void packTable() { >+ for (int i = 0; i < columnHeaders.length; i++) { >+ // duplicatesTree.getColumn(i).pack(); >+ duplicatesTree.getColumn(i).setWidth(columnWidths[i]); >+ } >+ duplicatesTree.redraw(); >+ } >+ >+ public List<AbstractRepositoryTask> getRelatedTasks() { >+ return relatedTasks; >+ } >+ >+ public void setRelatedTasks(List<AbstractRepositoryTask> relatedTasks) { >+ duplicatesTree.removeAll(); >+ this.relatedTasks = relatedTasks; >+ if (duplicatesTree == null || this.relatedTasks == null) { >+ return; >+ } >+ >+ SelectionListener selectAllListener = new SelectionListener() { >+ public void widgetDefaultSelected(SelectionEvent arg0) { >+ // ignore >+ } >+ >+ public void widgetSelected(SelectionEvent event) { >+ TreeItem item = (TreeItem) event.item; >+ if (item.getParentItem() != null) { >+ item.getParentItem().setChecked(item.getChecked()); >+ } >+ if (item.getItems() != null && item.getItems().length > 0) { >+ item.getItems()[0].setChecked(item.getChecked()); >+ } >+ } >+ }; >+ duplicatesTree.addSelectionListener(selectAllListener); >+ >+ // update the table >+ Iterator<AbstractRepositoryTask> iter = this.relatedTasks.iterator(); >+ while (iter.hasNext()) { >+ AbstractRepositoryTask task = iter.next(); >+ RepositoryTaskData taskData = task.getTaskData(); >+ if (taskData == null) { >+ iter.remove(); >+ continue; >+ } >+ TreeItem item = new TreeItem(duplicatesTree, SWT.NONE); >+ item.setText(new String[] { formatTreeText(taskData.getSummary(), LINES_PER_ITEM - 1) }); >+ TreeItem descItem = new TreeItem(item, SWT.NONE); >+ descItem.setText(formatTreeText(taskData.getDescription())); >+ descItem.setGrayed(true); >+ >+ String toolTip = "Report Id: " + taskData.getId() + "\nCreated on: " + taskData.getCreated() >+ + "\nCreated by: " + taskData.getReporter() + "\nAssigned to: " + taskData.getAssignedTo(); >+ item.setData(toolTip); >+ descItem.setData(toolTip); >+ } >+ packTable(); >+ } >+ >+ private String formatTreeText(String text) { >+ return formatTreeText(text, LINES_PER_ITEM); >+ } >+ >+ private String formatTreeText(String text, int maxLines) { >+ GC gc = new GC(duplicatesTree); >+ int avgCharWidth = gc.getFontMetrics().getAverageCharWidth(); >+ gc.dispose(); >+ >+ text = text.replace("\n", " "); >+ StringTokenizer strtok = new StringTokenizer(text); >+ StringBuffer formatText = new StringBuffer(); >+ int charsPerLine = columnWidths[0] / avgCharWidth; >+ int lines = 0; >+ >+ // character wrap >+ // while (strtok.hasMoreTokens() && lines < maxLines) { >+ // String line = strtok.nextToken(); >+ // while (line.length() > charsPerLine && lines < maxLines) { >+ // String trimmedLine = line.substring(0, charsPerLine); >+ // formatText.append(trimmedLine + "\n"); >+ // lines++; >+ // line = line.substring(charsPerLine); >+ // } >+ // formatText.append(line + "\n"); >+ // lines++; >+ // } >+ >+ // word wrap >+ StringBuffer line = new StringBuffer(); >+ while (strtok.hasMoreTokens() && lines < maxLines) { >+ String word = strtok.nextToken(); >+ while (strtok.hasMoreTokens() && line.length() + word.length() < charsPerLine) { >+ line.append(word + ((line.length() + word.length() + 1 > charsPerLine) ? "" : " ")); >+ word = strtok.nextToken(); >+ } >+ if (!strtok.hasMoreTokens()) { >+ line.append(word); >+ } >+ formatText.append(((formatText.length() == 0) ? "" : "\n") + line.toString()); >+ lines++; >+ line.delete(0, line.length()); >+ line.append(word + " "); >+ } >+ >+ // pad elements to ensure no weird repaint artifacts >+ // this also centres text in the element (aligned with tree arrow) >+ if (lines < LINES_PER_ITEM) { >+ int diff = LINES_PER_ITEM - lines; >+ for (int i = 0; i < diff / 2; i++) { >+ formatText.append("\n "); >+ lines++; >+ } >+ while (lines < LINES_PER_ITEM) { >+ formatText.insert(0, " \n"); >+ lines++; >+ } >+ lines++; >+ } >+ >+ // add "..." if we're cutting off the text >+ if (strtok.hasMoreTokens()) { >+ formatText.replace(formatText.length() - 4, formatText.length(), "..."); >+ } >+ >+ return formatText.toString(); >+ } >+ >+ public List<AbstractRepositoryTask> getSelectedReports() { >+ List<AbstractRepositoryTask> selected = new LinkedList<AbstractRepositoryTask>(); >+ TreeItem[] items = duplicatesTree.getItems(); >+ >+ for (int i = 0; i < items.length; i++) { >+ if (items[i].getChecked()) { >+ selected.add(relatedTasks.get(i)); >+ } >+ } >+ >+ return selected; >+ } >+} >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/DuplicateDetectionData.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/wizards/DuplicateDetectionData.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/wizards/DuplicateDetectionData.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/DuplicateDetectionData.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,27 @@ >+/******************************************************************************* >+ * 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; >+ >+/** >+ * >+ * @author Jeff Pound >+ */ >+public class DuplicateDetectionData { >+ >+ // TODO add more fields to detect duplicates against >+ private String stackTrace = ""; >+ >+ public String getStackTrace() { >+ return stackTrace; >+ } >+ >+ public void setStackTrace(String stackTrace) { >+ this.stackTrace = stackTrace; >+ } >+} >Index: src/org/eclipse/mylar/internal/tasks/ui/wizards/AbstractDuplicateDetectingReportWizard.java >=================================================================== >RCS file: src/org/eclipse/mylar/internal/tasks/ui/wizards/AbstractDuplicateDetectingReportWizard.java >diff -N src/org/eclipse/mylar/internal/tasks/ui/wizards/AbstractDuplicateDetectingReportWizard.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylar/internal/tasks/ui/wizards/AbstractDuplicateDetectingReportWizard.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,62 @@ >+/******************************************************************************* >+ * 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.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+import java.util.Queue; >+ >+import org.eclipse.jface.wizard.IWizardPage; >+import org.eclipse.jface.wizard.Wizard; >+import org.eclipse.mylar.tasks.core.AbstractRepositoryTask; >+ >+/** >+ * >+ * @author Jeff Pound >+ */ >+public abstract class AbstractDuplicateDetectingReportWizard extends Wizard { >+ >+ private Queue<IWizardPage> queue = new LinkedList<IWizardPage>(); >+ >+ public AbstractDuplicateDetectingReportWizard() { >+ setNeedsProgressMonitor(true); >+ } >+ >+ public void queuePage(IWizardPage page) { >+ queue.add(page); >+ } >+ >+ public void addQueuedPages() { >+ Iterator<IWizardPage> iter = queue.iterator(); >+ while (iter.hasNext()) { >+ addPage(iter.next()); >+ } >+ } >+ >+ public boolean canFinish() { >+ IWizardPage findDups = getPage(FindRelatedReportsPage.PAGE_NAME); >+ if (findDups == null) { >+ return super.canFinish(); >+ } >+ >+ return !findDups.equals(getContainer().getCurrentPage()) && super.canFinish(); >+ } >+ >+ public List<AbstractRepositoryTask> getSelectedDuplicates() { >+ DisplayRelatedReportsPage displayDups = (DisplayRelatedReportsPage) getPage(DisplayRelatedReportsPage.PAGE_NAME); >+ if (displayDups == null) { >+ return null; >+ } >+ >+ return displayDups.getSelectedReports(); >+ } >+ >+ public abstract List<AbstractRepositoryTask> searchForDuplicates(DuplicateDetectionData data); >+} >#P org.eclipse.mylar.bugzilla.ui >Index: src/org/eclipse/mylar/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.bugzilla.ui/src/org/eclipse/mylar/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java,v >retrieving revision 1.42 >diff -u -r1.42 NewBugzillaReportWizard.java >--- src/org/eclipse/mylar/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java 20 Jul 2006 19:00:43 -0000 1.42 >+++ src/org/eclipse/mylar/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java 21 Jul 2006 02:51:16 -0000 >@@ -10,15 +10,31 @@ > *******************************************************************************/ > package org.eclipse.mylar.internal.bugzilla.ui.wizard; > >+import java.io.UnsupportedEncodingException; >+import java.net.URLEncoder; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ > import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.MultiStatus; >+import org.eclipse.core.runtime.NullProgressMonitor; > import org.eclipse.core.runtime.Status; > import org.eclipse.jface.viewers.IStructuredSelection; >-import org.eclipse.jface.wizard.Wizard; >+import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; > 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.bugzilla.ui.tasklist.BugzillaRepositoryQuery; > 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.wizards.AbstractDuplicateDetectingReportWizard; >+import org.eclipse.mylar.internal.tasks.ui.wizards.DuplicateDetectionData; >+import org.eclipse.mylar.tasks.core.AbstractQueryHit; >+import org.eclipse.mylar.tasks.core.AbstractRepositoryTask; > import org.eclipse.mylar.tasks.core.TaskRepository; >+import org.eclipse.mylar.tasks.ui.AbstractRepositoryConnector; > import org.eclipse.mylar.tasks.ui.TasksUiPlugin; > import org.eclipse.ui.INewWizard; > import org.eclipse.ui.IWorkbench; >@@ -29,7 +45,7 @@ > * @author Mik Kersten > * @author Rob Elves > */ >-public class NewBugzillaReportWizard extends Wizard implements INewWizard { >+public class NewBugzillaReportWizard extends AbstractDuplicateDetectingReportWizard implements INewWizard { > > private static final String TITLE = "New Bugzilla Task"; > >@@ -75,16 +91,28 @@ > super.addPages(); > addPage(productPage); > >+ super.addQueuedPages(); > } > > @Override > public boolean canFinish() { >- return completed; >+ return completed && super.canFinish(); > } > > @Override > public boolean performFinish() { >- >+ List<AbstractRepositoryTask> dups = getSelectedDuplicates(); >+ if (dups != null && !dups.isEmpty()) { >+ Iterator<AbstractRepositoryTask> iter = dups.iterator(); >+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); >+ while (iter.hasNext()) { >+ AbstractRepositoryTask task = iter.next(); >+ AbstractBugEditorInput editorInput = new ExistingBugEditorInput(TasksUiPlugin.getRepositoryManager() >+ .getRepository(task.getRepositoryKind(), task.getRepositoryUrl()), task.getTaskData()); >+ TaskUiUtil.openEditor(editorInput, BugzillaUiPlugin.EXISTING_BUG_EDITOR_ID, page); >+ } >+ return true; >+ } > try { > productPage.saveDataToModel(); > NewBugEditorInput editorInput = new NewBugEditorInput(repository, model); >@@ -98,6 +126,49 @@ > return false; > } > >+ /** >+ * Perform a query using the given duplicate detection criteria and return a >+ * list of tasks which match. >+ */ >+ @Override >+ public List<AbstractRepositoryTask> searchForDuplicates(DuplicateDetectionData data) { >+ // RepositoryQueryResultsFactory factory = new >+ // RepositoryQueryResultsFactory(); >+ // IBugzillaSearchResultCollector collector = new >+ // BugzillaSearchResultCollector(); >+ // factory.performQuery(repository.getUrl(), collector, queryUrl, >+ // proxySettings, 20, BugzillaPlugin.ENCODING_UTF_8); >+ >+ String[] products = productPage.getSelectedProducts(); >+ >+ // TODO: Is there a class that can create this string? >+ String queryUrl; >+ try { >+ queryUrl = repository.getUrl() + "/buglist.cgi?long_desc_type=allwordssubstr&long_desc=" >+ + URLEncoder.encode("Stack Trace:\n" + data.getStackTrace(), BugzillaPlugin.ENCODING_UTF_8); >+ } catch (UnsupportedEncodingException e) { >+ // This should never happen >+ return null; >+ } >+ >+ for (int i = 0; i < products.length; i++) { >+ queryUrl += "&product=" + products[i]; >+ } >+ >+ List<AbstractRepositoryTask> tasks = new LinkedList<AbstractRepositoryTask>(); >+ BugzillaRepositoryQuery repositoryQuery = new BugzillaRepositoryQuery(repository.getUrl(), queryUrl, >+ "DUPLICATE_DETECTION_QUERY", "20", TasksUiPlugin.getTaskListManager().getTaskList()); >+ AbstractRepositoryConnector connector = (AbstractRepositoryConnector) TasksUiPlugin.getRepositoryManager() >+ .getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); >+ List<AbstractQueryHit> hits = connector.performQuery(repositoryQuery, new NullProgressMonitor(), >+ new MultiStatus(TasksUiPlugin.PLUGIN_ID, IStatus.OK, "Query result", null)); >+ Iterator<AbstractQueryHit> iterator = hits.iterator(); >+ while (iterator.hasNext()) { >+ tasks.add(iterator.next().getOrCreateCorrespondingTask()); >+ } >+ >+ return tasks; >+ } > } > > // @Override >@@ -160,4 +231,4 @@ > // MylarTaskListPlugin.getSynchronizationManager().synchNow(0); > // > // return true; >-// } >+// } >\ No newline at end of file >Index: src/org/eclipse/mylar/internal/bugzilla/ui/wizard/BugzillaProductPage.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.bugzilla.ui/src/org/eclipse/mylar/internal/bugzilla/ui/wizard/BugzillaProductPage.java,v >retrieving revision 1.34 >diff -u -r1.34 BugzillaProductPage.java >--- src/org/eclipse/mylar/internal/bugzilla/ui/wizard/BugzillaProductPage.java 20 Jul 2006 19:00:43 -0000 1.34 >+++ src/org/eclipse/mylar/internal/bugzilla/ui/wizard/BugzillaProductPage.java 21 Jul 2006 02:51:16 -0000 >@@ -287,7 +287,7 @@ > listBox.setFocus(); > } > >- private String[] getSelectedProducts() { >+ protected String[] getSelectedProducts() { > ArrayList<String> products = new ArrayList<String>(); > if (selection == null) { > return products.toArray(new String[0]); >@@ -513,4 +513,4 @@ > // return super.getNextPage(); > // } > >-} >+} >\ No newline at end of file >Index: src/org/eclipse/mylar/internal/bugzilla/ui/editor/ExistingBugEditor.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.mylar/org.eclipse.mylar.bugzilla.ui/src/org/eclipse/mylar/internal/bugzilla/ui/editor/ExistingBugEditor.java,v >retrieving revision 1.77 >diff -u -r1.77 ExistingBugEditor.java >--- src/org/eclipse/mylar/internal/bugzilla/ui/editor/ExistingBugEditor.java 19 Jul 2006 20:48:08 -0000 1.77 >+++ src/org/eclipse/mylar/internal/bugzilla/ui/editor/ExistingBugEditor.java 21 Jul 2006 02:51:15 -0000 >@@ -261,6 +261,10 @@ > FormToolkit toolkit = new FormToolkit(composite.getDisplay()); > RepositoryTaskAttribute owner = taskData.getAttribute(RepositoryTaskAttribute.USER_ASSIGNED); > >+ if (repository.getUserName() == null) { >+ return; >+ } >+ > if (owner != null && owner.getValue().indexOf(repository.getUserName()) != -1) { > return; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 143567
:
46617
|
46618
| 46620 |
46621
|
46646
|
46850
|
46851
|
46907
|
46929
|
47016
|
47017
|
47021
|
47025