diff options
182 files changed, 31934 insertions, 3491 deletions
diff --git a/org.eclipse.mylyn-feature/feature.xml b/org.eclipse.mylyn-feature/feature.xml index e936c5343..a95b188f3 100644 --- a/org.eclipse.mylyn-feature/feature.xml +++ b/org.eclipse.mylyn-feature/feature.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <feature id="org.eclipse.mylar_feature" - label="Mylar Task List (Required)" - version="0.4.9" + label="Mylar IDE Integration" + version="0.4.2" provider-name="Eclipse.org" plugin="org.eclipse.mylar"> <description url="http://eclipse.org/mylar"> - Mylar Task List, personal task management facilities, and task repository integration support. + Mylar UI and support for the Eclipse SDK. </description> <license url="http://www.eclipse.org/legal/epl-v10.html"> @@ -214,39 +214,103 @@ litigation. </url> <requires> - <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.ui" version="3.1.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.core.resources" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.ui.browser"/> + <import plugin="org.eclipse.jdt" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.jdt.core" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.ui.editors" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.jface.text" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.ui.workbench.texteditor" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.search" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.ui.views" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.jdt.debug.ui"/> + <import plugin="org.eclipse.jdt.ui" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.team.cvs.ui"/> + <import plugin="org.eclipse.debug.ui"/> + <import plugin="org.eclipse.jdt.junit"/> + <import plugin="org.eclipse.jdt.junit.runtime"/> + <import plugin="org.eclipse.pde.junit.runtime"/> + <import plugin="org.eclipse.jdt.launching"/> + <import plugin="org.eclipse.debug.core"/> + <import plugin="org.eclipse.pde.ui" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.pde.core" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.ui.ide" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.ant.ui" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.ui.forms" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.update.ui"/> + <import plugin="org.eclipse.update.core"/> + <import plugin="org.eclipse.ui.browser"/> </requires> <plugin id="org.eclipse.mylar.doc" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2" unpack="false"/> <plugin - id="org.eclipse.mylar" + id="org.eclipse.mylar.java" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2" unpack="false"/> <plugin - id="org.eclipse.mylar.core" + id="org.eclipse.mylar.ui" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.xml" + download-size="0" + install-size="0" + version="0.4.2" unpack="false"/> <plugin id="org.eclipse.mylar.tasklist" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.ide" + download-size="0" + install-size="0" + version="0.4.2" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.monitor" + download-size="0" + install-size="0" + version="0.4.2" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.hypertext" + download-size="0" + install-size="0" + version="0.4.2" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.core" + download-size="0" + install-size="0" + version="0.4.2" + unpack="false"/> + + <plugin + id="org.eclipse.mylar" + download-size="0" + install-size="0" + version="0.4.2" unpack="false"/> </feature> diff --git a/org.eclipse.mylyn.bugzilla-feature/build.properties b/org.eclipse.mylyn.bugzilla-feature/build.properties index 69b877f71..4e728a03d 100644 --- a/org.eclipse.mylyn.bugzilla-feature/build.properties +++ b/org.eclipse.mylyn.bugzilla-feature/build.properties @@ -16,4 +16,3 @@ src.includes = epl-v10.html,\ feature.xml,\ license.html,\ about.html -jre.compilation.profile = J2SE-1.5 diff --git a/org.eclipse.mylyn.bugzilla-feature/feature.xml b/org.eclipse.mylyn.bugzilla-feature/feature.xml index 87a83fb55..2147b6f37 100644 --- a/org.eclipse.mylyn.bugzilla-feature/feature.xml +++ b/org.eclipse.mylyn.bugzilla-feature/feature.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <feature id="org.eclipse.mylar.bugzilla_feature" - label="Mylar Connector: Bugzilla" - version="0.4.9" + label="Mylar Bugzilla Client" + version="0.4.2.1" provider-name="Eclipse.org" - plugin="org.eclipse.mylar"> + plugin="org.eclipse.mylar.bugzilla.core"> <description> Bugzilla client integrated with Eclipse and Mylar, can be used standalone. @@ -210,51 +210,58 @@ litigation. </license> <url> - <update label="Mylar for Eclipse 3.1" url="http://download.eclipse.org/technology/mylar/update-site/e3.1"/> + <update label="Mylar Bugzilla Client" url="http://download.eclipse.org/technology/mylar/update-site/e3.2"/> </url> <requires> - <import feature="org.eclipse.mylar_feature" version="0.4.9" match="greaterOrEqual"/> - <import plugin="org.eclipse.ui" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.core.resources" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.compare" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.ui" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.search" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.help" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.help.ui" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.core.runtime" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.ui.ide" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.update.core"/> - <import plugin="org.eclipse.update.ui"/> <import plugin="org.eclipse.ui.views" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.ui.forms"/> <import plugin="org.eclipse.jface.text" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.team.ui"/> - <import plugin="org.eclipse.team.cvs.ui"/> <import plugin="org.eclipse.ui.workbench.texteditor" version="0.0.0" match="greaterOrEqual"/> <import plugin="org.eclipse.ui.editors" version="0.0.0" match="greaterOrEqual"/> - <import plugin="org.eclipse.team.core"/> - <import plugin="org.eclipse.team.cvs.core"/> - <import plugin="org.eclipse.mylar.core"/> - <import plugin="org.eclipse.mylar.tasklist"/> + <import plugin="org.eclipse.pde.ui" version="0.0.0" match="greaterOrEqual"/> + <import plugin="org.eclipse.compare" version="0.0.0" match="greaterOrEqual"/> </requires> <plugin id="org.eclipse.mylar.bugzilla.core" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2.1" unpack="false"/> <plugin id="org.eclipse.mylar.bugzilla.ui" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2.1" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.core" + download-size="0" + install-size="0" + version="0.4.2.1" + unpack="false"/> + + <plugin + id="org.eclipse.mylar.tasklist" + download-size="0" + install-size="0" + version="0.4.2.1" unpack="false"/> <plugin id="org.eclipse.mylar.bugs" download-size="0" install-size="0" - version="0.4.9" + version="0.4.2.1" unpack="false"/> </feature> diff --git a/org.eclipse.mylyn.bugzilla.core/.classpath b/org.eclipse.mylyn.bugzilla.core/.classpath new file mode 100644 index 000000000..fd8d0f145 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/.classpath @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"> + <accessrules> + <accessrule kind="accessible" pattern="**/internal/**"/> + <accessrule kind="nonaccessible" pattern="**/System"/> + </accessrules> + </classpathentry> + <classpathentry kind="lib" path="lib/commons-httpclient-3.0.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs b/org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 000000000..bbebc5a04 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#Fri Jun 02 15:30:24 PDT 2006 +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=true diff --git a/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF new file mode 100644 index 000000000..38545f58f --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/META-INF/MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Mylar Bugzilla Client Plug-in +Bundle-SymbolicName: org.eclipse.mylar.bugzilla.core; singleton:=true +Bundle-Version: 0.5.3 +Bundle-Activator: org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin +Bundle-Localization: plugin +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.mylar.tasklist +Eclipse-AutoStart: true +Bundle-Vendor: Eclipse.org +Bundle-ClassPath: bugzilla-core.jar, + lib/commons-logging.jar, + lib/commons-codec-1.3.jar, + lib/commons-httpclient-3.0.jar +Export-Package: org.apache.commons.httpclient, + org.eclipse.mylar.internal.bugzilla.core +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/org.eclipse.mylyn.bugzilla.core/about.html b/org.eclipse.mylyn.bugzilla.core/about.html new file mode 100644 index 000000000..1aeb16b5f --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/about.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<html> +<head> +<title>About</title> +<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1"> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>May 2, 2006</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.bugzilla.core/build.properties b/org.eclipse.mylyn.bugzilla.core/build.properties new file mode 100644 index 000000000..c4bc1a8a8 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/build.properties @@ -0,0 +1,22 @@ +############################################################################### +# Copyright (c) 2003 - 2005 University Of British Columbia and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# University Of British Columbia - initial API and implementation +############################################################################### +bin.includes = META-INF/,\ + about.html,\ + bugzilla-core.jar,\ + lib/ +src.includes = META-INF/,\ + src/,\ + about.html,\ + lib/ +jars.compile.order = bugzilla-core.jar +source.bugzilla-core.jar = src/ +output.bugzilla-core.jar = bin/ +jre.compilation.profile = J2SE-1.5 diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java new file mode 100644 index 000000000..c578009f1 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/AbstractReportFactory.java @@ -0,0 +1,151 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.net.HttpURLConnection; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; + +import javax.security.auth.login.LoginException; + +import org.xml.sax.ErrorHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.DefaultHandler; +import org.xml.sax.helpers.XMLReaderFactory; + +/** + * @author Rob Elves + */ +public class AbstractReportFactory { + + private static final int COM_TIME_OUT = 15000; + + private static final String CONTENT_TYPE_TEXT_HTML = "text/html"; + + private static final String CONTENT_TYPE_APP_RDF_XML = "application/rdf+xml"; + + private static final String CONTENT_TYPE_APP_XML = "application/xml"; + + private static final String CONTENT_TYPE_TEXT_XML = "text/xml"; + + public static final int RETURN_ALL_HITS = -1; + + private BufferedReader in = null; + + private boolean clean = false; + + protected void collectResults(URL url, Proxy proxySettings, String characterEncoding, DefaultHandler contentHandler) + throws IOException, LoginException, KeyManagementException, NoSuchAlgorithmException { + URLConnection cntx = BugzillaPlugin.getUrlConnection(url, proxySettings); + if (cntx == null || !(cntx instanceof HttpURLConnection)) { + throw new IOException("Could not form URLConnection."); + } + + HttpURLConnection connection = (HttpURLConnection) cntx; + connection.setConnectTimeout(COM_TIME_OUT); + connection.setReadTimeout(COM_TIME_OUT); + connection.connect(); + int responseCode = connection.getResponseCode(); + if (responseCode != HttpURLConnection.HTTP_OK) { + String msg; + if (responseCode == -1 || responseCode == HttpURLConnection.HTTP_FORBIDDEN) + msg = "Repository does not seem to be a valid Bugzilla server: " + url.toExternalForm(); + else + msg = "HTTP Error " + responseCode + " (" + connection.getResponseMessage() + + ") while querying Bugzilla server: " + url.toExternalForm(); + + throw new IOException(msg); + } + + if (characterEncoding != null) { + in = new BufferedReader(new InputStreamReader(connection.getInputStream(), characterEncoding)); + } else { + in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + } + + + + if(clean) { + StringBuffer result = XmlCleaner.clean(in); + StringReader strReader = new StringReader(result.toString()); + in = new BufferedReader(strReader); + } + + if (connection.getContentType().contains(CONTENT_TYPE_APP_RDF_XML) + || connection.getContentType().contains(CONTENT_TYPE_APP_XML) + || connection.getContentType().contains(CONTENT_TYPE_TEXT_XML)) { + + try { + final XMLReader reader = XMLReaderFactory.createXMLReader(); + reader.setContentHandler(contentHandler); + reader.setErrorHandler(new ErrorHandler() { + + public void error(SAXParseException exception) throws SAXException { + throw exception; + } + + public void fatalError(SAXParseException exception) throws SAXException { + throw exception; + } + + public void warning(SAXParseException exception) throws SAXException { + throw exception; + } + }); + reader.parse(new InputSource(in)); + } catch (SAXException e) { + if (e.getMessage().equals(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD)) { + throw new LoginException(e.getMessage()); + } else { + throw new IOException(e.getMessage()); + } + } + } else if (connection.getContentType().contains(CONTENT_TYPE_TEXT_HTML)) { + in.mark(10); + BugzillaRepositoryUtil.parseHtmlError(in); + in.reset(); + String message = ""; + String newLine = in.readLine(); + while (newLine != null) { + message += newLine; + newLine = in.readLine(); + } + throw new UnrecognizedBugzillaError(message); + + } else { + throw new IOException("Unrecognized content type: " + connection.getContentType()); + } + } + + public class UnrecognizedBugzillaError extends IOException { + private static final long serialVersionUID = 8419167415822022988L; + + public UnrecognizedBugzillaError(String message) { + super(message); + } + } + + protected void setClean(boolean clean) { + this.clean = clean; + } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java new file mode 100644 index 000000000..240278945 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttachmentHandler.java @@ -0,0 +1,246 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.security.GeneralSecurityException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.multipart.FilePart; +import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; +import org.apache.commons.httpclient.methods.multipart.Part; +import org.apache.commons.httpclient.methods.multipart.PartBase; +import org.apache.commons.httpclient.methods.multipart.StringPart; +import org.apache.commons.httpclient.params.HttpMethodParams; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.mylar.internal.tasklist.LocalAttachment; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; +import org.eclipse.mylar.provisional.tasklist.IAttachmentHandler; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; + +/** + * @author Mik Kersten + * @author Rob Elves + */ +public class BugzillaAttachmentHandler implements IAttachmentHandler { + + public static final String POST_ARGS_ATTACHMENT_DOWNLOAD = "/attachment.cgi?id="; + + public static final String POST_ARGS_ATTACHMENT_UPLOAD = "/attachment.cgi";// ?action=insert";//&bugid="; + + private static final String VALUE_CONTENTTYPEMETHOD_MANUAL = "manual"; + + private static final String VALUE_ISPATCH = "1"; + + private static final String VALUE_ACTION_INSERT = "insert"; + + private static final String ATTRIBUTE_CONTENTTYPEENTRY = "contenttypeentry"; + + private static final String ATTRIBUTE_CONTENTTYPEMETHOD = "contenttypemethod"; + + private static final String ATTRIBUTE_ISPATCH = "ispatch"; + + private static final String ATTRIBUTE_DATA = "data"; + + private static final String ATTRIBUTE_COMMENT = "comment"; + + private static final String ATTRIBUTE_DESCRIPTION = "description"; + + private static final String ATTRIBUTE_BUGID = "bugid"; + + private static final String ATTRIBUTE_BUGZILLA_PASSWORD = "Bugzilla_password"; + + private static final String ATTRIBUTE_BUGZILLA_LOGIN = "Bugzilla_login"; + + private static final String ATTRIBUTE_ACTION = "action"; + + public void downloadAttachment(TaskRepository repository, AbstractRepositoryTask task, int attachmentId, File file, Proxy proxySettings) throws CoreException { + try { + downloadAttachment(repository.getUrl(), repository.getUserName(), repository.getPassword(), proxySettings, attachmentId, file, true); + } catch (Exception e) { + throw new CoreException(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, 0, "could not download", e)); + } + } + + public void uploadAttachment(TaskRepository repository, AbstractRepositoryTask task, String comment, String description, File file, String contentType, boolean isPatch, Proxy proxySettings) throws CoreException { + try { + uploadAttachment(repository.getUrl(), repository.getUserName(), repository.getPassword(), AbstractRepositoryTask.getTaskIdAsInt(task.getHandleIdentifier()), comment, description, file, contentType, isPatch, proxySettings); + } catch (Exception e) { + throw new CoreException(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, 0, "could not download", e)); + } + } + + private boolean uploadAttachment(String repositoryUrl, String userName, String password, int bugReportID, + String comment, String description, File sourceFile, String contentType, boolean isPatch, Proxy proxySettings) + throws IOException { + + // Note: The following debug code requires http commons-logging and + // commons-logging-api jars + // System.setProperty("org.apache.commons.logging.Log", + // "org.apache.commons.logging.impl.SimpleLog"); + // System.setProperty("org.apache.commons.logging.simplelog.showdatetime", + // "true"); + // System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", + // "debug"); + // System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", + // "debug"); + + boolean uploadResult = true; + + HttpClient client = new HttpClient(); + if (proxySettings != null && proxySettings.address() instanceof InetSocketAddress) { + InetSocketAddress address = (InetSocketAddress)proxySettings.address(); + client.getHostConfiguration().setProxy(address.getHostName(), address.getPort()); + } + + PostMethod postMethod = new PostMethod(repositoryUrl + POST_ARGS_ATTACHMENT_UPLOAD); + + // My understanding is that this option causes the client to first check + // with the server to see if it will in fact recieve the post before + // actually sending the contents. + postMethod.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE, true); + + try { + List<PartBase> parts = new ArrayList<PartBase>(); + parts.add(new StringPart(ATTRIBUTE_ACTION, VALUE_ACTION_INSERT)); + parts.add(new StringPart(ATTRIBUTE_BUGZILLA_LOGIN, userName)); + parts.add(new StringPart(ATTRIBUTE_BUGZILLA_PASSWORD, password)); + parts.add(new StringPart(ATTRIBUTE_BUGID, String.valueOf(bugReportID))); + parts.add(new StringPart(ATTRIBUTE_DESCRIPTION, description)); + parts.add(new StringPart(ATTRIBUTE_COMMENT, comment)); + parts.add(new FilePart(ATTRIBUTE_DATA, sourceFile)); + + if (isPatch) { + parts.add(new StringPart(ATTRIBUTE_ISPATCH, VALUE_ISPATCH)); + } else { + parts.add(new StringPart(ATTRIBUTE_CONTENTTYPEMETHOD, VALUE_CONTENTTYPEMETHOD_MANUAL)); + parts.add(new StringPart(ATTRIBUTE_CONTENTTYPEENTRY, contentType)); + } + + postMethod.setRequestEntity(new MultipartRequestEntity(parts.toArray(new Part[1]), postMethod.getParams())); + + client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); + int status = client.executeMethod(postMethod); + if (status == HttpStatus.SC_OK) { + InputStreamReader reader = new InputStreamReader(postMethod.getResponseBodyAsStream(), postMethod + .getResponseCharSet()); + BufferedReader bufferedReader = new BufferedReader(reader); + String newLine; + while ((newLine = bufferedReader.readLine()) != null) { + if (newLine.indexOf("Invalid Username Or Password") >= 0) { + throw new IOException( + "Invalid Username Or Password - Check credentials in Task Repositories view."); + } + // TODO: test for no comment and no description etc. + } + } else { + // MylarStatusHandler.log(HttpStatus.getStatusText(status), + // BugzillaRepositoryUtil.class); + uploadResult = false; + } + // } catch (HttpException e) { + // MylarStatusHandler.log("Attachment upload failed\n" + + // e.getMessage(), BugzillaRepositoryUtil.class); + // uploadResult = false; + } finally { + postMethod.releaseConnection(); + } + + return uploadResult; + } + + + public boolean uploadAttachment(LocalAttachment attachment, String uname, String password, Proxy proxySettings) throws IOException { + + File file = new File(attachment.getFilePath()); + if (!file.exists() || file.length() <= 0) { + return false; + } + + return uploadAttachment(attachment.getReport().getRepositoryUrl(), uname, password, attachment.getReport().getId(), + attachment.getComment(), attachment.getDescription(), file, + attachment.getContentType(), attachment.isPatch(), proxySettings); + } + + private boolean downloadAttachment(String repositoryUrl, String userName, String password, + Proxy proxySettings, int id, File destinationFile, boolean overwrite) throws IOException, + GeneralSecurityException { + BufferedInputStream in = null; + FileOutputStream outStream = null; + try { + String url = repositoryUrl + POST_ARGS_ATTACHMENT_DOWNLOAD + id; + url = BugzillaRepositoryUtil.addCredentials(url, userName, password); + URL downloadUrl = new URL(url); + URLConnection connection = BugzillaPlugin.getUrlConnection(downloadUrl, proxySettings); + if (connection != null) { + InputStream input = connection.getInputStream(); + outStream = new FileOutputStream(destinationFile); + copyByteStream(input, outStream); + return true; + + } + } finally { + try { + if (in != null) + in.close(); + if (outStream != null) + outStream.close(); + } catch (IOException e) { + BugzillaPlugin.log(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, IStatus.ERROR, + "Problem closing the stream", e)); + } + } + return false; + } + + private void copyByteStream(InputStream in, OutputStream out) throws IOException { + if (in != null && out != null) { + BufferedInputStream inBuffered = new BufferedInputStream(in); + + int bufferSize = 1000; + byte[] buffer = new byte[bufferSize]; + + int readCount; + + BufferedOutputStream fout = new BufferedOutputStream(out); + + while ((readCount = inBuffered.read(buffer)) != -1) { + if (readCount < bufferSize) { + fout.write(buffer, 0, readCount); + } else { + fout.write(buffer); + } + } + fout.flush(); + fout.close(); + in.close(); + } + } +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java new file mode 100644 index 000000000..62b15e9d7 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttributeFactory.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import org.eclipse.mylar.internal.tasklist.AbstractAttributeFactory; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute; + +public class BugzillaAttributeFactory extends AbstractAttributeFactory { + + private static final long serialVersionUID = 5087501781682994759L; + + @Override + public String mapCommonAttributeKey(String key) { + if (key == null) { + return key; + } else if (key.equals(RepositoryTaskAttribute.COMMENT_DATE)) { + return BugzillaReportElement.BUG_WHEN.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.USER_OWNER)) { + return BugzillaReportElement.WHO.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.USER_CC)) { + return BugzillaReportElement.CC.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.COMMENT_TEXT)) { + return BugzillaReportElement.THETEXT.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.DATE_CREATION)) { + return BugzillaReportElement.CREATION_TS.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.DESCRIPTION)) { + return BugzillaReportElement.DESC.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_ID)) { + return BugzillaReportElement.ATTACHID.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_TYPE)) { + return BugzillaReportElement.TYPE.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_CTYPE)) { + return BugzillaReportElement.CTYPE.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.USER_ASSIGNED)) { + return BugzillaReportElement.ASSIGNED_TO.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.RESOLUTION)) { + return BugzillaReportElement.RESOLUTION.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.STATUS)) { + return BugzillaReportElement.BUG_STATUS.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.DATE_MODIFIED)) { + return BugzillaReportElement.DELTA_TS.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.USER_REPORTER)) { + return BugzillaReportElement.REPORTER.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.SUMMARY)) { + return BugzillaReportElement.SHORT_DESC.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.PRODUCT)) { + return BugzillaReportElement.PRODUCT.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.DATE_CREATION)) { + return BugzillaReportElement.CREATION_TS.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.KEYWORDS)) { + return BugzillaReportElement.KEYWORDS.getKeyString(); + } else if (key.equals(RepositoryTaskAttribute.ATTACHMENT_DATE)) { + return BugzillaReportElement.DATE.getKeyString(); + } + return key; + } + + @Override + public boolean getIsHidden(String key) { + try { + return BugzillaReportElement.valueOf(key.trim().toUpperCase()).isHidden(); + } catch (IllegalArgumentException e) { + return false; + } + } + + @Override + public String getName(String key) { + try { + return BugzillaReportElement.valueOf(key.trim().toUpperCase()).toString(); + } catch (IllegalArgumentException e) { + return "<unknown>"; + } + } + + @Override + public boolean isReadOnly(String key) { + try { + return BugzillaReportElement.valueOf(key.trim().toUpperCase()).isReadOnly(); + } catch (IllegalArgumentException e) { + return true; + } + } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java new file mode 100644 index 000000000..bdaab80ad --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaPlugin.java @@ -0,0 +1,331 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.IOException; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Plugin; +import org.eclipse.core.runtime.Status; +import org.osgi.framework.BundleContext; + +/** + * The main plugin class to be used in the desktop. + * + * @author Mik Kersten (added support for multiple repositories) + */ +public class BugzillaPlugin extends Plugin { + + public static final String REPOSITORY_KIND = "bugzilla"; + + public static final String ENCODING_UTF_8 = "UTF-8"; + + public static final String PLUGIN_ID = "org.eclipse.mylar.bugzilla"; + + /** Singleton instance of the plug-in */ + private static BugzillaPlugin plugin; + + // /** The file that contains all of the bugzilla favorites */ + // private FavoritesFile favoritesFile; + + /** Product configuration for the current server */ + private static Map<String, RepositoryConfiguration> repositoryConfigurations = new HashMap<String, RepositoryConfiguration>(); + + public BugzillaPlugin() { + super(); + } + + /** + * Get the singleton instance for the plugin + * + * @return The instance of the plugin + */ + public static BugzillaPlugin getDefault() { + return plugin; + } + + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + + // readFavoritesFile(); + } + + @Override + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + // /** + // * Get the favorites file contatining the favorites + // * + // * @return The FavoritesFile + // */ + // public FavoritesFile getFavorites() { + // return favoritesFile; + // } + + // /** + // * // * Get the name of the bugzilla server // * // * + // * + // * @return A string containing the prefered name of the bugzilla server // + // */ + // // public String getServerName() { + // // return + // // + // plugin.getPreferenceStore().getString(IBugzillaConstants.BUGZILLA_SERVER); + // // } + // public boolean isServerCompatability218() { + // return + // IBugzillaConstants.SERVER_218.equals(getPreferenceStore().getString(IBugzillaConstants.SERVER_VERSION)) + // || IBugzillaConstants.SERVER_220.equals(getPreferenceStore().getString( + // IBugzillaConstants.SERVER_VERSION)); + // } + // + // public boolean isServerCompatability220() { + // return + // IBugzillaConstants.SERVER_220.equals(getPreferenceStore().getString(IBugzillaConstants.SERVER_VERSION)); + // } + + public static RepositoryConfiguration getRepositoryConfiguration(String repositoryUrl, Proxy proxySettings, String userName, String password, String encoding) throws IOException, KeyManagementException, LoginException, NoSuchAlgorithmException { + if (!repositoryConfigurations.containsKey(repositoryUrl)) { + repositoryConfigurations.put(repositoryUrl, RepositoryConfigurationFactory.getInstance() + .getConfiguration(repositoryUrl, proxySettings, userName, password, encoding)); + } + return repositoryConfigurations.get(repositoryUrl); + } + + // public RepositoryConfiguration getProductConfiguration(String serverUrl) + // { + // if (!repositoryConfigurations.containsKey(serverUrl)) { + // try { + // repositoryConfigurations.put(serverUrl, + // RepositoryConfigurationFactory.getInstance().getConfiguration( + // serverUrl)); + // } catch (IOException e) { + // MessageDialog.openInformation(null, "Retrieval of Bugzilla + // Configuration", + // "Bugzilla configuration retrieval failed."); + // } + // } + // + // return repositoryConfigurations.get(serverUrl); + // } + + // protected void setProductConfiguration(String serverUrl, + // RepositoryConfiguration repositoryConfiguration) { + // repositoryConfigurations.put(serverUrl, repositoryConfiguration); + // // this.productConfiguration = productConfiguration; + // } + + // private void readFavoritesFile() { + // IPath favoritesPath = getFavoritesFile(); + // + // try { + // favoritesFile = new FavoritesFile(favoritesPath.toFile()); + // } catch (Exception e) { + // logAndShowExceptionDetailsDialog(e, "occurred while restoring saved + // Bugzilla favorites.", + // "Bugzilla Favorites Error"); + // } + // } + + // /** + // * Returns the path to the file cacheing the query favorites. + // */ + // private IPath getFavoritesFile() { + // IPath stateLocation = + // Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle()); + // IPath configFile = stateLocation.append("favorites"); + // return configFile; + // } + + // /** + // * Reads cached product configuration and stores it in the + // * <code>productConfiguration</code> field. + // * + // * TODO remove this? + // */ + // private void readCachedProductConfiguration(String serverUrl) { + // IPath configFile = getProductConfigurationCachePath(serverUrl); + // + // try { + // productConfigurations.put(serverUrl, + // ServerConfigurationFactory.getInstance().readConfiguration( + // configFile.toFile())); + // } catch (IOException ex) { + // try { + // log(ex); + // productConfigurations.put(serverUrl, + // ServerConfigurationFactory.getInstance().getConfiguration( + // serverUrl)); + // } catch (IOException e) { + // log(e); + // MessageDialog + // .openInformation( + // null, + // "Bugzilla product attributes check", + // "An error occurred while restoring saved Bugzilla product attributes: + // \n\n" + // + ex.getMessage() + // + "\n\nUpdating them from the server also caused an error:\n\n" + // + e.getMessage() + // + "\n\nCheck the server URL in Bugzila preferences.\n" + // + "Offline submission of new bugs will be disabled until valid product + // attributes have been loaded."); + // } + // } + // } + + /** + * Returns the path to the file cacheing the product configuration. + */ + protected IPath getProductConfigurationCachePath(String serverUrl) { + IPath stateLocation = Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle()); + IPath configFile = stateLocation.append("productConfig." + serverUrl.replace('/', '-')); + return configFile; + } + + /** + * Convenience method for logging statuses to the plugin log + * + * @param status + * the status to log + */ + public static void log(IStatus status) { + getDefault().getLog().log(status); + } + + /** + * Convenience method for logging exceptions to the plugin log + * + * @param e + * the exception to log + */ + public static void log(Exception e) { + log(new Status(Status.ERROR, BugzillaPlugin.PLUGIN_ID, 0, e.getMessage(), e)); + } + + /** + * Returns the path to the file caching bug reports created while offline. + */ + protected IPath getCachedBugReportPath() { + IPath stateLocation = Platform.getStateLocation(BugzillaPlugin.getDefault().getBundle()); + IPath bugFile = stateLocation.append("bugReports"); + return bugFile; + } + + /** + * @param url + * @param proxy + * can be null + */ + public static URLConnection getUrlConnection(URL url, Proxy proxy) throws IOException, NoSuchAlgorithmException, + KeyManagementException { + SSLContext ctx = SSLContext.getInstance("TLS"); + + javax.net.ssl.TrustManager[] tm = new javax.net.ssl.TrustManager[] { new TrustAll() }; + ctx.init(null, tm, null); + HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory()); + + if (proxy == null) { + proxy = Proxy.NO_PROXY; + } + URLConnection connection = url.openConnection(proxy); + return connection; + } + + // public IStatus logAndShowExceptionDetailsDialog(Exception e, String + // message, String title) { + // MultiStatus status = new MultiStatus(BugzillaPlugin.PLUGIN_ID, + // IStatus.ERROR, e.getClass().toString() + " " + // + message + "\n\n" + "Click Details or see log for more information.", + // e); + // Status s = new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, + // IStatus.ERROR, e.getClass().toString() + // + ": ", e); + // status.add(s); + // String error = (e.getMessage() == null) ? e.getClass().toString() : + // e.getMessage(); + // s = new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, IStatus.ERROR, + // error, e); + // status.add(s); + // log(status); + // ErrorDialog.openError(null, title, null, status); + // return status; + // } + + // public boolean refreshOnStartUpEnabled() { + // return getPreferenceStore().getBoolean(IBugzillaConstants.REFRESH_QUERY); + // } + + // private void setDefaultQueryOptions() { + // // get the preferences store for the bugzilla preferences + // IPreferenceStore prefs = getPreferenceStore(); + // + // prefs.setDefault(IBugzillaConstants.VALUES_STATUS, BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_STATUS_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUSE_STATUS_PRESELECTED, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_PRESELECTED_STATUS_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_RESOLUTION, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_RESOLUTION_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_SEVERITY, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_SEVERITY_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_PRIORITY, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_PRIORITY_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_HARDWARE, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_HARDWARE_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_OS, BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_OS_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_PRODUCT, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_PRODUCT_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_COMPONENT, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_COMPONENT_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_VERSION, + // BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_VERSION_VALUES)); + // + // prefs.setDefault(IBugzillaConstants.VALUES_TARGET, BugzillaRepositoryUtil + // .queryOptionsToString(IBugzillaConstants.DEFAULT_TARGET_VALUES)); + // } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java new file mode 100644 index 000000000..4c871f9f5 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportElement.java @@ -0,0 +1,118 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +/** + * Bugzilla XML element enum. Each enum has the attribute name + * and associated xml element tag name. + * + * @author Rob Elves + */ +public enum BugzillaReportElement { + // Format: ENUM ( "pretty name", "xml key", <hidden: true/false>, <readonly: true/false>) + // Hidden elements are not automatically displayed in ui + ASSIGNED_TO ("Assigned to:", "assigned_to", false, true), + ATTACHID ("attachid", "attachid"), + ATTACHMENT ("attachment", "attachment"), + BLOCKED ("Bug blocks:", "blocked"), + BUG ("bug","bug", true), + BUG_FILE_LOC ("URL:", "bug_file_loc", true), + BUG_ID ("Bug:", "bug_id", true), + BUG_SEVERITY ("Severity:", "bug_severity", false), + BUG_STATUS ("Status:", "bug_status", false, true), + BUG_WHEN ("bug_when", "bug_when", true, true), + BUGZILLA ("bugzilla", "bugzilla", true), + CC ("CC:", "cc", true, true), + CCLIST_ACCESSIBLE ("cclist_accessible", "cclist_accessible", true), + CLASSIFICATION ("Classification:", "classification", true), + CLASSIFICATION_ID ("Classification ID:", "classification_id", true), + COMPONENT ("Component:", "component", false), + CREATION_TS ("Creation date:", "creation_ts", true), + CTYPE ("Content Type", "ctype"), + DATA ("data", "data"), + DATE ("Date", "date"), + DELTA_TS ("Last Modification", "delta_ts", true), + DEPENDSON ("Bug depends on:", "dependson"), + DESC ("desc", "desc"), + EVERCONFIRMED ("everconfirmed", "everconfirmed", true), + FILENAME ("filename", "filename"), + IS_OBSOLETE ("Obsolete", "isobsolete", true), + KEYWORDS ("Keywords:", "keywords", true), + LONG_DESC ("Description:", "long_desc"), + LONGDESCLENGTH ("Number of comments", "longdesclength", true), + NEWCC ("Add CC:", "newcc", true), + OP_SYS ("OS:", "op_sys", false), + PRIORITY ("Priority:", "priority", false), + PRODUCT ("Product:", "product", false), + REP_PLATFORM ("Platform:", "rep_platform", false), + REPORTER ("Reporter:", "reporter", false, true), + REPORTER_ACCESSIBLE ("reporter_accessible", "reporter_accessible", true), + RESOLUTION ("Resolution:", "resolution", false, true), // Exiting bug field, new cc + SHORT_DESC ("Summary:", "short_desc", true), + TARGET_MILESTONE ("Target milestone:", "target_milestone", false), + THETEXT ("thetext", "thetext"), + TYPE ("type", "type"), + UNKNOWN ("UNKNOWN", "UNKNOWN"), + VERSION ("Version:", "version", false), + VOTES ("Votes:", "votes", false, true), + WHO ("who", "who"), + QA_CONTACT("QA Contact", "qa_contact", false, false), + ADDSELFCC ("Add self to CC", "addselfcc", true, false), + // Used by search engine + LI ("used by search engine", "li", true), + ID ("used by search engine", "id", true), + SHORT_SHORT_DESC ("used by search engine", "short_short_desc", false), + SEQ ("used by search engine", "seq", false), + RESULT ("used by search engine", "result", false), + RDF ("used by search engine", "rdf", false), + INSTALLATION ("used by search engine", "installation", false), + BUGS ("used by search engine", "bugs", false); + + private final boolean isHidden; + + private final boolean isReadOnly; + + private final String keyString; + + private final String prettyName; + + BugzillaReportElement(String prettyName, String fieldName) { + this(prettyName, fieldName, false, false); + } + + BugzillaReportElement(String prettyName, String fieldName, boolean hidden) { + this(prettyName, fieldName, hidden, false); + } + + BugzillaReportElement(String prettyName, String fieldName, boolean hidden, boolean readonly) { + this.prettyName = prettyName; + this.keyString = fieldName; + this.isHidden = hidden; + this.isReadOnly = readonly; + } + + public String getKeyString() { + return keyString; + } + + public boolean isHidden() { + return isHidden; + } + + public boolean isReadOnly() { + return isReadOnly; + } + + public String toString() { + return prettyName; + } +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java new file mode 100644 index 000000000..7d20659c0 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaReportSubmitForm.java @@ -0,0 +1,622 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.mylar.internal.tasklist.LocalAttachment; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; +import org.eclipse.mylar.internal.tasklist.RepositoryOperation; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer; +import org.eclipse.mylar.internal.tasklist.util.HtmlTag; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token; + +/** + * + * @author Shawn Minto + * @author Mik Kersten (hardening of prototype) + * @author Rob Elves + * + * Class to handle the positing of a bug + */ +public class BugzillaReportSubmitForm { + + private static final String KEY_ID = "id"; + + private static final String VAL_TRUE = "true"; + + private static final String KEY_REMOVECC = "removecc"; + + private static final String KEY_CC = "cc"; + + private static final String POST_CONTENT_TYPE = "application/x-www-form-urlencoded"; + + private static final String REQUEST_PROPERTY_CONTENT_TYPE = "Content-Type"; + + private static final String REQUEST_PROPERTY_CONTENT_LENGTH = "Content-Length"; + + private static final String METHOD_POST = "POST"; + + private static final String KEY_BUGZILLA_PASSWORD = "Bugzilla_password"; + + private static final String KEY_BUGZILLA_LOGIN = "Bugzilla_login"; + + private static final String POST_BUG_CGI = "post_bug.cgi"; + + private static final String PROCESS_BUG_CGI = "process_bug.cgi"; + + public static final int WRAP_LENGTH = 90; + + private static final String VAL_PROCESS_BUG = "process_bug"; + + private static final String KEY_FORM_NAME = "form_name"; + + private static final String VAL_NONE = "none"; + + private static final String KEY_KNOB = "knob"; + + private static final String KEY_COMMENT = "comment"; + + private static final String KEY_SHORT_DESC = "short_desc"; + + public static final String FORM_POSTFIX_218 = " Submitted"; + + public static final String FORM_POSTFIX_216 = " posted"; + + public static final String FORM_PREFIX_BUG_218 = "Bug "; + + public static final String FORM_PREFIX_BUG_220 = "Issue "; + + private BugzillaAttachmentHandler attachmentHandler = new BugzillaAttachmentHandler(); + + /** The fields that are to be changed/maintained */ + private Map<String, String> fields = new HashMap<String, String>(); + + private URL postUrl; + + private Proxy proxySettings = Proxy.NO_PROXY; + + private String charset; + + /** The prefix for how to find the bug number from the return */ + private String prefix; + + private String prefix2; + + /** The postfix for how to find the bug number from the return */ + private String postfix; + + /** An alternate postfix for how to find the bug number from the return */ + private String postfix2; + + private String error = null; + + /** The local attachment to attach to this report, null if none */ + private LocalAttachment attachment = null; + + + public BugzillaReportSubmitForm(String charEncoding) { + charset = charEncoding; + } + + public static BugzillaReportSubmitForm makeNewBugPost(String repositoryUrl, String userName, String password, + Proxy proxySettings, String characterEncoding, NewBugzillaReport model, boolean wrapDescription) + throws UnsupportedEncodingException { + + BugzillaReportSubmitForm form; + + if (characterEncoding != null) { + form = new BugzillaReportSubmitForm(characterEncoding); + } else { + form = new BugzillaReportSubmitForm(BugzillaPlugin.ENCODING_UTF_8); + } + + form.setPrefix(BugzillaReportSubmitForm.FORM_PREFIX_BUG_218); + form.setPrefix2(BugzillaReportSubmitForm.FORM_PREFIX_BUG_220); + + form.setPostfix(BugzillaReportSubmitForm.FORM_POSTFIX_216); + form.setPostfix2(BugzillaReportSubmitForm.FORM_POSTFIX_218); + + setConnectionsSettings(form, repositoryUrl, userName, password, proxySettings, POST_BUG_CGI); + + // go through all of the attributes and add them to + // the bug post + Iterator<RepositoryTaskAttribute> itr = model.getAttributes().iterator(); + while (itr.hasNext()) { + RepositoryTaskAttribute a = itr.next(); + if (a != null && a.getID() != null && a.getID().compareTo("") != 0) { + String value = null; + value = a.getValue(); + if (value == null) + continue; + form.add(a.getID(), value); + } + } + + // form.add(KEY_BUG_FILE_LOC, ""); + + // specify the product + form.add(BugzillaReportElement.PRODUCT.getKeyString(), model.getProduct()); + + // add the summary to the bug post + form.add(BugzillaReportElement.SHORT_DESC.getKeyString(), model.getSummary()); + + String formattedDescription = formatTextToLineWrap(model.getDescription(), wrapDescription); + model.setDescription(formattedDescription); + + if (model.getDescription().length() != 0) { + // add the new comment to the bug post if there + // is some text in + // it + form.add(KEY_COMMENT, model.getDescription()); + } + return form; + } + + /** + * TODO: refactor common stuff with new bug post + * + * @param removeCC + * @param characterEncoding + * TODO + * + * @throws UnsupportedEncodingException + */ + public static BugzillaReportSubmitForm makeExistingBugPost(RepositoryTaskData bug, String repositoryUrl, + String userName, String password, Proxy proxySettings, Set<String> removeCC, String characterEncoding) + throws UnsupportedEncodingException { + + BugzillaReportSubmitForm bugReportPostHandler; + + if (characterEncoding != null) { + bugReportPostHandler = new BugzillaReportSubmitForm(characterEncoding); + } else { + bugReportPostHandler = new BugzillaReportSubmitForm(BugzillaPlugin.ENCODING_UTF_8); + } + + //setDefaultCCValue(bug, userName); + setConnectionsSettings(bugReportPostHandler, repositoryUrl, userName, password, proxySettings, PROCESS_BUG_CGI); + + // go through all of the attributes and add them to the bug post + for (Iterator<RepositoryTaskAttribute> it = bug.getAttributes().iterator(); it.hasNext();) { + RepositoryTaskAttribute a = it.next(); + if (a.getID().equals(BugzillaReportElement.CC.getKeyString()) + || a.getID().equals(BugzillaReportElement.REPORTER.getKeyString()) + || a.getID().equals(BugzillaReportElement.ASSIGNED_TO.getKeyString()) + || a.getID().equals(BugzillaReportElement.CREATION_TS.getKeyString())) { + continue; + } + if (a != null && a.getID() != null && a.getID().compareTo("") != 0 && !a.isHidden()) { + String value = a.getValue(); + // System.err.println(a.getID()+" "+a.getValue()); + // add the attribute to the bug post + bugReportPostHandler.add(a.getID(), value != null ? value : ""); + } else if (a != null && a.getID() != null && a.getID().compareTo("") != 0 && a.isHidden()) { + // we have a hidden attribute and we should send it back. + // System.err.println(a.getID()+" "+a.getValue()); + bugReportPostHandler.add(a.getID(), a.getValue()); + } + } + + // when posting the bug id is encoded in a hidden field named 'id' + bugReportPostHandler.add(KEY_ID, bug.getAttributeValue(BugzillaReportElement.BUG_ID.getKeyString())); + + // add the operation to the bug post + RepositoryOperation o = bug.getSelectedOperation(); + if (o == null) + bugReportPostHandler.add(KEY_KNOB, VAL_NONE); + else { + bugReportPostHandler.add(KEY_KNOB, o.getKnobName()); + if (o.hasOptions()) { + String sel = o.getOptionValue(o.getOptionSelection()); + bugReportPostHandler.add(o.getOptionName(), sel); + } else if (o.isInput()) { + String sel = o.getInputValue(); + bugReportPostHandler.add(o.getInputName(), sel); + } + } + bugReportPostHandler.add(KEY_FORM_NAME, VAL_PROCESS_BUG); + + if (bug.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString()) != null) { + bugReportPostHandler.add(KEY_SHORT_DESC, bug.getAttribute(BugzillaReportElement.SHORT_DESC.getKeyString()).getValue()); + } + + if (bug.getNewComment().length() != 0) { + bugReportPostHandler.add(KEY_COMMENT, bug.getNewComment()); + } + + if (removeCC != null && removeCC.size() > 0) { + String[] s = new String[removeCC.size()]; + bugReportPostHandler.add(KEY_CC, toCommaSeparatedList(removeCC.toArray(s))); + bugReportPostHandler.add(KEY_REMOVECC, VAL_TRUE); + } + + bugReportPostHandler.attachment = bug.getNewAttachment(); + + return bugReportPostHandler; + } + + private static String toCommaSeparatedList(String[] strings) { + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < strings.length; i++) { + buffer.append(strings[i]); + if (i != strings.length - 1) { + buffer.append(","); + } + } + return buffer.toString(); + } + + /** + * Add a value to be posted to the bug + * + * @param key + * The key for the value to be added + * @param value + * The value to be added + * @throws UnsupportedEncodingException + */ + private void add(String key, String value) throws UnsupportedEncodingException { + // try { + fields.put(key, URLEncoder.encode(value == null ? "" : value, charset)); + // BugzillaPlugin.ENCODING_UTF_8 + // } catch (UnsupportedEncodingException e) { + // // ignore + // } + } + + /** + * Post the bug to the bugzilla server + * + * @return The result of the responses + * @throws BugzillaException + * @throws PossibleBugzillaFailureException + */ + public String submitReportToRepository() throws BugzillaException, LoginException, PossibleBugzillaFailureException { + BufferedOutputStream out = null; + BufferedReader in = null; + String result = null; + try { + // connect to the bugzilla server + URLConnection cntx = BugzillaPlugin.getUrlConnection(postUrl, proxySettings); + if (cntx == null || !(cntx instanceof HttpURLConnection)) + return null; + + HttpURLConnection postConnection = (HttpURLConnection) cntx; + + // set the connection method + postConnection.setRequestMethod(METHOD_POST); + String contentTypeString = POST_CONTENT_TYPE; + if (charset != null) { + contentTypeString += ";charset=" + charset; + } + postConnection.setRequestProperty(REQUEST_PROPERTY_CONTENT_TYPE, contentTypeString); + // get the url for the update with all of the changed values + + byte[] body = getPostBody().getBytes(); + postConnection.setRequestProperty(REQUEST_PROPERTY_CONTENT_LENGTH, String.valueOf(body.length)); + + // allow outgoing streams and open a stream to post to + postConnection.setDoOutput(true); + + out = new BufferedOutputStream(postConnection.getOutputStream()); + + // write the data and close the stream + out.write(body); + out.flush(); + + int responseCode = postConnection.getResponseCode(); + if (responseCode != HttpURLConnection.HTTP_OK && responseCode != HttpURLConnection.HTTP_CREATED) { + throw new BugzillaException("Server returned HTTP error: " + responseCode + " - " + + postConnection.getResponseMessage()); + } + + // open a stream to receive response from bugzilla + in = new BufferedReader(new InputStreamReader(postConnection.getInputStream())); + + + String aString = in.readLine(); + + // Used to debug reponse from bugzilla server + // while (aString != null) { + // System.err.println(aString); + // aString = in.readLine(); + // } + + boolean possibleFailure = true; + error = ""; + + while (aString != null) { + error += aString == null ? "" : aString + "\n"; + + // check if we have run into an error + + if (result == null + && (aString.toLowerCase().indexOf("check e-mail") != -1 || aString.toLowerCase().indexOf( + "error") != -1)) { + throw new LoginException("Bugzilla login problem."); + } else if (aString.indexOf("Invalid Username Or Password") != -1) { + throw new LoginException("Invalid Username or Password."); + } else if (aString.toLowerCase().matches(".*bug\\s+processed.*") // TODO: + // make + // this + // configurable + || aString.toLowerCase().matches(".*defect\\s+processed.*")) { + possibleFailure = false; + } + // // get the bug number if it is required + if (prefix != null && prefix2 != null && postfix != null && postfix2 != null && result == null) { + int startIndex = -1; + int startIndexPrefix = aString.toLowerCase().indexOf(prefix.toLowerCase()); + int startIndexPrefix2 = aString.toLowerCase().indexOf(prefix2.toLowerCase()); + + if (startIndexPrefix != -1 || startIndexPrefix2 != -1) { + if (startIndexPrefix != -1) { + startIndex = startIndexPrefix + prefix.length(); + } else { + startIndex = startIndexPrefix2 + prefix2.length(); + } + int stopIndex = aString.toLowerCase().indexOf(postfix.toLowerCase(), startIndex); + if (stopIndex == -1) + stopIndex = aString.toLowerCase().indexOf(postfix2.toLowerCase(), startIndex); + if (stopIndex > -1) { + result = (aString.substring(startIndex, stopIndex)).trim(); + possibleFailure = false; + } + } + } + aString = in.readLine(); + } + + if ((result == null || result.compareTo("") == 0) + && (prefix != null && prefix2 == null && postfix != null && postfix2 != null)) { + throw new PossibleBugzillaFailureException("Could not find bug number for new bug."); + } else if (possibleFailure) { + throw new PossibleBugzillaFailureException( + "Bug report may not have been submitted. Bugzilla message was: "); + } + + // set the error to null if we dont think that there was one + error = null; + + } catch (IOException e) { + throw new BugzillaException("An exception occurred while submitting the bug: " + e.getMessage(), e); + } catch (KeyManagementException e) { + throw new BugzillaException("Could not POST form. Communications error: " + e.getMessage(), e); + } catch (NoSuchAlgorithmException e) { + throw new BugzillaException("Could not POST form. Communications error: " + e.getMessage(), e); + } finally { + try { + if (in != null) + in.close(); + if (out != null) + out.close(); + + } catch (IOException e) { + BugzillaPlugin.log(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, IStatus.ERROR, + "Problem posting the bug", e)); + } + + try { + // upload the attachment if any + if (attachment != null) { + if (attachment.getDescription() == null || attachment.getDescription().equals("")) { + throw new BugzillaException("Attachment must have a description"); + } + + String uname = URLDecoder.decode(fields.get(KEY_BUGZILLA_LOGIN), this.charset); + String password = URLDecoder.decode(fields.get(KEY_BUGZILLA_PASSWORD), this.charset); + if (!attachmentHandler.uploadAttachment(attachment, uname, password, proxySettings)) { + throw new BugzillaException("Could not upload attachment."); + } + + } + } catch (IOException e) { + throw new BugzillaException("Could not upload attachment. Communications error: " + e.getMessage(), e); + } + + } + // return the bug number + return result; + } + + /** + * Get the url that contains the attributes to be posted + * + * @return The url for posting + */ + private String getPostBody() { + String postBody = ""; + + // go through all of the attributes and add them to the body of the post + Iterator<Map.Entry<String, String>> anIterator = fields.entrySet().iterator(); + while (anIterator.hasNext()) { + Map.Entry<String, String> entry = anIterator.next(); + postBody = postBody + entry.getKey() + "=" + entry.getValue(); + if (anIterator.hasNext()) + postBody = postBody + "&"; + } + return postBody; + } + + private void setPrefix(String prefix) { + this.prefix = prefix; + } + + private void setPostfix(String postfix) { + this.postfix = postfix; + } + + private void setPostfix2(String postfix) { + this.postfix2 = postfix; + } + + public String getError() { + return parseError(); + } + + /** + * remove all of the hyperlinks and erroneous info + * + * @return + */ + private String parseError() { + String newError = ""; + try { + HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(new StringReader(error), null); + for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) { + if (token.getType() == Token.TAG && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.A) { + + } else if (token.getType() == Token.TAG + && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.FORM) { + for (Token token2 = tokenizer.nextToken(); token2.getType() != Token.EOF; token2 = tokenizer + .nextToken()) { + if (token2.getType() == Token.TAG) { + HtmlTag tag = (HtmlTag) token2.getValue(); + if (tag.getTagType() == HtmlTag.Type.FORM && tag.isEndTag()) + break; + + } + } + } else { + newError += token.getWhitespace().toString() + token.getValue(); + } + } + } catch (Exception e) { + newError = error; + } + return newError; + } + + private void setPrefix2(String prefix2) { + this.prefix2 = prefix2; + } + + // private void setCharset(String charset) { + // this.charset = charset; + // } + + private static void setConnectionsSettings(BugzillaReportSubmitForm form, String repositoryUrl, String userName, + String password, Proxy proxySettings, String formName) throws UnsupportedEncodingException { + + String baseURL = repositoryUrl; + + if (!baseURL.endsWith("/")) + baseURL += "/"; + try { + form.postUrl = new URL(baseURL + formName); + if (proxySettings != null) { + form.proxySettings = proxySettings; + } + } catch (MalformedURLException e) { + // we should be ok here + } + + // add the login information to the bug post + form.add(KEY_BUGZILLA_LOGIN, userName); + form.add(KEY_BUGZILLA_PASSWORD, password); + } + +// /** +// * Sets the cc field to the user's address if a cc has not been specified to +// * ensure that commenters are on the cc list. TODO: Review this mechanism +// * +// * @author Wesley Coelho +// */ +// private static void setDefaultCCValue(BugzillaReport bug, String userName) { +// // RepositoryTaskAttribute newCCattr = +// // bug.getAttributeForKnobName(KEY_NEWCC); +// RepositoryTaskAttribute owner = bug.getAttribute(BugzillaReportElement.ASSIGNED_TO); +// +// // Don't add the cc if the user is the bug owner +// if (userName == null || (owner != null && owner.getValue().indexOf(userName) != -1)) { +// // MylarStatusHandler.log("Could not determine CC value for +// // repository: " + repository, null); +// return; +// } +// // Don't add cc if already there +// RepositoryTaskAttribute ccAttribute = bug.getAttribute(BugzillaReportElement.CC); +// if (ccAttribute != null && ccAttribute.getValues().contains(userName)) { +// return; +// } +// RepositoryTaskAttribute newCCattr = bug.getAttribute(BugzillaReportElement.NEWCC); +// if (newCCattr == null) { +// newCCattr = new RepositoryTaskAttribute(BugzillaReportElement.NEWCC); +// bug.addAttribute(BugzillaReportElement.NEWCC, newCCattr); +// } +// // Add the user to the cc list +// newCCattr.setValue(userName); +// } + + /** + * Break text up into lines of about 80 characters so that it is displayed + * properly in bugzilla + */ + private static String formatTextToLineWrap(String origText, boolean hardWrap) { + // BugzillaServerVersion bugzillaServerVersion = + // IBugzillaConstants.BugzillaServerVersion.fromString(repository + // .getVersion()); + // if (bugzillaServerVersion != null && + // bugzillaServerVersion.compareTo(BugzillaServerVersion.SERVER_220) >= + // 0) { + // return origText; + if (!hardWrap) { + return origText; + } else { + String[] textArray = new String[(origText.length() / WRAP_LENGTH + 1) * 2]; + for (int i = 0; i < textArray.length; i++) + textArray[i] = null; + int j = 0; + while (true) { + int spaceIndex = origText.indexOf(" ", WRAP_LENGTH - 5); + if (spaceIndex == origText.length() || spaceIndex == -1) { + textArray[j] = origText; + break; + } + textArray[j] = origText.substring(0, spaceIndex); + origText = origText.substring(spaceIndex + 1, origText.length()); + j++; + } + + String newText = ""; + + for (int i = 0; i < textArray.length; i++) { + if (textArray[i] == null) + break; + newText += textArray[i] + "\n"; + } + return newText; + } + } +}
\ No newline at end of file diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java new file mode 100644 index 000000000..65b339372 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaRepositoryUtil.java @@ -0,0 +1,682 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.Proxy; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.nio.charset.Charset; +import java.security.GeneralSecurityException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.text.ParseException; +import java.util.Collections; +import java.util.List; + +import javax.security.auth.login.LoginException; + +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BUGZILLA_OPERATION; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BUGZILLA_REPORT_STATUS; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BUGZILLA_RESOLUTION; +import org.eclipse.mylar.internal.tasklist.RepositoryOperation; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer; +import org.eclipse.mylar.internal.tasklist.util.HtmlTag; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token; + +/** + * @author Mik Kersten (some rewriting) + * @author Rob Elves + */ +public class BugzillaRepositoryUtil { + + private static final String ATTR_CHARSET = "charset"; + + private static final String OPERATION_INPUT_ASSIGNED_TO = "assigned_to"; + + private static final String OPERATION_INPUT_DUP_ID = "dup_id"; + + private static final String OPERATION_OPTION_RESOLUTION = "resolution"; + + private static final String OPERATION_LABEL_CLOSE = "Mark bug as CLOSED"; + + private static final String OPERATION_LABEL_VERIFY = "Mark bug as VERIFIED"; + + private static final String OPERATION_LABEL_REOPEN = "Reopen bug"; + + private static final String OPERATION_LABEL_REASSIGN_DEFAULT = "Reassign bug to default assignee of selected component"; + + private static final String OPERATION_LABEL_REASSIGN = "Reassign bug to"; + + private static final String OPERATION_LABEL_DUPLICATE = "Resolve bug, mark it as duplicate of bug #"; + + private static final String OPERATION_LABEL_RESOLVE = "Resolve bug, changing resolution to"; + + private static final String OPERATION_LABEL_ACCEPT = "Accept bug (change status to ASSIGNED)"; + + private static final String BUG_STATUS_NEW = "NEW"; + + private static final String POST_ARGS_PASSWORD = "&Bugzilla_password="; + + public static final String POST_ARGS_SHOW_BUG = "/show_bug.cgi?id=";// ctype=xml& + + private static final String POST_ARGS_LOGIN = "GoAheadAndLogIn=1&Bugzilla_login="; + + private static final BugzillaAttributeFactory attributeFactory = new BugzillaAttributeFactory(); + + public static RepositoryTaskData getBug(String repositoryUrl, String userName, String password, Proxy proxySettings, + String characterEncoding, int id) throws IOException, MalformedURLException, LoginException, + GeneralSecurityException { + + + RepositoryTaskData bugReport = new RepositoryTaskData(new BugzillaAttributeFactory(), BugzillaPlugin.REPOSITORY_KIND, repositoryUrl, id); + setupExistingBugAttributes(repositoryUrl, bugReport); + + RepositoryReportFactory reportFactory = RepositoryReportFactory.getInstance(); + reportFactory.populateReport(bugReport, repositoryUrl, proxySettings, userName, password, characterEncoding); + updateBugAttributeOptions(repositoryUrl, proxySettings, userName, password, bugReport, characterEncoding); + addValidOperations(bugReport, userName); + + return bugReport; + } + + public static String addCredentials(String url, String userName, String password) + throws UnsupportedEncodingException { + if (userName != null && password != null) { + // if (repository.hasCredentials()) { + url += "&" + POST_ARGS_LOGIN + URLEncoder.encode(userName, BugzillaPlugin.ENCODING_UTF_8) + + POST_ARGS_PASSWORD + URLEncoder.encode(password, BugzillaPlugin.ENCODING_UTF_8); + } + return url; + } + + /** + * Get the list of products + * @param proxySettings TODO + * @param encoding + * TODO + * + * @return The list of valid products a bug can be logged against + * @throws IOException + * LoginException Exception + */ + public static List<String> getProductList(String repositoryUrl, Proxy proxySettings, String userName, String password, String encoding) + throws IOException, LoginException, Exception { + + return BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, password, encoding) + .getProducts(); + + // BugzillaQueryPageParser parser = new + // BugzillaQueryPageParser(repository, new NullProgressMonitor()); + // if (!parser.wasSuccessful()) { + // throw new RuntimeException("Couldn't get products"); + // } else { + // return Arrays.asList(parser.getProductValues()); + // } + + } + + // TODO: move to repository connector? + public static void validateCredentials(String repositoryUrl, String userid, String password) throws IOException, + LoginException { + + String url = repositoryUrl + "/index.cgi?" + POST_ARGS_LOGIN + + URLEncoder.encode(userid, BugzillaPlugin.ENCODING_UTF_8) + POST_ARGS_PASSWORD + + URLEncoder.encode(password, BugzillaPlugin.ENCODING_UTF_8); + + URL serverURL = new URL(url); + URLConnection connection = serverURL.openConnection(); + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + parseHtmlError(in); + } + + /** + * Utility method for determining what potential error has occurred from a + * bugzilla html reponse page + */ + public static void parseHtmlError(BufferedReader in) throws IOException, LoginException { + HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(in, null); + + boolean isTitle = false; + String title = ""; + + try { + + for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) { + + if (token.getType() == Token.TAG && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.TITLE + && !((HtmlTag) (token.getValue())).isEndTag()) { + isTitle = true; + continue; + } + + if (isTitle) { + // get all of the data in the title tag + if (token.getType() != Token.TAG) { + title += ((StringBuffer) token.getValue()).toString().toLowerCase() + " "; + continue; + } else if (token.getType() == Token.TAG + && ((HtmlTag) token.getValue()).getTagType() == HtmlTag.Type.TITLE + && ((HtmlTag) token.getValue()).isEndTag()) { + + if (title.indexOf("login") != -1 + || (title.indexOf("invalid") != -1 && title.indexOf("password") != -1) + || title.indexOf("check e-mail") != -1) { + throw new LoginException(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD); + } + return; + } + } + } + } catch (ParseException e) { + throw new IOException("Unable to parse result from repository:\n" + e.getMessage()); + } + } + + /** + * Adds bug attributes to new bug model and sets defaults + * @param proxySettings TODO + * @param characterEncoding + * TODO + * + * @throws IOException + * @throws NoSuchAlgorithmException + * @throws LoginException + * @throws KeyManagementException + */ + public static void setupNewBugAttributes(String repositoryUrl, Proxy proxySettings, String userName, + String password, NewBugzillaReport newReport, String characterEncoding) throws IOException, KeyManagementException, LoginException, NoSuchAlgorithmException { + + newReport.removeAllAttributes(); + + RepositoryTaskAttribute a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.PRODUCT); + List<String> optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, + userName, password, characterEncoding).getProducts(); + Collections.sort(optionValues); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + a.setValue(newReport.getProduct()); + newReport.addAttribute(BugzillaReportElement.PRODUCT.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.BUG_STATUS); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getStatusValues(); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + a.setValue(BUG_STATUS_NEW); + newReport.addAttribute(BugzillaReportElement.BUG_STATUS.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.VERSION); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getVersions(newReport.getProduct()); + Collections.sort(optionValues); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + if (optionValues != null && optionValues.size() > 0) { + a.setValue(optionValues.get(optionValues.size() - 1)); + } + newReport.addAttribute(BugzillaReportElement.VERSION.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.COMPONENT); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getComponents(newReport.getProduct()); + Collections.sort(optionValues); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + newReport.addAttribute(BugzillaReportElement.COMPONENT.getKeyString(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.REP_PLATFORM); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getPlatforms(); + Collections.sort(optionValues); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + newReport.addAttribute(BugzillaReportElement.REP_PLATFORM.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.OP_SYS); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getOSs(); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + newReport.addAttribute(BugzillaReportElement.OP_SYS.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.PRIORITY); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getPriorities(); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + a.setValue(optionValues.get((optionValues.size() / 2))); + newReport.addAttribute(BugzillaReportElement.PRIORITY.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.BUG_SEVERITY); + optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, userName, + password, characterEncoding).getSeverities(); + for (String option : optionValues) { + a.addOptionValue(option, option); + } + a.setValue(optionValues.get((optionValues.size() / 2))); + newReport.addAttribute(BugzillaReportElement.BUG_SEVERITY.getKeyString(), a); + // attributes.put(a.getName(), a); + + // a = new + // RepositoryTaskAttribute(BugzillaReportElement.TARGET_MILESTONE); + // optionValues = + // BugzillaPlugin.getDefault().getProductConfiguration(serverUrl).getTargetMilestones( + // newReport.getProduct()); + // for (String option : optionValues) { + // a.addOptionValue(option, option); + // } + // if(optionValues.size() > 0) { + // // new bug posts will fail if target_milestone element is included + // // and there are no milestones on the server + // newReport.addAttribute(BugzillaReportElement.TARGET_MILESTONE, a); + // } + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.ASSIGNED_TO); + a.setValue(""); + newReport.addAttribute(BugzillaReportElement.ASSIGNED_TO.getKeyString(), a); + // attributes.put(a.getName(), a); + + a = BugzillaRepositoryUtil.makeNewAttribute(BugzillaReportElement.BUG_FILE_LOC); + a.setValue("http://"); + a.setHidden(false); + newReport.addAttribute(BugzillaReportElement.BUG_FILE_LOC.getKeyString(), a); + // attributes.put(a.getName(), a); + + // newReport.attributes = attributes; + } + + public static void setupExistingBugAttributes(String serverUrl, RepositoryTaskData existingReport) { + // ordered list of elements as they appear in UI + // and additional elements that may not appear in the incoming xml + // stream but need to be present for bug submission + BugzillaReportElement[] reportElements = { BugzillaReportElement.BUG_STATUS, BugzillaReportElement.RESOLUTION, + BugzillaReportElement.BUG_ID, BugzillaReportElement.REP_PLATFORM, BugzillaReportElement.PRODUCT, + BugzillaReportElement.OP_SYS, BugzillaReportElement.COMPONENT, BugzillaReportElement.VERSION, + BugzillaReportElement.PRIORITY, BugzillaReportElement.BUG_SEVERITY, BugzillaReportElement.ASSIGNED_TO, + BugzillaReportElement.TARGET_MILESTONE, BugzillaReportElement.REPORTER, + BugzillaReportElement.DEPENDSON, BugzillaReportElement.BLOCKED, BugzillaReportElement.BUG_FILE_LOC, + BugzillaReportElement.NEWCC, BugzillaReportElement.KEYWORDS }; + + for (BugzillaReportElement element : reportElements) { + RepositoryTaskAttribute reportAttribute = BugzillaRepositoryUtil.makeNewAttribute(element); + existingReport.addAttribute(element.getKeyString(), reportAttribute); + } + } + + private static void updateBugAttributeOptions(String repositoryUrl, Proxy proxySettings, String userName, + String password, RepositoryTaskData existingReport, String characterEncoding) throws IOException, KeyManagementException, LoginException, NoSuchAlgorithmException { + String product = existingReport.getAttributeValue(BugzillaReportElement.PRODUCT.getKeyString()); + for (RepositoryTaskAttribute attribute : existingReport.getAttributes()) { + BugzillaReportElement element = BugzillaReportElement.valueOf(attribute.getID().trim().toUpperCase()); + attribute.clearOptions(); + List<String> optionValues = BugzillaPlugin.getRepositoryConfiguration(repositoryUrl, proxySettings, + userName, password, characterEncoding).getOptionValues(element, product); + if (element != BugzillaReportElement.OP_SYS && element != BugzillaReportElement.BUG_SEVERITY + && element != BugzillaReportElement.PRIORITY && element != BugzillaReportElement.BUG_STATUS) { + Collections.sort(optionValues); + } + if (element == BugzillaReportElement.TARGET_MILESTONE && optionValues.isEmpty()) { + existingReport.removeAttribute(BugzillaReportElement.TARGET_MILESTONE); + continue; + } + for (String option : optionValues) { + attribute.addOptionValue(option, option); + } + } + + } + + public static void addValidOperations(RepositoryTaskData bugReport, String userName) { + BUGZILLA_REPORT_STATUS status = BUGZILLA_REPORT_STATUS.valueOf(bugReport.getStatus()); + switch (status) { + case UNCONFIRMED: + case REOPENED: + case NEW: + addOperation(bugReport, BUGZILLA_OPERATION.none, userName); + addOperation(bugReport, BUGZILLA_OPERATION.accept, userName); + addOperation(bugReport, BUGZILLA_OPERATION.resolve, userName); + addOperation(bugReport, BUGZILLA_OPERATION.duplicate, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reassign, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reassignbycomponent, userName); + break; + case ASSIGNED: + addOperation(bugReport, BUGZILLA_OPERATION.none, userName); + addOperation(bugReport, BUGZILLA_OPERATION.resolve, userName); + addOperation(bugReport, BUGZILLA_OPERATION.duplicate, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reassign, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reassignbycomponent, userName); + break; + case RESOLVED: + addOperation(bugReport, BUGZILLA_OPERATION.none, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reopen, userName); + addOperation(bugReport, BUGZILLA_OPERATION.verify, userName); + addOperation(bugReport, BUGZILLA_OPERATION.close, userName); + break; + case CLOSED: + addOperation(bugReport, BUGZILLA_OPERATION.none, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reopen, userName); + break; + case VERIFIED: + addOperation(bugReport, BUGZILLA_OPERATION.none, userName); + addOperation(bugReport, BUGZILLA_OPERATION.reopen, userName); + addOperation(bugReport, BUGZILLA_OPERATION.close, userName); + } + } + + public static void addOperation(RepositoryTaskData bugReport, BUGZILLA_OPERATION opcode, String userName) { + RepositoryOperation newOperation = null; + switch (opcode) { + case none: + newOperation = new RepositoryOperation(opcode.toString(), "Leave as " + bugReport.getStatus() + " " + + bugReport.getResolution()); + newOperation.setChecked(true); + break; + case accept: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_ACCEPT); + break; + case resolve: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_RESOLVE); + newOperation.setUpOptions(OPERATION_OPTION_RESOLUTION); + for (BUGZILLA_RESOLUTION resolution : BUGZILLA_RESOLUTION.values()) { + newOperation.addOption(resolution.toString(), resolution.toString()); + } + break; + case duplicate: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_DUPLICATE); + newOperation.setInputName(OPERATION_INPUT_DUP_ID); + newOperation.setInputValue(""); + break; + case reassign: + String localUser = userName; + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_REASSIGN); + newOperation.setInputName(OPERATION_INPUT_ASSIGNED_TO); + newOperation.setInputValue(localUser); + break; + case reassignbycomponent: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_REASSIGN_DEFAULT); + break; + case reopen: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_REOPEN); + break; + case verify: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_VERIFY); + break; + case close: + newOperation = new RepositoryOperation(opcode.toString(), OPERATION_LABEL_CLOSE); + break; + default: + break; + // MylarStatusHandler.log("Unknown bugzilla operation code recieved", + // BugzillaRepositoryUtil.class); + } + if (newOperation != null) { + bugReport.addOperation(newOperation); + } + } + + public static String getBugUrl(String repositoryUrl, int id, String userName, String password) { + + String url = repositoryUrl + POST_ARGS_SHOW_BUG + id; + try { + url = addCredentials(url, userName, password); + } catch (UnsupportedEncodingException e) { + return ""; + } + return url; + } + + public static String getBugUrlWithoutLogin(String repositoryUrl, int id) { + String url = repositoryUrl + POST_ARGS_SHOW_BUG + id; + return url; + } + + public static String getCharsetFromString(String string) { + int charsetStartIndex = string.indexOf(ATTR_CHARSET); + if (charsetStartIndex != -1) { + int charsetEndIndex = string.indexOf("\"", charsetStartIndex); // TODO: + // could + // be + // space + // after? + if (charsetEndIndex == -1) { + charsetEndIndex = string.length(); + } + String charsetString = string.substring(charsetStartIndex + 8, charsetEndIndex); + if (Charset.availableCharsets().containsKey(charsetString)) { + return charsetString; + } + } + return null; + } + + protected static RepositoryTaskAttribute makeNewAttribute(org.eclipse.mylar.internal.bugzilla.core.BugzillaReportElement tag) { + return attributeFactory.createAttribute(tag.getKeyString()); + } + + +} + +// public static String decodeStringFromCharset(String string, String +// charset) throws UnsupportedEncodingException { +// String decoded = string; +// if (charset != null && string != null && +// Charset.availableCharsets().containsKey(charset)) { +// decoded = new String(string.getBytes(), charset); +// } +// return decoded; +// } + +// public synchronized static BugzillaRepositoryUtil getInstance() { +// if (instance == null) { +// // if the instance hasn't been created yet, create one +// instance = new +// BugzillaRepositoryUtil(BugzillaPlugin.getDefault().getServerName()); +// } +// +// if +// (!BugzillaRepositoryUtil.bugzillaUrl.equals(BugzillaPlugin.getDefault().getServerName())) +// { +// BugzillaRepositoryUtil.bugzillaUrl = +// BugzillaPlugin.getDefault().getServerName(); +// } +// return INSTANCE; +// } +// /** +// * Test method. +// */ +// public static void main(String[] args) throws Exception { +// instance = new +// BugzillaRepositoryUtil(BugzillaPlugin.getDefault().getServerName() + +// "/long_list.cgi?buglist="); +// BugReport bug = instance.getBug(16161); +// System.out.println("Bug " + bug.getId() + ": " + bug.getSummary()); +// for (Iterator<Attribute> it = bug.getAttributes().iterator(); it.hasNext();) +// { +// Attribute attribute = it.next(); +// System.out.println(attribute.getName() + ": " + attribute.getValue()); +// } +// System.out.println(bug.getDescription()); +// for (Iterator<Comment> it = bug.getComments().iterator(); it.hasNext();) { +// Comment comment = it.next(); +// System.out +// .println(comment.getAuthorName() + "<" + comment.getAuthor() + "> (" + +// comment.getCreated() + ")"); +// System.out.print(comment.getText()); +// System.out.println(); +// } +// } +// /** URL of the Bugzilla server */ +// private static String bugzillaUrl; +// private static BugzillaRepositoryUtil INSTANCE = new +// BugzillaRepositoryUtil(); +// public static List<String> getValidKeywords(String repositoryURL) { +// return +// BugzillaPlugin.getDefault().getProductConfiguration(repositoryURL).getKeywords(); +// } +// /** +// * Get the attribute values for a new bug +// * +// * @param nbm +// * A reference to a NewBugModel to store all of the data +// * @throws Exception +// */ +// public static void setupNewBugAttributes(String serverUrl, NewBugModel +// nbm, boolean getProd) throws Exception { +// BufferedReader in = null; +// try { +// // create a new input stream for getting the bug +// String prodname = URLEncoder.encode(nbm.getProduct(), +// BugzillaPlugin.ENCODING_UTF_8); +// +// TaskRepository repository = +// MylarTaskListPlugin.getRepositoryManager().getRepository( +// BugzillaPlugin.REPOSITORY_KIND, serverUrl); +// +// if (repository == null) { +// throw new LoginException("Repository configuration error."); +// } +// if (repository.getUserName() == null || +// repository.getUserName().trim().equals("") +// || repository.getPassword() == null) { +// throw new LoginException("Login credentials missing."); +// } +// +// String url = repository.getUrl() + "/enter_bug.cgi"; +// +// // use the proper url if we dont know the product yet +// if (!getProd) +// url += "?product=" + prodname + "&"; +// else +// url += "?"; +// +// url += POST_ARGS_LOGIN + URLEncoder.encode(repository.getUserName(), +// BugzillaPlugin.ENCODING_UTF_8) +// + POST_ARGS_PASSWORD + URLEncoder.encode(repository.getPassword(), +// BugzillaPlugin.ENCODING_UTF_8); +// +// URL bugUrl = new URL(url); +// URLConnection cntx = +// BugzillaPlugin.getDefault().getUrlConnection(bugUrl); +// if (cntx != null) { +// InputStream input = cntx.getInputStream(); +// if (input != null) { +// in = new BufferedReader(new InputStreamReader(input)); +// +// new NewBugParser(in).parseBugAttributes(nbm, getProd); +// } +// } +// +// } catch (Exception e) { +// +// if (e instanceof KeyManagementException || e instanceof +// NoSuchAlgorithmException +// || e instanceof IOException) { +// if (MessageDialog.openQuestion(null, "Bugzilla Connect Error", +// "Unable to connect to Bugzilla server.\n" +// + "Bug report will be created offline and saved for submission later.")) +// { +// nbm.setConnected(false); +// setupBugAttributes(serverUrl, nbm); +// } else +// throw new Exception("Bug report will not be created."); +// } else +// throw e; +// } finally { +// try { +// if (in != null) +// in.close(); +// } catch (IOException e) { +// BugzillaPlugin.log(new Status(IStatus.ERROR, +// IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, +// "Problem closing the stream", e)); +// } +// } +// } +// public static boolean downloadAttachment(TaskRepository repository, int +// id, File destinationFile, boolean overwrite) +// throws IOException { +// BufferedReader in = null; +// try { +// String url = repository.getUrl() + POST_ARGS_ATTACHMENT_DOWNLOAD + id; +// if (repository.hasCredentials()) { +// url += "&" + POST_ARGS_LOGIN +// + URLEncoder.encode(repository.getUserName(), +// BugzillaPlugin.ENCODING_UTF_8) +// + POST_ARGS_PASSWORD +// + URLEncoder.encode(repository.getPassword(), +// BugzillaPlugin.ENCODING_UTF_8); +// } +// URL downloadUrl = new URL(url); +// URLConnection connection = +// BugzillaPlugin.getDefault().getUrlConnection(downloadUrl); +// if (connection != null) { +// InputStream input = connection.getInputStream(); +// if (input != null) { +// in = new BufferedReader(new InputStreamReader(input)); +// if (destinationFile.exists() && !overwrite) { +// return false; +// } +// destinationFile.createNewFile(); +// OutputStreamWriter outputStream = new OutputStreamWriter(new +// FileOutputStream(destinationFile)); +// BufferedWriter out = new BufferedWriter(outputStream); +// char[] buf = new char[1024]; +// int len; +// while ((len = in.read(buf)) > 0) { +// out.write(buf, 0, len); +// } +// in.close(); +// out.close(); +// return true; +// } +// } +// } catch (MalformedURLException e) { +// throw e; +// } catch (IOException e) { +// throw e; +// } catch (Exception e) { +// BugzillaPlugin.log(new Status(IStatus.ERROR, +// IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, +// "Problem retrieving attachment", e)); +// return false; +// } finally { +// try { +// if (in != null) +// in.close(); +// } catch (IOException e) { +// BugzillaPlugin.log(new Status(IStatus.ERROR, +// IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, +// "Problem closing the stream", e)); +// } +// } +// return false; +// }
\ No newline at end of file diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java new file mode 100644 index 000000000..d7ecbac02 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskData.java @@ -0,0 +1,284 @@ +///******************************************************************************* +// * Copyright (c) 2003 - 2006 University Of British Columbia and others. +// * All rights reserved. This program and the accompanying materials +// * are made available under the terms of the Eclipse Public License v1.0 +// * which accompanies this distribution, and is available at +// * http://www.eclipse.org/legal/epl-v10.html +// * +// * Contributors: +// * University Of British Columbia - initial API and implementation +// *******************************************************************************/ +//package org.eclipse.mylar.internal.bugzilla.core; +// +//import java.io.Serializable; +//import java.text.ParseException; +//import java.text.SimpleDateFormat; +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.Iterator; +//import java.util.List; +//import java.util.StringTokenizer; +//import java.util.TimeZone; +// +//import org.eclipse.mylar.internal.tasklist.AbstractRepositoryTaskData; +//import org.eclipse.mylar.internal.tasklist.RepositoryOperation; +//import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute; +//import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttributeFactory; +// +///** +// * @author Mik Kersten +// * @author Rob Elves +// */ +//public class BugzillaTaskData extends AbstractRepositoryTaskData implements Serializable { + +// private static final long serialVersionUID = 310066248657960823L; +// +// public static final String VAL_STATUS_VERIFIED = "VERIFIED"; +// +// public static final String VAL_STATUS_CLOSED = "CLOSED"; +// +// public static final String VAL_STATUS_RESOLVED = "RESOLVED"; +// +// public static final String VAL_STATUS_NEW = "NEW"; +// +// /** Parser for dates in the report */ +// private static SimpleDateFormat delta_ts_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// +// private static SimpleDateFormat creation_ts_format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// +// /** The bugs valid keywords */ +// protected List<String> validKeywords; +// +// /** The repositoryOperations that can be done on the report */ +// protected List<RepositoryOperation> repositoryOperations = new ArrayList<RepositoryOperation>(); +// +// private static final RepositoryTaskAttributeFactory attributeFactory = new BugzillaAttributeFactory(); +// +// /** The operation that was selected to do to the bug */ +// protected RepositoryOperation selectedOperation = null; +// +// /** Whether or not this bug report is saved offline. */ +// protected boolean savedOffline = false; +// +// protected boolean hasChanges = false; +// +// protected String charset = null; +// +// public BugzillaTaskData(int id, String repositoryURL) { +// super(id, repositoryURL); +// } +// +// /** +// * TODO: move? +// */ +// public static boolean isResolvedStatus(String status) { +// if (status != null) { +// return status.equals(VAL_STATUS_RESOLVED) || status.equals(VAL_STATUS_CLOSED) +// || status.equals(VAL_STATUS_VERIFIED); +// } else { +// return false; +// } +// } +// +// public void addCC(String email) { +// addAttributeValue(BugzillaReportElement.CC.getKeyString(), email); +// } +// +// /** +// * Add an operation to the bug +// * +// * @param o +// * The operation to add +// */ +// public void addOperation(RepositoryOperation o) { +// repositoryOperations.add(o); +// } +// +// /** +// * Get the set of addresses in the CC list +// * +// * @return A <code>Set</code> of addresses in the CC list +// */ +// public List<String> getCC() { +// return getAttributeValues(BugzillaReportElement.CC.getKeyString()); +// } +// +// /** +// * Get the date that the bug was created +// * +// * @return The bugs creation date +// */ +// public Date getCreated() { +// if (created == null) { +// String dateString = getAttributeValue(BugzillaReportElement.CREATION_TS.getKeyString()); +// try { +// created = creation_ts_format.parse(dateString); +// } catch (ParseException e) { +// // ignore +// } +// } +// return created; +// } +// +// /** +// * Get the keywords for the bug +// * +// * @return The keywords for the bug +// */ +// public List<String> getKeywords() { +// +// // get the selected keywords for the bug +// StringTokenizer st = new StringTokenizer(getAttributeValue(BugzillaReportElement.KEYWORDS.getKeyString()), ",", false); +// List<String> keywords = new ArrayList<String>(); +// while (st.hasMoreTokens()) { +// String s = st.nextToken().trim(); +// keywords.add(s); +// } +// +// return keywords; +// } +// +// public String getLabel() { +// return getId() + ": " + getAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString()); +// } +// +// public Date getLastModified(TimeZone timeZone) { +// if (lastModified == null) { +// String dateString = getAttributeValue(BugzillaReportElement.DELTA_TS.getKeyString()); +// try { +// if(timeZone != null) { +// delta_ts_format.setTimeZone(timeZone); +// } else { +// delta_ts_format.setTimeZone(TimeZone.getDefault()); +// } +// lastModified = delta_ts_format.parse(dateString); +// } catch (ParseException e) { +// // ignore +// } +// } +// return lastModified; +// } +// +// /** +// * Get an operation from the bug based on its display name +// * +// * @param displayText +// * The display text for the operation +// * @return The operation that has the display text +// */ +// public RepositoryOperation getOperation(String displayText) { +// Iterator<RepositoryOperation> itr = repositoryOperations.iterator(); +// while (itr.hasNext()) { +// RepositoryOperation o = itr.next(); +// String opName = o.getOperationName(); +// opName = opName.replaceAll("</.*>", ""); +// opName = opName.replaceAll("<.*>", ""); +// if (opName.equals(displayText)) +// return o; +// } +// return null; +// } +// +// /** +// * Get all of the repositoryOperations that can be done to the bug +// * +// * @return The repositoryOperations that can be done to the bug +// */ +// public List<RepositoryOperation> getOperations() { +// return repositoryOperations; +// } +// +// /** +// * Get the person who reported the bug +// * +// * @return The person who reported the bug +// */ +// public String getReporter() { +// return getAttributeValue(BugzillaReportElement.REPORTER.getKeyString()); +// } +// +// /** +// * Get the resolution of the bug +// * +// * @return The resolution of the bug +// */ +// public String getResolution() { +// return getAttributeValue(BugzillaReportElement.RESOLUTION.getKeyString()); +// } +// +// /** +// * Get the status of the bug +// * +// * @return The bugs status +// */ +// public String getStatus() { +// return getAttributeValue(BugzillaReportElement.BUG_STATUS.getKeyString()); +// } +// +// /** +// * Get the summary for the bug +// * +// * @return The bugs summary +// */ +// public String getSummary() { +// return getAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString()); +// } +// +// public void setSummary(String summary) { +// setAttributeValue(BugzillaReportElement.SHORT_DESC.getKeyString(), summary); +// } +// +// public String getProduct() { +// return getAttributeValue(BugzillaReportElement.PRODUCT.getKeyString()); +// } +// +// public boolean isLocallyCreated() { +// return false; +// } +// +// public boolean isResolved() { +// RepositoryTaskAttribute status = getAttribute(BugzillaReportElement.BUG_STATUS.getKeyString()); +// return status != null && isResolvedStatus(status.getValue()); +// } +// +// public boolean isSavedOffline() { +// return savedOffline; +// } +// +// /** +// * Remove an address from the bugs CC list +// * +// * @param email +// * the address to be removed from the CC list +// * @return <code>true</code> if the email is in the set and it was removed +// */ +// public void removeCC(String email) { +// removeAttributeValue(BugzillaReportElement.CC.getKeyString(), email); +// } +// +// public void setDescription(String description) { +// // ignore, used by NewBugReport +// // this.description = decodeStringFromCharset(description); +// } +// +// public void setKeywords(List<String> keywords) { +// this.validKeywords = keywords; +// } +// +// public void setOfflineState(boolean newOfflineState) { +// savedOffline = newOfflineState; +// } +// +// public void setSelectedOperation(RepositoryOperation o) { +// selectedOperation = o; +// } +// +// public RepositoryOperation getSelectedOperation() { +// return selectedOperation; +// } +// +// @Override +// public RepositoryTaskAttributeFactory getAttributeFactory() { +// return attributeFactory; +// } +//} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java new file mode 100644 index 000000000..50a5b6011 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java @@ -0,0 +1,171 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.core; + +/** + * @author Mik Kersten (hardening of prototype + */ +public interface IBugzillaConstants { + + // Error response from bugzilla server upon bug request + static final String ERROR_INVALID_BUG_ID = "InvalidBugId"; + + static final String ERROR_INVALID_USERNAME_OR_PASSWORD = "Invalid Username Or Password"; + + static final String MOST_RECENT_QUERY = "org.eclipse.mylar.bugzilla.query.last"; + + static final String SERVER_VERSION = "org.eclipse.mylar.bugzilla.server.version"; + +// static final String SERVER_220 = "2.20"; +// static final String SERVER_218 = "2.18"; + + /** Used by search engine */ + public static final int RETURN_ALL_HITS = -1; + + public static final String CONTENT_TYPE_RDF = "&ctype=rdf"; + + /** Supported bugzilla repository versions */ + static public enum BugzillaServerVersion { + SERVER_218, SERVER_220, SERVER_222; + + @Override + public String toString() { + switch (this) { + case SERVER_222: + return "2.22"; + case SERVER_220: + return "2.20"; + case SERVER_218: + return "2.18"; + default: + return "null"; + } + } + + /** returns null if version string unknown* */ + static public BugzillaServerVersion fromString(String version) { + if (version.equals(SERVER_222.toString())) + return SERVER_222; + if (version.equals(SERVER_220.toString())) + return SERVER_220; + if (version.equals(SERVER_218.toString())) + return SERVER_218; + return null; + } + } + + // static final String IS_216 = "BUGZILLA_IS_216"; + // static final String IS_218 = "BUGZILLA_IS_218"; + // static final String IS_220 = "BUGZILLA_IS_220"; + + static final String REFRESH_QUERY = "org.eclipse.mylar.bugzilla.query.refresh"; + + static final String MAX_RESULTS = "org.eclipse.mylar.bugzilla.search.results.max"; + + // names for the resources used to hold the different attributes of a bug + static final String VALUES_STATUS = "org.eclipse.mylar.bugzilla.values.status"; + + static final String VALUSE_STATUS_PRESELECTED = "org.eclipse.mylar.bugzilla.values.status.preselected"; + + static final String VALUES_RESOLUTION = "org.eclipse.mylar.bugzilla.values.resolution"; + + static final String VALUES_SEVERITY = "org.eclipse.mylar.bugzilla.values.severity"; + + static final String VALUES_PRIORITY = "org.eclipse.mylar.bugzilla.values.priority"; + + static final String VALUES_HARDWARE = "org.eclipse.mylar.bugzilla.values.hardware"; + + static final String VALUES_OS = "org.eclipse.mylar.bugzilla.values.os"; + + static final String VALUES_PRODUCT = "org.eclipse.mylar.bugzilla.values.product"; + + static final String VALUES_COMPONENT = "org.eclipse.mylar.bugzilla.values.component"; + + static final String VALUES_VERSION = "org.eclipse.mylar.bugzilla.values.version"; + + static final String VALUES_TARGET = "org.eclipse.mylar.bugzilla.values.target"; + + static final String ECLIPSE_BUGZILLA_URL = "https://bugs.eclipse.org/bugs"; + + static final String TEST_BUGZILLA_216_URL = "http://mylar.eclipse.org/bugs216"; + + static final String TEST_BUGZILLA_218_URL = "http://mylar.eclipse.org/bugs218"; + + static final String TEST_BUGZILLA_220_URL = "http://mylar.eclipse.org/bugs220"; + + static final String TEST_BUGZILLA_2201_URL = "http://mylar.eclipse.org/bugs2201"; + + static final String TEST_BUGZILLA_222_URL = "http://mylar.eclipse.org/bugs222"; + + // Default values for keys + + static final String[] DEFAULT_STATUS_VALUES = { "Unconfirmed", "New", "Assigned", "Reopened", "Resolved", + "Verified", "Closed" }; + + static final String[] DEFAULT_PRESELECTED_STATUS_VALUES = { "New", "Assigned", "Reopened" }; + + // static final String[] DEFAULT_RESOLUTION_VALUES = { "Fixed", "Invalid", + // "Wontfix", "Later", "Remind", "Duplicate", + // "Worksforme", "Moved" }; + + static final String[] DEFAULT_SEVERITY_VALUES = { "blocker", "critical", "major", "normal", "minor", "trivial", + "enhancement" }; + + static final String[] DEFAULT_PRIORITY_VALUES = { "P1", "P2", "P3", "P4", "P5" }; + + static final String[] DEFAULT_HARDWARE_VALUES = { "All", "Macintosh", "PC", "Power PC", "Sun", "Other" }; + + static final String[] DEFAULT_OS_VALUES = { "All", "AIX Motif", "Windows 95", "Windows 98", "Windows CE", + "Windows ME", "Windows 2000", "Windows NT", "Windows XP", "Windows All", "MacOS X", "Linux", "Linux-GTK", + "Linux-Motif", "HP-UX", "Neutrino", "QNX-Photon", "Solaris", "Unix All", "other" }; + + static final String[] DEFAULT_PRODUCT_VALUES = {}; + + static final String[] DEFAULT_COMPONENT_VALUES = {}; + + static final String[] DEFAULT_VERSION_VALUES = {}; + + static final String[] DEFAULT_TARGET_VALUES = {}; + + public static final String TITLE_MESSAGE_DIALOG = "Mylar Bugzilla Connector"; + + public static final String TITLE_NEW_BUG = "New Bugzilla Report"; + + public static final String MESSAGE_LOGIN_FAILURE = "Bugzilla login information or repository version incorrect"; + + public static final String INVALID_2201_ATTRIBUTE_IGNORED = "EclipsebugsBugzilla2.20.1"; + + public static final String VALUE_STATUS_RESOLVED = "RESOLVED"; + + public static final String VALUE_STATUS_NEW = "NEW"; + + public static final String VALUE_STATUS_CLOSED = "CLOSED"; + + public static final String VALUE_STATUS_ASSIGNED = "ASSIGNED"; + + public static final String VALUE_RESOLUTION_LATER = "LATER"; + + public static enum BUGZILLA_OPERATION { + none, accept, resolve, duplicate, reassign, reassignbycomponent, reopen, verify, close; + } + + public static enum BUGZILLA_REPORT_STATUS { + UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED; + } + + public static enum BUGZILLA_REPORT_SEVERITY { + UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED; + } + + public static enum BUGZILLA_RESOLUTION { + FIXED, INVALID, WONTFIX, LATER, REMIND, WORKSFORME; + } +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java new file mode 100644 index 000000000..32469c701 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/KeywordParser.java @@ -0,0 +1,155 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.IOException; +import java.io.Reader; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; + +import javax.security.auth.login.LoginException; + +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer; +import org.eclipse.mylar.internal.tasklist.util.HtmlTag; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token; + +/** + * Parses Bugzilla keywords page to determine keywords valid in this + * installation + * + * @author Shawn Minto + */ +public class KeywordParser { + /** Tokenizer used on the stream */ + private static HtmlStreamTokenizer tokenizer; + + /** + * Constructor. + * + * @param in + * The input stream for the keywords page. + */ + public KeywordParser(Reader in) { + tokenizer = new HtmlStreamTokenizer(in, null); + } + + public String getEncoding() { + return ""; + } + + /** + * Parse the keyword page for the valid products that a bug can be logged + * for + * + * @return A list of the keywordds that we can enter bugs for + * @throws IOException + * @throws ParseException + */ + public List<String> getKeywords() throws IOException, ParseException, LoginException { + ArrayList<String> keywords = new ArrayList<String>(); + + boolean isTitle = false; + boolean possibleBadLogin = false; + String title = ""; + + for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) { + + // make sure that bugzilla doesn't want us to login + if (token.getType() == Token.TAG && ((HtmlTag) (token.getValue())).getTagType() == HtmlTag.Type.TITLE + && !((HtmlTag) (token.getValue())).isEndTag()) { + isTitle = true; + continue; + } + + if (isTitle) { + // get all of the data from inside of the title tag + if (token.getType() != Token.TAG) { + title += ((StringBuffer) token.getValue()).toString().toLowerCase() + " "; + continue; + } else if (token.getType() == Token.TAG + && ((HtmlTag) token.getValue()).getTagType() == HtmlTag.Type.TITLE + && ((HtmlTag) token.getValue()).isEndTag()) { + // check if we may have a problem with login by looking at + // the title of the page + if ((title.indexOf("login") != -1 + || (title.indexOf("invalid") != -1 && title.indexOf("password") != -1) + || title.indexOf("check e-mail") != -1 || title.indexOf("error") != -1)) + possibleBadLogin = true; + isTitle = false; + title = ""; + } + continue; + } + + if (token.getType() == Token.TAG) { + HtmlTag tag = (HtmlTag) token.getValue(); + if (tag.getTagType() == HtmlTag.Type.TR && !tag.isEndTag()) { + token = tokenizer.nextToken(); + if (token.getType() != Token.EOF && token.getType() == Token.TAG) { + tag = (HtmlTag) token.getValue(); + if (tag.getTagType() != HtmlTag.Type.TH) + continue; + else { + if (tag.getAttribute("align") == null + || !"left".equalsIgnoreCase(tag.getAttribute("align"))) + parseKeywords(keywords); + + } + } + continue; + } + } + } + + // if we don't have any keywords and suspect that there was a login + // problem, assume we had a login problem + if (keywords == null && possibleBadLogin) + throw new LoginException(IBugzillaConstants.MESSAGE_LOGIN_FAILURE); + return keywords; + } + + /** + * Parse the keywords that we can enter bugs for + * + * @param keywords + * The list of keywords to add this new product to + * @return + */ + private void parseKeywords(List<String> keywords) throws IOException, ParseException { + StringBuffer sb = new StringBuffer(); + + for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) { + if (token.getType() == Token.TAG) { + HtmlTag tag = (HtmlTag) token.getValue(); + if (tag.getTagType() == HtmlTag.Type.TH + && (tag.isEndTag() || !"left".equalsIgnoreCase(tag.getAttribute("align")))) + break; + } else if (token.getType() == Token.TEXT) + sb.append(token.toString()); + } + + String prod = HtmlStreamTokenizer.unescape(sb).toString(); + if (prod.endsWith(":")) + prod = prod.substring(0, prod.length() - 1); + keywords.add(prod); + + for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) { + if (token.getType() == Token.TAG) { + HtmlTag tag = (HtmlTag) token.getValue(); + if (tag.getTagType() == HtmlTag.Type.TR && tag.isEndTag()) + break; + + } + } + } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java new file mode 100644 index 000000000..a8d9b6fef --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/NewBugzillaReport.java @@ -0,0 +1,177 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.Serializable; +import java.util.Date; + +import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; + + +/** + * This class is used to store data about the new bug that is being created + * while the wizard is being used + * + * @author Eric Booth + * @author Rob Elves + */ +public class NewBugzillaReport extends RepositoryTaskData implements Serializable { + + /** Automatically generated serialVersionUID */ + private static final long serialVersionUID = 3977859587934335283L; + + /** Whether the attributes have been parsed yet or not */ + protected boolean hasParsedAttributes = false; + + /** Whether the products have been parsed yet or not */ + protected boolean hasParsedProducts = false; + + /** The product that the bug is for */ + protected String product; + + /** The summary for the bug */ + protected String summary = ""; + + /** The description for the bug */ + protected String description = ""; + + /** + * Flag to indicate status of connection to Bugzilla server to identify + * whether ProductConfiguration should be used instead + */ + protected boolean connected = true; + + /** Whether or not this bug report is saved offline. */ + protected boolean savedOffline = false; + + /** + * Creates a new <code>NewBugModel</code>. The id chosen for this bug is + * based on the id of the last <code>NewBugModel</code> that was created. + */ + public NewBugzillaReport(String repositoryURL, int offlineId) { + super(new BugzillaAttributeFactory(), BugzillaPlugin.REPOSITORY_KIND, repositoryURL, offlineId); + } + + public String getLabel() { + return "New Bug #" + getId(); + } + + public String getDescription() { + return description; + } + + public void setDescription(String newDescription) { + description = newDescription; + } + + public String getSummary() { + return summary; + } + + public void setSummary(String newSummary) { + summary = newSummary; + } + + /** + * @return The product that the bug is for. + */ + public String getProduct() { + return product; + } + + /** + * Sets the product that the bug is for. + * + * @param product + * The product. + */ + public void setProduct(String product) { + this.product = product; + } + + /** + * @return Flag to indicate status of connection to Bugzilla server (to + * identify whether ProductConfiguration should be used instead) + */ + public boolean isConnected() { + return connected; + } + + /** + * Sets the value of the flag to indicate status of connection to Bugzilla + * server (to identify whether ProductConfiguration should be used instead) + * + * @param newConnectionStatus + * <code>true</code> if the bug is connected. + */ + public void setConnected(boolean newConnectionStatus) { + connected = newConnectionStatus; + } + + /** + * @return Returns whether the attributes have been parsed yet or not. + */ + public boolean hasParsedAttributes() { + return hasParsedAttributes; + } + + /** + * Sets whether the attributes have been parsed yet or not. + * + * @param hasParsedAttributes + * <code>true</code> if the attributes have been parsed. + */ + public void setParsedAttributesStatus(boolean hasParsedAttributes) { + this.hasParsedAttributes = hasParsedAttributes; + } + + /** + * @return Returns whether the products have been parsed yet or not. + */ + public boolean hasParsedProducts() { + return hasParsedProducts; + } + + /** + * Sets whether the products have been parsed yet or not. + * + * @param hasParsedProducts + * <code>true</code> if the products have been parsed. + */ + public void setParsedProductsStatus(boolean hasParsedProducts) { + this.hasParsedProducts = hasParsedProducts; + } + + public boolean isSavedOffline() { + return savedOffline; + } + + public boolean isLocallyCreated() { + return true; + } + +// public void setOfflineState(boolean newOfflineState) { +// savedOffline = newOfflineState; +// } + + public boolean hasChanges() { + return true; + } + + /** returns null */ + public Date getCreated() { + return null; + } + + public Date getLastModified() { + return null; + } +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java new file mode 100644 index 000000000..5f39b7e51 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfiguration.java @@ -0,0 +1,370 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Class describing the configuration of products and components for a given + * Bugzilla installation. + * + * @author Rob Elves + */ +public class RepositoryConfiguration { + + private static final String VERSION_UNKNOWN = "unknown"; + + private Map<String, ProductEntry> products = new HashMap<String, ProductEntry>(); + + private List<String> platforms = new ArrayList<String>(); + + private List<String> operatingSystems = new ArrayList<String>(); + + private List<String> priorities = new ArrayList<String>(); + + private List<String> severities = new ArrayList<String>(); + + private List<String> bugStatus = new ArrayList<String>(); + + private List<String> openStatusValues = new ArrayList<String>(); + + private List<String> resolutionValues = new ArrayList<String>(); + + private List<String> keywords = new ArrayList<String>(); + + // master lists + + private List<String> versions = new ArrayList<String>(); + + private List<String> components = new ArrayList<String>(); + + private List<String> milestones = new ArrayList<String>(); + + private String version = VERSION_UNKNOWN; + + public RepositoryConfiguration() { + super(); + } + + public void addStatus(String status) { + bugStatus.add(status); + } + + public List<String> getStatusValues() { + return bugStatus; + } + + public void addResolution(String res) { + resolutionValues.add(res); + } + + public List<String> getResolutions() { + return resolutionValues; + } + + /** + * Adds a product to the configuration. + */ + public void addProduct(String name) { + if (!products.containsKey(name)) { + ProductEntry product = new ProductEntry(name); + products.put(name, product); + } + } + + /** + * Returns an array of names of current products. + */ + public List<String> getProducts() { + ArrayList<String> productList = new ArrayList<String>(products.keySet()); + Collections.sort(productList); + return productList; + } + + /** + * Returns an array of names of component that exist for a given product or + * <code>null</code> if the product does not exist. + */ + public List<String> getComponents(String product) { + ProductEntry entry = products.get(product); + if (entry != null) { + return entry.getComponents(); + } else + return Collections.emptyList(); + } + + /** + * Returns an array of names of versions that exist for a given product or + * <code>null</code> if the product does not exist. + */ + public List<String> getVersions(String product) { + ProductEntry entry = products.get(product); + if (entry != null) { + return entry.getVersions(); + } else + return Collections.emptyList(); + } + + /** + * Returns an array of names of valid severity values. + */ + public List<String> getSeverities() { + return severities; + } + + /** + * Returns an array of names of valid OS values. + */ + public List<String> getOSs() { + return operatingSystems; + } + + public void addOS(String os) { + operatingSystems.add(os); + } + + /** + * Returns an array of names of valid platform values. + */ + public List<String> getPlatforms() { + return platforms; + } + + /** + * Returns an array of names of valid platform values. + */ + public List<String> getPriorities() { + return priorities; + } + + /** + * Adds a component to the given product. + */ + public void addComponent(String product, String component) { + if (!components.contains(component)) + components.add(component); + ProductEntry entry = products.get(product); + if (entry == null) { + entry = new ProductEntry(product); + products.put(product, entry); + } + entry.addComponent(component); + } + + // /** + // * Adds a list of components to the given product. + // */ + // public void addComponents(String product, List<String> components) { + // ProductEntry entry = products.get(product); + // if (entry == null) { + // entry = new ProductEntry(product); + // products.put(product, entry); + // } + // for (String component : components) { + // entry.addComponent(component); + // } + // } + // /** + // * Adds a list of components to the given product. + // */ + // public void addComponents(String product, List<String> components) { + // ProductEntry entry = products.get(product); + // if (entry == null) { + // entry = new ProductEntry(product); + // products.put(product, entry); + // } + // for (String component : components) { + // entry.addComponent(component); + // } + // } + + public void addVersion(String product, String version) { + if (!versions.contains(version)) + versions.add(version); + ProductEntry entry = products.get(product); + if (entry == null) { + entry = new ProductEntry(product); + products.put(product, entry); + } + entry.addVersion(version); + } + + // /** + // * Adds a list of components to the given product. + // */ + // public void addVersions(String product, List<String> versions) { + // ProductEntry entry = products.get(product); + // if (entry == null) { + // entry = new ProductEntry(product); + // products.put(product, entry); + // } + // for (String version : versions) { + // entry.addVersion(version); + // } + // } + + public void addKeyword(String keyword) { + keywords.add(keyword); + } + + public List<String> getKeywords() { + return keywords; + } + + public void addPlatform(String platform) { + platforms.add(platform); + } + + public void addPriority(String priority) { + priorities.add(priority); + } + + public void addSeverity(String severity) { + severities.add(severity); + + } + + public void setInstallVersion(String version) { + this.version = version; + } + + public String getInstallVersion() { + return version; + } + + public void addTargetMilestone(String product, String target) { + if (!milestones.contains(target)) + milestones.add(target); + ProductEntry entry = products.get(product); + if (entry == null) { + entry = new ProductEntry(product); + products.put(product, entry); + } + + entry.addTargetMilestone(target); + + } + + public List<String> getTargetMilestones(String product) { + ProductEntry entry = products.get(product); + if (entry != null) { + return entry.getTargetMilestones(); + } else + return Collections.emptyList(); + } + + /** + * Container for product information: name, components. + */ + private static class ProductEntry { + + String productName; + + List<String> components = new ArrayList<String>(); + + List<String> versions = new ArrayList<String>(); + + List<String> milestones = new ArrayList<String>(); + + ProductEntry(String name) { + this.productName = name; + } + + List<String> getComponents() { + return components; + } + + void addComponent(String componentName) { + if (!components.contains(componentName)) { + components.add(componentName); + } + } + + List<String> getVersions() { + return versions; + } + + void addVersion(String name) { + if (!versions.contains(name)) { + versions.add(name); + } + } + + List<String> getTargetMilestones() { + return milestones; + } + + void addTargetMilestone(String target) { + milestones.add(target); + } + } + + public List<String> getOpenStatusValues() { + return openStatusValues; + } + + public void addOpenStatusValue(String value) { + openStatusValues.add(value); + } + + public List<String> getComponents() { + return components; + } + + public List<String> getTargetMilestones() { + return milestones; + } + + public List<String> getVersions() { + return versions; + } + + /* + * Intermediate step until configuration is made generic. + */ + public List<String> getOptionValues(BugzillaReportElement element, String product) { + switch (element) { + case PRODUCT: + return getProducts(); + case TARGET_MILESTONE: + // return getTargetMilestones(); + return getTargetMilestones(product); + case BUG_STATUS: + return getStatusValues(); + case VERSION: + // return getVersions(); + return getVersions(product); + case COMPONENT: + // return getComponents(); + return getComponents(product); + case REP_PLATFORM: + return getPlatforms(); + case OP_SYS: + return getOSs(); + case PRIORITY: + return getPriorities(); + case BUG_SEVERITY: + return getSeverities(); + case KEYWORDS: + return getKeywords(); + case RESOLUTION: + return getResolutions(); + default: + return new ArrayList<String>(); + } + } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java new file mode 100644 index 000000000..c172fe997 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryConfigurationFactory.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.IOException; +import java.net.Proxy; +import java.net.URL; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; + +import javax.security.auth.login.LoginException; + +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +/** + * Reads bugzilla product configuration from config.cgi on server in RDF format. + * + * @author Rob Elves + */ +public class RepositoryConfigurationFactory extends AbstractReportFactory { + + private static final String CONFIG_RDF_URL = "/config.cgi?ctype=rdf"; + + private static RepositoryConfigurationFactory instance; + + private RepositoryConfigurationFactory() { + // no initial setup needed + } + + public static RepositoryConfigurationFactory getInstance() { + if (instance == null) { + instance = new RepositoryConfigurationFactory(); + } + instance.setClean(true); + return instance; + } + + public RepositoryConfiguration getConfiguration(String repositoryUrl, Proxy proxySettings, String userName, + String password, String encoding) throws IOException, KeyManagementException, LoginException, + NoSuchAlgorithmException { + String configUrlStr = repositoryUrl + CONFIG_RDF_URL; + configUrlStr = BugzillaRepositoryUtil.addCredentials(configUrlStr, userName, password); + URL url = new URL(configUrlStr); + SaxConfigurationContentHandler contentHandler = new SaxConfigurationContentHandler(); + collectResults(url, proxySettings, encoding, contentHandler); + return contentHandler.getConfiguration(); + + } + + // public RepositoryConfiguration getConfiguration(String server) throws + // IOException { + // URL serverURL = new URL(server + CONFIG_RDF_URL); + // BugzillaRepositoryUtil.addCredentials(repository, serverURL) + // URLConnection c = serverURL.openConnection(); + // BufferedReader in = new BufferedReader(new + // InputStreamReader(c.getInputStream())); + // + // SaxConfigurationContentHandler contentHandler = new + // SaxConfigurationContentHandler(); + // + // try { + // StringBuffer result = XmlCleaner.clean(in); + // StringReader strReader = new StringReader(result.toString()); + // XMLReader reader = XMLReaderFactory.createXMLReader(); + // reader.setErrorHandler(new SaxErrorHandler()); + // reader.setContentHandler(contentHandler); + // reader.parse(new InputSource(strReader)); + // } catch (SAXException e) { + // throw new IOException("Unable to read server configuration."); + // } + // return contentHandler.getConfiguration(); + // + // } + + class SaxErrorHandler implements ErrorHandler { + + public void error(SAXParseException exception) throws SAXException { + throw exception; + // MylarStatusHandler.fail(exception, "ServerConfigurationFactory: " + // + exception.getLocalizedMessage(), false); + } + + public void fatalError(SAXParseException exception) throws SAXException { + throw exception; + // MylarStatusHandler.fail(exception, "ServerConfigurationFactory: " + // + exception.getLocalizedMessage(), false); + } + + public void warning(SAXParseException exception) throws SAXException { + // ignore + } + + } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java new file mode 100644 index 000000000..d318c8ad0 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/RepositoryReportFactory.java @@ -0,0 +1,154 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.IOException; +import java.net.Proxy; +import java.net.URL; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; + +import javax.security.auth.login.LoginException; + +import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; + +/** + * Reads bug reports from repository. + * + * @author Rob Elves + */ +public class RepositoryReportFactory extends AbstractReportFactory { + + private static RepositoryReportFactory instance; + + private static BugzillaAttributeFactory bugzillaAttributeFactory = new BugzillaAttributeFactory(); + + private static final String SHOW_BUG_CGI_XML = "/show_bug.cgi?ctype=xml&id="; + + private RepositoryReportFactory() { + // no initial setup needed + } + + public static RepositoryReportFactory getInstance() { + if (instance == null) { + instance = new RepositoryReportFactory(); + } + return instance; + } + + public void populateReport(RepositoryTaskData bugReport, String repositoryUrl, Proxy proxySettings, String userName, + String password, String characterEncoding) throws LoginException, KeyManagementException, + NoSuchAlgorithmException, IOException { + + SaxBugReportContentHandler contentHandler = new SaxBugReportContentHandler(bugzillaAttributeFactory, bugReport); + + String xmlBugReportUrl = repositoryUrl + SHOW_BUG_CGI_XML + bugReport.getId(); + xmlBugReportUrl = BugzillaRepositoryUtil.addCredentials(xmlBugReportUrl, userName, password); + URL serverURL = new URL(xmlBugReportUrl); + + collectResults(serverURL, proxySettings, characterEncoding, contentHandler); + + if (contentHandler.errorOccurred()) { + throw new IOException(contentHandler.getErrorMessage()); + } + + } + +// public class BugzillaReportParseException extends IOException { +// private static final long serialVersionUID = 1609566799047500866L; +// +// public BugzillaReportParseException(String message) { +// super(message); +// } +// } +} + +// URLConnection connection = +// BugzillaPlugin.getDefault().getUrlConnection(serverURL, proxySettings); +// if (connection == null || !(connection instanceof HttpURLConnection)) { +// return; +// } +// +// // String contentEncoding = connection.getContentEncoding(); +// // if (contentEncoding != null) { +// // String charsetFromContentType = +// // BugzillaRepositoryUtil.getCharsetFromString(contentEncoding); +// // if (charsetFromContentType != null) { +// // bugReport.setCharset(charsetFromContentType); +// // } +// // } else { +// // bugReport.setCharset(BugzillaPlugin.ENCODING_UTF_8); +// // } +// +// try { +// +// if (characterEncoding != null) { +// in = new BufferedReader(new InputStreamReader(connection.getInputStream(), +// characterEncoding)); +// } else { +// in = new BufferedReader(new InputStreamReader(connection.getInputStream())); +// } +// +// XMLReader reader = XMLReaderFactory.createXMLReader(); +// reader.setContentHandler(contentHandler); +// reader.setErrorHandler(new SaxErrorHandler()); +// reader.parse(new InputSource(in)); +// +// if (contentHandler.errorOccurred()) { +// throw new BugzillaReportParseException(contentHandler.getErrorMessage()); +// } +// +// } catch (SAXException e) { +// if +// (e.getMessage().equals(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD)) +// { +// throw new LoginException(e.getMessage()); +// } else { +// throw new IOException(e.getMessage()); +// } +// } finally { +// try { +// if (in != null) +// in.close(); +// } catch (IOException e) { +// BugzillaPlugin.log(new Status(IStatus.ERROR, BugzillaPlugin.PLUGIN_ID, +// IStatus.ERROR, +// "Problem closing the stream", e)); +// } +// } + +// class SaxErrorHandler implements ErrorHandler { +// +// public void error(SAXParseException exception) throws SAXException { +// throw exception; +// // MylarStatusHandler.fail(exception, "Mylar: +// // RepositoryReportFactory Sax parser error", false); +// // System.err.println("Error: " + exception.getLineNumber() + "\n" + +// // exception.getLocalizedMessage()); +// +// } +// +// public void fatalError(SAXParseException exception) throws SAXException { +// // System.err.println("Fatal Error: " + exception.getLineNumber() + +// // "\n" + exception.getLocalizedMessage()); +// // TODO: Need to determine actual error from html +// throw new +// SAXException(IBugzillaConstants.ERROR_INVALID_USERNAME_OR_PASSWORD); +// } +// +// public void warning(SAXParseException exception) throws SAXException { +// // System.err.println("Warning: " + exception.getLineNumber() + "\n" +// // + exception.getLocalizedMessage()); +// } +// +// } +//
\ No newline at end of file diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java new file mode 100644 index 000000000..354681314 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxBugReportContentHandler.java @@ -0,0 +1,261 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.mylar.internal.tasklist.AbstractAttributeFactory; +import org.eclipse.mylar.internal.tasklist.Comment; +import org.eclipse.mylar.internal.tasklist.RepositoryAttachment; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskAttribute; +import org.eclipse.mylar.internal.tasklist.RepositoryTaskData; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * Parser for xml bugzilla reports. + * + * @author Rob Elves + */ +public class SaxBugReportContentHandler extends DefaultHandler { + + private static final String COMMENT_ATTACHMENT_STRING = "Created an attachment (id="; + + private StringBuffer characters; + + private Comment comment; + + private final Map<Integer, Comment> attachIdToComment = new HashMap<Integer, Comment>(); + + private int commentNum = 0; + + private RepositoryAttachment attachment; + + private RepositoryTaskData report; + + private String errorMessage = null; + + private AbstractAttributeFactory attributeFactory; + + public SaxBugReportContentHandler(AbstractAttributeFactory factory, RepositoryTaskData rpt) { + this.attributeFactory = factory; + this.report = rpt; + } + + public boolean errorOccurred() { + return errorMessage != null; + } + + public String getErrorMessage() { + return errorMessage; + } + + public RepositoryTaskData getReport() { + return report; + } + + @Override + public void characters(char[] ch, int start, int length) throws SAXException { + characters.append(ch, start, length); +// if (monitor.isCanceled()) { +// throw new OperationCanceledException("Search cancelled"); +// } + } + + @Override + public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { + characters = new StringBuffer(); + BugzillaReportElement tag = BugzillaReportElement.UNKNOWN; + try { + tag = BugzillaReportElement.valueOf(localName.trim().toUpperCase()); + } catch (RuntimeException e) { + if (e instanceof IllegalArgumentException) { + // ignore unrecognized tags + return; + } + throw e; + } + switch (tag) { + case BUGZILLA: + // Note: here we can get the bugzilla version if necessary + break; + case BUG: + if (attributes != null && (attributes.getValue("error") != null)) { + errorMessage = attributes.getValue("error"); + } + break; + case LONG_DESC: + comment = new Comment(attributeFactory, report, commentNum++); + break; + case ATTACHMENT: + attachment = new RepositoryAttachment(attributeFactory); + if (attributes != null && (attributes.getValue(BugzillaReportElement.IS_OBSOLETE.getKeyString()) != null)) { + attachment.addAttribute(BugzillaReportElement.IS_OBSOLETE.getKeyString(), attributeFactory.createAttribute(BugzillaReportElement.IS_OBSOLETE.getKeyString())); + } + break; + } + + } + + @Override + public void endElement(String uri, String localName, String qName) throws SAXException { + + String parsedText = HtmlStreamTokenizer.unescape(characters.toString()); + + BugzillaReportElement tag = BugzillaReportElement.UNKNOWN; + try { + tag = BugzillaReportElement.valueOf(localName.trim().toUpperCase()); + } catch (RuntimeException e) { + if (e instanceof IllegalArgumentException) { + // ignore unrecognized tags + return; + } + throw e; + } + switch (tag) { + case BUG_ID: { + try { + if (report.getId() != Integer.parseInt(parsedText)) { + errorMessage = "Requested report number does not match returned report number."; + } + } catch (NumberFormatException e) { + errorMessage = "Bug id from server did not match requested id."; + } + + RepositoryTaskAttribute attr = report.getAttribute(tag.getKeyString()); + if (attr == null) { + attr = attributeFactory.createAttribute(tag.getKeyString()); + report.addAttribute(tag.getKeyString(), attr); + } + attr.setValue(parsedText); + break; + } + + // Comment attributes + case WHO: + case BUG_WHEN: + if (comment != null) { + RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString()); + attr.setValue(parsedText); + comment.addAttribute(tag.getKeyString(), attr); + } + break; + case THETEXT: + if (comment != null) { + RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString()); + attr.setValue(parsedText); + comment.addAttribute(tag.getKeyString(), attr); + + // Check for attachment + parseAttachment(comment, parsedText); + } + break; + case LONG_DESC: + if (comment != null) { + report.addComment(comment); + } + break; + + // Attachment attributes + case ATTACHID: + case DATE: + case DESC: + case FILENAME: + case CTYPE: + case TYPE: + if (attachment != null) { + RepositoryTaskAttribute attr = attributeFactory.createAttribute(tag.getKeyString()); + attr.setValue(parsedText); + attachment.addAttribute(tag.getKeyString(), attr); + } + break; + case DATA: + // TODO: Need to figure out under what circumstanceswhen attachments + // are inline and + // what to do with them. + break; + case ATTACHMENT: + if (attachment != null) { + report.addAttachment(attachment); + } + break; + + // IGNORED ELEMENTS + case REPORTER_ACCESSIBLE: + case CLASSIFICATION_ID: + case CLASSIFICATION: + case CCLIST_ACCESSIBLE: + case EVERCONFIRMED: + case BUGZILLA: + break; + case BUG: + // Reached end of bug. Need to set LONGDESCLENGTH to number of + // comments + RepositoryTaskAttribute numCommentsAttribute = report + .getAttribute(BugzillaReportElement.LONGDESCLENGTH.getKeyString()); + if (numCommentsAttribute == null) { + numCommentsAttribute = attributeFactory.createAttribute(BugzillaReportElement.LONGDESCLENGTH.getKeyString()); + numCommentsAttribute.setValue("" + report.getComments().size()); + report.addAttribute(BugzillaReportElement.LONGDESCLENGTH.getKeyString(), numCommentsAttribute); + } else { + numCommentsAttribute.setValue("" + report.getComments().size()); + } + + // Set the creator name on all attachments + for (RepositoryAttachment attachment: report.getAttachments()) { + Comment comment = (Comment)attachIdToComment.get(attachment.getId()); + if(comment != null) { + attachment.setCreator(comment.getAuthor()); + } + } + break; + + // All others added as report attribute + default: + RepositoryTaskAttribute attribute = report.getAttribute(tag.getKeyString()); + if (attribute == null) { + attribute = attributeFactory.createAttribute(tag.getKeyString()); + attribute.setValue(parsedText); + report.addAttribute(tag.getKeyString(), attribute); + } else { + attribute.addValue(parsedText); + } + break; + } + + } + + /** determines attachment id from comment */ + private void parseAttachment(Comment comment, String commentText) { + + int attachmentID = -1; + + if (commentText.startsWith(COMMENT_ATTACHMENT_STRING)) { + try { + int endIndex = commentText.indexOf(")"); + if (endIndex > 0 && endIndex < commentText.length()) { + attachmentID = Integer + .parseInt(commentText.substring(COMMENT_ATTACHMENT_STRING.length(), endIndex)); + comment.setHasAttachment(true); + comment.setAttachmentId(attachmentID); + attachIdToComment.put(attachmentID, comment); + } + } catch (NumberFormatException e) { + return; + } + } + } + +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java new file mode 100644 index 000000000..7729a5af5 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java @@ -0,0 +1,399 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * Quick config rdf parser. + * + * <pre> + * config.cgi?ctype=rdf + * </pre> + * + * Populates a <link>ProductConfiguration</link> data structure. + * + * @author Rob Elves + */ +public class SaxConfigurationContentHandler extends DefaultHandler { + + private static final String ELEMENT_RESOLUTION = "resolution"; + + private static final String ELEMENT_STATUS_OPEN = "status_open"; + + private static final String ELEMENT_TARGET_MILESTONE = "target_milestone"; + + private static final String ELEMENT_TARGET_MILESTONES = "target_milestones"; + + private static final String ELEMENT_INSTALL_VERSION = "install_version"; + + private static final String ATTRIBUTE_RDF_ABOUT = "rdf:about"; + + private static final String ATTRIBUTE_RESOURCE = "resource"; + + private static final String ELEMENT_VERSION = "version"; + + private static final String ELEMENT_VERSIONS = "versions"; + + private static final String ELEMENT_COMPONENT = "component"; + + private static final String ELEMENT_COMPONENTS = "components"; + + private static final String ELEMENT_NAME = "name"; + + private static final String ELEMENT_PRODUCTS = "products"; + + private static final String ELEMENT_SEVERITY = "severity"; + + private static final String ELEMENT_PRIORITY = "priority"; + + private static final String ELEMENT_KEYWORD = "keyword"; + + private static final String ELEMENT_OP_SYS = "op_sys"; + + private static final String ELEMENT_PLATFORM = "platform"; + + private static final String ELEMENT_LI = "li"; + + private static final String ELEMENT_STATUS = "status"; + + private static final int EXPECTING_ROOT = 0; + + private static final int IN_INSTALL_VERSION = 1 << 1; + + private static final int IN_STATUS = 1 << 2; + + private static final int IN_PLATFORM = 1 << 3; + + private static final int IN_OP_SYS = 1 << 4; + + private static final int IN_PRIORITY = 1 << 5; + + private static final int IN_SEVERITY = 1 << 6; + + private static final int IN_PRODUCTS = 1 << 7; + + private static final int IN_COMPONENTS = 1 << 8; + + private static final int IN_VERSIONS = 1 << 9; + + private static final int IN_LI = 1 << 10; + + private static final int IN_LI_LI = 1 << 11; + + private static final int IN_NAME = 1 << 12; + + private static final int IN_COMPONENT = 1 << 13; + + private static final int IN_VERSION = 1 << 14; + + private static final int IN_TARGET_MILESTONES = 1 << 15; + + private static final int IN_TARGET_MILESTONE = 1 << 16; + + private static final int IN_STATUS_OPEN = 1 << 17; + + private static final int IN_RESOLUTION = 1 << 18; + + private static final int IN_KEYWORD = 1 << 19; + + private int state = EXPECTING_ROOT; + + private String currentProduct; + + private String about; + + private RepositoryConfiguration configuration = new RepositoryConfiguration(); + + private Map<String, List<String>> components = new HashMap<String, List<String>>(); + + private Map<String, List<String>> versions = new HashMap<String, List<String>>(); + + private Map<String, List<String>> milestones = new HashMap<String, List<String>>(); + + private Map<String, String> componentNames = new HashMap<String, String>(); + + private Map<String, String> versionNames = new HashMap<String, String>(); + + private Map<String, String> milestoneNames = new HashMap<String, String>(); + + public RepositoryConfiguration getConfiguration() { + return configuration; + } + + @Override + public void characters(char[] ch, int start, int length) throws SAXException { + switch (state) { + + case IN_PRODUCTS | IN_LI | IN_NAME: + configuration.addProduct(String.copyValueOf(ch, start, length)); + currentProduct = String.copyValueOf(ch, start, length); + break; + case IN_COMPONENTS | IN_LI | IN_COMPONENT | IN_NAME: + if (about != null) { + String name = String.copyValueOf(ch, start, length); + componentNames.put(about, name); + // System.err.println("Component: "+about+" ---> "+name); + } + break; + case IN_VERSIONS | IN_LI | IN_VERSION | IN_NAME: + if (about != null) { + String name = String.copyValueOf(ch, start, length); + versionNames.put(about, name); + // System.err.println("Version: "+about+" ---> "+name); + } + break; + case IN_TARGET_MILESTONES | IN_LI | IN_TARGET_MILESTONE | IN_NAME: + if (about != null) { + String name = String.copyValueOf(ch, start, length); + milestoneNames.put(about, name); + // System.err.println("Version: "+about+" ---> "+name); + } + break; + case IN_PLATFORM | IN_LI: + configuration.addPlatform(String.copyValueOf(ch, start, length)); + break; + case IN_OP_SYS | IN_LI: + configuration.addOS(String.copyValueOf(ch, start, length)); + break; + case IN_PRIORITY | IN_LI: + configuration.addPriority(String.copyValueOf(ch, start, length)); + break; + case IN_SEVERITY | IN_LI: + configuration.addSeverity(String.copyValueOf(ch, start, length)); + break; + case IN_INSTALL_VERSION: + configuration.setInstallVersion(String.copyValueOf(ch, start, length)); + break; + case IN_STATUS | IN_LI: + configuration.addStatus(String.copyValueOf(ch, start, length)); + break; + case IN_RESOLUTION | IN_LI: + configuration.addResolution(String.copyValueOf(ch, start, length)); + break; + case IN_KEYWORD | IN_LI: + configuration.addKeyword(String.copyValueOf(ch, start, length)); + break; + case IN_STATUS_OPEN | IN_LI: + configuration.addOpenStatusValue(String.copyValueOf(ch, start, length)); + break; + } + } + + @Override + public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { + + if (localName.equals(ELEMENT_STATUS)) { + state = state | IN_STATUS; + } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI) == IN_LI)) { + state = state | IN_LI_LI; + parseResource(attributes); + } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI) != IN_LI)) { + state = state | IN_LI; + } else if (localName.equals(ELEMENT_PLATFORM)) { + state = state | IN_PLATFORM; + } else if (localName.equals(ELEMENT_OP_SYS)) { + state = state | IN_OP_SYS; + } else if (localName.equals(ELEMENT_PRIORITY)) { + state = state | IN_PRIORITY; + } else if (localName.equals(ELEMENT_SEVERITY)) { + state = state | IN_SEVERITY; + } else if (localName.equals(ELEMENT_PRODUCTS)) { + state = state | IN_PRODUCTS; + } else if (localName.equals(ELEMENT_OP_SYS)) { + state = state | IN_OP_SYS; + } else if (localName.equals(ELEMENT_NAME)) { + state = state | IN_NAME; + } else if (localName.equals(ELEMENT_COMPONENTS)) { + state = state | IN_COMPONENTS; + } else if (localName.equals(ELEMENT_COMPONENT)) { + state = state | IN_COMPONENT; + parseResource(attributes); + } else if (localName.equals(ELEMENT_VERSIONS)) { + state = state | IN_VERSIONS; + } else if (localName.equals(ELEMENT_VERSION)) { + state = state | IN_VERSION; + parseResource(attributes); + } else if (localName.equals(ELEMENT_INSTALL_VERSION)) { + state = state | IN_INSTALL_VERSION; + } else if (localName.equals(ELEMENT_TARGET_MILESTONES)) { + state = state | IN_TARGET_MILESTONES; + } else if (localName.equals(ELEMENT_TARGET_MILESTONE)) { + state = state | IN_TARGET_MILESTONE; + parseResource(attributes); + } else if (localName.equals(ELEMENT_STATUS_OPEN)) { + state = state | IN_STATUS_OPEN; + } else if (localName.equals(ELEMENT_RESOLUTION)) { + state = state | IN_RESOLUTION; + } else if (localName.equals(ELEMENT_KEYWORD)) { + state = state | IN_KEYWORD; + } + + } + + private void parseResource(Attributes attributes) { + + switch (state) { + case IN_PRODUCTS | IN_LI | IN_COMPONENTS | IN_LI_LI: + if (attributes != null) { + String compURI = attributes.getValue(ATTRIBUTE_RESOURCE); + if (compURI != null) { + + List<String> compURIs = components.get(currentProduct); + if (compURIs == null) { + compURIs = new ArrayList<String>(); + components.put(currentProduct, compURIs); + } + compURIs.add(compURI); + + } + } + break; + case IN_PRODUCTS | IN_LI | IN_VERSIONS | IN_LI_LI: + if (attributes != null) { + String resourceURI = attributes.getValue(ATTRIBUTE_RESOURCE); + if (resourceURI != null) { + List<String> versionUris = versions.get(currentProduct); + if (versionUris == null) { + versionUris = new ArrayList<String>(); + versions.put(currentProduct, versionUris); + } + versionUris.add(resourceURI); + } + } + break; + case IN_PRODUCTS | IN_LI | IN_TARGET_MILESTONES | IN_LI_LI: + if (attributes != null) { + String resourceURI = attributes.getValue(ATTRIBUTE_RESOURCE); + if (resourceURI != null) { + List<String> milestoneUris = milestones.get(currentProduct); + if (milestoneUris == null) { + milestoneUris = new ArrayList<String>(); + milestones.put(currentProduct, milestoneUris); + } + milestoneUris.add(resourceURI); + } + } + break; + case IN_COMPONENTS | IN_LI | IN_COMPONENT: + if (attributes != null) { + about = attributes.getValue(ATTRIBUTE_RDF_ABOUT); + } + break; + case IN_VERSIONS | IN_LI | IN_VERSION: + if (attributes != null) { + about = attributes.getValue(ATTRIBUTE_RDF_ABOUT); + } + break; + + case IN_TARGET_MILESTONES | IN_LI | IN_TARGET_MILESTONE: + if (attributes != null) { + about = attributes.getValue(ATTRIBUTE_RDF_ABOUT); + } + break; + + } + } + + @Override + public void endElement(String uri, String localName, String qName) throws SAXException { + + // KEEP: && ((state & IN_LI) == IN_LI) + + if (localName.equals(ELEMENT_STATUS)) { + state = state & ~IN_STATUS; + } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI_LI) == IN_LI_LI)) { + state = state & ~IN_LI_LI; + } else if (localName.equals(ELEMENT_LI) && ((state & IN_LI_LI) != IN_LI_LI)) { + state = state & ~IN_LI; + } else if (localName.equals(ELEMENT_PLATFORM)) { + state = state & ~IN_PLATFORM; + } else if (localName.equals(ELEMENT_OP_SYS)) { + state = state & ~IN_OP_SYS; + } else if (localName.equals(ELEMENT_PRIORITY)) { + state = state & ~IN_PRIORITY; + } else if (localName.equals(ELEMENT_SEVERITY)) { + state = state & ~IN_SEVERITY; + } else if (localName.equals(ELEMENT_PRODUCTS)) { + state = state & ~IN_PRODUCTS; + } else if (localName.equals(ELEMENT_OP_SYS)) { + state = state & ~IN_OP_SYS; + } else if (localName.equals(ELEMENT_NAME)) { + state = state & ~IN_NAME; + } else if (localName.equals(ELEMENT_COMPONENTS)) { + state = state & ~IN_COMPONENTS; + } else if (localName.equals(ELEMENT_COMPONENT)) { + state = state & ~IN_COMPONENT; + } else if (localName.equals(ELEMENT_VERSION)) { + state = state & ~IN_VERSION; + } else if (localName.equals(ELEMENT_VERSIONS)) { + state = state & ~IN_VERSIONS; + } else if (localName.equals(ELEMENT_INSTALL_VERSION)) { + state = state & ~IN_INSTALL_VERSION; + } else if (localName.equals(ELEMENT_TARGET_MILESTONE)) { + state = state & ~IN_TARGET_MILESTONE; + } else if (localName.equals(ELEMENT_TARGET_MILESTONES)) { + state = state & ~IN_TARGET_MILESTONES; + } else if (localName.equals(ELEMENT_STATUS_OPEN)) { + state = state & ~IN_STATUS_OPEN; + } else if (localName.equals(ELEMENT_RESOLUTION)) { + state = state & ~IN_RESOLUTION; + } else if (localName.equals(ELEMENT_KEYWORD)) { + state = state & ~IN_KEYWORD; + } + + } + + @Override + public void endDocument() throws SAXException { + + for (String product : components.keySet()) { + List<String> componentURIs = components.get(product); + for (String uri : componentURIs) { + String realName = componentNames.get(uri); + if (realName != null) { + configuration.addComponent(product, realName); + } + } + } + + for (String product : versions.keySet()) { + List<String> versionURIs = versions.get(product); + for (String uri : versionURIs) { + String realName = versionNames.get(uri); + if (realName != null) { + configuration.addVersion(product, realName); + } + } + + } + + for (String product : milestones.keySet()) { + List<String> milestoneURIs = milestones.get(product); + for (String uri : milestoneURIs) { + String realName = milestoneNames.get(uri); + if (realName != null) { + configuration.addTargetMilestone(product, realName); + } + } + + } + super.endDocument(); + } +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java new file mode 100644 index 000000000..764b37e54 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/XmlCleaner.java @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.core; + +import java.io.IOException; +import java.io.Reader; +import java.text.ParseException; + +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer; +import org.eclipse.mylar.internal.tasklist.util.HtmlTag; +import org.eclipse.mylar.internal.tasklist.util.HtmlStreamTokenizer.Token; + +/** + * This is in place to escape & characters within the resource and rdf:about + * attributes. Currently the values are not escaped which causes sax parser + * errors. This bug has been filed and can be found here: + * https://bugzilla.mozilla.org/show_bug.cgi?id=264785 + * + * @author Rob Elves + */ +public class XmlCleaner { + + public static StringBuffer clean(Reader in) { + + HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(in, null); + StringBuffer content = new StringBuffer(); + + // Hack since HtmlStreamTokenizer not familiar with xml tag. + content.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); + try { + for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) { + + if (token.getType() == Token.TAG) { + HtmlTag tag = (HtmlTag) token.getValue(); + if (tag.getAttribute("resource") != null) { + String resourceID = tag.getAttribute("resource"); + tag.setAttribute("resource", resourceID.replace("&", "&")); + } + if (tag.getAttribute("rdf:about") != null) { + String resourceID = tag.getAttribute("rdf:about"); + tag.setAttribute("rdf:about", resourceID.replace("&", "&")); + } + } + if (!token.toString().startsWith("<?xml")) { + content.append(token.toString()); + } + } + } catch (IOException e) { + + } catch (ParseException e) { + + } + return content; + } + +} diff --git a/org.eclipse.mylyn.bugzilla.tests/.classpath b/org.eclipse.mylyn.bugzilla.tests/.classpath new file mode 100644 index 000000000..472ee29b1 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF new file mode 100644 index 000000000..3ba5d1f32 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/META-INF/MANIFEST.MF @@ -0,0 +1,24 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Bugzilla Tests Plug-in +Bundle-SymbolicName: org.eclipse.mylar.bugzilla.tests +Bundle-Version: 0.0.0 +Bundle-Activator: org.eclipse.mylar.bugzilla.tests.BugzillaTestPlugin +Bundle-Localization: plugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.junit, + org.eclipse.ui.ide, + org.eclipse.ui.views, + org.eclipse.ui.editors, + org.eclipse.ui.workbench.texteditor, + org.eclipse.mylar.bugzilla.core, + org.eclipse.mylar.bugzilla.ui, + org.eclipse.mylar.tasklist, + org.eclipse.mylar.core.tests, + org.eclipse.jface.text +Eclipse-AutoStart: true +Bundle-Vendor: Eclipse.org +Bundle-ClassPath: bugzilla-test.jar +Export-Package: org.eclipse.mylar.bugzilla.tests +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java new file mode 100644 index 000000000..ca53c0f7c --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/AllBugzillaTests.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.bugzilla.tests; + +import junit.framework.Test; +import junit.framework.TestSuite; + +/** + * @author Mik Kersten + */ +public class AllBugzillaTests { + + public static Test suite() { + TestSuite suite = new TestSuite("Test for org.eclipse.mylar.bugzilla.tests"); + // $JUnit-BEGIN$ + suite.addTestSuite(BugzillaConfigurationTest.class); + suite.addTestSuite(BugzillaTaskHyperlinkDetectorTest.class); + suite.addTestSuite(ReportAttachmentTest.class); + suite.addTestSuite(BugzillaSearchEngineTest.class); + suite.addTestSuite(Bugzilla220ParserTest.class); + suite.addTestSuite(BugzillaRepositoryConnectorTest.class); + suite.addTestSuite(EncodingTest.class); + suite.addTestSuite(NewBugWizardTest.class); + suite.addTestSuite(RegularExpressionMatchTest.class); + // suite.addTestSuite(BugzillaNewBugParserTestCDT.class); + // suite.addTestSuite(BugzillaNewBugParserTestEquinox.class); + // suite.addTestSuite(BugzillaNewBugParserTestGMT.class); + // suite.addTestSuite(BugzillaNewBugParserTestPlatform.class); + // suite.addTestSuite(BugzillaNewBugParserTestVE.class); + suite.addTestSuite(BugzillaParserTestNoBug.class); + suite.addTestSuite(BugzillaProductParserTest.class); + // TODO: enable + // suite.addTest(new TestSuite(BugzillaParserTest.class)); + // $JUnit-END$ + return suite; + } +} diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java new file mode 100644 index 000000000..41ed3bd79 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/Bugzilla220ParserTest.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.bugzilla.tests; + +import java.io.File; +import java.io.FileReader; +import java.io.Reader; + +import junit.framework.TestCase; + +import org.eclipse.core.runtime.Path; +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.core.tests.support.FileTool; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.NewBugModel; +import org.eclipse.mylar.internal.bugzilla.core.internal.BugParser; +import org.eclipse.mylar.internal.bugzilla.core.internal.NewBugParser; + +/** + * @author Mik Kersten + * @author Rob Elves + */ +public class Bugzilla220ParserTest extends TestCase { + + public static final String TEST_SERVER = IBugzillaConstants.ECLIPSE_BUGZILLA_URL; + + private static final String PRODUCT_MYLAR = "Mylar"; + + private static final String PRODUCT_TEST = "TestProduct"; + + public void testId220() throws Exception { + + File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path( + "testdata/pages/test-report-220.html")); + Reader in = new FileReader(f); + + BugReport bug = BugParser.parseBug(in, 7, TEST_SERVER, false, null, null, null); + + assertEquals(7, bug.getId()); + assertEquals("summary", bug.getSummary()); + assertEquals("7", bug.getAttribute("Bug#").getValue()); + assertEquals("7", bug.getAttribute("id").getValue()); + } + + public void testId2201() throws Exception { + + File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path( + "testdata/pages/test-report-2201.html")); + Reader in = new FileReader(f); + + BugReport bug = BugParser.parseBug(in, 125527, TEST_SERVER, false, null, null, null); + + assertEquals(125527, bug.getId()); + assertEquals("bugzilla refresh incorrect for new reports and newly opened hits", bug.getSummary()); + assertEquals("125527", bug.getAttribute("Bug#").getValue()); + assertEquals("125527", bug.getAttribute("id").getValue()); + } + + public void testNewBugProduct220() throws Exception { + + NewBugModel nbm = new NewBugModel(); + + File f = FileTool + .getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path("testdata/pages/enter-bug220.html")); + Reader in = new FileReader(f); + + new NewBugParser(in).parseBugAttributes(nbm, true); + assertEquals(PRODUCT_TEST, nbm.getAttribute("product").getValue()); + } + + public void testNewBugProduct2201() throws Exception { + + NewBugModel nbm = new NewBugModel(); + + File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), + new Path("testdata/pages/enter-bug2201.html")); + Reader in = new FileReader(f); + + new NewBugParser(in).parseBugAttributes(nbm, true); + assertEquals(PRODUCT_MYLAR, nbm.getAttribute("product").getValue()); + } + +} diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java new file mode 100644 index 000000000..79e7a99b5 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaConfigurationTest.java @@ -0,0 +1,122 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.bugzilla.tests; + +import java.io.IOException; + +import junit.framework.TestCase; + +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.internal.RepositoryConfiguration; +import org.eclipse.mylar.internal.bugzilla.core.internal.ServerConfigurationFactory; + +public class BugzillaConfigurationTest extends TestCase { + + protected void setUp() throws Exception { + super.setUp(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + + public void test222RDFProductConfig() throws IOException { + ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance(); + RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_222_URL); + assertNotNull(config); + assertEquals("2.22rc1", config.getInstallVersion()); + assertEquals(7, config.getStatusValues().size()); + assertEquals(8, config.getResolutions().size()); + assertEquals(4, config.getPlatforms().size()); + assertEquals(5, config.getOSs().size()); + assertEquals(5, config.getPriorities().size()); + assertEquals(7, config.getSeverities().size()); + assertEquals(1, config.getProducts().size()); + assertEquals(4, config.getOpenStatusValues().size()); + assertEquals(1, config.getComponents("TestProduct").size()); + assertEquals(1, config.getVersions("TestProduct").size()); + assertEquals(1, config.getTargetMilestones("TestProduct").size()); + } + + public void test2201RDFProductConfig() throws IOException { + ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance(); + RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_2201_URL); + assertNotNull(config); + assertEquals("2.20.1", config.getInstallVersion()); + assertEquals(7, config.getStatusValues().size()); + assertEquals(8, config.getResolutions().size()); + assertEquals(4, config.getPlatforms().size()); + assertEquals(5, config.getOSs().size()); + assertEquals(5, config.getPriorities().size()); + assertEquals(7, config.getSeverities().size()); + assertEquals(1, config.getProducts().size()); + assertEquals(4, config.getOpenStatusValues().size()); + assertEquals(2, config.getComponents("TestProduct").size()); + assertEquals(1, config.getVersions("TestProduct").size()); + //assertEquals(1, config.getTargetMilestones("TestProduct").size()); + } + + public void test220RDFProductConfig() throws IOException { + ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance(); + RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_220_URL); + assertNotNull(config); + assertEquals("2.20", config.getInstallVersion()); + assertEquals(7, config.getStatusValues().size()); + assertEquals(8, config.getResolutions().size()); + assertEquals(4, config.getPlatforms().size()); + assertEquals(5, config.getOSs().size()); + assertEquals(5, config.getPriorities().size()); + assertEquals(7, config.getSeverities().size()); + assertEquals(2, config.getProducts().size()); + assertEquals(4, config.getOpenStatusValues().size()); + assertEquals(2, config.getComponents("TestProduct").size()); + assertEquals(1, config.getVersions("TestProduct").size()); + //assertEquals(1, config.getTargetMilestones("TestProduct").size()); + } + + public void test218RDFProductConfig() throws IOException { + ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance(); + RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.TEST_BUGZILLA_218_URL); + assertNotNull(config); + assertEquals("2.18.5", config.getInstallVersion()); + assertEquals(7, config.getStatusValues().size()); + assertEquals(8, config.getResolutions().size()); + assertEquals(8, config.getPlatforms().size()); + assertEquals(37, config.getOSs().size()); + assertEquals(5, config.getPriorities().size()); + assertEquals(7, config.getSeverities().size()); + assertEquals(1, config.getProducts().size()); + assertEquals(4, config.getOpenStatusValues().size()); + assertEquals(1, config.getComponents("TestProduct").size()); + assertEquals(1, config.getVersions("TestProduct").size()); + //assertEquals(1, config.getTargetMilestones("TestProduct").size()); + } + + public void testEclipseRDFProductConfig() throws IOException { + ServerConfigurationFactory factory = ServerConfigurationFactory.getInstance(); + RepositoryConfiguration config = factory.getConfiguration(IBugzillaConstants.ECLIPSE_BUGZILLA_URL); + assertNotNull(config); + assertEquals("2.20.1", config.getInstallVersion()); + assertEquals(7, config.getStatusValues().size()); + assertEquals(8, config.getResolutions().size()); + assertEquals(6, config.getPlatforms().size()); + assertEquals(27, config.getOSs().size()); + assertEquals(5, config.getPriorities().size()); + assertEquals(7, config.getSeverities().size()); + assertEquals(53, config.getProducts().size()); + assertEquals(4, config.getOpenStatusValues().size()); + assertEquals(10, config.getComponents("Mylar").size()); + //assertEquals(10, config.getComponents("Hyades").size()); + //assertEquals(1, config.getTargetMilestones("TestProduct").size()); + } +} diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java new file mode 100644 index 000000000..a017900ba --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaProductParserTest.java @@ -0,0 +1,110 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.bugzilla.tests; + +import java.util.Iterator; +import java.util.List; + +import junit.framework.TestCase; + +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; + +/** + * Tests for parsing Product Page for new Bugzilla reports + * + * @author Mik Kersten + * @author Rob Elves + */ +public class BugzillaProductParserTest extends TestCase { + + private TaskRepository repository; + + @Override + protected void setUp() throws Exception { + super.setUp(); + // repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, + // new URL(IBugzillaConstants.ECLIPSE_BUGZILLA_URL)); + // MylarTaskListPlugin.getRepositoryManager().addRepository(repository); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + // MylarTaskListPlugin.getRepositoryManager().removeRepository(repository); + } + + public BugzillaProductParserTest(String arg0) { + super(arg0); + } + + public void test222Products() throws Exception { + + repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL, + IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString()); + + List<String> productList = BugzillaRepositoryUtil.getProductList(repository); + Iterator<String> itr = productList.iterator(); + assertTrue(itr.hasNext()); + assertEquals("TestProduct", "TestProduct", itr.next()); + + } + + public void test2201Products() throws Exception { + + repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_2201_URL, + IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString()); + + List<String> productList = BugzillaRepositoryUtil.getProductList(repository); + Iterator<String> itr = productList.iterator(); + assertTrue(itr.hasNext()); + assertEquals("TestProduct", "TestProduct", itr.next()); + + } + + public void test220Products() throws Exception { + + repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_220_URL, + IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString()); + + List<String> productList = BugzillaRepositoryUtil.getProductList(repository); + assertEquals(2, productList.size()); + assertTrue(productList.contains("TestProduct")); + assertTrue(productList.contains("Widget")); + + } + + public void test218Products() throws Exception { + + repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_218_URL, + IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString()); + + List<String> productList = BugzillaRepositoryUtil.getProductList(repository); + assertEquals(1, productList.size()); + assertTrue(productList.contains("TestProduct")); + + } + +// No longer supporting 216 +// public void test216Products() throws Exception { +// +// repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_216_URL, +// IBugzillaConstants.BugzillaServerVersion.SERVER_216.toString()); +// +// List<String> productList = BugzillaRepositoryUtil.getProductList(repository); +// Iterator<String> itr = productList.iterator(); +// assertTrue(itr.hasNext()); +// assertEquals("TestProduct", "TestProduct", itr.next()); +// } + +} diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java new file mode 100644 index 000000000..103d60af4 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaSearchEngineTest.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.bugzilla.tests; + +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.MultiStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryQuery; +import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; + +/** + * @author Rob Elves + */ +public class BugzillaSearchEngineTest extends TestCase { + + private static final String MAX_HITS = "100"; + private static final String QUERY_NAME = "Query Page Name"; + private static final String BUG_DESC_SUBSTRING_SEARCH = "/buglist.cgi?short_desc_type=allwordssubstr&short_desc=";//search-match-test&"; + private static final String SEARCH_DESCRIPTION = "search-match-test"; + private static final int NUM_EXPECTED_HITS = 2; + private static final int NUM_REPOSITORIES = 0; + + protected void setUp() throws Exception { + super.setUp(); + MylarTaskListPlugin.getRepositoryManager().clearRepositories(); + assertEquals(NUM_REPOSITORIES, MylarTaskListPlugin.getRepositoryManager().getRepositories(BugzillaPlugin.REPOSITORY_KIND).size()); + } + + protected void tearDown() throws Exception { + MylarTaskListPlugin.getRepositoryManager().clearRepositories(); + super.tearDown(); + } + +// public void testSearching216() throws MalformedURLException { +// TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, +// IBugzillaConstants.TEST_BUGZILLA_216_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_216.toString()); +// MylarTaskListPlugin.getRepositoryManager().addRepository(repository); +// List<AbstractQueryHit> hits = runQuery(IBugzillaConstants.TEST_BUGZILLA_216_URL, SEARCH_DESCRIPTION); +// assertEquals(NUM_EXPECTED_HITS, hits.size()); +// } + + public void testSearching218() throws MalformedURLException { + TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, + IBugzillaConstants.TEST_BUGZILLA_218_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_218.toString()); + MylarTaskListPlugin.getRepositoryManager().addRepository(repository); + assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_218_URL, SEARCH_DESCRIPTION).size()); + } + + public void testSearching220() throws MalformedURLException { + TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, + IBugzillaConstants.TEST_BUGZILLA_220_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString()); + MylarTaskListPlugin.getRepositoryManager().addRepository(repository); + assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_220_URL, SEARCH_DESCRIPTION).size()); + } + + public void testSearching2201() throws MalformedURLException { + TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, + IBugzillaConstants.TEST_BUGZILLA_2201_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_220.toString()); + MylarTaskListPlugin.getRepositoryManager().addRepository(repository); + assertEquals(NUM_EXPECTED_HITS, runQuery(IBugzillaConstants.TEST_BUGZILLA_2201_URL, SEARCH_DESCRIPTION).size()); + } + + public void testSearching222() throws MalformedURLException { + TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, + IBugzillaConstants.TEST_BUGZILLA_222_URL, IBugzillaConstants.BugzillaServerVersion.SERVER_222.toString()); + MylarTaskListPlugin.getRepositoryManager().addRepository(repository); + List<AbstractQueryHit> hits = runQuery(IBugzillaConstants.TEST_BUGZILLA_222_URL, SEARCH_DESCRIPTION); + assertEquals(NUM_EXPECTED_HITS, hits.size()); + } + + private List<AbstractQueryHit> runQuery(String repositoryURL, String SearchString) { + ArrayList<AbstractQueryHit> results = new ArrayList<AbstractQueryHit>(); + TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository(BugzillaPlugin.REPOSITORY_KIND, repositoryURL); + assertNotNull(repository); + + final BugzillaRepositoryQuery repositoryQuery = new BugzillaRepositoryQuery( + repository.getUrl(), + repository.getUrl() + BUG_DESC_SUBSTRING_SEARCH+SearchString, + QUERY_NAME, + MAX_HITS, MylarTaskListPlugin.getTaskListManager().getTaskList()); + + BugzillaRepositoryConnector connector = (BugzillaRepositoryConnector) MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); + results.addAll(connector.performQuery(repositoryQuery, new NullProgressMonitor(), new MultiStatus(MylarTaskListPlugin.PLUGIN_ID, IStatus.OK, "Query result", null))); + return results; + } + + + +} diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java new file mode 100644 index 000000000..5a529b371 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskHyperlinkDetectorTest.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.bugzilla.tests; + +import junit.framework.TestCase; + +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector; +import org.eclipse.mylar.internal.bugzilla.ui.editor.RepositoryTextViewer; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Shell; + +/** + * @author Rob Elves + */ +public class BugzillaTaskHyperlinkDetectorTest extends TestCase { + + private String BUG_FORMAT_1 = "bug# 1"; + private String BUG_FORMAT_1_2 = "bug# 2"; + private String BUG_FORMAT_2_1 = "bug # 1"; + private BugzillaTaskHyperlinkDetector detector = new BugzillaTaskHyperlinkDetector(); + private TaskRepository dummyRepository = new TaskRepository("repository_kind", "repository_url"); + private RepositoryTextViewer viewer = new RepositoryTextViewer(dummyRepository, new Shell(), SWT.NONE); + + protected void setUp() throws Exception { + super.setUp(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testBeginning() { + String testString = BUG_FORMAT_1+" is at the beginning"; + viewer.setDocument(new Document(testString)); + Region region = new Region(0, testString.length()); + IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); + assertNotNull(links); + assertEquals(1, links.length); + assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset()); + } + + public void testEnd() { + String testString = "is ends with bug# 1"; + viewer.setDocument(new Document(testString)); + Region region = new Region(testString.indexOf(BUG_FORMAT_1), testString.length()); + IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); + assertNotNull(links); + assertEquals(1, links.length); + assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset()); + } + + public void testMiddle() { + String testString = "is a "+BUG_FORMAT_1+" in the middle"; + viewer.setDocument(new Document(testString)); + Region region = new Region(testString.indexOf(BUG_FORMAT_1), testString.length()); + IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); + assertNotNull(links); + assertEquals(1, links.length); + assertEquals(testString.indexOf(BUG_FORMAT_1), links[0].getHyperlinkRegion().getOffset()); + } + + public void testTwoOnSingleLine() { + String testString = "is a "+BUG_FORMAT_1+" in the middle and at the end "+BUG_FORMAT_1_2; + viewer.setDocument(new Document(testString)); + Region region = new Region(testString.indexOf(BUG_FORMAT_1_2), testString.length()); + IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); + assertNotNull(links); + assertEquals(1, links.length); + assertEquals(testString.indexOf(BUG_FORMAT_1_2), links[0].getHyperlinkRegion().getOffset()); + } + + public void testMultiLine() { + String testString = "is a the first line\n this is the second which ends with a bug, "+BUG_FORMAT_1_2; + viewer.setDocument(new Document(testString)); + Region region = new Region(testString.indexOf(BUG_FORMAT_1_2), testString.length()); + IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); + assertNotNull(links); + assertEquals(1, links.length); + assertEquals(testString.indexOf(BUG_FORMAT_1_2), links[0].getHyperlinkRegion().getOffset()); + } + + public void testFormat2() { + String testString = "is a "+BUG_FORMAT_2_1+" in the middle"; + viewer.setDocument(new Document(testString)); + Region region = new Region(testString.indexOf(BUG_FORMAT_2_1), testString.length()); + IHyperlink[] links = detector.detectHyperlinks(viewer, region, false); + assertNotNull(links); + assertEquals(1, links.length); + assertEquals(testString.indexOf(BUG_FORMAT_2_1), links[0].getHyperlinkRegion().getOffset()); + } + + // TODO: test other bug formats +} diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java new file mode 100644 index 000000000..a1a3e9e1a --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ReportAttachmentTest.java @@ -0,0 +1,77 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.bugzilla.tests; + +import java.io.File; +import java.io.FileReader; +import java.io.Reader; +import java.net.URL; + +import junit.framework.TestCase; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Path; +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.core.tests.support.FileTool; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.internal.BugParser; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; + +/** + * @author Rob Elves + */ +public class ReportAttachmentTest extends TestCase { + + public void testExistingBugWithAttachment() throws Exception { + File f = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path( + "testdata/pages/test-report-222attachment.html")); + Reader in = new FileReader(f); + + BugReport bug = BugParser.parseBug(in, 4, IBugzillaConstants.ECLIPSE_BUGZILLA_URL, false, null, null, null); + + assertEquals(4, bug.getId()); + assertEquals("4", bug.getAttribute("Bug#").getValue()); + assertEquals("4", bug.getAttribute("id").getValue()); + + assertNotNull(bug.getComments()); + assertEquals(1, bug.getComments().size()); + assertTrue(bug.getComments().get(0).hasAttachment()); + assertEquals("Testing upload", bug.getComments().get(0).getAttachmentDescription()); +// System.err.println(bug.getComments().get(0).getText()); +// assertEquals(1, bug.getAttachements().size()); +// assertEquals("Testing upload", bug.getAttachements().get(1)); + } + + public void testAttachementDownload() throws Exception { + URL localURL = null; + URL installURL = BugzillaTestPlugin.getDefault().getBundle().getEntry("testdata/contexts/"); +// File destinationFile = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path("testdata/contexts/")); + localURL = FileLocator.toFileURL(installURL); + File destinationFile = new File(localURL.getPath()+"downloadedContext.xml"); + + TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL); + boolean result = BugzillaRepositoryUtil.downloadAttachment(repository, 2, destinationFile, true); + assertTrue(result); + } + +// public void testAttachementUpload() throws Exception { +// File sourceFile = FileTool.getFileInPlugin(BugzillaTestPlugin.getDefault(), new Path( +// "testdata/contexts/downloadedContext.xml")); +// TaskRepository repository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, IBugzillaConstants.TEST_BUGZILLA_222_URL); +// repository.setAuthenticationCredentials("relves@cs.ubc.ca", "***"); +// boolean result = BugzillaRepositoryUtil.uploadAttachment(repository, 4, "Upload Comment 2", "Upload Description 2", sourceFile, "application/xml", false); +// assertTrue(result); +// } + +} diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore new file mode 100644 index 000000000..47269cfbd --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/.cvsignore @@ -0,0 +1 @@ +downloadedContext.xml diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/testdata/contexts/empty.txt diff --git a/org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html b/org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html new file mode 100644 index 000000000..6248ce40d --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.tests/testdata/pages/test-report-222attachment.html @@ -0,0 +1,859 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title>Bug 4 - Another Test</title> + + +<link rel="Top" href="http://mylar.eclipse.org/bugs222/"> + + + <link rel="Up" href="buglist.cgi?regetlastlist=1"> + + <link rel="First" href="show_bug.cgi?id=1"> + <link rel="Last" href="show_bug.cgi?id=4"> + + + + <link rel="Prev" href="show_bug.cgi?id=3"> + + + + + + <link rel="Show" title="Dependency Tree" + href="showdependencytree.cgi?id=4"> + <link rel="Show" title="Dependency Graph" + href="showdependencygraph.cgi?id=4"> + + + <link rel="Show" title="Bug Activity" + href="show_activity.cgi?id=4"> + + <link rel="Show" title="Printer-Friendly Version" + href="show_bug.cgi?format=multiple&id=4"> + + + + <link rel="Saved Searches" title="My Bugs" + href="buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailreporter1=1&emailtype1=exact&email1=relves%40cs.ubc.ca&field0-0-0=bug_status&type0-0-0=notequals&value0-0-0=UNCONFIRMED&field0-0-1=reporter&type0-0-1=equals&value0-0-1=relves%40cs.ubc.ca"> + + + <link rel="Administration" title="Parameters" + href="editparams.cgi"><link rel="Administration" title="Users" + href="editusers.cgi"><link rel="Administration" title="Products" + href="editproducts.cgi"><link rel="Administration" title="Flag Types" + href="editflagtypes.cgi"><link rel="Administration" title="Groups" + href="editgroups.cgi"><link rel="Administration" title="Keywords" + href="editkeywords.cgi"><link rel="Administration" title="Whining" + href="editwhines.cgi"><link rel="Administration" title="Sanity Check" + href="sanitycheck.cgi"> + + + + <script type="text/javascript"> + <!-- + + function initHelp() {} + // --> + </script> + + <link href="skins/standard/global.css" rel="stylesheet" type="text/css"> + + <link href="skins/custom/global.css" rel="stylesheet" type="text/css"> + + + + + + </head> + + + + <body onload="" + class="mylar-eclipse-org-bugs222 bz_bug bz_status_NEW bz_component_TestComponent bz_bug_4"> + + +<div id="banner"> + <div class="intro"></div> + + <p id="banner-name"> + <span>This is Bugzilla</span> + </p> + <p id="banner-version"> + <a href="http://www.bugzilla.org/"><span>Bugzilla</span></a> + <span>Version 2.22rc1</span> + </p> + + <div class="outro"></div> + </div> + +<div id="header"> + <h1>Bugzilla Bug 4</h1> + + <h2>Another Test</h2> + + <h3>Last modified: 2006-03-10 14:11:48</h3> + +</div> + +<b>Bug List:</b> + (4 of 4) + + <a href="show_bug.cgi?id=1">First</a> + <a href="show_bug.cgi?id=4">Last</a> + + <a href="show_bug.cgi?id=3">Prev</a> + + <i><font color="#777777">Next</font></i> + + <a href="buglist.cgi?regetlastlist=1">Show last search results</a> + + <a href="query.cgi">Search page</a> + <a href="enter_bug.cgi">Enter new bug</a> + +<hr> +<script type="text/javascript"> + <!-- + + /* Outputs a link to call replyToComment(); used to reduce HTML output */ + function addReplyLink(id) { + /* XXX this should really be updated to use the DOM Core's + * createElement, but finding a container isn't trivial. + */ + document.write('[<a href="#add_comment" onclick="replyToComment(' + + id + ');">reply<' + '/a>]'); + } + + /* Adds the reply text to the `comment' textarea */ + function replyToComment(id) { + /* pre id="comment_name_N" */ + var text_elem = document.getElementById('comment_text_'+id); + var text = getText(text_elem); + + /* make sure we split on all newlines -- IE or Moz use \r and \n + * respectively. + */ + text = text.split(/\r|\n/); + + var replytext = ""; + for (var i=0; i < text.length; i++) { + replytext += "> " + text[i] + "\n"; + } + + replytext = "(In reply to comment #" + id + ")\n" + replytext + "\n"; + + + /* <textarea id="comment"> */ + var textarea = document.getElementById('comment'); + textarea.value += replytext; + + textarea.focus(); + } + + if (typeof Node == 'undefined') { + /* MSIE doesn't define Node, so provide a compatibility object */ + window.Node = { + TEXT_NODE: 3, + ENTITY_REFERENCE_NODE: 5 + }; + } + + /* Concatenates all text from element's childNodes. This is used + * instead of innerHTML because we want the actual text (and + * innerText is non-standard). + */ + function getText(element) { + var child, text = ""; + for (var i=0; i < element.childNodes.length; i++) { + child = element.childNodes[i]; + var type = child.nodeType; + if (type == Node.TEXT_NODE || type == Node.ENTITY_REFERENCE_NODE) { + text += child.nodeValue; + } else { + /* recurse into nodes of other types */ + text += getText(child); + } + } + return text; + } + + + function updateCommentTagControl(checkbox, form) { + if (checkbox.checked) { + form.comment.className='bz_private'; + } else { + form.comment.className=''; + } + } + + //--> + </script> + +<form name="changeform" method="post" action="process_bug.cgi"> + + <input type="hidden" name="delta_ts" value="2006-03-10 14:11:48"> + + <input type="hidden" name="longdesclength" value="2"> + <input type="hidden" name="id" value="4"> + + + + <table> + + <tr> + <td valign="top"> + <table cellspacing="1" cellpadding="1"> + <tr> + + <td align="right"> + <b>Bug#:</b> + </td> + <td> + <a href="http://mylar.eclipse.org/bugs222/show_bug.cgi?id=4">4</a> + </td> + </tr> + + <tr> + <td align="right"> + <b><u>P</u>roduct:</b> + </td><td> + <label for="product" accesskey="p"> + <select name="product" id="product"> + <option value="TestProduct" selected>TestProduct + </option> + + </select> + </label> + </td> + </tr> + + + + <tr> + <td align="right"> + <b> + <a href="describecomponents.cgi?product=TestProduct"> + + Co<u>m</u>ponent</a>: + </b> + </td><td> + <label for="component" accesskey="m"> + <select name="component" id="component"> + <option value="TestComponent" selected>TestComponent + </option> + </select> + + </label> + </td> + </tr> + + <tr> + <td align="right"> + <b> + <a href="page.cgi?id=fields.html#status">Status</a>: + </b> + + </td> + <td>NEW</td> + </tr> + + <tr> + <td align="right"> + <b> + <a href="page.cgi?id=fields.html#resolution">Resolution</a>: + </b> + + </td> + <td> + </td> + </tr> + + <tr> + <td align="right"> + <b> + <a href="page.cgi?id=fields.html#assigned_to">Assigned To</a>: + </b> + + </td> + <td>Robert Elves <relves@cs.ubc.ca></td> + </tr> + + </table> + + </td> + <td valign="top"> + + <table cellspacing="1" cellpadding="1"> + + <tr> + <td align="right"> + <b><u>H</u>ardware:</b> + </td><td> + <label for="rep_platform" accesskey="h"> + <select name="rep_platform" id="rep_platform"> + + <option value="All">All + </option> + <option value="PC" selected>PC + </option> + <option value="Macintosh">Macintosh + </option> + <option value="Other">Other + </option> + </select> + </label> + </td> + + </tr> + + <tr> + <td align="right"> + <b><u>O</u>S:</b> + </td><td> + <label for="op_sys" accesskey="o"> + <select name="op_sys" id="op_sys"> + + <option value="All">All + </option> + <option value="Windows">Windows + </option> + <option value="Mac OS">Mac OS + </option> + <option value="Linux">Linux + </option> + <option value="Other" selected>Other + </option> + </select> + + </label> + </td> + </tr> + + <tr> + <td align="right"> + <b>Version:</b> + </td><td> + <label for="version" accesskey="o"> + + <select name="version" id="version"> + <option value="other" selected>other + </option> + </select> + </label> + </td> + </tr> + + <tr> + <td align="right"> + + <b><a href="page.cgi?id=fields.html#priority">Pr<u>i</u>ority</a>:</b> + </td><td> + <label for="priority" accesskey="i"> + <select name="priority" id="priority"> + <option value="P1">P1 + </option> + <option value="P2">P2 + </option> + + <option value="P3" selected>P3 + </option> + <option value="P4">P4 + </option> + <option value="P5">P5 + </option> + </select> + </label> + </td> + </tr> + + <tr> + <td align="right"> + <b><a href="page.cgi?id=fields.html#bug_severity">Severity</a>:</b> + </td><td> + <label for="bug_severity" accesskey="i"> + <select name="bug_severity" id="bug_severity"> + <option value="blocker">blocker + </option> + + <option value="critical">critical + </option> + <option value="major">major + </option> + <option value="normal" selected>normal + </option> + <option value="minor">minor + </option> + <option value="trivial">trivial + </option> + <option value="enhancement">enhancement + </option> + + </select> + </label> + </td> + </tr> + + <tr> + <td align="right"> + <b> + Target Milestone: + </b> + + </td><td> + <label for="target_milestone" accesskey="i"> + <select name="target_milestone" id="target_milestone"> + <option value="---" selected>--- + </option> + </select> + </label> + </td> + </tr> + + </table> + </td> + + <td valign="top"> + + <table cellpadding="1" cellspacing="1"> + + <tr> + <td align="right"> + <b>Reporter:</b> + + </td> + <td> + <a href="mailto:relves@cs.ubc.ca">Robert Elves <relves@cs.ubc.ca></a> + </td> + </tr> + + <tr> + <td align="right" valign="top"> + + <b><u>A</u>dd CC:</b> + </td> + <td><input + name="newcc" + value="" accesskey="a" size="30" +> + </td> + </tr> + + <tr> + <td align="right" valign="top"> + + <b>CC:</b> + </td> + <td valign="top"> + <input type="hidden" name="cc" value=""> + </td> + </tr> + + </table> + + </td> + </tr> + + <tr> + <td colspan="2"> + <table cellspacing="1" cellpadding="1"> + + + + + <tr> + <td align="right"> + <b> + + <u>U</u>RL: + </b> + </td> + <td colspan="5"> + <input name="bug_file_loc" accesskey="u" + value="" size="60"> + </td> + </tr> + + <tr> + + <td align="right"> + <b><u>S</u>ummary:</b> + </td> + <td colspan="5"> + <input name="short_desc" accesskey="s" + value="Another Test" size="60"> + </td> + </tr> + + + </table> + </td> + + <td valign="top"> + <table cellspacing="1" cellpadding="1"> + <tr> + <td colspan="2" valign="top"> + </td> + + </tr> + </table> + </td> + </tr> + </table> + + + +<br> +<table cellspacing="0" cellpadding="4" border="1"> + <tr> + + <th bgcolor="#cccccc" align="left">Attachment</th> + <th bgcolor="#cccccc" align="left">Type</th> + <th bgcolor="#cccccc" align="left">Creator</th> + <th bgcolor="#cccccc" align="left">Created</th> + <th bgcolor="#cccccc" align="left">Size</th> + <th bgcolor="#cccccc" align="left">Actions</th> + + </tr> + <tr > + <td valign="top"> + <a href="attachment.cgi?id=1">Testing upload</a> + </td> + + <td valign="top">text/plain + </td> + + <td valign="top"> + + <a href="mailto:relves@cs.ubc.ca">Robert Elves + </a> + </td> + <td valign="top">2006-03-10 14:11</td> + <td valign="top">6.87 KB</td> + + + <td valign="top"> + <a href="attachment.cgi?id=1&action=edit">Edit</a> + + </td> + </tr> + + <tr> + <td colspan="5"> + <a href="attachment.cgi?bugid=4&action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.) + </td> + <td> + <a href="attachment.cgi?bugid=4&action=viewall">View All</a> + + </td> + </tr> +</table> +<br> + + + + <table> + <tr><th align="right">Bug 4 depends on:</th> + <td> + </td> + + <td> + <input name="dependson" accesskey="i" + value=""> + </td> + <td rowspan="2"> + <a href="showdependencytree.cgi?id=4">Show + dependency tree</a> + + <br> + <a href="showdependencygraph.cgi?id=4">Show + dependency graph</a> + + </td> + </tr> + + <tr><th align="right">Bug 4 <u>b</u>locks:</th> + <td> + </td> + <td> + <input name="blocked" accesskey="b" + value=""> + + </td> + </tr> + </table> + + + + + <br> + <b>Additional <u>C</u>omments:</b> + + <br> + <a name="add_comment"></a> + <textarea name="comment" id="comment" rows="10" cols="80" + accesskey="c"></textarea> + + <br> + <label for="addselfcc"> + <input type="checkbox" id="addselfcc" name="addselfcc"> + Add relves@cs.ubc.ca to CC list + </label> + + <br> + +<br> + <input type="radio" id="knob-leave" name="knob" value="none" checked="checked"> + <label for="knob-leave"> + Leave as <b>NEW </b> + </label> + <br> + + + <input type="radio" id="knob-accept" name="knob" value="accept"> + <label for="knob-accept"> + Accept bug (change + status to <b>ASSIGNED</b>) + </label> + <br> + + + <input type="radio" id="knob-resolve" name="knob" value="resolve"> + + <label for="knob-resolve"> + Resolve bug, changing + <a href="page.cgi?id=fields.html#resolution">resolution</a> to + </label> + <select name="resolution" + onchange="document.changeform.knob[2].checked=true"> + <option value="FIXED">FIXED</option> + <option value="INVALID">INVALID</option> + <option value="WONTFIX">WONTFIX</option> + + <option value="LATER">LATER</option> + <option value="REMIND">REMIND</option> + <option value="WORKSFORME">WORKSFORME</option> + </select> + <br> + + <input type="radio" id="knob-duplicate" name="knob" value="duplicate"> + <label for="knob-duplicate"> + + Resolve bug, mark it as duplicate of bug # + </label> + <input name="dup_id" size="6" + onchange="if (this.value != '') + {document.changeform.knob[3].checked=true}"> + <br> + + <input type="radio" id="knob-reassign" name="knob" value="reassign"> + <label for="knob-reassign"> + <a href="page.cgi?id=fields.html#assigned_to">Reassign</a> bug to + </label><input + name="assigned_to" + value="relves@cs.ubc.ca" onchange="if ((this.value != 'relves\x40cs.ubc.ca') && (this.value != '')) { + document.changeform.knob[4].checked=true; + }" accesskey="b" size="32" +> + + <br> + + <input type="radio" id="knob-reassign-cmp" name="knob" value="reassignbycomponent"> + <label for="knob-reassign-cmp"> + Reassign bug to default assignee + of selected component + </label> + <br> + + <input type="submit" value="Commit"> + <input type="hidden" name="form_name" value="process_bug"> + + <p> + <font size="+1"> + <b> + <a href="show_activity.cgi?id=4">View Bug Activity</a> + | + <a href="show_bug.cgi?format=multiple&id=4">Format For Printing</a> + | + + <a href="show_bug.cgi?ctype=xml&id=4">XML</a> + | + <a href="enter_bug.cgi?cloned_bug_id=4">Clone This Bug</a> + + + </b> + </font> + + </p> + + + +<hr> +<script type="text/javascript"> + <!-- + function updateCommentPrivacy(checkbox, id) { + var text_elem = document.getElementById('comment_text_'+id); + if (checkbox.checked) { + text_elem.parentNode.className='bz_private'; + } else { + text_elem.parentNode.className=''; + } + } + //--> + </script> + + + + + + + + +<div > + <table> + + <tr> + <td align="left"> + <b><a name="c0" href="show_bug.cgi?id=4#c0"> + Description</a>:</b> <script type="text/javascript"><!-- + addReplyLink(0); + //--></script> + </td> + <td align="left" width="30%"> + <b>Opened:</b> 2006-03-09 13:09 + </td> + + </tr> + </table> + + + +<pre id="comment_text_0">Testing new 2.22 version capability +</pre> + </div> + <div > + <br> + <span class="bz_comment"> + ------- <i>Comment + <a name="c1" href="show_bug.cgi?id=4#c1"> + + #1</a> From + <a href="mailto:relves@cs.ubc.ca">Robert Elves</a> + 2006-03-10 14:11:48 + </i> + <script type="text/javascript"><!-- + addReplyLink(1); //--></script> + ------- + </span> + + + +<pre id="comment_text_1"><span class=""><a href="attachment.cgi?id=1&action=view" title="Testing upload">Created an attachment (id=1)</a> <a href="attachment.cgi?id=1&action=edit" title="Testing upload">[edit]</a></span> + +Testing upload + +The comment +</pre> + </div> + +</form> + +<hr> +<b>Bug List:</b> + (4 of 4) + + <a href="show_bug.cgi?id=1">First</a> + <a href="show_bug.cgi?id=4">Last</a> + + <a href="show_bug.cgi?id=3">Prev</a> + + <i><font color="#777777">Next</font></i> + + <a href="buglist.cgi?regetlastlist=1">Show last search results</a> + + <a href="query.cgi">Search page</a> + <a href="enter_bug.cgi">Enter new bug</a> + +<br> +<div id="footer"> + <div class="intro"></div> + + + + +<div id="useful-links"> + <div id="links-actions"> + <div class="label">Actions:</div> + <div class="links"> + + <a href="./">Home</a> | + <a href="enter_bug.cgi">New</a> | + <a href="query.cgi">Search</a> | + + <form action="buglist.cgi" method="get" + onsubmit="if (this.quicksearch.value == '') + { alert('Please enter one or more search terms first.'); + return false; } return true;"> + <input class="txt" type="text" name="quicksearch"> + <input class="btn" type="submit" value="Find"> + </form> | + + <a href="report.cgi">Reports</a> + + | <a href="request.cgi?requester=relves%40cs.ubc.ca&requestee=relves%40cs.ubc.ca&do_union=1&group=type">My Requests</a> + + + | <a href="votes.cgi?action=show_user">My Votes</a> + | <a href="sanitycheck.cgi">Sanity check</a> + | <a href="relogin.cgi">Log out</a> relves@cs.ubc.ca + </div> + </div> + + + <div id="links-edit"> + <div class="label">Edit:</div> + <div class="links"> + + <a href="userprefs.cgi">Prefs</a> | <a href="editparams.cgi">Parameters</a> | <a href="editsettings.cgi">User Preferences</a> | <a href="editusers.cgi">Users</a> | <a href="editproducts.cgi">Products</a> | <a href="editflagtypes.cgi">Flags</a> | <a href="editvalues.cgi">Field Values</a> | <a href="editgroups.cgi">Groups</a> | <a href="editkeywords.cgi">Keywords</a> | <a href="editwhines.cgi">Whining</a> + + </div> + </div> + + + + + <div id="links-saved"> + <div class="label"> + Saved Searches: + </div> + <div class="links"> + <a href="buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailreporter1=1&emailtype1=exact&email1=relves%40cs.ubc.ca&field0-0-0=bug_status&type0-0-0=notequals&value0-0-0=UNCONFIRMED&field0-0-1=reporter&type0-0-1=equals&value0-0-1=relves%40cs.ubc.ca">My Bugs</a> + + </div> + </div> + + +<div id="links-special"> + <div class="label"> </div> + <div class="links"> + <form action="buglist.cgi" method="get"> + <input type="hidden" name="cmdtype" value="doit"> + <input type="hidden" name="remtype" value="asnamed"> + + <input type="hidden" name="add_bugids" value="1"> + <input type="submit" value="Add"> bugs + <input type="text" name="bug_ids" size="8" maxlength="80"> to + the new saved search: + <input type="text" name="newqueryname" size="20" maxlength="64"> + </form> + </div> + </div> + + +</div> + + <div class="outro"></div> +</div> + +</body> +</html> diff --git a/org.eclipse.mylyn.bugzilla.ui/.classpath b/org.eclipse.mylyn.bugzilla.ui/.classpath new file mode 100644 index 000000000..6f1aa2c56 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/.classpath @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"> + <accessrules> + <accessrule kind="accessible" pattern="**/internal/**"/> + </accessrules> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF new file mode 100644 index 000000000..c9a5ccb67 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/META-INF/MANIFEST.MF @@ -0,0 +1,33 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Mylar Bugzilla Client Ui Plug-in +Bundle-SymbolicName: org.eclipse.mylar.bugzilla.ui; singleton:=true +Bundle-Version: 0.5.1 +Bundle-Activator: org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin +Bundle-Vendor: Eclipse.org +Bundle-Localization: plugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.compare, + org.eclipse.search, + org.eclipse.ui.views, + org.eclipse.ui.ide, + org.eclipse.mylar.bugzilla.core, + org.eclipse.mylar.core, + org.eclipse.ui.forms, + org.eclipse.jface.text, + org.eclipse.mylar.tasklist, + org.eclipse.team.ui, + org.eclipse.team.cvs.ui, + org.eclipse.ui.editors, + org.eclipse.ui.workbench.texteditor +Eclipse-AutoStart: true +Export-Package: org.eclipse.mylar.internal.bugzilla.ui, + org.eclipse.mylar.internal.bugzilla.ui.actions, + org.eclipse.mylar.internal.bugzilla.ui.editor, + org.eclipse.mylar.internal.bugzilla.ui.search, + org.eclipse.mylar.internal.bugzilla.ui.tasklist, + org.eclipse.mylar.internal.bugzilla.ui.wizard +Bundle-ClassPath: bugzilla-ui.jar +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/org.eclipse.mylyn.bugzilla.ui/plugin.xml b/org.eclipse.mylyn.bugzilla.ui/plugin.xml new file mode 100644 index 000000000..012d2549c --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/plugin.xml @@ -0,0 +1,205 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<?eclipse version="3.0"?> +<plugin> + + <!-- TODO: remove? --> + <extension + id="searchHit" + name="Bugzilla Search Match" + point="org.eclipse.core.resources.markers"> + <super type="org.eclipse.search.searchmarker"/> + <attribute name="id"/> + <attribute name="href"/> + <attribute name="description"/> + <attribute name="label"/> + <attribute name="severity"/> + <attribute name="priority"/> + <attribute name="platform"/> + <attribute name="status"/> + <attribute name="result"/> + <attribute name="owner"/> + <attribute name="query"/> + </extension> + + <extension + id="org.eclipse.mylar.bugzilla.repository" + name="Bugzilla Repository" + point="org.eclipse.mylar.tasklist.repositories"> + + <repositoryType + brandingIcon="icons/eview16/bugzilla-logo.gif" + class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector" + id="org.eclipse.mylar.bugzilla.tasklist.repositories" + name="Bugzilla Repository Client" + type="bugzilla"/> + + <externalizer + class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskExternalizer" + id="org.eclipse.mylar.bugzilla.tasklist.externalizer"/> + </extension> + + <extension + point="org.eclipse.mylar.tasklist.editors"> + <editorFactory class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaReportEditorFactory"/> + <hyperlinkDetector + class="org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector" + id="org.eclipse.mylar.tasklist.hyperlinkdetector.bugzillatask"/> + </extension> + + <extension + point="org.eclipse.ui.perspectiveExtensions"> + <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective"> + <newWizardShortcut id="org.eclipse.mylar.bugzilla.bugWizard"/> + </perspectiveExtension> + </extension> + + <extension + point="org.eclipse.ui.decorators"> + <decorator + class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskDecorator" + id="org.eclipse.mylar.bugzilla.ui.decorator.task" + label="Mylar Bugzilla Task Decorator" + lightweight="true" + objectClass="org.eclipse.mylar.provisional.tasklist.ITaskListElement" + state="true"> + <description> + Mylar Bugzilla Task Decorator + </description> + </decorator> + </extension> + + <extension + id="org.eclipse.mylar.bugzilla.help.browser" + name="Bugzilla Help" + point="org.eclipse.help.toc"> + <toc + file="doc/toc.xml" + primary="false"> + </toc> + </extension> + + <extension + point="org.eclipse.ui.editors"> + <editor + name="Bugzilla viewer" + icon="icons/etool16/task-remote.gif" + class="org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor" + id="org.eclipse.mylar.bugzilla.ui.existingBugEditor"> + </editor> + <editor + name="Bugzilla viewer" + icon="icons/etool16/task-remote.gif" + class="org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditor" + id="org.eclipse.mylar.bugzilla.ui.newBugEditor"> + </editor> + <editor + icon="icons/etool16/task-repository.gif" + name="Bugzilla task viewer" + class="org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTaskEditor" + id="org.eclipse.mylar.bugzilla.ui.tasklist.bugzillaTaskEditor"/> + </extension> + <extension + id="org.eclipse.mylar.bugzilla.help.context" + name="Bugzilla Context-sensitive Help" + point="org.eclipse.help.contexts"> + <contexts + file="bugzilla-help.xml"> + </contexts> + </extension> + <extension + point="org.eclipse.search.searchPages" + id="org.eclipse.mylar.bugzilla.core.search.searchPage" + name="Bugzilla Search Page"> + <page + class="org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage" + enabled="true" + icon="icons/elcl16/bug-search.gif" + id="org.eclipse.mylar.bugzilla.core.search.bugzillaSearchPage" + label="Bugzilla Search" + tabPosition="999"/> + </extension> + <extension + id="BugzillaSearchPage" + point="org.eclipse.search.searchResultViewPages"> + <viewPage + class="org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchResultView" + searchResultClass="org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchResult" + id="org.eclipse.mylar.bugzilla.BugzillaSearchResultPage"/> + </extension> +<!-- <extension + point="org.eclipse.mylar.tasklist.editors"> + <hyperlinkListener + class="org.eclipse.mylar.internal.bugzilla.ui.BugzillaTaskHyperlinkDetector" + type="org.eclipse.mylar.bugzilla.ui.hyperlinkListener1"/> + </extension>--> +</plugin> + +<!-- +<extension + id="org.eclipse.mylar.bugzilla.wizards" + name="Bug Wizard" + point="org.eclipse.ui.newWizards"> + <category + name="Bugzilla Client" + id="org.eclipse.mylar.bugzilla.wizard.category"> + </category> + <wizard + category="org.eclipse.mylar.bugzilla.wizard.category" + class="org.eclipse.mylar.bugzilla.ui.wizard.NewBugzillaReportWizard" + icon="icons/elcl16/bug-new.gif" + id="org.eclipse.mylar.bugzilla.bugWizard" + name="New Bug Report"> + <description> + Create a new bug report + </description> + </wizard> +</extension> +--> + + <!-- + <extension + id="org.eclipse.mylar.bugzilla.ui" + name="Bugzilla Client Views" + point="org.eclipse.ui.views"> + <category + name="Bugzilla" + id="org.eclipse.mylar.bugzilla.category"/> + <view + name="Bugzilla Offline Reports" + icon="icons/elcl16/bug-dirty.gif" + category="org.eclipse.mylar.bugzilla.category" + class="org.eclipse.mylar.bugzilla.ui.OfflineView" + id="org.eclipse.mylar.bugzilla.ui.offlineReportsView"/> + <view + name="Bugzilla Favorites" + icon="icons/elcl16/bug-favorite.gif" + category="org.eclipse.mylar.bugzilla.category" + class="org.eclipse.mylar.bugzilla.ui.FavoritesView" + id="org.eclipse.mylar.bugzilla.ui.favoritesView"/> + </extension> + --> + +<!-- <extension point="org.eclipse.ui.preferencePages"> + <page + name="Bugzilla Client" + class="org.eclipse.mylar.internal.bugzilla.core.BugzillaPreferencePage" + id="org.eclipse.mylar.bugzilla.bugzillaPreferences" + category="org.eclipse.mylar.ui.preferences"/> + </extension> + --> + + <!-- + <action + class="org.eclipse.mylar.bugzilla.ui.actions.CreateBugzillaTaskAction" + enablesFor="*" + icon="icons/etool16/task-bug.gif" + id="org.eclipse.mylar.bugzilla.ui.popup.addExisting" + label="Add Existing Bugzilla Report" + menubarPath="reports" + tooltip="Add Existing Bugzilla Report"> + <enablement> + <objectClass name="org.eclipse.mylar.tasklist.internal.TaskCategory"/> + </enablement> + </action> + --> diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java new file mode 100644 index 000000000..edfe2c3f5 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaHyperLink.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil; + +/** + * @author Mik Kersten + */ +public class BugzillaHyperLink implements IHyperlink { + + private static final String SHOW_BUG_CGI = "/show_bug.cgi?id="; + + private IRegion region; + + private String id; + + private String repositoryUrl; + + public BugzillaHyperLink(IRegion nlsKeyRegion, String id, String repositoryUrl) { + this.region = nlsKeyRegion; + this.id = id; + this.repositoryUrl = repositoryUrl; + } + + public IRegion getHyperlinkRegion() { + return region; + } + + public String getTypeLabel() { + return null; + } + + public String getHyperlinkText() { + return SHOW_BUG_CGI + id; + } + + public void open() { + // TaskRepository repository = + // MylarTaskListPlugin.getRepositoryManager().getRepositoryForActiveTask(BugzillaPlugin.REPOSITORY_KIND); + // TaskRepository repository = + // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( + // BugzillaPlugin.REPOSITORY_KIND); + if (repositoryUrl != null) { + TaskUiUtil.openRepositoryTask(repositoryUrl, id, repositoryUrl + BugzillaRepositoryUtil.POST_ARGS_SHOW_BUG + + id); + // OpenBugzillaReportJob job = new + // OpenBugzillaReportJob(repository.getUrl(), id); + // IProgressService service = + // PlatformUI.getWorkbench().getProgressService(); + // try { + // service.run(true, false, job); + // } catch (Exception e) { + // MylarStatusHandler.fail(e, "Could not open report", true); + // } + } else { + MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Could not determine repository for report"); + } + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java new file mode 100644 index 000000000..616426fae --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaTaskHyperlinkDetector.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; +import org.eclipse.mylar.internal.bugzilla.ui.editor.RepositoryTextViewer; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; + +/** + * @author Rob Elves + */ +public class BugzillaTaskHyperlinkDetector implements IHyperlinkDetector { + + private TaskRepository repository; + + public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { + if (region == null || textViewer == null) + return null; + + if (!(textViewer instanceof RepositoryTextViewer)) + return null; + + RepositoryTextViewer viewer = (RepositoryTextViewer) textViewer; + + repository = viewer.getRepository(); + + if (repository == null) + return null; + + IDocument document = textViewer.getDocument(); + + int offset = region.getOffset(); + + if (document == null) + return null; + + IRegion lineInfo; + String line; + try { + lineInfo = document.getLineInformationOfOffset(offset); + line = document.get(lineInfo.getOffset(), lineInfo.getLength()); + } catch (BadLocationException ex) { + return null; + } + + int offsetInLine = offset - lineInfo.getOffset(); + + IHyperlink[] links = BugzillaUITools.findBugHyperlinks(repository.getUrl(), offsetInLine, lineInfo.getLength(), + line, lineInfo.getOffset()); + + return links; + + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java new file mode 100644 index 000000000..21f9ba025 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/BugzillaUITools.java @@ -0,0 +1,366 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.MultiStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.bugzilla.core.IBugzillaBug; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.NewBugModel; +import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor; +import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditorInput; +import org.eclipse.mylar.internal.bugzilla.ui.editor.NewBugEditorInput; +import org.eclipse.search.internal.ui.SearchMessages; +import org.eclipse.search.internal.ui.SearchPlugin; +import org.eclipse.search.internal.ui.util.ExceptionHandler; +import org.eclipse.search.ui.NewSearchUI; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; + +/** + * @author Rob Elves (multiple bug hyperlink support) + */ +public class BugzillaUITools { + + private static final String BUG_HASH = "#"; + + private static final String BUG_PATTERN_6 = "bug\\d+";// "^.*bug\\s#\\d+.*"; + + private static final String BUG_PATTERN_5 = "bug\\s#\\s\\d+";// "^.*bug\\s#\\d+.*"; + + private static final String BUG_PATTERN_4 = "bug#\\d+";// "^.*bug#\\d+.*"; + + private static final String BUG_PATTERN_3 = "bug\\s#\\d+";// "^.*bug\\s#\\d+.*"; + + private static final String BUG_PATTERN_2 = "bug#\\s+\\d+";// "^.*bug#\\s+\\d+.*"; + + private static final String BUG_PATTERN_1 = "bug\\s+\\d+";// "^.*bug\\s+\\d+.*"; + + private static final String[] BUG_PATTERNS = { BUG_PATTERN_1, BUG_PATTERN_2, BUG_PATTERN_3, BUG_PATTERN_4, + BUG_PATTERN_5, BUG_PATTERN_6 }; + + /** The editor to use when a bug is opened */ + private static IEditorPart fEditor; + + /** + * Convenience method for opening a bug in an editor. + * + * @param id + * The bug id of the bug to open in the editor + */ + public static boolean show(String repositoryUrl, int id) { + // determine if the editor is to be reused or not and call the + // appropriate + // function to show the bug + if (NewSearchUI.reuseEditor()) + return showWithReuse(repositoryUrl, id); + else + return showWithoutReuse(repositoryUrl, id); + } + + /** + * Show the bug in the same editor window + * + * @param id + * The id of the bug to show + */ + private static boolean showWithReuse(String repositoryUrl, int id) { + // get the active page so that we can reuse it + IWorkbenchPage page = SearchPlugin.getActivePage(); + try { + // if we couldn't get a page, get out + if (page == null) + return true; + + IEditorInput input = null; + + // try to get an editor input on the bug + input = new ExistingBugEditorInput(repositoryUrl, id); + + // check if we found a valid bug + if (((ExistingBugEditorInput) input).getBug() == null) { + MessageDialog.openError(null, "No such bug", "No bug exists with this id"); + return false; + } + + // get the editor for the page + IEditorPart editor = page.findEditor(input); + + if (editor == null) { + // close the current editor if it is clean and open + if (fEditor != null && !fEditor.isDirty()) + page.closeEditor(fEditor, false); + + try { + // try to open a new editor with the input bug, but don't + // activate it + editor = page.openEditor(input, IBugzillaConstants.EXISTING_BUG_EDITOR_ID, false); + } catch (PartInitException ex) { + // if there was a problem, handle it and log it, then get + // out of here + ExceptionHandler.handle(ex, SearchMessages.Search_Error_search_title, + SearchMessages.Search_Error_search_message); //$NON-NLS-2$ //$NON-NLS-1$ + BugzillaPlugin.log(ex.getStatus()); + return false; + } + + } else { + // if a editor is openon that bug, just bring it to the top + // of the editors + page.bringToTop(editor); + } + + if (editor != null) { + // if we have an editor, save it for later use + fEditor = editor; + } + } catch (LoginException e) { + MessageDialog + .openError( + null, + "Login Error", + "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. "); + BugzillaPlugin.log(e); + } catch (IOException e) { + IStatus status = new MultiStatus(IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString() + + " occurred while opening the bug report. \n\nClick Details or see log for more information.", e); + IStatus s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString() + + ": ", e); + ((MultiStatus) status).add(s); + s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e); + ((MultiStatus) status).add(s); + + // write error to log + BugzillaPlugin.log(status); + + ErrorDialog.openError(null, "Bugzilla Error", null, status); + return false; + } + + return true; + } + + /** + * Show the bug in a new editor window + * + * @param id + * The id of the bug to show + */ + private static boolean showWithoutReuse(String repositoryUrl, int id) { + // get the active workbench page + IWorkbenchPage page = SearchPlugin.getActivePage(); + try { + // if we couldn't get the page, get out of here + if (page == null) + return true; + + IEditorInput input = null; + String editorId = IBugzillaConstants.EXISTING_BUG_EDITOR_ID; + + // get a new editor input on the bug that we want to open + input = new ExistingBugEditorInput(repositoryUrl, id); + + // check if we found a valid bug + if (((ExistingBugEditorInput) input).getBug() == null) { + MessageDialog.openError(null, "No such bug", "No bug exists with this id"); + return false; + } + + try { + // try to open an editor on the input bug + page.openEditor(input, editorId); + } catch (PartInitException ex) { + // if we have a problem, handle it, log it, and get out of here + ExceptionHandler.handle(ex, SearchMessages.Search_Error_search_title, + SearchMessages.Search_Error_search_message); //$NON-NLS-2$ //$NON-NLS-1$ + BugzillaPlugin.log(ex.getStatus()); + return false; + } + } catch (LoginException e) { + MessageDialog + .openError( + null, + "Login Error", + "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. "); + BugzillaPlugin.log(e); + } catch (IOException e) { + IStatus status = new MultiStatus(IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString() + + " occurred while opening the bug report. \n\nClick Details or see log for more information.", e); + IStatus s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getClass().toString() + + ": ", e); + ((MultiStatus) status).add(s); + s = new Status(IStatus.ERROR, IBugzillaConstants.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e); + ((MultiStatus) status).add(s); + + // write error to log + BugzillaPlugin.log(status); + + ErrorDialog.openError(null, "Bugzilla Error", null, status); + return false; + } + return true; + } + + public static void closeEditor(IWorkbenchPage page, IBugzillaBug bug) { + if (bug instanceof NewBugModel) { + IEditorInput input = new NewBugEditorInput((NewBugModel) bug); + IEditorPart bugEditor = page.findEditor(input); + if (bugEditor != null) { + page.closeEditor(bugEditor, false); + } + } else if (bug instanceof BugReport) { + IEditorInput input = new ExistingBugEditorInput((BugReport) bug); + IEditorPart bugEditor = page.findEditor(input); + if (bugEditor != null) { + page.closeEditor(bugEditor, false); + IEditorPart compareEditor = page.findEditor(((ExistingBugEditor) bugEditor).getCompareInput()); + if (compareEditor != null) { + page.closeEditor(compareEditor, false); + } + } + } + } + + // TODO: legacy?: endOffset + public static IHyperlink[] findBugHyperlinks(String repositoryUrl, int offset, int endOffset, String comment, + int lineOffset) { + ArrayList<IHyperlink> hyperlinksFound = new ArrayList<IHyperlink>(); + for (String regExp : BUG_PATTERNS) { + // TODO: Store these compiled patterns rather than always + // re-compiling + Pattern p = Pattern.compile(regExp, Pattern.CASE_INSENSITIVE); + Matcher m = p.matcher(comment);//comment.toLowerCase().trim() + while (m.find()) { + if (offset >= m.start() && offset <= m.end()) { + IHyperlink link = extractHyperlink(repositoryUrl, lineOffset, m); + if (link != null) + hyperlinksFound.add(link); + } + } + } + + if (hyperlinksFound.size() > 0) { + return hyperlinksFound.toArray(new IHyperlink[1]); + } + return null; + } + + private static IHyperlink extractHyperlink(String repositoryUrl, int lineOffset, Matcher m) { + + int start = m.start(); + int end = m.end(); + String bugText = m.group(); + int ahead = 3; + if (bugText.contains(BUG_HASH)) { + int pound = bugText.indexOf(BUG_HASH); + ahead = pound + 1; + } + String endComment = bugText.substring(ahead, bugText.length()); + endComment = endComment.trim(); + + if (end == -1) + end = bugText.length(); + + try { + + String bugId = endComment.trim(); + start += lineOffset; + end += lineOffset; + + IRegion sregion = new Region(start, end - start); + return new BugzillaHyperLink(sregion, bugId, repositoryUrl); + + } catch (NumberFormatException e) { + return null; + } + + } + + // public static IHyperlink[] findBugHyperlinks(String repositoryUrl, int + // startOffset, int endOffset, String comment, int commentStart) { + // + // + // Pattern p = Pattern.compile("^.*bug\\s+\\d+.*"); + // Matcher m = p.matcher(comment.toLowerCase().trim()); + // boolean b = m.matches(); + // + // p = Pattern.compile("^.*bug#\\s+\\d+.*"); + // m = p.matcher(comment.toLowerCase().trim()); + // boolean b2 = m.matches(); + // + // p = Pattern.compile("^.*bug\\s#\\d+.*"); + // m = p.matcher(comment.toLowerCase().trim()); + // boolean b3 = m.matches(); + // + // p = Pattern.compile("^.*bug#\\d+.*"); + // m = p.matcher(comment.toLowerCase().trim()); + // boolean b4 = m.matches(); + // + // // XXX walk forward from where we are + // if (b || b2 || b3 || b4) { + // + // int start = comment.toLowerCase().indexOf("bug"); + // int ahead = 4; + // if (b2 || b3 || b4) { + // int pound = comment.toLowerCase().indexOf("#", start); + // ahead = pound - start + 1; + // } + // String endComment = comment.substring(start + ahead, comment.length()); + // endComment = endComment.trim(); + // int endCommentStart = comment.indexOf(endComment); + // + // int end = comment.indexOf(" ", endCommentStart); + // int end2 = comment.indexOf(":", endCommentStart); + // + // if ((end2 < end && end2 != -1) || (end == -1 && end2 != -1)) { + // end = end2; + // } + // + // if (end == -1) + // end = comment.length(); + // + // try { + // //int bugId = Integer.parseInt(comment.substring(endCommentStart, + // end).trim()); + // String bugId = comment.substring(endCommentStart, end).trim(); + // start += commentStart; + // end += commentStart; + // if (startOffset >= start && startOffset <= end) { + // // if (startOffset >= start && endOffset <= end) { + // IRegion sregion = new Region(start, end - start); + // return new IHyperlink[] { new BugzillaHyperLink(sregion, bugId, + // repositoryUrl) }; + // } + // } catch (NumberFormatException e) { + // return null; + // } + // } + // return null; + // } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java new file mode 100644 index 000000000..0a9776139 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/FavoritesView.java @@ -0,0 +1,574 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.GroupMarker; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.viewers.ColumnLayoutData; +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.internal.Favorite; +import org.eclipse.mylar.internal.bugzilla.core.internal.FavoritesFile; +import org.eclipse.mylar.internal.bugzilla.ui.actions.AbstractFavoritesAction; +import org.eclipse.mylar.internal.bugzilla.ui.actions.DeleteFavoriteAction; +import org.eclipse.mylar.internal.bugzilla.ui.actions.ViewFavoriteAction; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.TableItem; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.part.ViewPart; + +/** + * A view that shows any bug marked as favorites. + */ +public class FavoritesView extends ViewPart { + + private static Composite savedParent; + + private IMemento savedMemento; + + private static DeleteFavoriteAction remove; + + public static DeleteFavoriteAction removeAll; + + public static SelectAllAction selectAll; + + private static ViewFavoriteAction open; + + private Table table; + + private MenuManager contextMenu; + + private static TableViewer viewer; + + private String[] columnHeaders = { "Bug", "Query", "Date" }; + + private ColumnLayoutData columnLayouts[] = { new ColumnWeightData(10), new ColumnWeightData(3), + new ColumnWeightData(5) }; + + /** + * Constructor initializes favorites' source file initializes actions + */ + public FavoritesView() { + super(); + open = new ViewFavoriteAction(this); + selectAll = new SelectAllAction(); + remove = new DeleteFavoriteAction(this, false); + removeAll = new DeleteFavoriteAction(this, true); + } + + @Override + public void init(IViewSite site) throws PartInitException { + super.init(site); + } + + /** + * Initializes this view with the given view site. A memento is passed to + * the view which contains a snapshot of the views state from a previous + * session. + */ + @Override + public void init(IViewSite site, IMemento memento) throws PartInitException { + init(site); + this.savedMemento = memento; + } + + @Override + public void createPartControl(Composite parent) { + FavoritesView.savedParent = parent; + setPartName("Bugzilla Favorites"); + createTable(); + + viewer = new TableViewer(table); + viewer.setUseHashlookup(true); + createColumns(); + + GridData gd = new GridData(GridData.FILL_BOTH); + gd.verticalSpan = 20; + viewer.getTable().setLayoutData(gd); + + viewer.setContentProvider(new FavoritesViewContentProvider(this)); + viewer.setLabelProvider(new FavoritesViewLabelProvider()); + viewer.setInput(BugzillaPlugin.getDefault().getFavorites().elements()); + + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + FavoritesView.this.widgetSelected(event); + } + }); + + fillToolbar(); + createContextMenu(); + + Menu menu = contextMenu.createContextMenu(table); + table.setMenu(menu); + + hookGlobalActions(); + parent.layout(); + + // Restore state from the previous session. + restoreState(); + } + + @Override + public void setFocus() { + // don't need to do anything when the focus is set + } + + private void createColumns() { + TableLayout layout = new TableLayout(); + table.setLayout(layout); + table.setHeaderVisible(true); + + for (int i = 0; i < columnHeaders.length; i++) { + TableColumn tc = new TableColumn(table, SWT.NONE, i); + + tc.setText(columnHeaders[i]); + tc.pack(); + tc.setResizable(columnLayouts[i].resizable); + layout.addColumnData(columnLayouts[i]); + } + } + + private void createTable() { + + table = new Table(savedParent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION); + table.setLinesVisible(true); + + // Add action support for a double-click + table.addMouseListener(new MouseAdapter() { + + @Override + public void mouseDoubleClick(MouseEvent e) { + open.run(); + } + }); + } + + private void fillToolbar() { + IActionBars actionBars = getViewSite().getActionBars(); + IToolBarManager toolbar = actionBars.getToolBarManager(); + + remove.setEnabled(false); + toolbar.add(remove); + toolbar.add(removeAll); + toolbar.add(new Separator()); + toolbar.add(selectAll); + + // create actions to handle the sorting of the favorites + sortByIDAction = new SortByAction(FavoritesFile.ID_SORT); + sortByIDAction.setText("by &Bug ID"); + sortByIDAction.setToolTipText("Sorts by bug number"); + + sortByPriorityAction = new SortByAction(FavoritesFile.PRIORITY_SORT); + sortByPriorityAction.setText("by &Priority"); + sortByPriorityAction.setToolTipText("Sorts by riority of the bug"); + + sortBySeverityAction = new SortByAction(FavoritesFile.SEVERITY_SORT); + sortBySeverityAction.setText("by &Severity"); + sortBySeverityAction.setToolTipText("Sorts by severity of the bug"); + + sortByStatusAction = new SortByAction(FavoritesFile.STATE_SORT); + sortByStatusAction.setText("by S&tatus"); + sortByStatusAction.setToolTipText("Sorts by status of the bug"); + + // get the menu manager and create a submenu to contain sorting + IMenuManager menu = actionBars.getMenuManager(); + IMenuManager submenu = new MenuManager("&Sort"); + + // add the sorting actions to the menu bar + menu.add(submenu); + submenu.add(sortByIDAction); + submenu.add(sortBySeverityAction); + submenu.add(sortByPriorityAction); + submenu.add(sortByStatusAction); + + updateSortingState(); + } + + /** + * Function to make sure that the appropriate sort is checked + */ + void updateSortingState() { + int curCriterion = FavoritesFile.lastSel; + + sortByIDAction.setChecked(curCriterion == FavoritesFile.ID_SORT); + sortBySeverityAction.setChecked(curCriterion == FavoritesFile.SEVERITY_SORT); + sortByPriorityAction.setChecked(curCriterion == FavoritesFile.PRIORITY_SORT); + sortByStatusAction.setChecked(curCriterion == FavoritesFile.STATE_SORT); + viewer.setInput(viewer.getInput()); + } + + // Sorting actions for the favorites view + SortByAction sortByIDAction, sortBySeverityAction, sortByPriorityAction, sortByStatusAction; + + /** + * Inner class to handle sorting + * + * @author Shawn Minto + */ + class SortByAction extends Action { + /** The criteria to sort the favorites menu based on */ + private int criterion; + + /** + * Constructor + * + * @param criteria + * The criteria to sort the favorites menu based on + */ + public SortByAction(int criteria) { + this.criterion = criteria; + } + + /** + * Perform the sort + */ + @Override + public void run() { + BugzillaPlugin.getDefault().getFavorites().sort(criterion); + updateSortingState(); + } + } + + /** + * Create context menu. + */ + private void createContextMenu() { + contextMenu = new MenuManager("#FavoritesView"); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + fillContextMenu(manager); + updateActionEnablement(); + } + }); + + // Register menu for extension. + getSite().registerContextMenu("#FavoritesView", contextMenu, viewer); + } + + /** + * Hook global actions + */ + private void hookGlobalActions() { + IActionBars bars = getViewSite().getActionBars(); + bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAll); + bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), remove); + table.addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent event) { + if (event.character == SWT.DEL && event.stateMask == 0 && remove.isEnabled()) { + remove.run(); + } + } + }); + } + + /** + * Populate context menu + */ + private void fillContextMenu(IMenuManager mgr) { + mgr.add(open); + mgr.add(new Separator()); + mgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); + mgr.add(new Separator()); + mgr.add(remove); + mgr.add(new DeleteFavoriteAction(this, true)); + mgr.add(new SelectAllAction()); + } + + /** + * Update action enablement depending on whether or not any items are + * selected. Displays name of current item in status bar. + */ + public static void updateActionEnablement() { + + boolean hasSelected = viewer.getTable().getSelectionCount() > 0; + remove.setEnabled(hasSelected); + open.setEnabled(hasSelected); + + boolean hasItems = viewer.getTable().getItemCount() > 0; + removeAll.setEnabled(hasItems); + selectAll.setEnabled(hasItems); + } + + @Override + public void saveState(IMemento memento) { + TableItem[] sel = table.getSelection(); + if (sel.length == 0) + return; + memento = memento.createChild("selection"); + for (int i = 0; i < sel.length; i++) { + memento.createChild("descriptor", new Integer(table.indexOf(sel[i])).toString()); + } + } + + private void restoreState() { + if (savedMemento == null) + return; + savedMemento = savedMemento.getChild("selection"); + if (savedMemento != null) { + IMemento descriptors[] = savedMemento.getChildren("descriptor"); + if (descriptors.length > 0) { + int[] objList = new int[descriptors.length]; + for (int nX = 0; nX < descriptors.length; nX++) { + String id = descriptors[nX].getID(); + objList[nX] = BugzillaPlugin.getDefault().getFavorites().find(Integer.valueOf(id).intValue()); + } + table.setSelection(objList); + } + } + viewer.setSelection(viewer.getSelection(), true); + savedMemento = null; + updateActionEnablement(); + } + + /** + * Returns list of names of selected items. + */ + public List<BugzillaOpenStructure> getBugIdsOfSelected() { + IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();// TableItem[] + // sel + // = + // table.getSelection(); + List<?> sel = selection.toList(); + List<BugzillaOpenStructure> Ids = new ArrayList<BugzillaOpenStructure>(); + + Iterator<?> itr = sel.iterator(); + while (itr.hasNext()) { + Object o = itr.next(); + if (o instanceof Favorite) { + Favorite entry = (Favorite) o; + Integer id = (Integer) entry.getAttributes().get(IBugzillaConstants.HIT_MARKER_ATTR_ID); + Ids.add(new BugzillaOpenStructure(entry.getServer(), id, -1)); + } + } + + return Ids; + } + + /** + * Calls remove function in FavoritesFile + */ + @SuppressWarnings("unchecked") + public void deleteSelectedFavorites() { + List<Favorite> selection = ((IStructuredSelection) viewer.getSelection()).toList(); + BugzillaPlugin.getDefault().getFavorites().remove(selection); + viewer.setInput(viewer.getInput()); + } + + /** + * Removes all of the favorites in the FavoritesFile. + */ + public void deleteAllFavorites() { + BugzillaPlugin.getDefault().getFavorites().removeAll(); + viewer.setInput(viewer.getInput()); + } + + /** + * Refreshes the view. + */ + public static void add() { + if (viewer != null) + viewer.setInput(viewer.getInput()); + } + + /** + * @see SelectionListener#widgetSelected(SelectionEvent) + */ + @SuppressWarnings("unchecked") + public void widgetSelected(SelectionChangedEvent e) { + + IStructuredSelection selection = (IStructuredSelection) e.getSelection(); + + boolean enable = selection.size() > 0; + selectAll.setEnabled(enable); + remove.setEnabled(enable); + open.setEnabled(enable); + + IStructuredSelection viewerSelection = (IStructuredSelection) viewer.getSelection();// TableItem[] + // sel + // = + // table.getSelection(); + List<Favorite> sel = viewerSelection.toList(); + if (sel.size() > 0) { + IStatusLineManager manager = this.getViewSite().getActionBars().getStatusLineManager(); + manager.setMessage(sel.get(0).toString());// table.getItem(selected).getText(0)); + } + + updateActionEnablement(); + } + + /** + * Attempts to display this view on the workbench. + */ + public static void checkWindow() { + if (savedParent == null || savedParent.isDisposed()) { + IWorkbenchWindow w = BugzillaPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); + if (w != null) { + IWorkbenchPage page = w.getActivePage(); + if (page != null) { + try { + page.showView(IBugzillaConstants.PLUGIN_ID + ".ui.favoritesView"); + } catch (PartInitException pie) { + BugzillaPlugin.log(pie.getStatus()); + } + } + } + } + } + + /** + * Action class - "Select All" + */ + public class SelectAllAction extends AbstractFavoritesAction { + + public SelectAllAction() { + setToolTipText("Select all favorites"); + setText("Select all"); + setImageDescriptor(BugzillaImages.SELECT_ALL); + } + + @Override + public void run() { + checkWindow(); + table.selectAll(); + viewer.setSelection(viewer.getSelection(), true); + updateActionEnablement(); + } + } + + private class FavoritesViewLabelProvider extends LabelProvider implements ITableLabelProvider { + + /** + * Returns the label text for the given column of a recommendation in + * the table. + */ + public String getColumnText(Object element, int columnIndex) { + if (element instanceof Favorite) { + Favorite f = (Favorite) element; + switch (columnIndex) { + case 0: + return f.toString(); + case 1: + return f.getQuery(); + case 2: + return f.getDate().toString(); + default: + return "Undefined column text"; + } + } + return ""; //$NON-NLS-1$ + } + + /* + * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, + * int) + */ + public Image getColumnImage(Object arg0, int arg1) { + return null; + } + } + + public void refresh() { + // don't need to do anything to refresh + } + + private class FavoritesViewContentProvider implements IStructuredContentProvider { + + private List results; + + /** + * The constructor. + */ + public FavoritesViewContentProvider(FavoritesView taskList) { + // no setup to do + } + + /** + * Returns the elements to display in the viewer when its input is set + * to the given element. These elements can be presented as rows in a + * table, items in a list, etc. The result is not modified by the + * viewer. + * + * @param inputElement + * the input element + * @return the array of elements to display in the viewer + */ + public Object[] getElements(Object inputElement) { + if (results != null) { + return results.toArray(); + } else + return null; + } + + /** + * Notifies this content provider that a given viewer's input has been + * changed. + */ + public void inputChanged(Viewer viewerChanged, Object oldInput, Object newInput) { + this.results = (List) newInput; + + if (viewerChanged.getInput() != null) { + viewerChanged.getControl().getDisplay().syncExec(new Runnable() { + public void run() { + FavoritesView.this.refresh(); + } + }); + } + } + + public void dispose() { + if (results != null) + results = null; + } + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java new file mode 100644 index 000000000..759847610 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/WebBrowserDialog.java @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.browser.Browser; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; + +/** + * Dialog to show the contents of an html page to the user + * + * @author Shawn Minto + */ +public class WebBrowserDialog extends MessageDialog { + + private String data = null; + + public WebBrowserDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, + int dialogImageType, String[] dialogButtonLabels, int defaultIndex, String data) { + super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, + defaultIndex); + this.data = data; + this.setShellStyle(SWT.SHELL_TRIM | SWT.RESIZE); + } + + public static int openAcceptAgreement(Shell parent, String title, String message, String data) { + WebBrowserDialog dialog = new WebBrowserDialog(parent, title, null, // accept + message, NONE, new String[] { IDialogConstants.OK_LABEL }, 0, data); + // ok is the default + return dialog.open(); + } + + @Override + public Control createCustomArea(Composite parent) { + GridLayout layout = new GridLayout(); + parent.setLayout(layout); + layout.numColumns = 1; + + Browser b = new Browser(parent, SWT.NONE); + GridData gd = new GridData(GridData.FILL_BOTH); + gd.horizontalSpan = 1; + gd.verticalSpan = 50; + b.setLayoutData(gd); + b.setText(data); + + return parent; + } + +}
\ No newline at end of file diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java new file mode 100644 index 000000000..b2ea906cd --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/AbstractBugEditor.java @@ -0,0 +1,1649 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.editor; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.action.GroupMarker; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.TextViewer; +import org.eclipse.jface.util.SafeRunnable; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.mylar.bugzilla.core.Attribute; +import org.eclipse.mylar.bugzilla.core.Comment; +import org.eclipse.mylar.bugzilla.core.IBugzillaBug; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaTools; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaAttributeListener; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaReportSelection; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.internal.tasklist.ui.editors.MylarTaskEditor; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CCombo; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.ISelectionListener; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.actions.RetargetAction; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.events.IExpansionListener; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.forms.widgets.Section; +import org.eclipse.ui.internal.WorkbenchImages; +import org.eclipse.ui.internal.WorkbenchMessages; +import org.eclipse.ui.internal.help.WorkbenchHelpSystem; +import org.eclipse.ui.part.EditorPart; +import org.eclipse.ui.themes.IThemeManager; +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +/** + * Abstract base implementation for an editor to view a bugzilla report. + * + * @author Mik Kersten (some hardening of prototype) + * @author Rob Elves (Conversion to Eclipse Forms) + */ +public abstract class AbstractBugEditor extends EditorPart { + + public static final String REPOSITORY_TEXT_ID = "org.eclipse.mylar.tasklist.ui.fonts.task.editor.comment"; + + public static final String HYPERLINK_TYPE_TASK = "task"; + + public static final String HYPERLINK_TYPE_JAVA = "java"; + + private static final String LABEL_BUTTON_SUBMIT = "Submit to Repository"; + + private static final String LABEL_SECTION_ACTIONS = "Actions"; + + private static final String LABEL_SECTION_ATTRIBUTES = "Attributes"; + + protected static final String LABEL_SECTION_DESCRIPTION = "Description"; + + protected static final String LABEL_SECTION_COMMENTS = "Comments"; + + protected static final String LABEL_SECTION_NEW_COMMENT = "New Comment"; + + private FormToolkit toolkit; + + private ScrolledForm form; + + protected TaskRepository repository; + + public static final int WRAP_LENGTH = 90; + + protected Display display; + + public static final Font TITLE_FONT = JFaceResources.getBannerFont(); + + public static final Font TEXT_FONT = JFaceResources.getDefaultFont(); + + public static final Font COMMENT_FONT = JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT); + + public static final Font HEADER_FONT = JFaceResources.getDefaultFont(); + + public static final int DESCRIPTION_WIDTH = 79 * 7; + + public static final int DESCRIPTION_HEIGHT = 10 * 14; + + // protected Color background; + // + // protected Color foreground; + + protected AbstractBugEditorInput bugzillaInput; + + private MylarTaskEditor parentEditor = null; + + protected BugzillaOutlineNode bugzillaOutlineModel = null; + + // private static int MARGIN = 0;// 5 + + protected SimpleDateFormat simpleDateFormat = new SimpleDateFormat("E MMM dd, yyyy hh:mm aa");// "yyyy-MM-dd + + // HH:mm" + + /** + * Style option for function <code>newLayout</code>. This will create a + * plain-styled, selectable text label. + */ + protected final String VALUE = "VALUE"; + + /** + * Style option for function <code>newLayout</code>. This will create a + * bolded, selectable header. It will also have an arrow image before the + * text (simply for decoration). + */ + protected final String HEADER = "HEADER"; + + /** + * Style option for function <code>newLayout</code>. This will create a + * bolded, unselectable label. + */ + protected final String PROPERTY = "PROPERTY"; + + protected final int HORZ_INDENT = 0; + + protected CCombo oSCombo; + + protected CCombo versionCombo; + + protected CCombo platformCombo; + + protected CCombo priorityCombo; + + protected CCombo severityCombo; + + protected CCombo milestoneCombo; + + protected CCombo componentCombo; + + protected Text urlText; + + protected Text summaryText; + + protected Text assignedTo; + + protected Button submitButton; + + // protected Button saveButton; + + protected int scrollIncrement; + + protected int scrollVertPageIncrement; + + protected int scrollHorzPageIncrement; + + public boolean isDirty = false; + + /** Manager controlling the context menu */ + protected MenuManager contextMenuManager; + + protected StyledText currentSelectedText; + + protected static final String cutActionDefId = "org.eclipse.ui.edit.cut"; //$NON-NLS-1$ + + protected static final String copyActionDefId = "org.eclipse.ui.edit.copy"; //$NON-NLS-1$ + + protected static final String pasteActionDefId = "org.eclipse.ui.edit.paste"; //$NON-NLS-1$ + + protected RetargetAction cutAction; + + protected BugzillaEditorCopyAction copyAction; + + // private Action revealAllAction; + + protected RetargetAction pasteAction; + + protected Composite editorComposite; + + // protected CLabel titleLabel; + + // protected ScrolledComposite scrolledComposite; + + // protected Composite scrolledComposite; + + // protected Composite infoArea; + + // protected Hyperlink linkToBug; + + // protected StyledText generalTitleText; + + private List<IBugzillaAttributeListener> attributesListeners = new ArrayList<IBugzillaAttributeListener>(); + + protected final ISelectionProvider selectionProvider = new ISelectionProvider() { + public void addSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.add(listener); + } + + public ISelection getSelection() { + return null; + } + + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + selectionChangedListeners.remove(listener); + } + + public void setSelection(ISelection selection) { + // No implementation. + } + }; + + protected List<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + protected HashMap<CCombo, String> comboListenerMap = new HashMap<CCombo, String>(); + + private IBugzillaReportSelection lastSelected = null; + + protected final ISelectionListener selectionListener = new ISelectionListener() { + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + if ((part instanceof ContentOutline) && (selection instanceof StructuredSelection)) { + Object select = ((StructuredSelection) selection).getFirstElement(); + if (select instanceof BugzillaOutlineNode) { + BugzillaOutlineNode n = (BugzillaOutlineNode) select; + + if (n != null && lastSelected != null + && BugzillaTools.getHandle(n).equals(BugzillaTools.getHandle(lastSelected))) { + // we don't need to set the selection if it is already + // set + return; + } + lastSelected = n; + + Object data = n.getData(); + boolean highlight = true; + if (n.getKey().toLowerCase().equals("comments")) { + highlight = false; + } + if (n.getKey().toLowerCase().equals("new comment")) { + selectNewComment(); + } else if (n.getKey().toLowerCase().equals("new description")) { + selectNewDescription(); + } else if (data != null) { + select(data, highlight); + } + } + } + } + }; + + private class ComboSelectionListener extends SelectionAdapter { + + private CCombo combo; + + public ComboSelectionListener(CCombo combo) { + this.combo = combo; + } + + public void widgetDefaultSelected(SelectionEvent event) { + // ignore + } + + public void widgetSelected(SelectionEvent event) { + if (comboListenerMap.containsKey(combo)) { + if (combo.getSelectionIndex() > -1) { + String sel = combo.getItem(combo.getSelectionIndex()); + Attribute attribute = getBug().getAttribute(comboListenerMap.get(combo)); + if (sel != null && !(sel.equals(attribute.getNewValue()))) { + attribute.setNewValue(sel); + for (IBugzillaAttributeListener client : attributesListeners) { + client.attributeChanged(attribute.getName(), sel); + } + changeDirtyStatus(true); + } + } + } + } + } + + /** + * Creates a new <code>AbstractBugEditor</code>. Sets up the default + * fonts and cut/copy/paste actions. + */ + public AbstractBugEditor() { + // set the scroll increments so the editor scrolls normally with the + // scroll wheel + FontData[] fd = TEXT_FONT.getFontData(); + int cushion = 4; + scrollIncrement = fd[0].getHeight() + cushion; + scrollVertPageIncrement = 0; + scrollHorzPageIncrement = 0; + + // set up actions for the context menu + cutAction = new RetargetAction(ActionFactory.CUT.getId(), WorkbenchMessages.Workbench_cut); + cutAction.setToolTipText(WorkbenchMessages.Workbench_cutToolTip);// WorkbenchMessages.getString("Workbench.cutToolTip")); + // //$NON-NLS-1$ + cutAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT)); + cutAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT)); + cutAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT_DISABLED)); + cutAction.setAccelerator(SWT.CTRL | 'x'); + cutAction.setActionDefinitionId(cutActionDefId); + + pasteAction = new RetargetAction(ActionFactory.PASTE.getId(), WorkbenchMessages.Workbench_paste); + pasteAction.setToolTipText(WorkbenchMessages.Workbench_pasteToolTip);// WorkbenchMessages.getString("Workbench.pasteToolTip")); + // //$NON-NLS-1$ + pasteAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); + pasteAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); + pasteAction.setDisabledImageDescriptor(WorkbenchImages + .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED)); + pasteAction.setAccelerator(SWT.CTRL | 'v'); + pasteAction.setActionDefinitionId(pasteActionDefId); + + copyAction = new BugzillaEditorCopyAction(this); + copyAction.setText(WorkbenchMessages.Workbench_copy);// WorkbenchMessages.getString("Workbench.copy")); + copyAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); + copyAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); + copyAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED)); + copyAction.setAccelerator(SWT.CTRL | 'c'); + + copyAction.setEnabled(false); + + // + // revealAllAction = new ExpandCommentsAction(this); + // revealAllAction.setText("Reveal Comments");// + // WorkbenchMessages.getString("Workbench.copy")); + // revealAllAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); + // revealAllAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); + // revealAllAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED)); + // revealAllAction.setAccelerator(SWT.CTRL | 'r'); + // + // revealAllAction.setEnabled(true); + + } + + /** + * @return The bug this editor is displaying. + */ + public abstract IBugzillaBug getBug(); + + /** + * @return Any currently selected text. + */ + protected StyledText getCurrentText() { + return currentSelectedText; + } + + /** + * @return The action used to copy selected text from a bug editor to the + * clipboard. + */ + protected BugzillaEditorCopyAction getCopyAction() { + return copyAction; + } + + @Override + public void createPartControl(Composite parent) { + + if (getBug() == null) { + // close(); + MessageDialog.openError(Display.getDefault().getActiveShell(), "Bugzilla Client Errror", + "Could not resolve the requested bug, check Bugzilla server and version."); + + Composite composite = new Composite(parent, SWT.NULL); + composite.setLayout(new GridLayout()); + Label noBugLabel = new Label(composite, SWT.NULL); + noBugLabel.setText("Could not resolve bug"); + return; + } + + toolkit = new FormToolkit(parent.getDisplay()); + form = toolkit.createScrolledForm(parent); + String truncatedSummary = getBug().getSummary(); + int maxLength = 50; + if (truncatedSummary.length() > maxLength) { + truncatedSummary = truncatedSummary.substring(0, maxLength) + "..."; + } + form.setText("Bugzilla Bug: " + truncatedSummary); + + editorComposite = form.getBody(); + editorComposite.setLayout(new GridLayout()); + editorComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); + + // Header information + Composite headerInfoComposite = toolkit.createComposite(editorComposite); + headerInfoComposite.setLayout(new GridLayout(6, false)); + toolkit.createLabel(headerInfoComposite, "Bug# ").setFont(TITLE_FONT); + toolkit.createText(headerInfoComposite, "" + getBug().getId()); + + toolkit.createLabel(headerInfoComposite, " Opened: ").setFont(TITLE_FONT); + String openedDateString = ""; + if (getBug().getCreated() != null) { + openedDateString = simpleDateFormat.format(getBug().getCreated()); + } + toolkit.createText(headerInfoComposite, openedDateString); + + toolkit.createLabel(headerInfoComposite, " Modified: ").setFont(TITLE_FONT); + String lastModifiedDateString = ""; + if (getBug().getLastModified() != null) { + lastModifiedDateString = simpleDateFormat.format(getBug().getLastModified()); + } + toolkit.createText(headerInfoComposite, lastModifiedDateString); + + // openedText.setFont(TITLE_FONT); + // display = parent.getDisplay(); + // background = JFaceColors.getBannerBackground(display); + // foreground = JFaceColors.getBannerForeground(display); + + // createInfoArea(editorComposite); + createContextMenu(); + createAttributeLayout(); + createDescriptionLayout(toolkit, form); + createCommentLayout(toolkit, form); + createButtonLayouts(toolkit, form.getBody()); + + WorkbenchHelpSystem.getInstance().setHelp(parent, IBugzillaConstants.EDITOR_PAGE_CONTEXT); + + editorComposite.setMenu(contextMenuManager.createContextMenu(editorComposite)); + form.reflow(true); + getSite().getPage().addSelectionListener(selectionListener); + getSite().setSelectionProvider(selectionProvider); + } + + /** + * Create a context menu for this editor. + */ + protected void createContextMenu() { + contextMenuManager = new MenuManager("#BugEditor"); + contextMenuManager.setRemoveAllWhenShown(true); + contextMenuManager.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + manager.add(cutAction); + manager.add(copyAction); + manager.add(pasteAction); + // manager.add(revealAllAction); + manager.add(new Separator()); + manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); + if (currentSelectedText == null || currentSelectedText.getSelectionText().length() == 0) { + + copyAction.setEnabled(false); + } else { + copyAction.setEnabled(true); + } + } + }); + getSite().registerContextMenu("#BugEditor", contextMenuManager, getSite().getSelectionProvider()); + } + + /** + * Creates the attribute layout, which contains most of the basic attributes + * of the bug (some of which are editable). + */ + protected void createAttributeLayout() { + + String title = getTitleString(); + String keywords = ""; + String url = ""; + + Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE); + section.setText(LABEL_SECTION_ATTRIBUTES); + section.setExpanded(true); + section.setLayout(new GridLayout()); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + section.addExpansionListener(new IExpansionListener() { + public void expansionStateChanging(ExpansionEvent e) { + form.reflow(true); + } + + public void expansionStateChanged(ExpansionEvent e) { + form.reflow(true); + } + }); + + // Attributes Composite- this holds all the combo fiels and text fields + Composite attributesComposite = toolkit.createComposite(section); + GridLayout attributesLayout = new GridLayout(); + attributesLayout.numColumns = 4; + attributesLayout.horizontalSpacing = 14; + attributesLayout.verticalSpacing = 6; + attributesComposite.setLayout(attributesLayout); + GridData attributesData = new GridData(GridData.FILL_BOTH); + attributesData.horizontalSpan = 1; + attributesData.grabExcessVerticalSpace = false; + attributesComposite.setLayoutData(attributesData); + // attributesComposite.setBackground(background); + // End Attributes Composite + + section.setClient(attributesComposite); + + // Attributes Title Area + // Composite attributesTitleComposite = new + // Composite(attributesComposite, SWT.NONE); + // GridLayout attributesTitleLayout = new GridLayout(); + // attributesTitleLayout.horizontalSpacing = 0; + // attributesTitleLayout.marginWidth = 0; + // attributesTitleComposite.setLayout(attributesTitleLayout); + // attributesTitleComposite.setBackground(background); + // GridData attributesTitleData = new + // GridData(GridData.HORIZONTAL_ALIGN_FILL); + // attributesTitleData.horizontalSpan = 4; + // attributesTitleData.grabExcessVerticalSpace = false; + // attributesTitleComposite.setLayoutData(attributesTitleData); + // End Attributes Title + + // Set the Attributes Title + // newAttributesLayout(attributesTitleComposite); + // titleLabel.setText(title); + bugzillaInput.setToolTipText(title); + int currentCol = 1; + + String ccValue = null; + + // Populate Attributes + for (Iterator<Attribute> it = getBug().getAttributes().iterator(); it.hasNext();) { + Attribute attribute = it.next(); + String key = attribute.getParameterName(); + String name = attribute.getName(); + String value = checkText(attribute.getValue()); + Map<String, String> values = attribute.getOptionValues(); + + // make sure we don't try to display a hidden field + if (attribute.isHidden() || (key != null && key.equals("status_whiteboard"))) + continue; + + if (values == null) + values = new HashMap<String, String>(); + + if (key == null) + key = ""; + + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + data.horizontalSpan = 1; + data.horizontalIndent = HORZ_INDENT; + + if (key.equals("short_desc") || key.equals("keywords")) { + keywords = value; + } else if (key.equals("newcc")) { + ccValue = value; + if (value == null) + ccValue = ""; + } else if (key.equals("bug_file_loc")) { + url = value; + } else if (key.equals("op_sys")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + // oSCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | + // SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY);//SWT.NONE + oSCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.READ_ONLY); + // oSCombo = new Combo(attributesComposite, SWT.FLAT | + // SWT.READ_ONLY); + toolkit.adapt(oSCombo, true, true); + oSCombo.setFont(TEXT_FONT); + oSCombo.setLayoutData(data); + // oSCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + oSCombo.add(a[i]); + } + if (oSCombo.indexOf(value) != -1) { + oSCombo.select(oSCombo.indexOf(value)); + } else { + oSCombo.select(oSCombo.indexOf("All")); + } + // oSCombo.addListener(SWT.Modify, this); + oSCombo.addSelectionListener(new ComboSelectionListener(oSCombo)); + comboListenerMap.put(oSCombo, name); + oSCombo.addListener(SWT.FocusIn, new GenericListener()); + currentCol += 2; + } else if (key.equals("version")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + versionCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + toolkit.adapt(versionCombo, true, true); + versionCombo.setFont(TEXT_FONT); + versionCombo.setLayoutData(data); + // versionCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + versionCombo.add(a[i]); + } + versionCombo.select(versionCombo.indexOf(value)); + // versionCombo.addListener(SWT.Modify, this); + versionCombo.addSelectionListener(new ComboSelectionListener(versionCombo)); + versionCombo.addListener(SWT.FocusIn, new GenericListener()); + comboListenerMap.put(versionCombo, name); + currentCol += 2; + } else if (key.equals("priority")) { + // newLayout(attributesComposite, 1, "Priority", PROPERTY); + toolkit.createLabel(attributesComposite, name); + priorityCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.V_SCROLL | SWT.READ_ONLY); + toolkit.adapt(priorityCombo, true, true); + priorityCombo.setFont(TEXT_FONT); + priorityCombo.setLayoutData(data); + // priorityCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + priorityCombo.add(a[i]); + } + priorityCombo.select(priorityCombo.indexOf(value)); + // priorityCombo.addListener(SWT.Modify, this); + priorityCombo.addSelectionListener(new ComboSelectionListener(priorityCombo)); + priorityCombo.addListener(SWT.FocusIn, new GenericListener()); + comboListenerMap.put(priorityCombo, name); + currentCol += 2; + } else if (key.equals("bug_severity")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + severityCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.READ_ONLY); + toolkit.adapt(severityCombo, true, true); + severityCombo.setFont(TEXT_FONT); + severityCombo.setLayoutData(data); + // severityCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + severityCombo.add(a[i]); + } + severityCombo.select(severityCombo.indexOf(value)); + severityCombo.addSelectionListener(new ComboSelectionListener(severityCombo)); + // severityCombo.addListener(SWT.Modify, this); + severityCombo.addListener(SWT.FocusIn, new GenericListener()); + comboListenerMap.put(severityCombo, name); + currentCol += 2; + } else if (key.equals("target_milestone")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + milestoneCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI + | SWT.V_SCROLL | SWT.READ_ONLY); + toolkit.adapt(milestoneCombo, true, true); + milestoneCombo.setFont(TEXT_FONT); + milestoneCombo.setLayoutData(data); + // milestoneCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + milestoneCombo.add(a[i]); + } + milestoneCombo.select(milestoneCombo.indexOf(value)); + // milestoneCombo.addListener(SWT.Modify, this); + milestoneCombo.addSelectionListener(new ComboSelectionListener(milestoneCombo)); + milestoneCombo.addListener(SWT.FocusIn, new GenericListener()); + comboListenerMap.put(milestoneCombo, name); + currentCol += 2; + } else if (key.equals("rep_platform")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + platformCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + toolkit.adapt(platformCombo, true, true); + platformCombo.setFont(TEXT_FONT); + platformCombo.setLayoutData(data); + // platformCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + platformCombo.add(a[i]); + } + platformCombo.select(platformCombo.indexOf(value)); + // platformCombo.addListener(SWT.Modify, this); + platformCombo.addSelectionListener(new ComboSelectionListener(platformCombo)); + platformCombo.addListener(SWT.FocusIn, new GenericListener()); + comboListenerMap.put(platformCombo, name); + currentCol += 2; + } else if (key.equals("product")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + // toolkit.createLabel(attributesComposite, value); + Composite uneditableComp = toolkit.createComposite(attributesComposite); + GridLayout textLayout = new GridLayout(); + textLayout.marginWidth = 1; + uneditableComp.setLayout(textLayout); + toolkit.createText(uneditableComp, value, SWT.READ_ONLY);// Label(attributesComposite, + // value); + // newLayout(attributesComposite, 1, value, + // VALUE).addListener(SWT.FocusIn, new GenericListener()); + currentCol += 2; + } else if (key.equals("assigned_to")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + assignedTo = new Text(attributesComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP); + assignedTo.setFont(TEXT_FONT); + assignedTo.setText(value); + data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + data.horizontalSpan = 1; + assignedTo.setLayoutData(data); + + assignedTo.addListener(SWT.KeyUp, new Listener() { + public void handleEvent(Event event) { + String sel = assignedTo.getText(); + Attribute a = getBug().getAttribute("Assign To"); + if (!(a.getNewValue().equals(sel))) { + a.setNewValue(sel); + changeDirtyStatus(true); + } + } + }); + assignedTo.addListener(SWT.FocusIn, new GenericListener()); + + currentCol += 2; + } else if (key.equals("component")) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + componentCombo = new CCombo(attributesComposite, SWT.FLAT | SWT.NO_BACKGROUND | SWT.MULTI + | SWT.V_SCROLL | SWT.READ_ONLY); + toolkit.adapt(componentCombo, true, true); + componentCombo.setFont(TEXT_FONT); + componentCombo.setLayoutData(data); + // componentCombo.setBackground(background); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + Arrays.sort(a); + for (int i = 0; i < a.length; i++) { + componentCombo.add(a[i]); + } + componentCombo.select(componentCombo.indexOf(value)); + // componentCombo.addListener(SWT.Modify, this); + componentCombo.addSelectionListener(new ComboSelectionListener(componentCombo)); + componentCombo.addListener(SWT.FocusIn, new GenericListener()); + comboListenerMap.put(componentCombo, name); + currentCol += 2; + } else if (name.equals("Summary")) { + // Don't show the summary here. + continue; + } else if (name.equals("Last Modified")) { + // Don't show last modified here. + continue; + } else if (name.equals("Bug#")) { + // Don't show bug number here + continue; + } else if (values.isEmpty()) { + // newLayout(attributesComposite, 1, name, PROPERTY); + toolkit.createLabel(attributesComposite, name); + Composite uneditableComp = toolkit.createComposite(attributesComposite); + GridLayout textLayout = new GridLayout(); + textLayout.marginWidth = 1; + uneditableComp.setLayout(textLayout); + toolkit.createText(uneditableComp, value, SWT.READ_ONLY);// Label(attributesComposite, + // value); + // newLayout(attributesComposite, 1, value, + // VALUE).addListener(SWT.FocusIn, new GenericListener()); + currentCol += 2; + } + if (currentCol > attributesLayout.numColumns) { + currentCol -= attributesLayout.numColumns; + } + } + // End Populate Attributes + + // make sure that we are in the first column + if (currentCol > 1) { + while (currentCol <= attributesLayout.numColumns) { + newLayout(attributesComposite, 1, "", PROPERTY); + currentCol++; + } + } + + // URL, Keywords, Summary Text Fields + addUrlText(url, attributesComposite); + + // keywords text field (not editable) + addKeywordsList(toolkit, keywords, attributesComposite); + if (ccValue != null) { + addCCList(toolkit, ccValue, attributesComposite); + } + addSummaryText(attributesComposite); + // End URL, Keywords, Summary Text Fields + toolkit.paintBordersFor(attributesComposite); + } + + /** + * Adds a text field to display and edit the bug's URL attribute. + * + * @param url + * The URL attribute of the bug. + * @param attributesComposite + * The composite to add the text field to. + */ + protected void addUrlText(String url, Composite attributesComposite) { + // newLayout(attributesComposite, 1, "URL:", PROPERTY); + toolkit.createLabel(attributesComposite, "URL:"); + urlText = toolkit.createText(attributesComposite, url); + urlText.setFont(TEXT_FONT); + GridData urlTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + urlTextData.horizontalSpan = 3; + urlTextData.widthHint = 200; + urlText.setLayoutData(urlTextData); + // urlText.setText(url); + urlText.addListener(SWT.KeyUp, new Listener() { + public void handleEvent(Event event) { + String sel = urlText.getText(); + Attribute a = getBug().getAttribute("URL"); + if (!(a.getNewValue().equals(sel))) { + a.setNewValue(sel); + changeDirtyStatus(true); + } + } + }); + urlText.addListener(SWT.FocusIn, new GenericListener()); + } + + protected abstract void addKeywordsList(FormToolkit toolkit, String keywords, Composite attributesComposite); + + protected abstract void addCCList(FormToolkit toolkit, String value, Composite attributesComposite); + + /** + * Adds a text field to display and edit the bug's summary. + * + * @param attributesComposite + * The composite to add the text field to. + */ + protected void addSummaryText(Composite attributesComposite) { + // newLayout(attributesComposite, 1, "Summary:", PROPERTY); + toolkit.createLabel(attributesComposite, "Summary:"); + summaryText = toolkit.createText(attributesComposite, getBug().getSummary());// SWT.BORDER + // | + // SWT.SINGLE + // | + // SWT.WRAP + summaryText.setFont(TEXT_FONT); + GridData summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + summaryTextData.horizontalSpan = 3; + summaryTextData.widthHint = 200; + summaryText.setLayoutData(summaryTextData); + // summaryText.setText(getBug().getSummary()); + summaryText.addListener(SWT.KeyUp, new SummaryListener()); + summaryText.addListener(SWT.FocusIn, new GenericListener()); + } + + /** + * Creates the description layout, which displays and possibly edits the + * bug's description. + */ + protected abstract void createDescriptionLayout(FormToolkit toolkit, final ScrolledForm form); + + /** + * Creates the comment layout, which displays the bug's comments and + * possibly lets the user enter a new one. + */ + protected abstract void createCommentLayout(FormToolkit toolkit, final ScrolledForm form); + + /** + * Creates the button layout. This displays options and buttons at the + * bottom of the editor to allow actions to be performed on the bug. + */ + protected void createButtonLayouts(FormToolkit toolkit, Composite formComposite) { + + Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE); + section.setText(LABEL_SECTION_ACTIONS); + section.setExpanded(true); + section.setLayout(new GridLayout()); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + section.addExpansionListener(new IExpansionListener() { + public void expansionStateChanging(ExpansionEvent e) { + form.reflow(true); + } + + public void expansionStateChanged(ExpansionEvent e) { + form.reflow(true); + } + }); + + Composite buttonComposite = toolkit.createComposite(section); + GridLayout buttonLayout = new GridLayout(); + buttonLayout.numColumns = 4; + buttonComposite.setLayout(buttonLayout); + // buttonComposite.setBackground(background); + GridData buttonData = new GridData(GridData.FILL_BOTH); + buttonData.horizontalSpan = 1; + buttonData.grabExcessVerticalSpace = false; + buttonComposite.setLayoutData(buttonData); + section.setClient(buttonComposite); + addRadioButtons(buttonComposite); + addActionButtons(buttonComposite); + } + + /** + * Adds radio buttons to this composite. + * + * @param buttonComposite + * Composite to add the radio buttons to. + */ + abstract protected void addRadioButtons(Composite buttonComposite); + + /** + * Adds buttons to this composite. Subclasses can override this method to + * provide different/additional buttons. + * + * @param buttonComposite + * Composite to add the buttons to. + */ + protected void addActionButtons(Composite buttonComposite) { + submitButton = toolkit.createButton(buttonComposite, LABEL_BUTTON_SUBMIT, SWT.NONE); + // submitButton.setFont(TEXT_FONT); + GridData submitButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + // submitButtonData.widthHint = AbstractBugEditor.WRAP_LENGTH; + // submitButtonData.heightHint = 20; + + submitButton.setLayoutData(submitButtonData); + submitButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + submitBug(); + } + }); + submitButton.addListener(SWT.FocusIn, new GenericListener()); + + // This is not needed anymore since we have the save working properly + // with ctrl-s and file->save + // saveButton = new Button(buttonComposite, SWT.NONE); + // saveButton.setFont(TEXT_FONT); + // GridData saveButtonData = new + // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + // saveButtonData.widthHint = 100; + // saveButtonData.heightHint = 20; + // saveButton.setText("Save Offline"); + // saveButton.setLayoutData(saveButtonData); + // saveButton.addListener(SWT.Selection, new Listener() { + // public void handleEvent(Event e) { + // saveBug(); + // updateEditor(); + // } + // }); + // saveButton.addListener(SWT.FocusIn, new GenericListener()); + } + + /** + * Make sure that a String that is <code>null</code> is changed to a null + * string + * + * @param text + * The text to check if it is null or not + * @return If the text is <code>null</code>, then return the null string (<code>""</code>). + * Otherwise, return the text. + */ + public static String checkText(String text) { + if (text == null) + return ""; + else + return text; + } + + /** + * @return A string to use as a title for this editor. + */ + protected abstract String getTitleString(); + + /** + * Creates an uneditable text field for displaying data. + */ + protected StyledText newLayout(Composite composite, int colSpan, String text, String style) { + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + data.horizontalSpan = colSpan; + + StyledText resultText; + if (style.equalsIgnoreCase(VALUE)) { + resultText = new StyledText(composite, SWT.READ_ONLY); + resultText.setText(checkText(text)); + resultText.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + StyledText c = (StyledText) e.widget; + if (c != null && !c.getSelectionText().equals("")) { + if (currentSelectedText != null && !currentSelectedText.equals(c)) { + currentSelectedText.setSelectionRange(0, 0); + } + currentSelectedText = c; + } + + } + }); + resultText.setLayoutData(data); + } else if (style.equalsIgnoreCase(PROPERTY)) { + resultText = new StyledText(composite, SWT.READ_ONLY); + resultText.setText(checkText(text)); + resultText.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + StyledText c = (StyledText) e.widget; + if (c != null && !c.getSelectionText().equals("")) { + if (currentSelectedText != null && !currentSelectedText.equals(c)) { + currentSelectedText.setSelectionRange(0, 0); + } + currentSelectedText = c; + } + + } + }); + resultText.setLayoutData(data); + } else { + resultText = new StyledText(composite, SWT.READ_ONLY); + resultText.setText(checkText(text)); + resultText.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + StyledText c = (StyledText) e.widget; + if (c != null && !c.getSelectionText().equals("")) { + if (currentSelectedText != null && !currentSelectedText.equals(c)) { + currentSelectedText.setSelectionRange(0, 0); + } + currentSelectedText = c; + } + + } + }); + resultText.setLayoutData(data); + } + + // composite.setMenu(contextMenuManager.createContextMenu(composite)); + return resultText; + } + + protected TextViewer addRepositoryText(TaskRepository repository, Composite composite, String text) { + RepositoryTextViewer commentViewer = new RepositoryTextViewer(repository, composite, SWT.NONE); + + IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); + + commentViewer.getTextWidget().setFont(themeManager.getCurrentTheme().getFontRegistry().get(REPOSITORY_TEXT_ID)); + + commentViewer.setEditable(false); + + commentViewer.getTextWidget().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + StyledText c = (StyledText) e.widget; + if (c != null && !c.getSelectionText().equals("")) { + if (currentSelectedText != null && !currentSelectedText.equals(c)) { + currentSelectedText.setSelectionRange(0, 0); + } + currentSelectedText = c; + } + + } + }); + + commentViewer.getTextWidget().setMenu(contextMenuManager.createContextMenu(commentViewer.getTextWidget())); + + // textViewer.getControl().setFont(COMMENT_FONT); + commentViewer.setDocument(new Document(text)); + // commentViewer.activatePlugins(); + // textViewer.refresh(); + return commentViewer; + } + + /** + * This refreshes the text in the title label of the info area (it contains + * elements which can change). + */ + protected void setGeneralTitleText() { + // String text = "[Open in Internal Browser]"; + // linkToBug.setText(text); + // linkToBug.setFont(TEXT_FONT); + // if (this instanceof ExistingBugEditor) { + // linkToBug.setUnderlined(true); + // linkToBug.setForeground(JFaceColors.getHyperlinkText(Display.getCurrent())); + // linkToBug.addMouseListener(new MouseListener() { + // + // public void mouseDoubleClick(MouseEvent e) { + // } + // + // public void mouseUp(MouseEvent e) { + // } + // + // public void mouseDown(MouseEvent e) { + // TaskListUiUtil.openUrl(getTitle(), getTitleToolTip(), + // BugzillaRepositoryUtil.getBugUrlWithoutLogin( + // bugzillaInput.getBug().getRepositoryUrl(), + // bugzillaInput.getBug().getId())); + // if (e.stateMask == SWT.MOD3) { + // // XXX come back to look at this ui + // close(); + // } + // + // } + // }); + // } else { + // linkToBug.setEnabled(false); + // } + // linkToBug.addListener(SWT.FocusIn, new GenericListener()); + // + // // Resize the composite, in case the new summary is longer than the + // // previous one. + // // Then redraw it to show the changes. + // linkToBug.getParent().pack(true); + // linkToBug.redraw(); + + // String text = getTitleString(); + // generalTitleText.setText(text); + // StyleRange sr = new StyleRange(generalTitleText.getOffsetAtLine(0), + // text.length(), foreground, background, + // SWT.BOLD); + // generalTitleText.setStyleRange(sr); + // generalTitleText.addListener(SWT.FocusIn, new GenericListener()); + // + // // Resize the composite, in case the new summary is longer than the + // // previous one. + // // Then redraw it to show the changes. + // generalTitleText.getParent().pack(true); + // generalTitleText.redraw(); + } + + /** + * Creates some blank space underneath the supplied composite. + * + * @param parent + * The composite to add the blank space to. + */ + protected void createSeparatorSpace(Composite parent) { + GridData separatorData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + separatorData.verticalSpan = 1; + separatorData.grabExcessVerticalSpace = false; + + Composite separatorComposite = new Composite(parent, SWT.NONE); + GridLayout separatorLayout = new GridLayout(); + separatorLayout.marginHeight = 0; + separatorLayout.verticalSpacing = 0; + separatorComposite.setLayout(separatorLayout); + // separatorComposite.setBackground(background); + separatorComposite.setLayoutData(separatorData); + newLayout(separatorComposite, 1, "", VALUE); + } + + /** + * Submit the changes to the bug to the bugzilla server. (Public for testing + * purposes) + */ + protected abstract void submitBug(); + + /** + * If there is no locally saved copy of the current bug, then it saved + * offline. Otherwise, any changes are updated in the file. + */ + public void saveBug() { + try { + updateBug(); + IBugzillaBug bug = getBug(); + + final BugzillaRepositoryConnector bugzillaRepositoryClient = (BugzillaRepositoryConnector) MylarTaskListPlugin + .getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); + changeDirtyStatus(false); + bugzillaRepositoryClient.saveBugReport(bug); + } catch (Exception e) { + MylarStatusHandler.fail(e, "bug save offline failed", true); + } + + } + + /** + * Updates the <code>IBugzillaBug</code> object to contain the latest data + * entered in the data fields. + */ + protected abstract void updateBug(); + + /** + * Resets the data fields to contain the data currently in the + * <code>IBugzillaBug</code> object. + */ + protected abstract void restoreBug(); + + /** + * Refreshes any text labels in the editor that contain information that + * might change. + */ + protected void updateEditor() { + // Reset all summary occurrences, since it might have + // been edited. + // String title = getTitleString(); + // titleLabel.setText(title); + setGeneralTitleText(); + } + + @Override + public void setFocus() { + form.setFocus(); + } + + @Override + public boolean isDirty() { + return isDirty; + } + + /** + * Updates the dirty status of this editor page. The dirty status is true if + * the bug report has been modified but not saved. The title of the editor + * is also updated to reflect the status. + * + * @param newDirtyStatus + * is true when the bug report has been modified but not saved + */ + public void changeDirtyStatus(boolean newDirtyStatus) { + isDirty = newDirtyStatus; + if (parentEditor == null) { + firePropertyChange(PROP_DIRTY); + } else { + parentEditor.markDirty(); + } + + } + + /** + * Updates the title of the editor to reflect dirty status. If the bug + * report has been modified but not saved, then an indicator will appear in + * the title. + */ + protected void updateEditorTitle() { + setPartName(bugzillaInput.getName()); + } + + @Override + public boolean isSaveAsAllowed() { + return false; + } + + @Override + public void doSave(IProgressMonitor monitor) { + saveBug(); + updateEditor(); + + // XXX notify that saved ofline? + } + + @Override + public void doSaveAs() { + // we don't save, so no need to implement + } + + /** + * @return The composite for the whole editor. + */ + public Composite getEditorComposite() { + return editorComposite; + } + + @Override + public void dispose() { + super.dispose(); + isDisposed = true; + getSite().getPage().removeSelectionListener(selectionListener); + } + + // public void handleEvent(Event event) { + // if (event.widget instanceof CCombo) { + // CCombo combo = (CCombo) event.widget; + // if (comboListenerMap.containsKey(combo)) { + // if (combo.getSelectionIndex() > -1) { + // String sel = combo.getItem(combo.getSelectionIndex()); + // Attribute attribute = getBug().getAttribute(comboListenerMap.get(combo)); + // if (sel != null && !(sel.equals(attribute.getNewValue()))) { + // attribute.setNewValue(sel); + // for (IBugzillaAttributeListener client : attributesListeners) { + // client.attributeChanged(attribute.getName(), sel); + // } + // changeDirtyStatus(true); + // } + // } + // } + // } + // } + + /** + * Fires a <code>SelectionChangedEvent</code> to all listeners registered + * under <code>selectionChangedListeners</code>. + * + * @param event + * The selection event. + */ + protected void fireSelectionChanged(final SelectionChangedEvent event) { + Object[] listeners = selectionChangedListeners.toArray(); + for (int i = 0; i < listeners.length; i++) { + final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i]; + SafeRunnable.run(new SafeRunnable() { + public void run() { + l.selectionChanged(event); + } + }); + } + } + + /** + * A generic listener for selection of unimportant items. The default + * selection item sent out is the entire bug object. + */ + protected class GenericListener implements Listener { + public void handleEvent(Event event) { + IBugzillaBug bug = getBug(); + fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection( + new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), bug.getLabel(), false, bug + .getSummary())))); + } + } + + /** + * A listener to check if the summary field was modified. + */ + protected class SummaryListener implements Listener { + public void handleEvent(Event event) { + handleSummaryEvent(); + } + } + + /** + * Check if the summary field was modified, and update it if necessary. + */ + public abstract void handleSummaryEvent(); + + /*----------------------------------------------------------* + * CODE TO SCROLL TO A COMMENT OR OTHER PIECE OF TEXT + *----------------------------------------------------------*/ + + /** List of the StyledText's so that we can get the previous and the next */ + protected ArrayList<StyledText> texts = new ArrayList<StyledText>(); + + protected HashMap<Object, StyledText> textHash = new HashMap<Object, StyledText>(); + + /** Index into the styled texts */ + protected int textsindex = 0; + + protected Text addCommentsTextBox = null; + + protected Text descriptionTextBox = null; + + // private FormText previousText = null; + + /** + * Selects the given object in the editor. + * + * @param commentNumber + * The comment number to be selected + */ + public void select(int commentNumber) { + if (commentNumber == -1) + return; + + for (Object o : textHash.keySet()) { + if (o instanceof Comment) { + if (((Comment) o).getNumber() == commentNumber) { + select(o, true); + } + } + } + } + + public void revealAllComments() { + for (StyledText text : textHash.values()) { + Composite comp = text.getParent(); + while (comp != null) { + if (comp instanceof ExpandableComposite) { + ExpandableComposite ex = (ExpandableComposite) comp; + ex.setExpanded(true); + } + comp = comp.getParent(); + } + } + } + + /** + * Selects the given object in the editor. + * + * @param o + * The object to be selected. + * @param highlight + * Whether or not the object should be highlighted. + */ + public void select(Object o, boolean highlight) { + if (textHash.containsKey(o)) { + StyledText t = textHash.get(o); + if (t != null) { + Composite comp = t.getParent(); + while (comp != null) { + if (comp instanceof ExpandableComposite) { + ExpandableComposite ex = (ExpandableComposite) comp; + ex.setExpanded(true); + } + comp = comp.getParent(); + } + focusOn(t, highlight); + } + } else if (o instanceof IBugzillaBug) { + focusOn(null, highlight); + } + } + + public void selectDescription() { + for (Object o : textHash.keySet()) { + if (o.equals(bugzillaInput.getBug().getDescription())) { + select(o, true); + } + } + } + + public void selectNewComment() { + focusOn(addCommentsTextBox, false); + } + + public void selectNewDescription() { + focusOn(descriptionTextBox, false); + } + + /** + * Scroll to a specified piece of text + * + * @param selectionComposite + * The StyledText to scroll to + */ + private void focusOn(Control selectionComposite, boolean highlight) { + int pos = 0; + // if (previousText != null && !previousText.isDisposed()) { + // previousText.setsetSelection(0); + // } + + // if (selectionComposite instanceof FormText) + // previousText = (FormText) selectionComposite; + + if (selectionComposite != null) { + + // if (highlight && selectionComposite instanceof FormText && + // !selectionComposite.isDisposed()) + // ((FormText) selectionComposite).set.setSelection(0, ((FormText) + // selectionComposite).getText().length()); + + // get the position of the text in the composite + pos = 0; + Control s = selectionComposite; + if (s.isDisposed()) + return; + s.setEnabled(true); + s.setFocus(); + s.forceFocus(); + while (s != null && s != getEditorComposite()) { + if (!s.isDisposed()) { + pos += s.getLocation().y; + s = s.getParent(); + } + } + + pos = pos - 60; // form.getOrigin().y; + + } + if (!form.getBody().isDisposed()) + form.setOrigin(0, pos); + } + + private BugzillaOutlinePage outlinePage = null; + + @Override + public Object getAdapter(Class adapter) { + if (IContentOutlinePage.class.equals(adapter)) { + if (outlinePage == null && bugzillaInput != null) { + outlinePage = new BugzillaOutlinePage(bugzillaOutlineModel); + } + return outlinePage; + } + return super.getAdapter(adapter); + } + + public BugzillaOutlineNode getOutlineModel() { + return bugzillaOutlineModel; + } + + public BugzillaOutlinePage getOutline() { + return outlinePage; + } + + private boolean isDisposed = false; + + public boolean isDisposed() { + return isDisposed; + } + + public void close() { + Display activeDisplay = getSite().getShell().getDisplay(); + activeDisplay.asyncExec(new Runnable() { + public void run() { + if (getSite() != null && getSite().getPage() != null && !AbstractBugEditor.this.isDisposed()) + if (parentEditor != null) { + getSite().getPage().closeEditor(parentEditor, false); + } else { + getSite().getPage().closeEditor(AbstractBugEditor.this, false); + } + } + }); + } + + public void addAttributeListener(IBugzillaAttributeListener listener) { + attributesListeners.add(listener); + } + + public void removeAttributeListener(IBugzillaAttributeListener listener) { + attributesListeners.remove(listener); + } + + public void setParentEditor(MylarTaskEditor parentEditor) { + this.parentEditor = parentEditor; + } + + public BugzillaOutlineNode getBugzillaOutlineModel() { + return bugzillaOutlineModel; + } + + public void setBugzillaOutlineModel(BugzillaOutlineNode bugzillaOutlineModel) { + this.bugzillaOutlineModel = bugzillaOutlineModel; + } + + // private void addHyperlinks(final StyledText styledText, Composite + // composite) { + // + // StringMatcher javaElementMatcher = new StringMatcher("*(*.java:*)", true, + // false); + // String[] lines = styledText.getText().split("\r\n|\n"); + // + // int totalLength = 0; + // for (int x = 0; x < lines.length; x++) { + // + // String line = lines[x]; + // Position position = javaElementMatcher.find(line, 0, line.length()); + // if (position != null) { + // String linkText = line.substring(position.getStart() + 1, + // position.getEnd() - 1); + // // Link hyperlink = new Link(styledText, SWT.NONE); + // IRegion region = new Region(styledText.getText().indexOf(line) + + // position.getStart(), position.getEnd() + // - position.getStart()); + // addControl(styledText, region, linkText, line, HYPERLINK_TYPE_JAVA); + // } + // + // IHyperlink[] bugHyperlinks = BugzillaUITools.findBugHyperlinks(0, + // line.length(), line, 0); + // if (bugHyperlinks != null) { + // for (IHyperlink hyperlink : bugHyperlinks) { + // String linkText = hyperlink.getHyperlinkText(); + // int index = linkText.lastIndexOf('='); + // if (index >= 0) { + // String taskId = linkText.substring(index + 1); + // String href = repository.getUrl() + hyperlink.getHyperlinkText(); + // addControl(styledText, hyperlink.getHyperlinkRegion(), "bug# " + taskId, + // href, + // HYPERLINK_TYPE_TASK); + // } + // + // } + // } + // + // totalLength = totalLength + line.length(); + // + // } // bottom of for loop + // + // // reposition widgets on paint event + // styledText.addPaintObjectListener(new PaintObjectListener() { + // public void paintObject(PaintObjectEvent event) { + // StyleRange style = event.style; + // int start = style.start; + // Map<Integer, Control> controlMap = controls.get(styledText); + // Control control = controlMap.get(start); + // if (control != null) { + // Point pt = control.getSize(); + // int x = event.x + MARGIN; + // int y = event.y + event.ascent - 2 * pt.y / 3; + // control.setLocation(x, y); + // } + // } + // }); + // } + + // private void addControl(final StyledText styledText, IRegion region, + // String linkText, String href, + // final String listenerType) { + // Hyperlink hyperlink = toolkit.createHyperlink(styledText, linkText, + // SWT.NONE); + // hyperlink.setText(linkText); + // hyperlink.setFont(COMMENT_FONT); + // hyperlink.setHref(href); + // IHyperlinkListener hyperlinkListener = + // MylarTaskListPlugin.getDefault().getTaskHyperlinkListeners().get( + // listenerType); + // if (hyperlinkListener != null) { + // hyperlink.addHyperlinkListener(hyperlinkListener); + // } + // Map<Integer, Control> controlMap = controls.get(styledText); + // if (controlMap == null) { + // controlMap = new HashMap<Integer, Control>(); + // controls.put(styledText, controlMap); + // } + // controlMap.put(new Integer(region.getOffset()), hyperlink); + // StyleRange style = new StyleRange(); + // style.start = region.getOffset(); + // style.length = region.getLength(); + // hyperlink.pack(); + // Rectangle rect = hyperlink.getBounds(); + // int ascent = 2 * rect.height / 3; + // int descent = rect.height - ascent; + // style.metrics = new GlyphMetrics(ascent + MARGIN, descent + MARGIN, + // rect.width + 2 * MARGIN); + // styledText.setStyleRange(style); + // } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java new file mode 100644 index 000000000..f9c6fd33e --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/ExistingBugEditor.java @@ -0,0 +1,1083 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.editor; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import java.util.StringTokenizer; + +import org.eclipse.compare.CompareConfiguration; +import org.eclipse.compare.CompareUI; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.IJobChangeEvent; +import org.eclipse.core.runtime.jobs.IJobChangeListener; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.action.GroupMarker; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.TextViewer; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.mylar.bugzilla.core.Attribute; +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.bugzilla.core.Comment; +import org.eclipse.mylar.bugzilla.core.IBugzillaBug; +import org.eclipse.mylar.bugzilla.core.Operation; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.compare.BugzillaCompareInput; +import org.eclipse.mylar.internal.bugzilla.core.internal.HtmlStreamTokenizer; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector; +import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CCombo; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Link; +import org.eclipse.swt.widgets.List; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.events.IExpansionListener; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.forms.widgets.Section; + +/** + * An editor used to view a bug report that exists on a server. It uses a + * <code>BugReport</code> object to store the data. + * + * @author Mik Kersten (hardening of prototype) + * @author Rob Elves (adaption to Eclipse Forms) + */ +public class ExistingBugEditor extends AbstractBugEditor { + + private static final String REASSIGN_BUG_TO = "Reassign bug to"; + + private static final String LABEL_EXPAND_ALL_BUTTON = "Expand All"; + + private static final String LABEL_COMPARE_BUTTON = "Compare"; + + private static final String ATTR_SUMMARY = "Summary"; + + protected Set<String> removeCC = new HashSet<String>(); + + protected BugzillaCompareInput compareInput; + + protected Button compareButton; + + protected Button[] radios; + + protected Control[] radioOptions; + + protected List keyWordsList; + + protected Text keywordsText; + + protected List ccList; + + protected Text ccText; + + protected Text addCommentsText; + + protected BugReport bug; + + public String getNewCommentText() { + return addCommentsTextBox.getText(); + } + + /** + * Creates a new <code>ExistingBugEditor</code>. + */ + public ExistingBugEditor() { + super(); + + // Set up the input for comparing the bug report to the server + CompareConfiguration config = new CompareConfiguration(); + config.setLeftEditable(false); + config.setRightEditable(false); + config.setLeftLabel("Local Bug Report"); + config.setRightLabel("Remote Bug Report"); + config.setLeftImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT)); + config.setRightImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT)); + compareInput = new BugzillaCompareInput(config); + } + + @SuppressWarnings("deprecation") + @Override + public void init(IEditorSite site, IEditorInput input) throws PartInitException { + if (!(input instanceof ExistingBugEditorInput)) + throw new PartInitException("Invalid Input: Must be ExistingBugEditorInput"); + ExistingBugEditorInput editorInput = (ExistingBugEditorInput) input; + repository = editorInput.getRepository(); + + setSite(site); + setInput(input); + bugzillaInput = editorInput; + bugzillaOutlineModel = BugzillaOutlineNode.parseBugReport(bugzillaInput.getBug()); + + bug = editorInput.getBug(); + restoreBug(); + isDirty = false; + updateEditorTitle(); + } + + /** + * This overrides the existing implementation in order to add an "add to + * favorites" option to the context menu. + * + * @see org.eclipse.mylar.internal.bugzilla.ui.AbstractBugEditor#createContextMenu() + */ + @Override + protected void createContextMenu() { + contextMenuManager = new MenuManager("#BugEditor"); + contextMenuManager.setRemoveAllWhenShown(true); + contextMenuManager.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + // manager.add(new + // AddToFavoritesAction(ExistingBugEditor.this)); + // manager.add(new Separator()); + manager.add(cutAction); + manager.add(copyAction); + manager.add(pasteAction); + manager.add(new Separator()); + manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); + if (currentSelectedText == null || currentSelectedText.getSelectionText().length() == 0) { + + copyAction.setEnabled(false); + } else { + copyAction.setEnabled(true); + } + } + }); + getSite().registerContextMenu("#BugEditor", contextMenuManager, getSite().getSelectionProvider()); + } + + @Override + protected void addRadioButtons(Composite buttonComposite) { + FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay()); + int i = 0; + Button selected = null; + radios = new Button[bug.getOperations().size()]; + radioOptions = new Control[bug.getOperations().size()]; + for (Iterator<Operation> it = bug.getOperations().iterator(); it.hasNext();) { + Operation o = it.next(); + radios[i] = toolkit.createButton(buttonComposite, "", SWT.RADIO); + radios[i].setFont(TEXT_FONT); + GridData radioData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + if (!o.hasOptions() && !o.isInput()) + radioData.horizontalSpan = 4; + else + radioData.horizontalSpan = 3; + radioData.heightHint = 20; + String opName = o.getOperationName(); + opName = opName.replaceAll("</.*>", ""); + opName = opName.replaceAll("<.*>", ""); + radios[i].setText(opName); + radios[i].setLayoutData(radioData); + // radios[i].setBackground(background); + radios[i].addSelectionListener(new RadioButtonListener()); + radios[i].addListener(SWT.FocusIn, new GenericListener()); + + if (o.hasOptions()) { + radioData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + radioData.horizontalSpan = 1; + radioData.heightHint = 20; + radioData.widthHint = AbstractBugEditor.WRAP_LENGTH; + // radioOptions[i] = new Combo(buttonComposite, SWT.NULL); + radioOptions[i] = new CCombo(buttonComposite, SWT.FLAT | SWT.READ_ONLY); + toolkit.adapt(radioOptions[i], true, true); + // radioOptions[i] = new Combo(buttonComposite, SWT.MULTI | + // SWT.V_SCROLL | SWT.READ_ONLY); + // radioOptions[i].setData(FormToolkit.KEY_DRAW_BORDER, + // FormToolkit.TEXT_BORDER); + // radioOptions[i] = new Combo(buttonComposite, + // SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + // | SWT.READ_ONLY); + radioOptions[i].setFont(TEXT_FONT); + radioOptions[i].setLayoutData(radioData); + // radioOptions[i].setBackground(background); + + Object[] a = o.getOptionNames().toArray(); + Arrays.sort(a); + for (int j = 0; j < a.length; j++) { + ((CCombo) radioOptions[i]).add((String) a[j]); + } + ((CCombo) radioOptions[i]).select(0); + ((CCombo) radioOptions[i]).addSelectionListener(new RadioButtonListener()); + } else if (o.isInput()) { + radioData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + radioData.horizontalSpan = 1; + radioData.widthHint = 120; + + // TODO: add condition for if opName = reassign to... + String assignmentValue = ""; + if(opName.equals(REASSIGN_BUG_TO)) { + assignmentValue = repository.getUserName(); + } + radioOptions[i] = toolkit.createText(buttonComposite, assignmentValue);// , + // SWT.SINGLE); + radioOptions[i].setFont(TEXT_FONT); + radioOptions[i].setLayoutData(radioData); + // radioOptions[i].setBackground(background); + ((Text) radioOptions[i]).setText(o.getInputValue()); + ((Text) radioOptions[i]).addModifyListener(new RadioButtonListener()); + } + + if (i == 0 || o.isChecked()) { + if (selected != null) + selected.setSelection(false); + selected = radios[i]; + radios[i].setSelection(true); + if (o.hasOptions() && o.getOptionSelection() != null) { + int j = 0; + for (String s : ((CCombo) radioOptions[i]).getItems()) { + if (s.compareTo(o.getOptionSelection()) == 0) { + ((CCombo) radioOptions[i]).select(j); + } + j++; + } + } + bug.setSelectedOperation(o); + } + + i++; + } + toolkit.paintBordersFor(buttonComposite); + } + + @Override + protected void addActionButtons(Composite buttonComposite) { + FormToolkit toolkit = new FormToolkit(buttonComposite.getDisplay()); + super.addActionButtons(buttonComposite); + + compareButton = toolkit.createButton(buttonComposite, LABEL_COMPARE_BUTTON, SWT.NONE); +// compareButton.setFont(TEXT_FONT); + GridData compareButtonData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); +// compareButtonData.widthHint = 100; +// compareButtonData.heightHint = 20; +// // compareButton.setText("Compare"); + compareButton.setLayoutData(compareButtonData); + compareButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + OpenCompareEditorJob compareJob = new OpenCompareEditorJob("Comparing bug with remote server..."); + compareJob.schedule(); + } + }); + compareButton.addListener(SWT.FocusIn, new GenericListener()); + + Button expandAll = toolkit.createButton(buttonComposite, LABEL_EXPAND_ALL_BUTTON, SWT.NONE); + expandAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); + expandAll.addSelectionListener(new SelectionListener() { + + public void widgetDefaultSelected(SelectionEvent e) { + // ignore + + } + + public void widgetSelected(SelectionEvent e) { + revealAllComments(); + + } + }); + + + // TODO used for spell checking. Add back when we want to support this + // checkSpellingButton = new Button(buttonComposite, SWT.NONE); + // checkSpellingButton.setFont(TEXT_FONT); + // compareButtonData = new + // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + // compareButtonData.widthHint = 100; + // compareButtonData.heightHint = 20; + // checkSpellingButton.setText("CheckSpelling"); + // checkSpellingButton.setLayoutData(compareButtonData); + // checkSpellingButton.addListener(SWT.Selection, new Listener() { + // public void handleEvent(Event e) { + // checkSpelling(); + // } + // }); + // checkSpellingButton.addListener(SWT.FocusIn, new GenericListener()); + } + + /** + * @return Returns the compareInput. + */ + public BugzillaCompareInput getCompareInput() { + return compareInput; + } + + @Override + public IBugzillaBug getBug() { + return bug; + } + + @Override + protected String getTitleString() { +// Attribute summary = bug.getAttribute(ATTR_SUMMARY); +// String summaryVal = ((null != summary) ? summary.getNewValue() : null); + return bug.getLabel();// + ": " + checkText(summaryVal); + } + + @Override + public void submitBug() { + + submitButton.setEnabled(false); + ExistingBugEditor.this.showBusy(true); + + final BugzillaReportSubmitForm bugzillaReportSubmitForm = BugzillaReportSubmitForm.makeExistingBugPost(bug, + repository, removeCC); + + final BugzillaRepositoryConnector bugzillaRepositoryClient = (BugzillaRepositoryConnector) MylarTaskListPlugin + .getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); + + IJobChangeListener closeEditorListener = new IJobChangeListener() { + + public void done(final IJobChangeEvent event) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + if (event.getJob().getResult().equals(Status.OK_STATUS)) { + close(); + } else { + submitButton.setEnabled(true); + ExistingBugEditor.this.showBusy(false); + } + } + }); + } + + public void aboutToRun(IJobChangeEvent event) { + // ignore + } + + public void awake(IJobChangeEvent event) { + // ignore + } + + public void running(IJobChangeEvent event) { + // ignore + } + + public void scheduled(IJobChangeEvent event) { + // ignore + } + + public void sleeping(IJobChangeEvent event) { + // ignore + } + }; + bugzillaRepositoryClient.submitBugReport(bug, bugzillaReportSubmitForm, closeEditorListener); + } + + @Override + protected void createDescriptionLayout(FormToolkit toolkit, final ScrolledForm form) { + + Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE); + section.setText(LABEL_SECTION_DESCRIPTION); + section.setExpanded(true); + section.setLayout(new GridLayout()); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + section.addExpansionListener(new IExpansionListener() { + public void expansionStateChanging(ExpansionEvent e) { + form.reflow(true); + } + + public void expansionStateChanged(ExpansionEvent e) { + form.reflow(true); + } + }); + + // Description Area + Composite descriptionComposite = toolkit.createComposite(section); + GridLayout descriptionLayout = new GridLayout(); + descriptionLayout.numColumns = 1; + descriptionComposite.setLayout(descriptionLayout); + // descriptionComposite.setBackground(background); + //GridData descriptionData = new GridData(GridData.FILL_HORIZONTAL); + //descriptionData.horizontalSpan = 1; + //descriptionData.grabExcessVerticalSpace = false; + // descriptionComposite.setLayoutData(descriptionData); + // End Description Area + + section.setClient(descriptionComposite); + + // FormText t = newLayout(descriptionComposite, 4, "Description:", + // HEADER); + + // t.addListener(SWT.FocusIn, new DescriptionListener()); + //StyledText t = newLayout(descriptionComposite, 4, bug.getDescription(), VALUE); + // t.setFont(COMMENT_FONT); + + TextViewer viewer = addRepositoryText(repository, descriptionComposite, bug.getDescription()); + StyledText styledText = viewer.getTextWidget(); + styledText.addListener(SWT.FocusIn, new DescriptionListener()); + + texts.add(textsindex, styledText); + textHash.put(bug.getDescription(), styledText); + textsindex++; + + } + + /** + * http://www.eclipse.org and http://www.eclipse.org/mylar and a + */ + @Override + protected void createCommentLayout(FormToolkit toolkit, final ScrolledForm form) { + + Section section = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | Section.TWISTIE); + section.setText(LABEL_SECTION_COMMENTS); + section.setExpanded(true); + section.setLayout(new GridLayout()); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.addExpansionListener(new IExpansionListener() { + public void expansionStateChanging(ExpansionEvent e) { + form.reflow(true); + } + + public void expansionStateChanged(ExpansionEvent e) { + form.reflow(true); + } + }); + + // Additional (read-only) Comments Area + Composite addCommentsComposite = toolkit.createComposite(section); + section.setClient(addCommentsComposite); + GridLayout addCommentsLayout = new GridLayout(); + addCommentsLayout.numColumns = 1; + addCommentsComposite.setLayout(addCommentsLayout); + // addCommentsComposite.setBackground(background); + GridData addCommentsData = new GridData(GridData.FILL_BOTH); + addCommentsData.horizontalSpan = 1; + addCommentsData.widthHint = DESCRIPTION_WIDTH; + addCommentsData.heightHint = DESCRIPTION_HEIGHT; + addCommentsData.grabExcessVerticalSpace = false; + addCommentsComposite.setLayoutData(addCommentsData); + // End Additional (read-only) Comments Area + + + + StyledText styledText = null; + for (Iterator<Comment> it = bug.getComments().iterator(); it.hasNext();) { + final Comment comment = it.next(); + + ExpandableComposite ec = toolkit.createExpandableComposite(addCommentsComposite, + ExpandableComposite.TREE_NODE); + + if (!it.hasNext()) { + ec.setExpanded(true); + } + + ec.setText(comment.getNumber() + ": " +comment.getAuthorName() + ", " + simpleDateFormat.format(comment.getCreated())); + + ec.addExpansionListener(new ExpansionAdapter() { + public void expansionStateChanged(ExpansionEvent e) { + form.reflow(true); + } + }); + + ec.setLayout(new GridLayout()); + + Composite ecComposite = toolkit.createComposite(ec); + ecComposite.setLayout(new GridLayout()); + ec.setClient(ecComposite); + toolkit.paintBordersFor(ec); + + if (comment.hasAttachment()) { + + Link attachmentLink = new Link(ecComposite, SWT.NONE); + + String attachmentHeader; + + if(!comment.isObsolete()) { + attachmentHeader = " Attached: " + comment.getAttachmentDescription() + " [<a>view</a>]"; + } else { + attachmentHeader = " Deprecated: " + comment.getAttachmentDescription(); + } + // String result = MessageFormat.format(attachmentHeader, new + // String[] { node + // .getLabelText() }); + + attachmentLink.addSelectionListener(new SelectionAdapter() { + /* + * (non-Javadoc) + * + * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetSelected(SelectionEvent e) { + String address = repository.getUrl() + "/attachment.cgi?id=" + comment.getAttachmentId() + + "&action=view"; + TaskUiUtil.openUrl(address, address, address); + + } + }); + + attachmentLink.setText(attachmentHeader); + + } + + // styledText = newLayout(ecComposite, 1, comment.getText(), VALUE); + // styledText.addListener(SWT.FocusIn, new + // CommentListener(comment)); + // styledText.setFont(COMMENT_FONT); + + TextViewer viewer = addRepositoryText(repository, ecComposite, comment.getText()); + styledText = viewer.getTextWidget(); + + // code for outline + texts.add(textsindex, styledText); + textHash.put(comment, styledText); + textsindex++; + } + + Section sectionAdditionalComments = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR + | Section.TWISTIE); + sectionAdditionalComments.setText(LABEL_SECTION_NEW_COMMENT); + sectionAdditionalComments.setExpanded(true); + // sectionAdditionalComments.setLayout(new GridLayout()); + // GridData newCommentCommentLayoutData = new GridData(); + // newCommentCommentLayoutData.widthHint = DESCRIPTION_WIDTH; + // sectionAdditionalComments.setLayoutData(newCommentCommentLayoutData); + sectionAdditionalComments.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + sectionAdditionalComments.addExpansionListener(new IExpansionListener() { + public void expansionStateChanging(ExpansionEvent e) { + form.reflow(true); + } + + public void expansionStateChanged(ExpansionEvent e) { + form.reflow(true); + } + }); + + Composite newCommentsComposite = toolkit.createComposite(sectionAdditionalComments); + newCommentsComposite.setLayout(new GridLayout()); + newCommentsComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + addCommentsText = toolkit.createText(newCommentsComposite, bug.getNewComment(), SWT.MULTI | SWT.V_SCROLL + | SWT.WRAP); + addCommentsText.setFont(COMMENT_FONT); + toolkit.paintBordersFor(newCommentsComposite); + GridData addCommentsTextData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + //addCommentsTextData.horizontalSpan = 4; + addCommentsTextData.widthHint = DESCRIPTION_WIDTH; + addCommentsTextData.heightHint = DESCRIPTION_HEIGHT; + addCommentsTextData.grabExcessHorizontalSpace = true; + + addCommentsText.setLayoutData(addCommentsTextData); + // addCommentsText.setText(bug.getNewComment()); + addCommentsText.addListener(SWT.KeyUp, new Listener() { + + public void handleEvent(Event event) { + String sel = addCommentsText.getText(); + if (!(bug.getNewNewComment().equals(sel))) { + bug.setNewNewComment(sel); + changeDirtyStatus(true); + } + validateInput(); + } + }); + addCommentsText.addListener(SWT.FocusIn, new NewCommentListener()); + // End Additional Comments Text + + addCommentsTextBox = addCommentsText; + + // this.createSeparatorSpace(addCommentsComposite); + sectionAdditionalComments.setClient(newCommentsComposite); + } + + @Override + protected void addKeywordsList(FormToolkit toolkit, String keywords, Composite attributesComposite) { + // newLayout(attributesComposite, 1, "Keywords:", PROPERTY); + toolkit.createLabel(attributesComposite, "Keywords:"); + keywordsText = toolkit.createText(attributesComposite, keywords); + keywordsText.setFont(TEXT_FONT); + keywordsText.setEditable(false); + // keywordsText.setForeground(foreground); + // keywordsText.setBackground(JFaceColors.getErrorBackground(display)); + GridData keywordsData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + keywordsData.horizontalSpan = 2; + keywordsData.widthHint = 200; + keywordsText.setLayoutData(keywordsData); + // keywordsText.setText(keywords); + keywordsText.addListener(SWT.FocusIn, new GenericListener()); + keyWordsList = new List(attributesComposite, SWT.MULTI | SWT.V_SCROLL); + keyWordsList.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); + keyWordsList.setFont(TEXT_FONT); + GridData keyWordsTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + keyWordsTextData.horizontalSpan = 1; + keyWordsTextData.widthHint = 125; + keyWordsTextData.heightHint = 40; + keyWordsList.setLayoutData(keyWordsTextData); + + // initialize the keywords list with valid values + java.util.List<String> keywordList = bug.getKeywords(); + if (keywordList != null) { + for (Iterator<String> it = keywordList.iterator(); it.hasNext();) { + String keyword = it.next(); + keyWordsList.add(keyword); + } + + // get the selected keywords for the bug + StringTokenizer st = new StringTokenizer(keywords, ",", false); + ArrayList<Integer> indicies = new ArrayList<Integer>(); + while (st.hasMoreTokens()) { + String s = st.nextToken().trim(); + int index = keyWordsList.indexOf(s); + if (index != -1) + indicies.add(new Integer(index)); + } + + // select the keywords that were selected for the bug + int length = indicies.size(); + int[] sel = new int[length]; + for (int i = 0; i < length; i++) { + sel[i] = indicies.get(i).intValue(); + } + keyWordsList.select(sel); + } + + keyWordsList.addSelectionListener(new KeywordListener()); + keyWordsList.addListener(SWT.FocusIn, new GenericListener()); + } + + @Override + protected void addCCList(FormToolkit toolkit, String ccValue, Composite attributesComposite) { + newLayout(attributesComposite, 1, "Add CC:", PROPERTY); + ccText = toolkit.createText(attributesComposite, ccValue); + ccText.setFont(TEXT_FONT); + ccText.setEditable(true); + // ccText.setForeground(foreground); + // ccText.setBackground(background); + GridData ccData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + ccData.horizontalSpan = 1; + ccData.widthHint = 200; + ccText.setLayoutData(ccData); + // ccText.setText(ccValue); + ccText.addListener(SWT.FocusIn, new GenericListener()); + ccText.addModifyListener(new ModifyListener() { + + public void modifyText(ModifyEvent e) { + changeDirtyStatus(true); + Attribute a = bug.getAttributeForKnobName("newcc"); + if (a != null) { + a.setNewValue(ccText.getText()); + } + } + + }); + + // newLayout(attributesComposite, 1, "CC: (Select to remove)", + // PROPERTY); + toolkit.createLabel(attributesComposite, "CC: (Select to remove)"); + ccList = new List(attributesComposite, SWT.MULTI | SWT.V_SCROLL);// SWT.BORDER + ccList.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); + ccList.setFont(TEXT_FONT); + GridData ccListData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + ccListData.horizontalSpan = 1; + ccListData.widthHint = 125; + ccListData.heightHint = 40; + ccList.setLayoutData(ccListData); + + // initialize the keywords list with valid values + Set<String> ccs = bug.getCC(); + if (ccs != null) { + for (Iterator<String> it = ccs.iterator(); it.hasNext();) { + String cc = it.next(); + ccList.add(HtmlStreamTokenizer.unescape(cc)); + } + } + + ccList.addSelectionListener(new SelectionListener() { + + public void widgetSelected(SelectionEvent e) { + changeDirtyStatus(true); + + for (String cc : ccList.getItems()) { + int index = ccList.indexOf(cc); + if (ccList.isSelected(index)) { + removeCC.add(cc); + } else { + removeCC.remove(cc); + } + } + } + + public void widgetDefaultSelected(SelectionEvent e) { + } + }); + ccList.addListener(SWT.FocusIn, new GenericListener()); + } + + @Override + protected void updateBug() { + + // go through all of the attributes and update the main values to the + // new ones + for (Iterator<Attribute> it = bug.getAttributes().iterator(); it.hasNext();) { + Attribute a = it.next(); + if (a.getNewValue() != null && a.getNewValue().compareTo(a.getValue()) != 0) { + bug.setHasChanged(true); + } + a.setValue(a.getNewValue()); + + } + if (bug.getNewComment().compareTo(bug.getNewNewComment()) != 0) { + bug.setHasChanged(true); + } + + // Update some other fields as well. + bug.setNewComment(bug.getNewNewComment()); + + } + + @Override + protected void restoreBug() { + + if (bug == null) + return; + + // go through all of the attributes and restore the new values to the + // main ones + for (Iterator<Attribute> it = bug.getAttributes().iterator(); it.hasNext();) { + Attribute a = it.next(); + a.setNewValue(a.getValue()); + } + + // Restore some other fields as well. + bug.setNewNewComment(bug.getNewComment()); + } + + /** + * This job opens a compare editor to compare the current state of the bug + * in the editor with the bug on the server. + */ + protected class OpenCompareEditorJob extends Job { + + public OpenCompareEditorJob(String name) { + super(name); + } + + @Override + protected IStatus run(IProgressMonitor monitor) { + final BugReport serverBug; + try { + serverBug = BugzillaRepositoryUtil.getBug(bug.getRepositoryUrl(), bug.getId()); + // If no bug was found on the server, throw an exception so that + // the + // user gets the same message that appears when there is a + // problem reading the server. + if (serverBug == null) + throw new Exception(); + } catch (Exception e) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), + "Could not open bug.", "Bug #" + bug.getId() + " could not be read from the server."); + } + }); + return new Status(IStatus.OK, IBugzillaConstants.PLUGIN_ID, IStatus.OK, + "Could not get the bug report from the server.", null); + } + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + compareInput.setTitle("Bug #" + bug.getId()); + compareInput.setLeft(bug); + compareInput.setRight(serverBug); + CompareUI.openCompareEditor(compareInput); + } + }); + return new Status(IStatus.OK, IBugzillaConstants.PLUGIN_ID, IStatus.OK, "", null); + } + + } + + /** + * Class to handle the selection change of the keywords. + */ + protected class KeywordListener implements SelectionListener { + + /* + * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetSelected(SelectionEvent arg0) { + changeDirtyStatus(true); + + // get the selected keywords and create a string to submit + StringBuffer keywords = new StringBuffer(); + String[] sel = keyWordsList.getSelection(); + + // allow unselecting 1 keyword when it is the only one selected + if (keyWordsList.getSelectionCount() == 1) { + int index = keyWordsList.getSelectionIndex(); + String keyword = keyWordsList.getItem(index); + if (bug.getAttribute("Keywords").getNewValue().equals(keyword)) + keyWordsList.deselectAll(); + } + + for (int i = 0; i < keyWordsList.getSelectionCount(); i++) { + keywords.append(sel[i]); + if (i != keyWordsList.getSelectionCount() - 1) { + keywords.append(","); + } + } + bug.getAttribute("Keywords").setNewValue(keywords.toString()); + + // update the keywords text field + keywordsText.setText(keywords.toString()); + } + + /* + * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) + */ + public void widgetDefaultSelected(SelectionEvent arg0) { + // no need to listen to this + } + + } + + /** + * A listener for selection of the description field. + */ + protected class DescriptionListener implements Listener { + public void handleEvent(Event event) { + fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection( + new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), LABEL_SECTION_DESCRIPTION, true, + bug.getSummary())))); + } + } + + /** + * A listener for selection of a comment. + */ + protected class CommentListener implements Listener { + + /** The comment that this listener is for. */ + private Comment comment; + + /** + * Creates a new <code>CommentListener</code>. + * + * @param comment + * The comment that this listener is for. + */ + public CommentListener(Comment comment) { + this.comment = comment; + } + + public void handleEvent(Event event) { + fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection( + new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), comment.getCreated().toString(), + comment, bug.getSummary())))); + } + } + + /** + * A listener for selection of the textbox where a new comment is entered + * in. + */ + protected class NewCommentListener implements Listener { + public void handleEvent(Event event) { + fireSelectionChanged(new SelectionChangedEvent(selectionProvider, new StructuredSelection( + new BugzillaReportSelection(bug.getId(), bug.getRepositoryUrl(), "New Comment", false, bug + .getSummary())))); + } + } + + /** + * Class to handle the selection change of the radio buttons. + */ + protected class RadioButtonListener implements SelectionListener, ModifyListener { + + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + + public void widgetSelected(SelectionEvent e) { + Button selected = null; + for (int i = 0; i < radios.length; i++) { + if (radios[i].getSelection()) + selected = radios[i]; + } + // determine the operation to do to the bug + for (int i = 0; i < radios.length; i++) { + if (radios[i] != e.widget && radios[i] != selected) { + radios[i].setSelection(false); + } + + if (e.widget == radios[i]) { + Operation o = bug.getOperation(radios[i].getText()); + bug.setSelectedOperation(o); + ExistingBugEditor.this.changeDirtyStatus(true); + } else if (e.widget == radioOptions[i]) { + Operation o = bug.getOperation(radios[i].getText()); + o.setOptionSelection(((CCombo) radioOptions[i]).getItem(((CCombo) radioOptions[i]) + .getSelectionIndex())); + + if (bug.getSelectedOperation() != null) + bug.getSelectedOperation().setChecked(false); + o.setChecked(true); + + bug.setSelectedOperation(o); + radios[i].setSelection(true); + if (selected != null && selected != radios[i]) { + selected.setSelection(false); + } + ExistingBugEditor.this.changeDirtyStatus(true); + } + } + validateInput(); + } + + public void modifyText(ModifyEvent e) { + Button selected = null; + for (int i = 0; i < radios.length; i++) { + if (radios[i].getSelection()) + selected = radios[i]; + } + // determine the operation to do to the bug + for (int i = 0; i < radios.length; i++) { + if (radios[i] != e.widget && radios[i] != selected) { + radios[i].setSelection(false); + } + + if (e.widget == radios[i]) { + Operation o = bug.getOperation(radios[i].getText()); + bug.setSelectedOperation(o); + ExistingBugEditor.this.changeDirtyStatus(true); + } else if (e.widget == radioOptions[i]) { + Operation o = bug.getOperation(radios[i].getText()); + o.setInputValue(((Text) radioOptions[i]).getText()); + + if (bug.getSelectedOperation() != null) + bug.getSelectedOperation().setChecked(false); + o.setChecked(true); + + bug.setSelectedOperation(o); + radios[i].setSelection(true); + if (selected != null && selected != radios[i]) { + selected.setSelection(false); + } + ExistingBugEditor.this.changeDirtyStatus(true); + } + } + validateInput(); + } + } + + private void validateInput() { + Operation o = bug.getSelectedOperation(); + if (o != null && o.getKnobName().compareTo("resolve") == 0 + && (addCommentsText.getText() == null || addCommentsText.getText().equals(""))) { + submitButton.setEnabled(false); + } else { + submitButton.setEnabled(true); + } + } + + @Override + public void handleSummaryEvent() { + String sel = summaryText.getText(); + Attribute a = getBug().getAttribute(ATTR_SUMMARY); + if (!(a.getNewValue().equals(sel))) { + a.setNewValue(sel); + changeDirtyStatus(true); + } + } + + // TODO used for spell checking. Add back when we want to support this + // protected Button checkSpellingButton; + // + // private void checkSpelling() { + // SpellingContext context= new SpellingContext(); + // context.setContentType(Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT)); + // IDocument document = new Document(addCommentsTextBox.getText()); + // ISpellingProblemCollector collector= new + // SpellingProblemCollector(document); + // EditorsUI.getSpellingService().check(document, context, collector, new + // NullProgressMonitor()); + // } + // + // private class SpellingProblemCollector implements + // ISpellingProblemCollector { + // + // private IDocument document; + // + // private SpellingDialog spellingDialog; + // + // public SpellingProblemCollector(IDocument document){ + // this.document = document; + // spellingDialog = new + // SpellingDialog(Display.getCurrent().getActiveShell(), "Spell Checking", + // document); + // } + // + // /* + // * @see + // org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#accept(org.eclipse.ui.texteditor.spelling.SpellingProblem) + // */ + // public void accept(SpellingProblem problem) { + // try { + // int line= document.getLineOfOffset(problem.getOffset()) + 1; + // String word= document.get(problem.getOffset(), problem.getLength()); + // + // spellingDialog.open(word, problem.getProposals()); + // + // } catch (BadLocationException x) { + // // drop this SpellingProblem + // } + // } + // + // /* + // * @see + // org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#beginCollecting() + // */ + // public void beginCollecting() { + // + // } + // + // /* + // * @see + // org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector#endCollecting() + // */ + // public void endCollecting() { + // MessageDialog.openInformation(Display.getCurrent().getActiveShell(), + // "Spell Checking Finished", "The spell check has finished"); + // } + // } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java new file mode 100644 index 000000000..651d856aa --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/RepositoryTextViewer.java @@ -0,0 +1,125 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.editor; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.TextAttribute; +import org.eclipse.jface.text.hyperlink.DefaultHyperlinkPresenter; +import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; +import org.eclipse.jface.text.hyperlink.IHyperlinkPresenter; +import org.eclipse.jface.text.presentation.IPresentationReconciler; +import org.eclipse.jface.text.presentation.PresentationReconciler; +import org.eclipse.jface.text.rules.DefaultDamagerRepairer; +import org.eclipse.jface.text.rules.IRule; +import org.eclipse.jface.text.rules.IToken; +import org.eclipse.jface.text.rules.MultiLineRule; +import org.eclipse.jface.text.rules.RuleBasedScanner; +import org.eclipse.jface.text.rules.SingleLineRule; +import org.eclipse.jface.text.rules.Token; +import org.eclipse.jface.text.source.ISourceViewer; +import org.eclipse.jface.text.source.SourceViewer; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.editors.text.TextSourceViewerConfiguration; +import org.eclipse.ui.internal.editors.text.URLHyperlinkDetector; + +/** + * @author Rob Elves + */ +public class RepositoryTextViewer extends SourceViewer { + + private TaskRepository repository; + + public RepositoryTextViewer(TaskRepository repository, Composite composite, int style) { + super(composite, null, style); + this.configure(new RepositoryViewerConfig()); + this.repository = repository; + } + + public TaskRepository getRepository() { + return repository; + } + + public void setRepository(TaskRepository repository) { + this.repository = repository; + } + + class RepositoryViewerConfig extends TextSourceViewerConfiguration { + + private RepositoryTextScanner scanner = null; + + public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { + PresentationReconciler reconciler = new PresentationReconciler(); + reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); + + DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getDefaultScanner()); + reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); + reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); + + return reconciler; + } + + private RepositoryTextScanner getDefaultScanner() { + if (scanner == null) { + scanner = new RepositoryTextScanner(); + } + return scanner; + } + + public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) { + URLHyperlinkDetector hyperlinkDetector = new URLHyperlinkDetector(); + List<IHyperlinkDetector> detectors = new ArrayList<IHyperlinkDetector>(); + detectors.add(hyperlinkDetector); + detectors.addAll(Arrays.asList(MylarTaskListPlugin.getDefault().getTaskHyperlinkDetectors())); + return detectors.toArray(new IHyperlinkDetector[detectors.size()]); +// return MylarTaskListPlugin.getDefault().getTaskHyperlinkDetectors(); + } + + public IHyperlinkPresenter getHyperlinkPresenter(ISourceViewer sourceViewer) { + return new DefaultHyperlinkPresenter(new RGB(0, 0, 200)); + } + + public int getHyperlinkStateMask(ISourceViewer sourceViewer) { + return SWT.NONE; + } + } + + class RepositoryTextScanner extends RuleBasedScanner { + private Color URL_COLOR = new Color(Display.getCurrent(), new RGB(0, 0, 200)); + + public RepositoryTextScanner() { + IToken bugToken = new Token(new TextAttribute(URL_COLOR)); + IRule[] rules = new IRule[7]; + rules[0] = (new SingleLineRule("http://", " ", bugToken)); + rules[1] = (new SingleLineRule("https://", " ", bugToken)); + rules[2] = (new MultiLineRule("bug#", " ", bugToken)); + rules[3] = (new MultiLineRule("bug #", " ", bugToken)); + rules[4] = (new SingleLineRule("bug #", "\n", bugToken)); + rules[5] = (new SingleLineRule("http://", "\n", bugToken)); + rules[6] = (new SingleLineRule("https://", "\n", bugToken)); +// rules[7] = (new MultiLineRule(" bug ", " ", bugToken)); +// rules[8] = (new SingleLineRule(" at ", ")", bugToken)); + setRules(rules); + } + + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java new file mode 100644 index 000000000..64dca1ce5 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java @@ -0,0 +1,1602 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.search; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Set; + +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchOperation; +import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchQuery; +import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchResultCollector; +import org.eclipse.mylar.internal.bugzilla.core.search.IBugzillaSearchOperation; +import org.eclipse.mylar.internal.bugzilla.core.search.IBugzillaSearchResultCollector; +import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUITools; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.AbstractBugzillaQueryPage; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryQuery; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.mylar.provisional.tasklist.TaskRepositoryManager; +import org.eclipse.search.ui.ISearchPage; +import org.eclipse.search.ui.ISearchPageContainer; +import org.eclipse.search.ui.NewSearchUI; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.List; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.internal.help.WorkbenchHelpSystem; + +/** + * Bugzilla search page + * + * @author Mik Kersten (hardening of prototype) + */ +public class BugzillaSearchPage extends AbstractBugzillaQueryPage implements ISearchPage, Listener { + + private static final String MAX_HITS_GREATER = "Max hits shown must be greater than 0 or enter -1 for all results found."; + + private static final String NUM_DAYS_POSITIVE = "Number of days must be a positive integer. "; + + private static final String TITLE = "New Bugzilla Query"; + + private static final String DESCRIPTION = "Enter query parameters. If attributes are blank or stale press the Update button."; + + private static final String TITLE_BUGZILLA_QUERY = "Bugzilla Query"; + + private static final String MAX_HITS = "100"; + + private static final int HEIGHT_ATTRIBUTE_COMBO = 60; + + private TaskRepository repository = null; + + protected Combo summaryPattern = null; + + protected Combo repositoryCombo = null; + + private static ArrayList<BugzillaSearchData> previousSummaryPatterns = new ArrayList<BugzillaSearchData>(20); + + private static ArrayList<BugzillaSearchData> previousEmailPatterns = new ArrayList<BugzillaSearchData>(20); + + private static ArrayList<BugzillaSearchData> previousCommentPatterns = new ArrayList<BugzillaSearchData>(20); + + protected ISearchPageContainer scontainer = null; + + private boolean firstTime = true; + + private IDialogSettings fDialogSettings; + + protected Text maxHitsText; + + private static final String[] patternOperationText = { "all words", "any word", "regexp" }; + + private static final String[] patternOperationValues = { "allwordssubstr", "anywordssubstr", "regexp" }; + + private static final String[] emailOperationText = { "substring", "exact", "regexp" }; + + private static final String[] emailOperationValues = { "substring", "exact", "regexp" }; + + private static final String[] emailRoleValues = { "emailassigned_to1", "emailreporter1", "emailcc1", + "emaillongdesc1" }; + + protected IPreferenceStore prefs = BugzillaPlugin.getDefault().getPreferenceStore(); + + protected String maxHits; + + private BugzillaRepositoryQuery originalQuery = null; + + // private TaskRepository selectedRepository = null; + + private static class BugzillaSearchData { + /** Pattern to match on */ + String pattern; + + /** Pattern matching criterion */ + int operation; + + BugzillaSearchData(String pattern, int operation) { + this.pattern = pattern; + this.operation = operation; + } + } + + public BugzillaSearchPage() { + super(TITLE_BUGZILLA_QUERY); + setTitle(TITLE); + setDescription(DESCRIPTION); + setPageComplete(false); + } + + public BugzillaSearchPage(TaskRepository repository) { + super(TITLE_BUGZILLA_QUERY); + setTitle(TITLE); + setDescription(DESCRIPTION); + this.repository = repository; + setPageComplete(false); + } + + public BugzillaSearchPage(TaskRepository repository, BugzillaRepositoryQuery origQuery) { + super(TITLE_BUGZILLA_QUERY, origQuery.getDescription()); + originalQuery = origQuery; + this.repository = repository; + setTitle(TITLE); + setDescription(DESCRIPTION); + setPageComplete(false); + } + + public void createControl(Composite parent) { + readConfiguration(); + + Composite control = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.marginHeight = 0; + layout.marginWidth = 0; + control.setLayout(layout); + GridData gd = new GridData(GridData.FILL_BOTH); + control.setLayoutData(gd); + + if (scontainer == null) { + // Not presenting in search pane so add parent's content + super.createControl(control); + } else { + // if (repository == null) { + // search pane so add repository selection + createRepositoryGroup(control); + } + createSearchGroup(control); + createOptionsGroup(control); + + createEmail(control); + createLastDays(control); + + // createSaveQuery(control); + // createMaxHits(control); + input = new SavedQueryFile(BugzillaPlugin.getDefault().getStateLocation().toString(), "/queries"); + // createUpdate(control); +// if (originalQuery != null) { +// try { +// updateDefaults(originalQuery.getQueryUrl(), String.valueOf(originalQuery.getMaxHits())); +// } catch (UnsupportedEncodingException e) { +// // ignore +// } +// } + setControl(control); + WorkbenchHelpSystem.getInstance().setHelp(control, IBugzillaConstants.SEARCH_PAGE_CONTEXT); + } + + private void createRepositoryGroup(Composite control) { + Group group = new Group(control, SWT.NONE); + group.setText("Repository"); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + group.setLayout(layout); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + repositoryCombo = new Combo(group, SWT.SINGLE | SWT.BORDER); + repositoryCombo.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + String repositoryUrl = repositoryCombo.getItem(repositoryCombo.getSelectionIndex()); + repository = MylarTaskListPlugin.getRepositoryManager().getRepository(BugzillaPlugin.REPOSITORY_KIND, + repositoryUrl); + updateAttributesFromRepository(repositoryUrl, false); + } + }); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + repositoryCombo.setLayoutData(gd); + } + + private void createSearchGroup(Composite control) { + Group group = new Group(control, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + group.setLayout(layout); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 5; + group.setLayoutData(gd); + + createTextSearchComposite(group); + createComment(group); + } + + protected Control createTextSearchComposite(Composite control) { + GridData gd; + Label label; + + Composite group = new Composite(control, SWT.NONE); + GridLayout layout = new GridLayout(3, false); + group.setLayout(layout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + // Info text + label = new Label(group, SWT.LEFT); + label.setText("Summary/id contains: "); + gd = new GridData(GridData.BEGINNING); + gd.horizontalSpan = 1; + label.setLayoutData(gd); + + // Pattern combo + summaryPattern = new Combo(group, SWT.SINGLE | SWT.BORDER); + summaryPattern.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + if (scontainer != null) { + scontainer.setPerformActionEnabled(canQuery()); + } + } + }); + summaryPattern.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + handleWidgetSelected(summaryPattern, summaryOperation, previousSummaryPatterns); + } + }); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + summaryPattern.setLayoutData(gd); + + summaryOperation = new Combo(group, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER); + summaryOperation.setItems(patternOperationText); + summaryOperation.setText(patternOperationText[0]); + summaryOperation.select(0); + + return group; + } + + private Control createComment(Composite control) { + GridData gd; + Label label; + + Composite group = new Composite(control, SWT.NONE); + GridLayout layout = new GridLayout(3, false); + group.setLayout(layout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + // Info text + label = new Label(group, SWT.LEFT); + label.setText("Comment contains: "); + gd = new GridData(GridData.BEGINNING); + label.setLayoutData(gd); + + // Comment pattern combo + commentPattern = new Combo(group, SWT.SINGLE | SWT.BORDER); + commentPattern.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + if (scontainer != null) { + scontainer.setPerformActionEnabled(canQuery()); + } + } + }); + commentPattern.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + handleWidgetSelected(commentPattern, commentOperation, previousCommentPatterns); + } + }); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + commentPattern.setLayoutData(gd); + + commentOperation = new Combo(group, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER); + commentOperation.setItems(patternOperationText); + commentOperation.setText(patternOperationText[0]); + commentOperation.select(0); + + return group; + } + + protected Control createOptionsGroup(Composite control) { + Group group = new Group(control, SWT.NONE); + // group.setText("Bug Attributes"); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + group.setLayout(layout); + GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.horizontalSpan = 5; + group.setLayoutData(gd); + + createProductAttributes(group); + createLists(group); + createUpdate(group); + + return group; + } + + /** + * Creates the area for selection on product/component/version. + */ + protected Control createProductAttributes(Composite control) { + + GridData gd; + GridLayout layout; + + // Search expression + Composite group = new Composite(control, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 4; + group.setLayout(layout); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.horizontalSpan = 5; + group.setLayoutData(gd); + + // Labels + Label label = new Label(group, SWT.LEFT); + label.setText("Product"); + + label = new Label(group, SWT.LEFT); + label.setText("Component"); + + label = new Label(group, SWT.LEFT); + label.setText("Version"); + + label = new Label(group, SWT.LEFT); + label.setText("Milestone"); + + // Lists + product = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = HEIGHT_ATTRIBUTE_COMBO; + product.setLayoutData(gd); + + component = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = HEIGHT_ATTRIBUTE_COMBO; + component.setLayoutData(gd); + + version = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = HEIGHT_ATTRIBUTE_COMBO; + version.setLayoutData(gd); + + target = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = HEIGHT_ATTRIBUTE_COMBO; + target.setLayoutData(gd); + + return group; + } + + /** + * Creates the area for selection of bug attributes (status, etc.) + */ + protected Control createLists(Composite control) { + GridData gd; + GridLayout layout; + + // Search expression + Composite group = new Composite(control, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 6; + group.setLayout(layout); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.horizontalSpan = 5; + group.setLayoutData(gd); + + // Labels + Label label = new Label(group, SWT.LEFT); + label.setText("Status"); + + label = new Label(group, SWT.LEFT); + label.setText("Resolution"); + + label = new Label(group, SWT.LEFT); + label.setText("Severity"); + + label = new Label(group, SWT.LEFT); + label.setText("Priority"); + + label = new Label(group, SWT.LEFT); + label.setText("Hardware"); + + label = new Label(group, SWT.LEFT); + label.setText("OS"); + + // Lists + status = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = 40; + status.setLayoutData(gd); + + resolution = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = 40; + resolution.setLayoutData(gd); + + severity = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = 40; + severity.setLayoutData(gd); + + priority = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = 40; + priority.setLayoutData(gd); + + hardware = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = 40; + hardware.setLayoutData(gd); + + os = new List(group, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); + gd = new GridData(SWT.FILL, SWT.FILL, true, true); + gd.heightHint = 40; + os.setLayoutData(gd); + + return group; + } + + protected Text daysText; + + protected Control createLastDays(Composite control) { + GridLayout layout; + GridData gd; + + Group group = new Group(control, SWT.NONE); + layout = new GridLayout(6, false); + group.setLayout(layout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + Label label = new Label(group, SWT.LEFT); + label.setText("Only bugs changed in the last "); + + // operation combo + daysText = new Text(group, SWT.BORDER); + daysText.setTextLimit(5); + GridData daysLayoutData = new GridData(); + daysLayoutData.widthHint = 30; + daysText.setLayoutData(daysLayoutData); + daysText.addListener(SWT.Modify, this); + // daysText.addFocusListener(new FocusListener() { + // + // public void focusGained(FocusEvent e) { + // // ignore + // + // } + // + // public void focusLost(FocusEvent e) { + // String days = daysText.getText(); + // if (days.length() == 0) + // return; + // try { + // if (Integer.parseInt(days) < 0) { + // daysText.setText(""); + // } + // } catch (NumberFormatException ex) { + // daysText.setText(""); + // } + // } + // }); + + // daysText.addModifyListener(new ModifyListener() { + // public void modifyText(ModifyEvent e) { + // String days = daysText.getText(); + // if (days.length() == 0) + // return; + // for (int i = days.length() - 1; i >= 0; i--) { + // try { + // if (days.equals("") || Integer.parseInt(days) > -1) { + // if (i == days.length() - 1) + // return; + // else + // break; + // } + // } catch (NumberFormatException ex) { + // days = days.substring(0, i); + // } + // } + // daysText.setText(days); + // } + // }); + label = new Label(group, SWT.LEFT); + label.setText(" days."); + + label = new Label(group, SWT.LEFT); + label.setText(" Show a maximum of "); + + // operation combo + maxHitsText = new Text(group, SWT.BORDER); + maxHitsText.setTextLimit(6); + maxHitsText.addListener(SWT.Modify, this); + + // maxHitsText.addFocusListener(new FocusListener() { + // + // public void focusGained(FocusEvent e) { + // // ignore + // + // } + // + // public void focusLost(FocusEvent e) { + // String maxHitss = maxHitsText.getText(); + // if (maxHitss.length() == 0) + // return; + // + // try { + // if (Integer.parseInt(maxHitss) < 0) { + // maxHitsText.setText(MAX_HITS); + // + // } + // } catch (NumberFormatException ex) { + // maxHitsText.setText(MAX_HITS); + // } + // } + // }); + + // maxHitsText.addModifyListener(new ModifyListener() { + // public void modifyText(ModifyEvent e) { + // String maxHitss = maxHitsText.getText(); + // if (maxHitss.length() == 0) + // return; + // for (int i = maxHitss.length() - 1; i >= 0; i--) { + // try { + // if (maxHitss.equals("") || Integer.parseInt(maxHitss) > -1) { + // if (i == maxHitss.length() - 1) { + // maxHits = maxHitss; + // return; + // } else { + // break; + // } + // } + // } catch (NumberFormatException ex) { + // maxHitss = maxHitss.substring(0, i); + // } + // } + // + // BugzillaSearchPage.this.maxHits = maxHitss; + // } + // }); + gd = new GridData(); + gd.widthHint = 30; + maxHitsText.setLayoutData(gd); + label = new Label(group, SWT.LEFT); + label.setText(" hits."); + + maxHits = MAX_HITS; + maxHitsText.setText(maxHits); + + return group; + } + + // protected Control createMaxHits(Composite control) { + // GridLayout layout; + // GridData gd; + // + // Group group = new Group(control, SWT.NONE); + // layout = new GridLayout(3, false); + // group.setLayout(layout); + // group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + // gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | + // GridData.GRAB_HORIZONTAL); + // gd.horizontalSpan = 2; + // group.setLayoutData(gd); + // + // Label label = new Label(group, SWT.LEFT); + // label.setText("Show a maximum of "); + // + // // operation combo + // maxHitsText = new Text(group, SWT.BORDER); + // maxHitsText.setTextLimit(5); + // maxHitsText.addModifyListener(new ModifyListener() { + // public void modifyText(ModifyEvent e) { + // String maxHitss = maxHitsText.getText(); + // if (maxHitss.length() == 0) + // return; + // for (int i = maxHitss.length() - 1; i >= 0; i--) { + // try { + // if (maxHitss.equals("") || Integer.parseInt(maxHitss) > -1) { + // if (i == maxHitss.length() - 1) { + // maxHits = maxHitss; + // return; + // } else { + // break; + // } + // } + // } catch (NumberFormatException ex) { + // maxHitss = maxHitss.substring(0, i); + // } + // } + // + // BugzillaSearchPage.this.maxHits = maxHitss; + // } + // }); + // gd = new GridData(); + // gd.widthHint = 20; + // maxHitsText.setLayoutData(gd); + // label = new Label(group, SWT.LEFT); + // label.setText(" Hits. (-1 means all hits are returned)"); + // + // maxHits = "100"; + // maxHitsText.setText(maxHits); + // + // return group; + // } + + public String getMaxHits() { + return maxHitsText.getText(); + } + + private static final String[] emailText = { "bug owner", "reporter", "CC list", "commenter" }; + + protected Control createEmail(Composite control) { + GridLayout layout; + GridData gd; + + Group group = new Group(control, SWT.NONE); + layout = new GridLayout(7, false); + group.setLayout(layout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + Label label = new Label(group, SWT.LEFT); + label.setText("Email: "); + + // pattern combo + emailPattern = new Combo(group, SWT.SINGLE | SWT.BORDER); + emailPattern.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + if (scontainer != null) { + scontainer.setPerformActionEnabled(canQuery()); + } + } + }); + emailPattern.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + handleWidgetSelected(emailPattern, emailOperation, previousEmailPatterns); + } + }); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + emailPattern.setLayoutData(gd); + + // operation combo + emailOperation = new Combo(group, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER); + emailOperation.setItems(emailOperationText); + emailOperation.setText(emailOperationText[0]); + emailOperation.select(0); + + // Composite buttons = new Composite(group, SWT.NONE); + // layout = new GridLayout(4, false); + // buttons.setLayout(layout); + // buttons.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + // gd = new GridData(GridData.BEGINNING); + // gd.horizontalSpan = 3; + // buttons.setLayoutData(gd); + + emailButton = new Button[emailText.length]; + for (int i = 0; i < emailButton.length; i++) { + Button button = new Button(group, SWT.CHECK); + button.setText(emailText[i]); + emailButton[i] = button; + } + + return group; + } + + /** + * Creates the buttons for remembering a query and accessing previously + * saved queries. + */ + protected Control createSaveQuery(Composite control) { + GridLayout layout; + GridData gd; + + Group group = new Group(control, SWT.NONE); + layout = new GridLayout(3, false); + group.setLayout(layout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + // loadButton = new Button(group, SWT.PUSH | SWT.LEFT); + // loadButton.setText("Saved Queries..."); + // final BugzillaSearchPage bsp = this; + // loadButton.addSelectionListener(new SelectionAdapter() { + // + // @Override + // public void widgetSelected(SelectionEvent event) { + // GetQueryDialog qd = new GetQueryDialog(getShell(), "Saved Queries", + // input); + // if (qd.open() == InputDialog.OK) { + // selIndex = qd.getSelected(); + // if (selIndex != -1) { + // rememberedQuery = true; + // performAction(); + // bsp.getShell().close(); + // } + // } + // } + // }); + // loadButton.setEnabled(true); + // loadButton.setLayoutData(new + // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); + // + // saveButton = new Button(group, SWT.PUSH | SWT.LEFT); + // saveButton.setText("Remember..."); + // saveButton.addSelectionListener(new SelectionAdapter() { + // + // @Override + // public void widgetSelected(SelectionEvent event) { + // SaveQueryDialog qd = new SaveQueryDialog(getShell(), "Remember + // Query"); + // if (qd.open() == InputDialog.OK) { + // String qName = qd.getText(); + // if (qName != null && qName.compareTo("") != 0) { + // try { + // input.add(getQueryParameters().toString(), qName, + // summaryPattern.getText()); + // } catch (UnsupportedEncodingException e) { + // /* + // * Do nothing. Every implementation of the Java + // * platform is required to support the standard + // * charset "UTF-8" + // */ + // } + // } + // } + // } + // }); + // saveButton.setEnabled(true); + // saveButton.setLayoutData(new + // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); + + return group; + } + + public static SavedQueryFile getInput() { + return input; + } + + protected Control createUpdate(final Composite control) { + GridData gd; + // Label label; + + Composite group = new Composite(control, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + group.setLayout(layout); + group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + gd = new GridData(GridData.BEGINNING); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + // Info text + // label = new Label(group, SWT.LEFT); + // label.setText("Update search options from server:"); + // gd = new GridData(GridData.BEGINNING); + // label.setLayoutData(gd); + + updateButton = new Button(group, SWT.PUSH); + updateButton.setText("Update Attributes from Repository"); + + updateButton.setLayoutData(new GridData()); + + updateButton.addMouseListener(new MouseAdapter() { + + @Override + public void mouseUp(MouseEvent e) { + if (repository != null) { + updateAttributesFromRepository(repository.getUrl(), true); + } else { + MessageDialog.openInformation(Display.getCurrent().getActiveShell(), + IBugzillaConstants.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY); + } + } + }); + + return group; + } + + private void handleWidgetSelected(Combo widget, Combo operation, ArrayList<BugzillaSearchData> history) { + if (widget.getSelectionIndex() < 0) + return; + int index = history.size() - 1 - widget.getSelectionIndex(); + BugzillaSearchData patternData = history.get(index); + if (patternData == null || !widget.getText().equals(patternData.pattern)) + return; + widget.setText(patternData.pattern); + operation.setText(operation.getItem(patternData.operation)); + } + + public boolean performAction() { + if (repository == null) { + MessageDialog.openInformation(Display.getCurrent().getActiveShell(), + IBugzillaConstants.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY); + return false; + } + + getPatternData(summaryPattern, summaryOperation, previousSummaryPatterns); + getPatternData(commentPattern, commentOperation, previousCommentPatterns); + getPatternData(this.emailPattern, emailOperation, previousEmailPatterns); + + String summaryText; + String queryUrl; + if (rememberedQuery == true) { + queryUrl = getQueryURL(repository, new StringBuffer(input.getQueryParameters(selIndex))); + summaryText = input.getSummaryText(selIndex); + } else { + try { + StringBuffer params = getQueryParameters(); + queryUrl = getQueryURL(repository, params); + summaryText = summaryPattern.getText(); + } catch (UnsupportedEncodingException e) { + /* + * These statements should never be executed. Every + * implementation of the Java platform is required to support + * the standard charset "UTF-8" + */ + queryUrl = ""; + summaryText = ""; + } + } + + try { + // if the summary contains a single bug id, open the bug directly + int id = Integer.parseInt(summaryText); + return BugzillaUITools.show(repository.getUrl(), id); + } catch (NumberFormatException ignored) { + // ignore this since this means that the text is not a bug id + } + + // Don't activate the search result view until it is known that the + // user is not opening a bug directly -- there is no need to open + // the view if no searching is going to take place. + NewSearchUI.activateSearchResultView(); + + BugzillaPlugin.getDefault().getPreferenceStore().setValue(IBugzillaConstants.MOST_RECENT_QUERY, summaryText); + + IBugzillaSearchResultCollector collector = new BugzillaSearchResultCollector(); + + IBugzillaSearchOperation op = new BugzillaSearchOperation(repository, queryUrl, collector, maxHits); + + BugzillaSearchQuery searchQuery = new BugzillaSearchQuery(op); + NewSearchUI.runQueryInBackground(searchQuery); + + return true; + } + + /** + * @see ISearchPage#setContainer(ISearchPageContainer) + */ + public void setContainer(ISearchPageContainer container) { + scontainer = container; + } + + @Override + public void setVisible(boolean visible) { + if (visible && summaryPattern != null) { + if (firstTime) { + firstTime = false; + // Set item and text here to prevent page from resizing + for (String searchPattern : getPreviousPatterns(previousSummaryPatterns)) { + summaryPattern.add(searchPattern); + } + // summaryPattern.setItems(getPreviousPatterns(previousSummaryPatterns)); + for (String comment : getPreviousPatterns(previousCommentPatterns)) { + commentPattern.add(comment); + } + // commentPattern.setItems(getPreviousPatterns(previousCommentPatterns)); + for (String email : getPreviousPatterns(previousEmailPatterns)) { + emailPattern.add(email); + } + // emailPattern.setItems(getPreviousPatterns(previousEmailPatterns)); + + // TODO: update status, resolution, severity etc if possible... + + if (repository == null) { + repository = MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( + BugzillaPlugin.REPOSITORY_KIND); + } + Set<TaskRepository> repositories = MylarTaskListPlugin.getRepositoryManager().getRepositories( + BugzillaPlugin.REPOSITORY_KIND); + String[] repositoryUrls = new String[repositories.size()]; + int i = 0; + int indexToSelect = 0; + for (Iterator<TaskRepository> iter = repositories.iterator(); iter.hasNext();) { + TaskRepository currRepsitory = iter.next(); + // if (i == 0 && repository == null) { + // repository = currRepsitory; + // indexToSelect = 0; + // } + if (repository != null && repository.equals(currRepsitory)) { + indexToSelect = i; + } + repositoryUrls[i] = currRepsitory.getUrl(); + i++; + } + + if (repository != null) { + updateAttributesFromRepository(repository.getUrl(), false); + } + if (repositoryCombo != null) { + repositoryCombo.setItems(repositoryUrls); + if (repositoryUrls.length == 0) { + MessageDialog.openInformation(Display.getCurrent().getActiveShell(), + IBugzillaConstants.TITLE_MESSAGE_DIALOG, TaskRepositoryManager.MESSAGE_NO_REPOSITORY); + } else { + repositoryCombo.select(indexToSelect); + updateAttributesFromRepository(repositoryCombo.getItem(indexToSelect), false); + } + } + if (originalQuery != null) { + try { + updateDefaults(originalQuery.getQueryUrl(), String.valueOf(originalQuery.getMaxHits())); + } catch (UnsupportedEncodingException e) { + // ignore + } + } + } + if (scontainer != null) { + scontainer.setPerformActionEnabled(canQuery()); + } + summaryPattern.setFocus(); + + } + super.setVisible(visible); + } + + /** + * Returns <code>true</code> if at least some parameter is given to query + * on. + */ + private boolean canQuery() { + return product.getSelectionCount() > 0 || component.getSelectionCount() > 0 || version.getSelectionCount() > 0 + || target.getSelectionCount() > 0 || status.getSelectionCount() > 0 + || resolution.getSelectionCount() > 0 || severity.getSelectionCount() > 0 + || priority.getSelectionCount() > 0 || hardware.getSelectionCount() > 0 || os.getSelectionCount() > 0 + || summaryPattern.getText().length() > 0 || commentPattern.getText().length() > 0 + || emailPattern.getText().length() > 0; + } + + /** + * Return search pattern data and update search history list. An existing + * entry will be updated or a new one created. + */ + private BugzillaSearchData getPatternData(Combo widget, Combo operation, + ArrayList<BugzillaSearchData> previousSearchQueryData) { + String pattern = widget.getText(); + if (pattern == null || pattern.trim().equals("")) { + return null; + } + BugzillaSearchData match = null; + int i = previousSearchQueryData.size() - 1; + while (i >= 0) { + match = previousSearchQueryData.get(i); + if (pattern.equals(match.pattern)) { + break; + } + i--; + } + if (i >= 0) { + match.operation = operation.getSelectionIndex(); + // remove - will be added last (see below) + previousSearchQueryData.remove(match); + } else { + match = new BugzillaSearchData(widget.getText(), operation.getSelectionIndex()); + } + previousSearchQueryData.add(match); + return match; + } + + /** + * Returns an array of previous summary patterns + */ + private String[] getPreviousPatterns(ArrayList<BugzillaSearchData> patternHistory) { + int size = patternHistory.size(); + String[] patterns = new String[size]; + for (int i = 0; i < size; i++) + patterns[i] = (patternHistory.get(size - 1 - i)).pattern; + return patterns; + } + + public String getSearchURL(TaskRepository repository) { + try { + if (rememberedQuery) { + return getQueryURL(repository, new StringBuffer(input.getQueryParameters(selIndex))); + } else { + return getQueryURL(repository, getQueryParameters()); + } + } catch (UnsupportedEncodingException e) { + // ignore + } + return ""; + } + + protected String getQueryURL(TaskRepository repository, StringBuffer params) { + StringBuffer url = new StringBuffer(getQueryURLStart(repository).toString()); + url.append(params); + + // HACK make sure that the searches come back sorted by priority. This + // should be a search opetion though + url.append("&order=Importance"); + return url.toString(); + } + + /** + * Creates the bugzilla query URL start. + * + * Example: https://bugs.eclipse.org/bugs/buglist.cgi? + */ + private StringBuffer getQueryURLStart(TaskRepository repository) { + // StringBuffer sb = new + // StringBuffer(BugzillaPlugin.getDefault().getServerName()); + StringBuffer sb = new StringBuffer(repository.getUrl()); + + if (sb.charAt(sb.length() - 1) != '/') { + sb.append('/'); + } + sb.append("buglist.cgi?"); + + // use the username and password if we have it + if (repository.hasCredentials()) { + try { + sb.append("GoAheadAndLogIn=1&Bugzilla_login=" + + URLEncoder.encode(repository.getUserName(), BugzillaPlugin.ENCODING_UTF_8) + + "&Bugzilla_password=" + + URLEncoder.encode(repository.getPassword(), BugzillaPlugin.ENCODING_UTF_8) + "&"); + } catch (UnsupportedEncodingException e) { + MylarStatusHandler.fail(e, "unsupported encoding", false); + } + } + + return sb; + } + + /** + * Goes through the query form and builds up the query parameters. + * + * Example: short_desc_type=substring&short_desc=bla& ... + * + * @throws UnsupportedEncodingException + */ + protected StringBuffer getQueryParameters() throws UnsupportedEncodingException { + StringBuffer sb = new StringBuffer(); + + sb.append("short_desc_type="); + sb.append(patternOperationValues[summaryOperation.getSelectionIndex()]); + + sb.append("&short_desc="); + sb.append(URLEncoder.encode(summaryPattern.getText(), "UTF-8")); + + int[] selected = product.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&product="); + sb.append(URLEncoder.encode(product.getItem(selected[i]), "UTF-8")); + } + + selected = component.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&component="); + sb.append(URLEncoder.encode(component.getItem(selected[i]), "UTF-8")); + } + + selected = version.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&version="); + sb.append(URLEncoder.encode(version.getItem(selected[i]), "UTF-8")); + } + + selected = target.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&target_milestone="); + sb.append(URLEncoder.encode(target.getItem(selected[i]), "UTF-8")); + } + + sb.append("&long_desc_type="); + sb.append(patternOperationValues[commentOperation.getSelectionIndex()]); + sb.append("&long_desc="); + sb.append(URLEncoder.encode(commentPattern.getText(), "UTF-8")); + + selected = status.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&bug_status="); + sb.append(status.getItem(selected[i])); + } + + selected = resolution.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&resolution="); + sb.append(resolution.getItem(selected[i])); + } + + selected = severity.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&bug_severity="); + sb.append(severity.getItem(selected[i])); + } + + selected = priority.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&priority="); + sb.append(priority.getItem(selected[i])); + } + + selected = hardware.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&ref_platform="); + sb.append(URLEncoder.encode(hardware.getItem(selected[i]), "UTF-8")); + } + + selected = os.getSelectionIndices(); + for (int i = 0; i < selected.length; i++) { + sb.append("&op_sys="); + sb.append(URLEncoder.encode(os.getItem(selected[i]), "UTF-8")); + } + + if (emailPattern.getText() != null) { + for (int i = 0; i < emailButton.length; i++) { + if (emailButton[i].getSelection()) { + sb.append("&"); + sb.append(emailRoleValues[i]); + sb.append("=1"); + } + } + sb.append("&emailtype1="); + sb.append(emailOperationValues[emailOperation.getSelectionIndex()]); + sb.append("&email1="); + sb.append(URLEncoder.encode(emailPattern.getText(), "UTF-8")); + } + + if (daysText.getText() != null && !daysText.getText().equals("")) { + try { + Integer.parseInt(daysText.getText()); + sb.append("&changedin="); + sb.append(URLEncoder.encode(daysText.getText(), "UTF-8")); + } catch (NumberFormatException ignored) { + // this means that the days is not a number, so don't worry + } + } + + return sb; + } + + // --------------- Configuration handling -------------- + + // Dialog store id constants + protected final static String PAGE_NAME = "BugzillaSearchPage"; //$NON-NLS-1$ + + protected Combo summaryOperation; + + protected List product; + + protected List os; + + protected List hardware; + + protected List priority; + + protected List severity; + + protected List resolution; + + protected List status; + + protected Combo commentOperation; + + protected Combo commentPattern; + + protected List component; + + protected List version; + + protected List target; + + protected Combo emailOperation; + + protected Combo emailPattern; + + protected Button[] emailButton; + + /** File containing saved queries */ + protected static SavedQueryFile input; + + // /** "Remember query" button */ + // protected Button saveButton; + + // /** "Saved queries..." button */ + // protected Button loadButton; + + /** Run a remembered query */ + protected boolean rememberedQuery = false; + + /** Index of the saved query to run */ + protected int selIndex; + + protected Button updateButton; + + protected ProgressMonitorDialog monitorDialog = new ProgressMonitorDialog(BugzillaPlugin.getDefault() + .getWorkbench().getActiveWorkbenchWindow().getShell()); + + public IDialogSettings getDialogSettings() { + IDialogSettings settings = BugzillaPlugin.getDefault().getDialogSettings(); + fDialogSettings = settings.getSection(PAGE_NAME); + if (fDialogSettings == null) + fDialogSettings = settings.addNewSection(PAGE_NAME); + return fDialogSettings; + } + + /** + * Initializes itself from the stored page settings. + */ + private void readConfiguration() { + getDialogSettings(); + } + + private void updateAttributesFromRepository(String repositoryUrl, boolean connect) { + monitorDialog.open(); + IProgressMonitor monitor = monitorDialog.getProgressMonitor(); + monitor.beginTask("Updating search options...", 55); + + try { + // TaskRepository repository = + // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( + // BugzillaPlugin.REPOSITORY_KIND); + // String repositoryUrl = repository.getUrl(); + if (connect) { + BugzillaRepositoryUtil.updateQueryOptions(repository, monitor); + } + product.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT, repositoryUrl)); + monitor.worked(1); + + component.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_COMPONENT, + repositoryUrl)); + monitor.worked(1); + + version.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_VERSION, repositoryUrl)); + monitor.worked(1); + + target.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_TARGET, repositoryUrl)); + monitor.worked(1); + + status.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_STATUS, repositoryUrl)); + monitor.worked(1); + +// status.setSelection(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUSE_STATUS_PRESELECTED, +// repositoryUrl)); + monitor.worked(1); + + resolution.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_RESOLUTION, + repositoryUrl)); + monitor.worked(1); + + severity + .setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_SEVERITY, repositoryUrl)); + monitor.worked(1); + + priority + .setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRIORITY, repositoryUrl)); + monitor.worked(1); + + hardware + .setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_HARDWARE, repositoryUrl)); + monitor.worked(1); + + os.setItems(BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_OS, repositoryUrl)); + monitor.worked(1); + } catch (LoginException exception) { + // we had a problem that seems to have been caused from bad + // login info + MessageDialog + .openError( + null, + "Login Error", + "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. "); + // BugzillaPlugin.log(exception); + } catch (IOException e) { + MessageDialog.openError(null, "Connection Error", e.getMessage() + + "\nPlease check your settings in the bugzilla preferences. "); + } finally { + monitor.done(); + monitorDialog.close(); + } + } + + public TaskRepository getRepository() { + return repository; + } + + public void setRepository(TaskRepository repository) { + this.repository = repository; + } + + public boolean canFlipToNextPage() { + // if (getErrorMessage() != null) + // return false; + // + // return true; + return false; + } + + public void handleEvent(Event event) { + String message = null; + if (event.widget == daysText) { + String days = daysText.getText(); + if (days.length() > 0) { + try { + if (Integer.parseInt(days) < 0) { + message = NUM_DAYS_POSITIVE + days + " is invalid."; + } + } catch (NumberFormatException ex) { + message = NUM_DAYS_POSITIVE + days + " is invalid."; + } + } + } else if (event.widget == maxHitsText) { + String maxHitss = maxHitsText.getText(); + if (maxHitss.length() == 0) { + message = MAX_HITS_GREATER; + } else { + try { + if (Integer.parseInt(maxHitss) < -1 || Integer.parseInt(maxHitss) == 0) { + message = MAX_HITS_GREATER; + } + } catch (NumberFormatException ex) { + message = MAX_HITS_GREATER; + } + } + } + + setPageComplete(message == null); + setErrorMessage(message); + if(getWizard() != null) { + getWizard().getContainer().updateButtons(); + } + } + + /** + * TODO: get rid of this? + */ + public void updateDefaults(String startingUrl, String maxHits) throws UnsupportedEncodingException { + // String serverName = startingUrl.substring(0, + // startingUrl.indexOf("?")); + + startingUrl = startingUrl.substring(startingUrl.indexOf("?") + 1); + String[] options = startingUrl.split("&"); + for (String option : options) { + String key = option.substring(0, option.indexOf("=")); + String value = URLDecoder.decode(option.substring(option.indexOf("=") + 1), "UTF-8"); + if (key == null) + continue; + + if (key.equals("short_desc")) { + summaryPattern.setText(value); + } else if (key.equals("short_desc_type")) { + if (value.equals("allwordssubstr")) + value = "all words"; + else if (value.equals("anywordssubstr")) + value = "any word"; + int index = 0; + for (String item : summaryOperation.getItems()) { + if (item.compareTo(value) == 0) + break; + index++; + } + if (index < summaryOperation.getItemCount()) { + summaryOperation.select(index); + } + } else if (key.equals("product")) { + String[] sel = product.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + product.setSelection(selList.toArray(sel)); + } else if (key.equals("component")) { + String[] sel = component.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + component.setSelection(selList.toArray(sel)); + } else if (key.equals("version")) { + String[] sel = version.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + version.setSelection(selList.toArray(sel)); + } else if (key.equals("target_milestone")) { // XXX + String[] sel = target.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + target.setSelection(selList.toArray(sel)); + } else if (key.equals("version")) { + String[] sel = version.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + version.setSelection(selList.toArray(sel)); + } else if (key.equals("long_desc_type")) { + if (value.equals("allwordssubstr")) + value = "all words"; + else if (value.equals("anywordssubstr")) + value = "any word"; + int index = 0; + for (String item : commentOperation.getItems()) { + if (item.compareTo(value) == 0) + break; + index++; + } + if (index < commentOperation.getItemCount()) { + commentOperation.select(index); + } + } else if (key.equals("long_desc")) { + commentPattern.setText(value); + } else if (key.equals("bug_status")) { + String[] sel = status.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + status.setSelection(selList.toArray(sel)); + } else if (key.equals("resolution")) { + String[] sel = resolution.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + resolution.setSelection(selList.toArray(sel)); + } else if (key.equals("bug_severity")) { + String[] sel = severity.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + severity.setSelection(selList.toArray(sel)); + } else if (key.equals("priority")) { + String[] sel = priority.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + priority.setSelection(selList.toArray(sel)); + } else if (key.equals("ref_platform")) { + String[] sel = hardware.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + hardware.setSelection(selList.toArray(sel)); + } else if (key.equals("op_sys")) { + String[] sel = os.getSelection(); + java.util.List<String> selList = Arrays.asList(sel); + selList = new ArrayList<String>(selList); + selList.add(value); + sel = new String[selList.size()]; + os.setSelection(selList.toArray(sel)); + } else if (key.equals("emailassigned_to1")) { // HACK: email + // buttons + // assumed to be + // in same + // position + if (value.equals("1")) + emailButton[0].setSelection(true); + else + emailButton[0].setSelection(false); + } else if (key.equals("emailreporter1")) { // HACK: email + // buttons assumed + // to be in same + // position + if (value.equals("1")) + emailButton[1].setSelection(true); + else + emailButton[1].setSelection(false); + } else if (key.equals("emailcc1")) { // HACK: email buttons + // assumed to be in same + // position + if (value.equals("1")) + emailButton[2].setSelection(true); + else + emailButton[2].setSelection(false); + } else if (key.equals("emaillongdesc1")) { // HACK: email + // buttons assumed + // to be in same + // position + if (value.equals("1")) + emailButton[3].setSelection(true); + else + emailButton[3].setSelection(false); + } else if (key.equals("emailtype1")) { + int index = 0; + for (String item : emailOperation.getItems()) { + if (item.compareTo(value) == 0) + break; + index++; + } + if (index < emailOperation.getItemCount()) { + emailOperation.select(index); + } + } else if (key.equals("email1")) { + emailPattern.setText(value); + } else if (key.equals("changedin")) { + daysText.setText(value); + } + } + this.maxHits = maxHits; + maxHitsText.setText(maxHits); + } + + @Override + public BugzillaRepositoryQuery getQuery() { + if (originalQuery == null) { + try { + originalQuery = new BugzillaRepositoryQuery(repository.getUrl(), getQueryURL(repository, + getQueryParameters()), getQueryTitle(), getMaxHits(), MylarTaskListPlugin.getTaskListManager() + .getTaskList()); + } catch (UnsupportedEncodingException e) { + return null; + } + + } else { + try { + originalQuery.setQueryUrl(getQueryURL(repository, getQueryParameters())); + originalQuery.setMaxHits(Integer.parseInt(getMaxHits())); + + } catch (UnsupportedEncodingException e) { + return null; + } + } + return originalQuery; + } + +// @Override +// public boolean isPageComplete() { +// return super.canFlipToNextPage(); +// } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java new file mode 100644 index 000000000..ea68d7634 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/AbstractBugzillaQueryPage.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Text; + +/** + * @author Rob Elves + */ +public abstract class AbstractBugzillaQueryPage extends WizardPage { + + private static final String TITLE_QUERY_TITLE = "Query Title"; + + private Text title; + + private String titleString = ""; + + public AbstractBugzillaQueryPage(String wizardTitle) { + this(wizardTitle, ""); + } + + public AbstractBugzillaQueryPage(String wizardTitle, String queryTitle) { + super(wizardTitle); + titleString = queryTitle; + } + + public void createControl(Composite parent) { + + createTitleGroup(parent); + + } + + private void createTitleGroup(Composite composite) { + Group group = new Group(composite, SWT.NONE); + group.setText(TITLE_QUERY_TITLE); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + group.setLayout(layout); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + group.setLayoutData(gd); + + title = new Text(group, SWT.BORDER); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + title.setLayoutData(gd); + title.setText(titleString); + + title.addKeyListener(new KeyListener() { + + public void keyPressed(KeyEvent e) { + // ignore + + } + + public void keyReleased(KeyEvent e) { + setPageComplete(canFlipToNextPage()); + + } + }); + } + + public boolean canFlipToNextPage() { + if (getErrorMessage() != null || !isPageComplete()) + return false; + + return true; + } + + @Override + public boolean isPageComplete() { + if (title != null && !title.getText().equals("")) { + return true; + } + return false; + } + + public String getQueryTitle() { + return title.getText(); + } + + public abstract BugzillaRepositoryQuery getQuery(); + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java new file mode 100644 index 000000000..e241421b0 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaCustomQueryWizardPage.java @@ -0,0 +1,129 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Text; + +/** + * @author Rob Elves + */ +public class BugzillaCustomQueryWizardPage extends AbstractBugzillaQueryPage { + + private static final String LABEL_CUSTOM_QUERY = "Custom Query"; + + private static final String TITLE = "Create query from URL"; + + private static final String DESCRIPTION = "Enter the name and URL for the query"; + + private Text queryText; + + private Composite composite; + + private BugzillaRepositoryQuery query; + + private TaskRepository repository; + + public BugzillaCustomQueryWizardPage(TaskRepository repository, BugzillaRepositoryQuery query) { + super(TITLE, query.getDescription()); + this.query = query; + this.repository = repository; + setTitle(LABEL_CUSTOM_QUERY); + setDescription(DESCRIPTION); + } + + public BugzillaCustomQueryWizardPage(TaskRepository repository) { + super(TITLE); + this.repository = repository; + setTitle(LABEL_CUSTOM_QUERY); + setDescription(DESCRIPTION); + } + + public void createControl(Composite parent) { + composite = new Composite(parent, SWT.NONE); + composite.setLayout(new GridLayout()); + + super.createControl(composite); + createCustomQueryGroup(composite); + composite.pack(); + setControl(composite); + } + + private void createCustomQueryGroup(Composite composite) { + Group group = new Group(composite, SWT.NONE); + group.setText(LABEL_CUSTOM_QUERY); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + group.setLayout(layout); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + gd.widthHint = 300; + group.setLayoutData(gd); + + queryText = new Text(group, SWT.BORDER); + gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + queryText.setLayoutData(gd); + + if (query != null) { + queryText.setText(query.getQueryUrl()); + } + + queryText.addKeyListener(new KeyListener() { + + public void keyPressed(KeyEvent e) { + // ignore + + } + + public void keyReleased(KeyEvent e) { + setPageComplete(canFlipToNextPage()); + + } + }); + + } + + public boolean canFlipToNextPage() { + return false; + } + +// @Override +// public boolean isPageComplete() { +// return super.canFlipToNextPage(); +// } + +// @Override +// public IWizardPage getNextPage() { +// return null; +// } + + @Override + public BugzillaRepositoryQuery getQuery() { + if (query == null) { + query = new BugzillaRepositoryQuery(repository.getUrl(), queryText.getText(), this.getQueryTitle(), "-1", + MylarTaskListPlugin.getTaskListManager().getTaskList()); + query.setCustomQuery(true); + } else { + query.setQueryUrl(queryText.getText()); + } + return query; + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java new file mode 100644 index 000000000..a6f0d3d6c --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaQueryTypeWizardPage.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; + +/** + * @author Rob Elves + */ +public class BugzillaQueryTypeWizardPage extends WizardPage { + + private static final String BUTTON_LABEL_QUERY = "Create query from URL"; + + private static final String BUTTON_LABEL_FORM = "Create query using form"; + + private static final String TITLE = "Choose Bugzilla query type"; + + private static final String DESCRIPTION = "Select query type below."; + + private Button buttonCustom; + + private Button buttonForm; + + private Composite composite; + + private BugzillaCustomQueryWizardPage customPage; + + private BugzillaSearchPage searchPage; + + public BugzillaQueryTypeWizardPage(TaskRepository repository) { + super(TITLE); + setTitle(TITLE); + setDescription(DESCRIPTION); + customPage = new BugzillaCustomQueryWizardPage(repository); + searchPage = new BugzillaSearchPage(repository); + + + } + + public void createControl(Composite parent) { + composite = new Composite(parent, SWT.NONE); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.grabExcessVerticalSpace = false; + composite.setLayoutData(gridData); + composite.setLayout(new GridLayout(1, false)); + + buttonForm = new Button(composite, SWT.RADIO); + buttonForm.setText(BUTTON_LABEL_FORM); + buttonForm.setSelection(true); + + buttonCustom = new Button(composite, SWT.RADIO); + buttonCustom.setText(BUTTON_LABEL_QUERY); + + setPageComplete(true); + setControl(composite); + } + + @Override + public IWizardPage getNextPage() { + if(buttonForm.getSelection()) { + searchPage.setWizard(this.getWizard()); + return searchPage; + } + customPage.setWizard(this.getWizard()); + return customPage; + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java new file mode 100644 index 000000000..b9d433633 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositoryConnector.java @@ -0,0 +1,732 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.MultiStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.IJobChangeListener; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.window.ApplicationWindow; +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.bugzilla.core.BugzillaRemoteContextDelegate; +import org.eclipse.mylar.bugzilla.core.Comment; +import org.eclipse.mylar.bugzilla.core.IBugzillaBug; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaException; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants.BugzillaServerVersion; +import org.eclipse.mylar.internal.bugzilla.core.internal.OfflineReportsFile; +import org.eclipse.mylar.internal.bugzilla.core.internal.OfflineReportsFile.BugzillaOfflineStatus; +import org.eclipse.mylar.internal.bugzilla.core.search.BugzillaSearchHit; +import org.eclipse.mylar.internal.bugzilla.ui.WebBrowserDialog; +import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaResultCollector; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaCategorySearchOperation.ICategorySearchListener; +import org.eclipse.mylar.internal.bugzilla.ui.wizard.NewBugzillaReportWizard; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.internal.core.util.ZipFileUtil; +import org.eclipse.mylar.internal.tasklist.ui.views.TaskRepositoriesView; +import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractAddExistingTaskWizard; +import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractRepositorySettingsPage; +import org.eclipse.mylar.internal.tasklist.ui.wizards.ExistingTaskWizardPage; +import org.eclipse.mylar.internal.tasklist.util.TaskDataExportJob; +import org.eclipse.mylar.provisional.core.MylarPlugin; +import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; +import org.eclipse.mylar.provisional.tasklist.DateRangeContainer; +import org.eclipse.mylar.provisional.tasklist.IRemoteContextDelegate; +import org.eclipse.mylar.provisional.tasklist.ITask; +import org.eclipse.mylar.provisional.tasklist.ITaskActivityListener; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask.RepositoryTaskSyncState; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.progress.IProgressService; + +/** + * @author Mik Kersten + * @author Rob Elves + */ +public class BugzillaRepositoryConnector extends AbstractRepositoryConnector { + + private static final String ZIPFILE_EXTENSION = ".zip"; + + private static final String APPLICATION_OCTET_STREAM = "application/octet-stream"; + + private static final String LABEL_JOB_SUBMIT = "Submitting to Bugzilla repository"; + + private static final String DESCRIPTION_DEFAULT = "<needs synchronize>"; + + private static final String CLIENT_LABEL = "Bugzilla (supports uncustomized 2.18-2.22)"; + + private List<String> supportedVersions; + + private OfflineReportsFile offlineReportsFile; + + public BugzillaRepositoryConnector() { + super(); + offlineReportsFile = BugzillaPlugin.getDefault().getOfflineReports(); + if (!BugzillaPlugin.getDefault().getPreferenceStore().getString(IBugzillaConstants.SERVER_VERSION).equals("")) { + MylarTaskListPlugin.getTaskListManager().addActivityListener(new ITaskActivityListener() { + + public void tasklistRead() { + String oldVersionSetting = BugzillaPlugin.getDefault().getPreferenceStore().getString( + IBugzillaConstants.SERVER_VERSION); + + Set<TaskRepository> existingBugzillaRepositories = MylarTaskListPlugin.getRepositoryManager() + .getRepositories(BugzillaPlugin.REPOSITORY_KIND); + for (TaskRepository repository : existingBugzillaRepositories) { + MylarTaskListPlugin.getRepositoryManager().setVersion(repository, oldVersionSetting); + } + BugzillaPlugin.getDefault().getPreferenceStore().setValue(IBugzillaConstants.SERVER_VERSION, ""); + MylarTaskListPlugin.getTaskListManager().removeActivityListener(this); + } + + public void taskActivated(ITask task) { + // ignore + } + + public void tasksActivated(List<ITask> tasks) { + // ignore + } + + public void taskDeactivated(ITask task) { + // ignore + } + + public void activityChanged(DateRangeContainer week) { + // ignore + } + }); + } + } + + public String getLabel() { + return CLIENT_LABEL; + } + + public AbstractRepositorySettingsPage getSettingsPage() { + return new BugzillaRepositorySettingsPage(this); + } + + public String getRepositoryType() { + return BugzillaPlugin.REPOSITORY_KIND; + } + + public void saveBugReport(IBugzillaBug bugzillaBug) { + String handle = AbstractRepositoryTask.getHandle(bugzillaBug.getRepositoryUrl(), bugzillaBug.getId()); + ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle); + if (task instanceof BugzillaTask) { + BugzillaTask bugzillaTask = (BugzillaTask) task; + bugzillaTask.setBugReport((BugReport) bugzillaBug); + + if (bugzillaBug.hasChanges()) { + bugzillaTask.setSyncState(RepositoryTaskSyncState.OUTGOING); + } else { + bugzillaTask.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED); + } + } + saveOffline(bugzillaBug, true); + + } + + private BugReport downloadReport(final BugzillaTask bugzillaTask) { + try { + return BugzillaRepositoryUtil.getBug(bugzillaTask.getRepositoryUrl(), AbstractRepositoryTask + .getTaskIdAsInt(bugzillaTask.getHandleIdentifier())); + } catch (final LoginException e) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + MessageDialog.openError(Display.getDefault().getActiveShell(), "Report Download Failed", + "Ensure proper repository configuration in " + TaskRepositoriesView.NAME + "."); + } + }); + } catch (IOException e) { + if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + ((ApplicationWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow()) + .setStatus("Download of bug: " + bugzillaTask + " failed due to I/O exception"); + } + }); + } + } + return null; + } + + public ITask createTaskFromExistingId(TaskRepository repository, String id) { + int bugId = -1; + try { + if (id != null) { + bugId = Integer.parseInt(id); + } else { + return null; + } + } catch (NumberFormatException nfe) { + if (!forceSyncExecForTesting) { + MessageDialog.openInformation(null, MylarTaskListPlugin.TITLE_DIALOG, "Invalid report id: " + id); + } + return null; + } + + String handle = AbstractRepositoryTask.getHandle(repository.getUrl(), bugId); + ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle); + + if (task == null) { + task = new BugzillaTask(handle, DESCRIPTION_DEFAULT, true); + MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task); + } + + // MylarTaskListPlugin.BgetTaskListManager().getTaskList().addTaskToArchive(newTask); + if (task instanceof AbstractRepositoryTask) { + synchronize((AbstractRepositoryTask) task, true, null); + } + return task; + } + + public IWizard getNewQueryWizard(TaskRepository repository) { + return new NewBugzillaQueryWizard(repository); + } + + public IWizard getEditQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) { + if (!(query instanceof BugzillaRepositoryQuery)) { + return null; + } + return new EditBugzillaQueryWizard(repository, (BugzillaRepositoryQuery) query); + } + + public IWizard getAddExistingTaskWizard(TaskRepository repository) { + + // TODO create a propper subclass for Bugzilla + return new AbstractAddExistingTaskWizard(repository) { + + private ExistingTaskWizardPage page; + + public void addPages() { + super.addPages(); + this.page = new ExistingTaskWizardPage(); + addPage(page); + } + + protected String getTaskId() { + return page.getTaskId(); + } + }; + } + + public void openEditQueryDialog(AbstractRepositoryQuery query) { + if (!(query instanceof BugzillaRepositoryQuery)) { + return; + } + // BugzillaRepositoryQuery queryCategory = (BugzillaRepositoryQuery) + // query; + // + // if (queryCategory.isCustomQuery()) { + // // BugzillaCustomRepositoryQuery queryCategory = + // // (BugzillaCustomRepositoryQuery) query; + // BugzillaCustomQueryDialog sqd = new + // BugzillaCustomQueryDialog(Display.getCurrent().getActiveShell(), + // queryCategory.getQueryUrl(), queryCategory.getDescription(), + // queryCategory.getMaxHits() + ""); + // if (sqd.open() == Dialog.OK) { + // MylarTaskListPlugin.getTaskListManager().getTaskList().renameContainer(queryCategory, + // sqd.getName()); + // // queryCategory.setDescription(sqd.getName()); + // queryCategory.setQueryUrl(sqd.getUrl()); + // int maxHits = -1; + // try { + // maxHits = Integer.parseInt(sqd.getMaxHits()); + // } catch (Exception e) { + // } + // queryCategory.setMaxHits(maxHits); + // + // synchronize(queryCategory, null); + // } + // } else { + // // BugzillaRepositoryQuery queryCategory = (BugzillaRepositoryQuery) + // // query; + // BugzillaQueryDialog queryDialog = new + // BugzillaQueryDialog(Display.getCurrent().getActiveShell(), + // queryCategory.getRepositoryUrl(), queryCategory.getQueryUrl(), + // queryCategory.getDescription(), + // queryCategory.getMaxHits() + ""); + // if (queryDialog.open() == Dialog.OK) { + // MylarTaskListPlugin.getTaskListManager().getTaskList().renameContainer(queryCategory, + // queryDialog.getName()); + // // queryCategory.setDescription(queryDialog.getName()); + // queryCategory.setQueryUrl(queryDialog.getUrl()); + // queryCategory.setRepositoryUrl(queryDialog.getRepository().getUrl()); + // int maxHits = -1; + // try { + // maxHits = Integer.parseInt(queryDialog.getMaxHits()); + // } catch (Exception e) { + // } + // queryCategory.setMaxHits(maxHits); + // + // new SynchronizeReportsAction(queryCategory).run(); + // } + // } + + try { + TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository( + query.getRepositoryKind(), query.getRepositoryUrl()); + if (repository == null) + return; + + IWizard wizard = this.getEditQueryWizard(repository, query); + + Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); + if (wizard != null && shell != null && !shell.isDisposed()) { + WizardDialog dialog = new WizardDialog(shell, wizard); + dialog.create(); + dialog.setTitle("Edit Bugzilla Query"); + dialog.setBlockOnOpen(true); + if (dialog.open() == Dialog.CANCEL) { + dialog.close(); + return; + } + } + } catch (Exception e) { + MylarStatusHandler.fail(e, e.getMessage(), true); + } + } + + private static void offlineStatusChange(IBugzillaBug bug, BugzillaOfflineStatus status, boolean forceSynch) { + + RepositoryTaskSyncState state = null; + if (status == BugzillaOfflineStatus.SAVED_WITH_OUTGOING_CHANGES) { + state = RepositoryTaskSyncState.OUTGOING; + } else if (status == BugzillaOfflineStatus.SAVED) { + state = RepositoryTaskSyncState.SYNCHRONIZED; + } else if (status == BugzillaOfflineStatus.SAVED_WITH_INCOMMING_CHANGES) { + if (forceSynch) { + state = RepositoryTaskSyncState.INCOMING; + } else { + // User opened (forceSynch = false) so no need to denote + // incomming + state = RepositoryTaskSyncState.SYNCHRONIZED; + } + } else if (status == BugzillaOfflineStatus.CONFLICT) { + state = RepositoryTaskSyncState.CONFLICT; + } else if (status == BugzillaOfflineStatus.DELETED) { + state = RepositoryTaskSyncState.SYNCHRONIZED; + } + if (state == null) { + // this means that we got a status that we didn't understand + return; + } + + String handle = AbstractRepositoryTask.getHandle(bug.getRepositoryUrl(), bug.getId()); + ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle); + if (task != null && task instanceof BugzillaTask) { + BugzillaTask bugTask = (BugzillaTask) task; + bugTask.setSyncState(state); + MylarTaskListPlugin.getTaskListManager().getTaskList().notifyRepositoryInfoChanged(bugTask); + } + } + + public void submitBugReport(final IBugzillaBug bugReport, final BugzillaReportSubmitForm form, + IJobChangeListener listener) { + + if (forceSyncExecForTesting) { + internalSubmitBugReport(bugReport, form); + } else { + // TODO: get rid of this idiom? + final WorkspaceModifyOperation op = new WorkspaceModifyOperation() { + protected void execute(final IProgressMonitor monitor) throws CoreException { + internalSubmitBugReport(bugReport, form); + } + }; + + Job job = new Job(LABEL_JOB_SUBMIT) { + @Override + protected IStatus run(IProgressMonitor monitor) { + try { + op.run(monitor); + } catch (final Throwable throwable) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + // TODO: clean up exception handling + if (throwable.getCause() instanceof BugzillaException) { + MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Bugzilla could not post your bug."); + } else if (throwable.getCause() instanceof PossibleBugzillaFailureException) { + WebBrowserDialog.openAcceptAgreement(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Possible problem posting Bugzilla report.\n\n" + + throwable.getCause().getMessage(), form.getError()); + } else if (throwable.getCause() instanceof LoginException) { + MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Bugzilla could not post your bug since your login name or password is incorrect." + + " Ensure proper repository configuration in " + + TaskRepositoriesView.NAME + "."); + } else { + MylarStatusHandler.fail(throwable, "could not post bug", false); + MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Could not post bug. Check repository credentials and connectivity.\n\n" + + throwable); + } + } + }); + return new Status(Status.INFO, "org.eclipse.mylar.internal.bugzilla.ui", Status.INFO, + "Failed to submit bug", throwable); + } + return Status.OK_STATUS; + } + }; + job.addJobChangeListener(listener); + job.schedule(); + } + } + + private void internalSubmitBugReport(IBugzillaBug bugReport, BugzillaReportSubmitForm form) { + try { + form.submitReportToRepository(); + removeReport(bugReport); + String handle = AbstractRepositoryTask.getHandle(bugReport.getRepositoryUrl(), bugReport.getId()); + // TODO: avoid getting archive tasks? + ITask task = MylarTaskListPlugin.getTaskListManager().getTaskList().getTask(handle); + + Set<AbstractRepositoryQuery> queriesWithHandle = MylarTaskListPlugin.getTaskListManager().getTaskList() + .getQueriesForHandle(task.getHandleIdentifier()); + synchronize(queriesWithHandle, null, Job.INTERACTIVE, 0); + // for (AbstractRepositoryQuery query : queriesWithHandle) { + // synchronize(query, null); + // } + if (task instanceof AbstractRepositoryTask) { + synchronize((AbstractRepositoryTask) task, true, null); + } + + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** + * Saves the given report to the offlineReportsFile, or, if it already + * exists in the file, updates it. + * + * @param bug + * The bug to add/update. + * @param saveChosen + * This is used to determine a refresh from a user save + */ + public BugzillaOfflineStatus saveOffline(final IBugzillaBug bug, final boolean forceSynch) { + + BugzillaOfflineStatus status = BugzillaOfflineStatus.ERROR; + + if (!forceSyncExecForTesting) { + Display.getDefault().asyncExec(new Runnable() { + public void run() { + internalSaveOffline(bug, forceSynch); + } + }); + } else { + internalSaveOffline(bug, forceSynch); + } + return status; + } + + private void internalSaveOffline(final IBugzillaBug bug, final boolean forceSynch) { + // If there is already an offline report for this bug, update the file. + if (bug.isSavedOffline()) { + offlineReportsFile.update(); + } else { + try { + // int index = -1; + // // If there is already an offline report with the + // same id, don't + // // save this report. + // if ((index = file.find(bug.getId())) >= 0) { + // removeReport(getOfflineBugs().get(index)); + // // MessageDialog.openInformation(null, "Bug's Id + // is already + // // used.", "There is already a bug saved offline + // with an + // // identical id."); + // // return; + // } + BugzillaOfflineStatus offlineStatus = offlineReportsFile.add(bug, false); + bug.setOfflineState(true); + // saveForced forced to false (hack) + offlineStatusChange(bug, offlineStatus, forceSynch); + + } catch (CoreException e) { + MylarStatusHandler.fail(e, e.getMessage(), false); + } + // file.sort(OfflineReportsFile.lastSel); + } + } + + public static List<IBugzillaBug> getOfflineBugs() { + OfflineReportsFile file = BugzillaPlugin.getDefault().getOfflineReports(); + return file.elements(); + } + + public static void removeReport(IBugzillaBug bug) { + bug.setOfflineState(false); + offlineStatusChange(bug, BugzillaOfflineStatus.DELETED, false); + ArrayList<IBugzillaBug> bugList = new ArrayList<IBugzillaBug>(); + bugList.add(bug); + BugzillaPlugin.getDefault().getOfflineReports().remove(bugList); + } + + @Override + public boolean canCreateTaskFromId() { + return true; + } + + @Override + public boolean canCreateNewTask() { + return true; + } + + @Override + public IWizard getNewTaskWizard(TaskRepository taskRepository) { + return new NewBugzillaReportWizard(taskRepository); + } + + public List<String> getSupportedVersions() { + if (supportedVersions == null) { + supportedVersions = new ArrayList<String>(); + for (BugzillaServerVersion version : BugzillaServerVersion.values()) { + supportedVersions.add(version.toString()); + } + } + return supportedVersions; + } + + /** public for testing purposes * */ + @Override + public List<AbstractQueryHit> performQuery(final AbstractRepositoryQuery repositoryQuery, IProgressMonitor monitor, + MultiStatus status) { + TaskRepository repository = MylarTaskListPlugin.getRepositoryManager().getRepository( + repositoryQuery.getRepositoryKind(), repositoryQuery.getRepositoryUrl()); + + final BugzillaCategorySearchOperation categorySearch = new BugzillaCategorySearchOperation(repository, + repositoryQuery.getQueryUrl(), repositoryQuery.getMaxHits()); + + final ArrayList<AbstractQueryHit> newHits = new ArrayList<AbstractQueryHit>(); + categorySearch.addResultsListener(new ICategorySearchListener() { + public void searchCompleted(BugzillaResultCollector collector) { + for (BugzillaSearchHit hit : collector.getResults()) { + String description = hit.getId() + ": " + hit.getDescription(); + + // TODO: Associate new hit with task (if already exists) + newHits.add(new BugzillaQueryHit(description, hit.getPriority(), + repositoryQuery.getRepositoryUrl(), hit.getId(), null, hit.getState())); + } + } + }); + + categorySearch.execute(monitor); + try { + IStatus queryStatus = categorySearch.getStatus(); + if (!queryStatus.isOK()) { + status.add(new Status(IStatus.OK, MylarTaskListPlugin.PLUGIN_ID, IStatus.OK, queryStatus.getMessage(), + queryStatus.getException())); + } else { + status.add(queryStatus); + } + } catch (LoginException e) { + // TODO: Set some form of disconnect status on Query? + MylarStatusHandler.fail(e, "login failure for repository url: " + repository, false); + status.add(new Status(IStatus.OK, MylarTaskListPlugin.PLUGIN_ID, IStatus.OK, "Could not log in", e)); + } + + return newHits; + } + + @Override + protected void updateOfflineState(AbstractRepositoryTask repositoryTask, boolean forceSync) { + if (repositoryTask instanceof BugzillaTask) { + BugzillaTask bugzillaTask = (BugzillaTask) repositoryTask; + BugReport downloadedReport = downloadReport(bugzillaTask); + if (downloadedReport != null) { + bugzillaTask.setBugReport(downloadedReport); + saveOffline(downloadedReport, forceSync); + } + } + } + + @Override + public boolean attachContext(TaskRepository repository, AbstractRepositoryTask task, String longComment) + throws IOException { + if (!repository.hasCredentials()) { + MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), + MylarTaskListPlugin.TITLE_DIALOG, "Repository credentials missing or invalid."); + return false; + } else { + boolean result = false; + MylarPlugin.getContextManager().saveContext(task.getHandleIdentifier()); + File sourceContextFile = MylarPlugin.getContextManager().getFileForContext(task.getHandleIdentifier()); + + if (sourceContextFile != null && sourceContextFile.exists()) { + File folder = sourceContextFile.getParentFile(); + if (folder != null && folder.exists() && folder.isDirectory()) { + List<ITask> tasksToExport = new ArrayList<ITask>(); + tasksToExport.add(task); + TaskDataExportJob job = new TaskDataExportJob(MylarPlugin.getDefault().getDataDirectory(), false, + false, true, true, sourceContextFile.getName() + ZIPFILE_EXTENSION, tasksToExport); + + // IProgressService service = + // PlatformUI.getWorkbench().getProgressService(); + + try { + // service.run(true, false, job); + job.run(new NullProgressMonitor()); + + File zippedContextFile = new File(MylarPlugin.getDefault().getDataDirectory() + File.separator + + sourceContextFile.getName() + ZIPFILE_EXTENSION); + if (zippedContextFile != null && zippedContextFile.exists()) { + result = BugzillaRepositoryUtil.uploadAttachment(repository, BugzillaTask + .getTaskIdAsInt(task.getHandleIdentifier()), longComment, + MYLAR_CONTEXT_DESCRIPTION, zippedContextFile, APPLICATION_OCTET_STREAM, false); + if (result) { + synchronize(task, false, null); + } + } + + } catch (InvocationTargetException e) { + MylarStatusHandler.fail(e, "Could not export task context as zip file", true); + } catch (InterruptedException e) { + MylarStatusHandler.fail(e, "Could not export task context as zip file", true); + } + + } + } + + // if (sourceContextFile != null && sourceContextFile.exists()) { + // result = BugzillaRepositoryUtil.uploadAttachment(repository, + // BugzillaTask.getTaskIdAsInt(task + // .getHandleIdentifier()), longComment, MYLAR_CONTEXT_DESCRIPTION, + // sourceContextFile, + // CONTENTTYPE_APPLICATION_XML, false); + // if (result) { + // synchronize(task, false, null); + // } + // } + return result; + } + } + + @Override + public Set<IRemoteContextDelegate> getAvailableContexts(TaskRepository repository, AbstractRepositoryTask task) { + Set<IRemoteContextDelegate> contextDelegates = new HashSet<IRemoteContextDelegate>(); + if (task instanceof BugzillaTask) { + BugzillaTask bugzillaTask = (BugzillaTask) task; + if (bugzillaTask.getBugReport() != null) { + for (Comment comment : bugzillaTask.getBugReport().getComments()) { + if (comment.hasAttachment() && comment.getAttachmentDescription().equals(MYLAR_CONTEXT_DESCRIPTION)) { + contextDelegates.add(new BugzillaRemoteContextDelegate(comment)); + } + } + } + } + return contextDelegates; + } + + @Override + public boolean retrieveContext(TaskRepository repository, AbstractRepositoryTask task, + IRemoteContextDelegate remoteContextDelegate) throws IOException { + boolean result = false; + boolean wasActive = false; + if (remoteContextDelegate instanceof BugzillaRemoteContextDelegate) { + BugzillaRemoteContextDelegate contextDelegate = (BugzillaRemoteContextDelegate) remoteContextDelegate; + + if (task.isActive()) { + wasActive = true; + MylarTaskListPlugin.getTaskListManager().deactivateTask(task); + } + + File destinationContextFile = MylarPlugin.getContextManager().getFileForContext(task.getHandleIdentifier()); + + File destinationZipFile = new File(destinationContextFile.getPath() + ZIPFILE_EXTENSION); + + // if(destinationContextFile.exists()) { + // destinationContextFile.delete(); + // } + + result = BugzillaRepositoryUtil.downloadAttachment(repository, contextDelegate.getId(), destinationZipFile, + true); + + if (result) { + + ZipFileUtil.unzipFiles(destinationZipFile, MylarPlugin.getDefault().getDataDirectory()); + + if (destinationContextFile.exists()) { + + MylarTaskListPlugin.getTaskListManager().getTaskList().notifyLocalInfoChanged(task); + if (wasActive) { + MylarTaskListPlugin.getTaskListManager().activateTask(task); + } + } + } + } + return result; + } + + public String getRepositoryUrlFromTaskUrl(String url) { + if (url == null) { + return null; + } else { + int index = url.indexOf(BugzillaRepositoryUtil.POST_ARGS_SHOW_BUG); + if (index != -1) { + return url.substring(0, index); + } else { + return null; + } + } + } + + public void openRemoteTask(String repositoryUrl, String idString) { + int id = -1; + try { + id = Integer.parseInt(idString); + } catch (NumberFormatException e) { + // ignore + } + if (id != -1) { + OpenBugzillaReportJob job = new OpenBugzillaReportJob(repositoryUrl, id); + IProgressService service = PlatformUI.getWorkbench().getProgressService(); + try { + service.run(true, false, job); + } catch (Exception e) { + MylarStatusHandler.fail(e, "Could not open report", true); + } + } + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java new file mode 100644 index 000000000..7a43b8ee8 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaRepositorySettingsPage.java @@ -0,0 +1,131 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +import javax.security.auth.login.LoginException; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractRepositorySettingsPage; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +/** + * @author Mik Kersten + */ +public class BugzillaRepositorySettingsPage extends AbstractRepositorySettingsPage { + + private static final String TITLE = "Bugzilla Repository Settings"; + + private static final String DESCRIPTION = "Example: https://bugs.eclipse.org/bugs (do not include index.cgi)"; + private BugzillaRepositoryConnector connector; + protected Combo repositoryVersionCombo; + + public BugzillaRepositorySettingsPage(BugzillaRepositoryConnector connector) { + super(TITLE, DESCRIPTION); + this.connector = connector; + } + + protected void createAdditionalControls(Composite parent) { + Label repositoryVersionLabel = new Label(parent, SWT.NONE); + repositoryVersionLabel.setText("Repository Version: "); + repositoryVersionCombo = new Combo (parent, SWT.READ_ONLY); + + for (String version : connector.getSupportedVersions()) { + repositoryVersionCombo.add(version); + } + if(repository != null && repositoryVersionCombo.indexOf(repository.getVersion()) >= 0) { + repositoryVersionCombo.select(repositoryVersionCombo.indexOf(repository.getVersion())); + } else { + int defaultIndex = connector.getSupportedVersions().size()-1; + repositoryVersionCombo.select(defaultIndex); + setVersion(repositoryVersionCombo.getItem(defaultIndex)); + } + + repositoryVersionCombo.addSelectionListener(new SelectionListener() { + + public void widgetSelected(SelectionEvent e) { + if(repositoryVersionCombo.getSelectionIndex() >= 0) { + setVersion(repositoryVersionCombo.getItem(repositoryVersionCombo.getSelectionIndex())); + } + } + + public void widgetDefaultSelected(SelectionEvent e) { + // ignore + } + }); + } + + @Override + public boolean isPageComplete() { + return super.isPageComplete(); + } + + protected boolean isValidUrl(String name) { + if (name.startsWith(URL_PREFIX_HTTPS) || name.startsWith(URL_PREFIX_HTTP)) { + try { + new URL(name); + return true; + } catch (MalformedURLException e) { + } + } + return false; + } + + protected void validateSettings() { + try { + URL serverURL = new URL(super.serverUrlEditor.getStringValue()); + URLConnection cntx = BugzillaPlugin.getDefault().getUrlConnection(serverURL); + if (cntx == null || !(cntx instanceof HttpURLConnection)) { + MessageDialog.openInformation(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "Could not connect."); + } + + HttpURLConnection serverConnection = (HttpURLConnection) cntx; + serverConnection.connect(); + TaskRepository tempRepository = new TaskRepository(BugzillaPlugin.REPOSITORY_KIND, getServerUrl()); + tempRepository.setAuthenticationCredentials(getUserName(), getPassword()); + BugzillaRepositoryUtil.getProductList(tempRepository); + } catch (MalformedURLException e) { + MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "Server URL is invalid."); + return; + } catch (LoginException e) { + MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Unable to authenticate with server. Login credentials invalid."); + return; + } catch (IOException e) { + MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, "No Bugzilla server found at url"); + return; + } catch (Throwable t) { + MessageDialog.openWarning(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Unknown error occured. Check that server url and credentials are valid."); + return; + } + + MessageDialog.openInformation(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Authentication credentials are valid."); + + super.getWizard().getContainer().updateButtons(); + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java new file mode 100644 index 000000000..c9fe67a3b --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTask.java @@ -0,0 +1,176 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +/* + * Created on 14-Jan-2005 + */ +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import java.util.Date; +import java.util.List; + +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.bugzilla.core.Comment; +import org.eclipse.mylar.bugzilla.core.IBugzillaBug; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.internal.HtmlStreamTokenizer; +import org.eclipse.mylar.internal.bugzilla.core.internal.OfflineReportsFile; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; + +/** + * @author Mik Kersten + */ +public class BugzillaTask extends AbstractRepositoryTask { + + /** + * The bug report for this BugzillaTask. This is <code>null</code> if the + * bug report with the specified ID was unable to download. + */ + protected transient BugReport bugReport = null; + + public BugzillaTask(String handle, String label, boolean newTask) { + super(handle, label, newTask); + isDirty = false; + initFromHandle(); + } + + public BugzillaTask(BugzillaQueryHit hit, boolean newTask) { + this(hit.getHandleIdentifier(), hit.getDescription(), newTask); + setPriority(hit.getPriority()); + initFromHandle(); + } + + private void initFromHandle() { + int id = AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier()); + String repositoryUrl = getRepositoryUrl(); + // repositoryUrl = + // TaskRepositoryManager.getRepositoryUrl(getHandleIdentifier()); + if (repositoryUrl != null) { + String url = BugzillaRepositoryUtil.getBugUrlWithoutLogin(repositoryUrl, id); + if (url != null) { + super.setUrl(url); + } + } + } + + /** + * TODO: move? + */ + public boolean readBugReport() { + IBugzillaBug tempBug = OfflineReportsFile.findBug(getRepositoryUrl(), AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier())); + if (tempBug == null) { + bugReport = null; + return true; + } + bugReport = (BugReport) tempBug; + + if (bugReport.hasChanges()) + syncState = RepositoryTaskSyncState.OUTGOING; + return true; + } + + @Override + public String getDescription() { + if (this.isDownloaded() || !super.getDescription().startsWith("<")) { + return super.getDescription(); + } else { + if (!isSynchronizing()) { + return AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier()) + ": <Could not find bug>"; + } else { + return AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier()) + ":"; + } + } + } + + public BugReport getBugReport() { + return bugReport; + } + + public String getTaskType() { + if (bugReport != null && bugReport.getAttribute(BugReport.ATTRIBUTE_SEVERITY) != null) { + return bugReport.getAttribute(BugReport.ATTRIBUTE_SEVERITY).getValue(); + } else { + return null; + } + } + + /** + * @param bugReport + * The bugReport to set. + */ + public void setBugReport(BugReport bugReport) { + this.bugReport = bugReport; + + // TODO: remove? + if (bugReport != null) { + setDescription(HtmlStreamTokenizer.unescape(AbstractRepositoryTask + .getTaskIdAsInt(getHandleIdentifier()) + + ": " + bugReport.getSummary())); + } + } + + public boolean isDownloaded() { + return bugReport != null; + } + + @Override + public String toString() { + return "bugzilla report id: " + getHandleIdentifier(); + } + + @Override + public boolean isCompleted() { + if (bugReport != null) { + return bugReport.isResolved(); + } else { + return super.isCompleted(); + } + } + + @Override + public String getUrl() { + // fix for bug 103537 - should login automatically, but dont want to + // show the login info in the query string + return BugzillaRepositoryUtil.getBugUrlWithoutLogin(getRepositoryUrl(), AbstractRepositoryTask + .getTaskIdAsInt(handle)); + } + + @Override + public Date getCompletionDate() { + if (bugReport != null) { + if (bugReport.isResolved()) { + List<Comment> comments = bugReport.getComments(); + if (comments != null && !comments.isEmpty()) { + return comments.get(comments.size() - 1).getCreated(); + } + } + } + return null; + } + + public String getRepositoryKind() { + return BugzillaPlugin.REPOSITORY_KIND; + } + + @Override + public String getPriority() { + if (bugReport != null && bugReport.getAttribute(BugReport.ATTR_PRIORITY) != null) { + return bugReport.getAttribute(BugReport.ATTR_PRIORITY).getValue(); + } else { + return super.getPriority(); + } + } + + @Override + public boolean isPersistentInWorkspace() { + return true; + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java new file mode 100644 index 000000000..5747b7cc3 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskDecorator.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2006 - 2006 Mylar eclipse.org project and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Mylar project committers - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.jface.viewers.IDecoration; +import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.jface.viewers.ILightweightLabelDecorator; +import org.eclipse.mylar.internal.bugzilla.ui.BugzillaImages; + +/** + * @author Mik Kersten + */ +public class BugzillaTaskDecorator implements ILightweightLabelDecorator { + + public void decorate(Object element, IDecoration decoration) { + if (element instanceof BugzillaTask) { + String kind = ((BugzillaTask)element).getTaskType(); + if ("major".equals(kind) || "blocker".equals(kind)) { + decoration.addOverlay(BugzillaImages.OVERLAY_MAJOR, IDecoration.BOTTOM_RIGHT); + } else if ("enhancement".equals(kind)){ + decoration.addOverlay(BugzillaImages.OVERLAY_ENHANCEMENT, IDecoration.BOTTOM_RIGHT); + } + } else if (element instanceof BugzillaQueryHit) { + BugzillaQueryHit hit = (BugzillaQueryHit)element; + if (hit.getCorrespondingTask() != null) { + decorate(hit.getCorrespondingTask(), decoration); + } + } + } + + public void addListener(ILabelProviderListener listener) { + // ignore + } + + public void dispose() { + // ignore + } + + public boolean isLabelProperty(Object element, String property) { + return false; + } + + public void removeListener(ILabelProviderListener listener) { + // ignore + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java new file mode 100644 index 000000000..7eae841b5 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskEditor.java @@ -0,0 +1,295 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +/* + * Created on 31-Jan-2005 + */ +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.mylar.bugzilla.core.BugReport; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaAttributeListener; +import org.eclipse.mylar.internal.bugzilla.ui.editor.AbstractBugEditor; +import org.eclipse.mylar.internal.bugzilla.ui.editor.BugzillaOutlineNode; +import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditor; +import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; +import org.eclipse.mylar.internal.tasklist.ui.editors.MylarTaskEditor; +import org.eclipse.mylar.internal.tasklist.ui.editors.TaskEditorInput; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; + +/** + * @author Mik Kersten + */ +public class BugzillaTaskEditor extends MylarTaskEditor { + + private static final String EDITOR_TAB_ITLE = "Bug Editor"; + + /** The task that created this editor */ + protected BugzillaTask bugTask; + + /** This bug report can be modified by the user and saved offline. */ + protected BugReport offlineBug; + + private ExistingBugEditor bugzillaEditor; + + private BugzillaTaskEditorInput bugzillaEditorInput; + +// private BugzillaOutlinePage outlinePage = null; + +// protected BugzillaOutlineNode bugzillaOutlineModel = null; + + private IBugzillaAttributeListener ATTRIBUTE_LISTENER = new IBugzillaAttributeListener() { + public void attributeChanged(String attribute, String value) { + // TODO: get rid of this? + if (attribute.equals("Priority")) { + bugTask.setPriority(value); +// if (TaskListView.getDefault() != null) +// TaskListView.getDefault().notifyTaskDataChanged(bugTask); + } + } + }; + + public BugzillaTaskEditor() { + super(); + + // get the workbench page and add a listener so we can detect when it + // closes + // IWorkbench wb = MylarTaskListPlugin.getDefault().getWorkbench(); + // IWorkbenchWindow aw = wb.getActiveWorkbenchWindow(); + // IWorkbenchPage ap = aw.getActivePage(); + // BugzillaTaskEditorListener listener = new + // BugzillaTaskEditorListener(); + // ap.addPartListener(listener); + + bugzillaEditor = new ExistingBugEditor(); + bugzillaEditor.setParentEditor(this); + bugzillaEditor.addAttributeListener(ATTRIBUTE_LISTENER); + // taskSummaryEditor = new TaskInfoEditor(); + // taskSummaryEditor.setParentEditor(this); + } + + public AbstractBugEditor getBugzillaEditor() { + return bugzillaEditor; + } + + public void gotoMarker(IMarker marker) { + // don't do anything + } + + /** + * Creates page 1 of the multi-page editor, which allows you to change the + * font used in page 2. + */ + private void createBugzillaSubmitPage() { + bugzillaEditor.createPartControl(getContainer()); + Composite composite = bugzillaEditor.getEditorComposite(); + int index = addPage(composite); + setPageText(index, EDITOR_TAB_ITLE); + } + + /** + * Creates the pages of the multi-page editor. + */ + @Override + protected void createPages() { + createBugzillaSubmitPage(); + super.createPages(); + } + + /** + * Saves the multi-page editor's document. + */ + @Override + public void doSave(IProgressMonitor monitor) { + super.doSave(monitor); + // if(taskSummaryEditor.isDirty()) + // taskSummaryEditor.doSave(monitor); + if (bugzillaEditor.isDirty()) + bugzillaEditor.doSave(monitor); + + // TODO save both editors if needed + } + + public boolean isDirty() { + return bugzillaEditor.isDirty() || super.isDirty(); + } + + public void changeDirtyStatus(boolean newDirtyStatus) { + firePropertyChange(PROP_DIRTY); + } + + @Override + public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException { + if (!(editorInput instanceof BugzillaTaskEditorInput)) + throw new PartInitException("Invalid Input: Must be BugzillaTaskEditorInput"); + super.init(site, (IEditorInput) new TaskEditorInput(((BugzillaTaskEditorInput) editorInput).getBugTask(), false)); + bugzillaEditorInput = (BugzillaTaskEditorInput) editorInput; + bugTask = bugzillaEditorInput.getBugTask(); + bugzillaEditor.setBugzillaOutlineModel(BugzillaOutlineNode.parseBugReport(bugzillaEditorInput.getBug())); + offlineBug = bugzillaEditorInput.getOfflineBug(); + + super.setSite(site); + super.setInput(editorInput); + + try { + bugzillaEditor.init(this.getEditorSite(), this.getEditorInput()); + } catch (Exception e) { + throw new PartInitException(e.getMessage()); + } + + // Set the title on the editor's tab + // this.setPartName("Bug #" + bugzillaEditorInput.getBugId()); + this.setPartName(bugTask.getDescription()); + this.setTitleImage(TaskListImages.getImage(TaskListImages.TASK_REPOSITORY)); + } + + @Override + public boolean isSaveAsAllowed() { + return false; + } + + /** + * Calculates the contents of page 2 when the it is activated. + */ + @Override + protected void pageChange(int newPageIndex) { + super.pageChange(newPageIndex); + } + + /** + * Sets the font related data to be applied to the text in page 2. + */ + @Override + public void setFocus() { + // The default focus for this editor is the submit page + bugzillaEditor.setFocus(); + } + + /** + * @return Returns the bugTask. + */ + public BugzillaTask getBugTask() { + return bugTask; + } + + /** + * @return Returns the offlineBug. + */ + public BugReport getOfflineBug() { + return offlineBug; + } + + /** + * Updates the title of the editor to reflect dirty status. If the bug + * report has been modified but not saved, then an indicator will appear in + * the title. + * + * @param isDirty + * is true when the bug report has been modified but not saved + */ + public void showDirtyStatus(boolean isDirty) { + String prefix = (isDirty) ? "*" : ""; + setPartName(prefix + "Bug #" + bugzillaEditorInput.getBugId()); + } + + +// @Override +// public Object getAdapter(Class adapter) { +// if (IContentOutlinePage.class.equals(adapter)) { +// if (outlinePage == null && bugzillaEditorInput != null) { +// outlinePage = new BugzillaOutlinePage(bugzillaOutlineModel); +// } +// return outlinePage; +// } +// return super.getAdapter(adapter); +// } + + @Override + public Object getAdapter(Class adapter) { + return bugzillaEditor.getAdapter(adapter); + } + + // /** + // * Class to listen for editor events + // */ + // private class BugzillaTaskEditorListener implements IPartListener + // { + // + // public void partActivated(IWorkbenchPart part) { + // // don't care about this event + // } + // + // public void partBroughtToTop(IWorkbenchPart part) { + // // don't care about this event + // } + // + // public void partClosed(IWorkbenchPart part) { + // + // // if we are closing a bug editor + // if (part instanceof BugzillaTaskEditor) { + // BugzillaTaskEditor taskEditor = (BugzillaTaskEditor)part; + // + // // check if it needs to be saved + // if (taskEditor.bugzillaEditor.isDirty) { + // // ask the user whether they want to save it or not and perform the + // appropriate action + // taskEditor.bugzillaEditor.changeDirtyStatus(false); + // boolean response = MessageDialog.openQuestion(null, "Save Changes", + // "You have made some changes to the bug, do you want to save them?"); + // if (response) { + // taskEditor.bugzillaEditor.saveBug(); + // } else { + // ExistingBugEditorInput input = + // (ExistingBugEditorInput)taskEditor.bugzillaEditor.getEditorInput(); + // bugTask.setPriority(input.getBug().getAttribute("Priority").getValue()); + // } + // } + // } + // } + // + // public void partDeactivated(IWorkbenchPart part) { + // // don't care about this event + // } + // + // public void partOpened(IWorkbenchPart part) { + // // don't care about this event + // } + // } + + public void makeNewPage(BugReport serverBug, String newCommentText) { + if (serverBug == null) { + MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), + "Could not open bug.", "Bug #" + offlineBug.getId() + + " could not be read from the server. Try refreshing the bug task."); + return; + } + } + + public void close() { + Display display = getSite().getShell().getDisplay(); + display.asyncExec(new Runnable() { + public void run() { + getSite().getPage().closeEditor(BugzillaTaskEditor.this, false); + } + }); + } + + @Override + public void doSaveAs() { + // do nothing here + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java new file mode 100644 index 000000000..aa4d9d5a9 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaTaskExternalizer.java @@ -0,0 +1,265 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import java.util.Date; + +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.internal.tasklist.TaskExternalizationException; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; +import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; +import org.eclipse.mylar.provisional.tasklist.DelegatingTaskExternalizer; +import org.eclipse.mylar.provisional.tasklist.ITask; +import org.eclipse.mylar.provisional.tasklist.TaskList; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask.RepositoryTaskSyncState; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +/** + * @author Mik Kersten + */ +public class BugzillaTaskExternalizer extends DelegatingTaskExternalizer { + + private static final String STATUS_RESO = "RESO"; + + private static final String STATUS_NEW = "NEW"; + + private static final String LAST_DATE = "LastDate"; + + private static final String DIRTY = "Dirty"; + + private static final String SYNC_STATE = "offlineSyncState"; + + private static final String TAG_BUGZILLA_QUERY_HIT = "Bugzilla" + KEY_QUERY_HIT; + + private static final String TAG_BUGZILLA_QUERY = "Bugzilla" + KEY_QUERY; + + private static final String TAG_BUGZILLA_CUSTOM_QUERY = "BugzillaCustom" + KEY_QUERY; + + private static final String TAG_BUGZILLA_REPORT = "BugzillaReport"; + + public String getQueryTagNameForElement(AbstractRepositoryQuery query) { + if (query instanceof BugzillaRepositoryQuery) { + if (((BugzillaRepositoryQuery)query).isCustomQuery()) { + return TAG_BUGZILLA_CUSTOM_QUERY; + } else { + return TAG_BUGZILLA_QUERY; + } + } + return ""; + } + + public boolean canReadQuery(Node node) { + return node.getNodeName().equals(TAG_BUGZILLA_CUSTOM_QUERY) || node.getNodeName().equals(TAG_BUGZILLA_QUERY); + } + + public AbstractRepositoryQuery readQuery(Node node, TaskList taskList) throws TaskExternalizationException { + boolean hasCaughtException = false; + Element element = (Element) node; + BugzillaRepositoryQuery query = new BugzillaRepositoryQuery( + element.getAttribute(KEY_REPOSITORY_URL), + element.getAttribute(KEY_QUERY_STRING), + element.getAttribute(KEY_NAME), + element.getAttribute(KEY_QUERY_MAX_HITS), taskList); + if (node.getNodeName().equals(TAG_BUGZILLA_CUSTOM_QUERY)) { + query.setCustomQuery(true); + } + if(!element.getAttribute(KEY_LAST_REFRESH).equals("")) { + Date refreshDate = new Date(); + try { + refreshDate.setTime(Long.parseLong(element.getAttribute(KEY_LAST_REFRESH))); + query.setLastRefresh(refreshDate); + } catch (NumberFormatException e) { + // ignore + } + } + + NodeList list = node.getChildNodes(); + for (int i = 0; i < list.getLength(); i++) { + Node child = list.item(i); + try { + readQueryHit(child, taskList, query); + } catch (TaskExternalizationException e) { + hasCaughtException = true; + } + } + if (hasCaughtException) { + throw new TaskExternalizationException("Failed to load all tasks"); + } else { + return query; + } + } + +// public void readRegistry(Node node, TaskList taskList) throws TaskExternalizationException { +// boolean hasCaughtException = false; +// NodeList list = node.getChildNodes(); +// for (int i = 0; i < list.getLength(); i++) { +// try { +// Node child = list.item(i); +// ITask task = readTask(child, taskList, null, null); +// if (task instanceof AbstractRepositoryTask) { +// taskList.addTaskToArchive((AbstractRepositoryTask)task); +// } +// } catch (TaskExternalizationException e) { +// hasCaughtException = true; +// } +// } +// +// if (hasCaughtException) +// throw new TaskExternalizationException("Failed to restore all tasks"); +// } + +// public boolean canCreateElementFor(ITaskContainer cat) { +// return false; +// } + + public boolean canCreateElementFor(AbstractRepositoryQuery category) { + return category instanceof BugzillaRepositoryQuery; + } + + public boolean canCreateElementFor(ITask task) { + return task instanceof BugzillaTask; + } + + public Element createTaskElement(ITask task, Document doc, Element parent) { + Element node = super.createTaskElement(task, doc, parent); + BugzillaTask bugzillaTask = (BugzillaTask) task; + if (bugzillaTask.getLastRefresh() != null) { + node.setAttribute(LAST_DATE, new Long(bugzillaTask.getLastRefresh().getTime()).toString()); + } else { + node.setAttribute(LAST_DATE, new Long(new Date().getTime()).toString()); + } + + node.setAttribute(SYNC_STATE, bugzillaTask.getSyncState().toString()); + + if (bugzillaTask.isDirty()) { + node.setAttribute(DIRTY, VAL_TRUE); + } else { + node.setAttribute(DIRTY, VAL_FALSE); + } + return node; + } + + @Override + public boolean canReadTask(Node node) { + return node.getNodeName().equals(getTaskTagName()); + } + + @Override + public ITask readTask(Node node, TaskList taskList, AbstractTaskContainer category, ITask parent) + throws TaskExternalizationException { + Element element = (Element) node; + String handle; + String label; + if (element.hasAttribute(KEY_HANDLE)) { + handle = element.getAttribute(KEY_HANDLE); + } else { + throw new TaskExternalizationException("Handle not stored for bug report"); + } + if (element.hasAttribute(KEY_LABEL)) { + label = element.getAttribute(KEY_LABEL); + } else { + throw new TaskExternalizationException("Description not stored for bug report"); + } + BugzillaTask task = new BugzillaTask(handle, label, false); + readTaskInfo(task, taskList, element, parent, category); + + task.setCurrentlyDownloading(false); + task.setLastRefresh(new Date(new Long(element.getAttribute("LastDate")).longValue())); + + if (element.getAttribute("Dirty").compareTo("true") == 0) { + task.setDirty(true); + } else { + task.setDirty(false); + } + try { + if (task.readBugReport() == false) { + MylarStatusHandler.log("Failed to read bug report", null); + } + } catch (Exception e) { + MylarStatusHandler.log(e, "Failed to read bug report"); + } + + if (element.hasAttribute(SYNC_STATE)) { + String syncState = element.getAttribute(SYNC_STATE); + if (syncState.compareTo(RepositoryTaskSyncState.SYNCHRONIZED.toString()) == 0) { + task.setSyncState(RepositoryTaskSyncState.SYNCHRONIZED); + } else if (syncState.compareTo(RepositoryTaskSyncState.INCOMING.toString()) == 0) { + task.setSyncState(RepositoryTaskSyncState.INCOMING); + } else if (syncState.compareTo(RepositoryTaskSyncState.OUTGOING.toString()) == 0) { + task.setSyncState(RepositoryTaskSyncState.OUTGOING); + } else if (syncState.compareTo(RepositoryTaskSyncState.CONFLICT.toString()) == 0) { + task.setSyncState(RepositoryTaskSyncState.CONFLICT); + } + } + + // TODO: put back, checking for null category? +// taskList.internalAddTask(task, category); + return task; + } + + public boolean canReadQueryHit(Node node) { + return node.getNodeName().equals(getQueryHitTagName()); + } + + public void readQueryHit(Node node, TaskList taskList, AbstractRepositoryQuery query) throws TaskExternalizationException { + Element element = (Element) node; + String handle; + String label; + String priority; + String status; + if (element.hasAttribute(KEY_HANDLE)) { + handle = element.getAttribute(KEY_HANDLE); + } else { + throw new TaskExternalizationException("Handle not stored for bug report"); + } + if (element.hasAttribute(KEY_NAME)) { + label = element.getAttribute(KEY_NAME); + } else { + throw new TaskExternalizationException("Description not stored for bug report"); + } + if (element.hasAttribute(KEY_PRIORITY)) { + priority = element.getAttribute(KEY_PRIORITY); + } else { + throw new TaskExternalizationException("Description not stored for bug report"); + } + + status = STATUS_NEW; + if (element.hasAttribute(KEY_COMPLETE)) { + status = element.getAttribute(KEY_COMPLETE); + if (status.equals(VAL_TRUE)) { + status = STATUS_RESO; + } + } + BugzillaQueryHit hit = new BugzillaQueryHit(label, priority, query.getRepositoryUrl(), AbstractRepositoryTask + .getTaskIdAsInt(handle), null, status); + ITask correspondingTask = taskList.getTask(hit.getHandleIdentifier()); + if (correspondingTask instanceof BugzillaTask) { + hit.setCorrespondingTask((BugzillaTask)correspondingTask); + } + + query.addHit(hit); + } + + @Override + public String getTaskTagName() { + return TAG_BUGZILLA_REPORT; + } + + @Override + public String getQueryHitTagName() { + return TAG_BUGZILLA_QUERY_HIT; + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java new file mode 100644 index 000000000..7dbe2e009 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/EditBugzillaQueryWizard.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.ui.search.BugzillaSearchPage; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +/** + * @author Rob Elves + */ +public class EditBugzillaQueryWizard extends Wizard { + + private static final String TITLE = "Edit Bugzilla Query"; + + private final TaskRepository repository; + + private AbstractBugzillaQueryPage page; + + private BugzillaRepositoryQuery query; + + public EditBugzillaQueryWizard(TaskRepository repository, BugzillaRepositoryQuery query) { + this.repository = repository; + this.query = query; + setNeedsProgressMonitor(true); + setWindowTitle(TITLE); + } + + @Override + public void addPages() { + if (query.isCustomQuery()) { + page = new BugzillaCustomQueryWizardPage(repository, query); + } else { + page = new BugzillaSearchPage(repository, query); + } + addPage(page); + + } + + @Override + public boolean performFinish() { + + query = page.getQuery(); + + final String queryTitle = page.getQueryTitle().trim(); + + MylarTaskListPlugin.getTaskListManager().getTaskList().renameContainer(query, queryTitle); + + boolean offline = MylarTaskListPlugin.getMylarCorePrefs().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE); + if (!offline) { + WorkspaceModifyOperation op = new WorkspaceModifyOperation() { + protected void execute(IProgressMonitor monitor) throws CoreException { + monitor.beginTask("Executing query", 50); + try { + AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager() + .getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); + + client.synchronize(query, null); + } finally { + monitor.done(); + } + } + }; + + try { + getContainer().run(true, false, op); + } catch (Exception e) { + MylarStatusHandler.log(e, "There was a problem executing the query refresh"); + } + } + + return true; + } + + @Override + public boolean canFinish() { + if (page != null && page.isPageComplete()) { + return true; + } + + return false; + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java new file mode 100644 index 000000000..a4e5f0278 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/NewBugzillaQueryWizard.java @@ -0,0 +1,98 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +/** + * @author Mik Kersten + * @author Brock Janiczak + */ +public class NewBugzillaQueryWizard extends Wizard { + + private static final String TITLE = "New Bugzilla Query"; + + private final TaskRepository repository; + + BugzillaQueryTypeWizardPage page1; + + public NewBugzillaQueryWizard(TaskRepository repository) { + this.repository = repository; + setNeedsProgressMonitor(true); + setWindowTitle(TITLE); + } + + @Override + public void addPages() { + page1 = new BugzillaQueryTypeWizardPage(repository); + page1.setWizard(this); + addPage(page1); + + } + + @Override + public boolean performFinish() { + + AbstractBugzillaQueryPage page; + + if (page1.getNextPage() != null && page1.getNextPage() instanceof AbstractBugzillaQueryPage) { + page = (AbstractBugzillaQueryPage) page1.getNextPage(); + } else { + return false; + } + + final BugzillaRepositoryQuery queryCategory = page.getQuery(); + + MylarTaskListPlugin.getTaskListManager().getTaskList().addQuery(queryCategory); + boolean offline = MylarTaskListPlugin.getMylarCorePrefs().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE); + if (!offline) { + WorkspaceModifyOperation op = new WorkspaceModifyOperation() { + protected void execute(IProgressMonitor monitor) throws CoreException { + monitor.beginTask("Executing query", 50); + try { + AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager() + .getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); + client.synchronize(queryCategory, null); + } finally { + monitor.done(); + } + } + }; + + try { + getContainer().run(true, false, op); + } catch (Exception e) { + MylarStatusHandler.log(e, "There was a problem executing the query refresh"); + } + } + + return true; + } + + @Override + public boolean canFinish() { + if (page1.getNextPage() != null && page1.getNextPage().isPageComplete()) { + return true; + } + return false; + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java new file mode 100644 index 000000000..6cf39e800 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/OpenBugzillaReportJob.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.bugzilla.ui.tasklist; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.mylar.internal.bugzilla.ui.BugzillaOpenStructure; +import org.eclipse.mylar.internal.bugzilla.ui.ViewBugzillaAction; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; + +/** + * @author Mik Kersten + */ +public class OpenBugzillaReportJob implements IRunnableWithProgress { + + private int id; + + private String serverUrl; + + public OpenBugzillaReportJob(String serverUrl, int id) { + this.id = id; + this.serverUrl = serverUrl; + } + + public void run(IProgressMonitor monitor) { + try { + monitor.beginTask("Opening Bugzilla Report", 10); + List<BugzillaOpenStructure> list = new ArrayList<BugzillaOpenStructure>(1); + list.add(new BugzillaOpenStructure(serverUrl, id, -1)); + new ViewBugzillaAction("Open Bug " + id, list).run(monitor); + monitor.done(); + } catch (Exception e) { + MylarStatusHandler.fail(e, "Unable to open Bug report: " + id, true); + } + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java new file mode 100644 index 000000000..c5fb9f79a --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugWizard.java @@ -0,0 +1,209 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.wizard; + +import java.io.IOException; + +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaReportSubmitForm; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaException; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.NewBugModel; +import org.eclipse.mylar.internal.bugzilla.core.PossibleBugzillaFailureException; +import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin; +import org.eclipse.mylar.internal.bugzilla.ui.WebBrowserDialog; +import org.eclipse.mylar.internal.bugzilla.ui.editor.ExistingBugEditorInput; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.search.internal.ui.SearchMessages; +import org.eclipse.search.internal.ui.util.ExceptionHandler; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.progress.IProgressService; + +/** + * Class that contains shared functions for the wizards that submit bug reports. + * + * @author Eric Booth + * @author Mik Kersten (some hardening of prototype) + */ +public abstract class AbstractBugWizard extends Wizard implements INewWizard { + + /** The ID of the posted bug report. */ + private String id; + + protected boolean fromDialog = false; + + /** The model used to store all of the data for the wizard */ + protected NewBugModel model; + + /** + * Flag to indicate if the wizard can be completed based on the attributes + * page + */ + protected boolean attributeCompleted = false; + + /** The workbench instance */ + protected IWorkbench workbenchInstance; + + private final TaskRepository repository; + + public AbstractBugWizard(TaskRepository repository) { + super(); + this.repository = repository; + model = new NewBugModel(); + id = null; // Since there is no bug posted yet. + super.setDefaultPageImageDescriptor(BugzillaUiPlugin.imageDescriptorFromPlugin( + "org.eclipse.mylar.internal.bugzilla.ui", "icons/wizban/bug-wizard.gif")); + // setForcePreviousAndNextButtons(true); + } + + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.workbenchInstance = workbench; + } + + @Override + public void addPages() { + super.addPages(); + } + + @Override + public boolean performFinish() { + // if (getWizardDataPage().serverSelected()) { + getWizardDataPage().saveDataToModel(); + // If the bug report is sent successfully, + // then close the wizard and open the bug in an editor + if (postBug()) { + // if (!fromDialog) + // openBugEditor(); + return true; + } + // If the report was not sent, keep the wizard open + else { + return false; + } + // } + + // if (getWizardDataPage().offlineSelected()) { + // saveBugOffline(); + // return true; + // } + + // If no action was selected, keep the wizard open. + // return false; + } + + // Flag to indicate if the bug was successfully sent + private boolean sentSuccessfully = false; + + /** + * Attempts to post the bug on the Bugzilla server. If it fails, an error + * message pops up. + * + * @return true if the bug is posted successfully, and false otherwise + */ + protected boolean postBug() { + final WorkspaceModifyOperation op = new WorkspaceModifyOperation() { + protected void execute(final IProgressMonitor monitor) throws CoreException { + PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { + public void run() { + BugzillaReportSubmitForm form = BugzillaReportSubmitForm.makeNewBugPost(repository, model); + try { + id = form.submitReportToRepository(); + + if (id != null) { + sentSuccessfully = true; + } + } catch (BugzillaException e) { + MessageDialog.openError(null, "I/O Error", "Bugzilla could not post your bug."); + BugzillaPlugin.log(e); + } catch (PossibleBugzillaFailureException e) { + WebBrowserDialog.openAcceptAgreement(null, "Possible Bugzilla Client Failure", + "Bugzilla may not have posted your bug.\n" + e.getMessage(), form.getError()); + BugzillaPlugin.log(e); + } catch (LoginException e) { + MessageDialog.openError(null, "Posting Error", + "Bugzilla could not post your bug since your login name or password is incorrect." + + "\nPlease check your settings in the bugzilla preferences. "); + sentSuccessfully = false; + } + } + + }); + } + }; + + IProgressService service = PlatformUI.getWorkbench().getProgressService(); + try { + service.run(false, false, op); + } catch (Exception e) { + MylarStatusHandler.log(e, "Unable to submit bug"); + } + return sentSuccessfully; + } + + /** + * Try to open the editor with the newly created bug. + */ + protected void openBugEditor() { + + IEditorInput input = null; + try { + input = new ExistingBugEditorInput(repository.getUrl(), Integer.parseInt(id)); + BugzillaPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(input, + IBugzillaConstants.EXISTING_BUG_EDITOR_ID, false); + } catch (LoginException e) { + // if we had an error with logging in, display an error + MessageDialog.openError(null, "Posting Error", + "Bugzilla could not access and display your bug in the editor because your login name or password is incorrect." + + "\nPlease check your settings in the bugzilla preferences. "); + } catch (PartInitException e) { + // if there was a problem, handle it and log it, then get out of + // here + ExceptionHandler.handle(e, SearchMessages.Search_Error_search_title, + SearchMessages.Search_Error_search_message); + BugzillaPlugin.log(e.getStatus()); + } catch (IOException e) { + BugzillaPlugin.getDefault().logAndShowExceptionDetailsDialog(e, "occurred while opening the bug report.", + "Bugzilla Error"); + } + } + + /** + * Saves the bug report offline on the user's hard-drive. All offline bug + * reports are saved together in a single file in the plug-in's directory. + */ + abstract protected void saveBugOffline(); + + public String getId() { + return id; + } + + /** + * @return the last page of this wizard + */ + abstract protected AbstractBugzillaWizardPage getWizardDataPage(); + + public TaskRepository getRepository() { + return repository; + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java new file mode 100644 index 000000000..42f0efaad --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/AbstractBugzillaWizardPage.java @@ -0,0 +1,770 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.wizard; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.mylar.bugzilla.core.Attribute; +import org.eclipse.mylar.internal.bugzilla.core.NewBugModel; +import org.eclipse.mylar.internal.bugzilla.core.internal.BugReportElement; +import org.eclipse.mylar.internal.bugzilla.ui.editor.AbstractBugEditor; +import org.eclipse.mylar.internal.core.util.MylarStatusHandler; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.internal.WorkbenchImages; +import org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages; + +/** + * Class that contains shared functions for the last page of the wizards that + * submit bug reports. This page allows the user to set the bug report's + * attributes before submitting it. + * + * @author Mik Kersten (hardening of initial prototype) + */ +public abstract class AbstractBugzillaWizardPage extends WizardPage implements Listener { + + /** The instance of the workbench */ + protected IWorkbench workbench; + + /** Text field for the bugs url */ + protected Text urlText; + + /** Text field for the description of the bug */ + protected Text descriptionText; + + /** Text field for the summary of the bug */ + protected Text summaryText; + + /** Text field for the assignedTo of the bug */ + protected Text assignedToText; + + // /** Radio button to select when sending the new bug report to the server + // */ + // protected Button serverButton; + // + // /** Radio button to select when saving the new bug report offline */ + // protected Button offlineButton; + + /** Combo box for the component that caused the bug */ + protected Combo componentCombo; + + /** Combo box for the priority of the bug */ + protected Combo priorityCombo; + + /** Combo box for the platform the bug occurred on */ + protected Combo platformCombo; + + /** Combo box for the severity of the bug */ + protected Combo severityCombo; + + /** Combo box for the products version */ + protected Combo versionCombo; + + /** Combo box for the OS that the bug occurred under */ + protected Combo oSCombo; + + /** Combo box for the Milestone that the bug addresses */ + protected Combo milestoneCombo; + + /** Enum for value */ + protected final String VALUE = "VALUE"; + + /** Enum for property */ + protected final String PROPERTY = "PROPERTY"; + + /** Enum for header */ + protected final String HEADER = "HEADER"; + + /** The horizontal indentation of the labels */ + protected final int HORZ_INDENT = 0; + + /** Status variable for the possible errors on this page */ + protected IStatus attributeStatus; + + /** + * Constructor for AbstractWizardDataPage + * + * @param pageName + * the name of the page + * @param title + * the title of the page + * @param description + * the description text for the page + * @param workbench + * the instance of the workbench + */ + public AbstractBugzillaWizardPage(String pageName, String title, String description, IWorkbench workbench) { + super(pageName); + setTitle(title); + setDescription(description); + this.workbench = workbench; + + // set the status for the page + attributeStatus = new Status(IStatus.OK, "not_used", 0, "", null); + } + + /** + * Applies the status to the status line of a dialog page. + * + * @param status + * The status to apply to the status line + */ + protected void applyToStatusLine(IStatus status) { + String message = status.getMessage(); + if (message.length() == 0) + message = null; + switch (status.getSeverity()) { + case IStatus.OK: + setErrorMessage(null); + setMessage(message); + break; + case IStatus.WARNING: + setErrorMessage(null); + setMessage(message, WizardPage.WARNING); + break; + case IStatus.INFO: + setErrorMessage(null); + setMessage(message, WizardPage.INFORMATION); + break; + default: + setErrorMessage(null); + setMessage(message, WizardPage.ERROR); + break; + } + } + + /** + * Make sure that a String that is <code>null</code> is changed to a null + * string + * + * @param text + * The text to check if it is null or not + * @return The string in its proper format + */ + public String checkText(String text) { + if (text == null) + return ""; + else + return text; + } + + @Override + public boolean canFlipToNextPage() { + // no next page for this path through the wizard + return false; + } + + /** + * Create a new layout for a component + * + * @param composite + * The parent composite + * @param colSpan + * The number of columns that this can span + * @param text + * The text to add to the control + * @param style + * The style that the control should have + */ + public void newLayout(Composite composite, int colSpan, String text, String style) { + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + data.horizontalSpan = colSpan; + + // create the proper layout for the style + if (style.equalsIgnoreCase(VALUE)) { + Label l = new Label(composite, SWT.NONE); + FontData fontData = l.getFont().getFontData()[0]; + fontData.setStyle(SWT.BOLD | fontData.getStyle()); + Font font = new Font(null, fontData); + l.setFont(font); + l.setText(checkText(text)); + + data.horizontalIndent = HORZ_INDENT; + l.setLayoutData(data); + } else if (style.equalsIgnoreCase(PROPERTY)) { + Label l = new Label(composite, SWT.NONE); + FontData fontData = l.getFont().getFontData()[0]; + fontData.setStyle(SWT.BOLD | fontData.getStyle()); + Font font = new Font(null, fontData); + l.setFont(font); + l.setText(checkText(text)); + + data.horizontalIndent = HORZ_INDENT; + l.setLayoutData(data); + } else { + Composite generalTitleGroup = new Composite(composite, SWT.NONE); + generalTitleGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + generalTitleGroup.setLayoutData(data); + GridLayout generalTitleLayout = new GridLayout(); + generalTitleLayout.numColumns = 2; + generalTitleLayout.marginWidth = 0; + generalTitleLayout.marginHeight = 9; + generalTitleGroup.setLayout(generalTitleLayout); + + Label image = new Label(generalTitleGroup, SWT.NONE); + image.setImage(WorkbenchImages.getImage(IDEInternalWorkbenchImages.IMG_OBJS_WELCOME_ITEM)); + + GridData gd = new GridData(GridData.FILL_BOTH); + gd.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING; + image.setLayoutData(gd); + Label l = new Label(composite, SWT.NONE); + FontData fontData = l.getFont().getFontData()[0]; + fontData.setStyle(SWT.BOLD | fontData.getStyle()); + Font font = new Font(null, fontData); + l.setFont(font); + l.setText(checkText(text)); + + data.horizontalIndent = HORZ_INDENT; + l.setLayoutData(data); + } + } + + /** + * Determine if the page is complete when the summary is changed + * + * @param e + * The event which occurred + */ + public void handleEvent(Event e) { + boolean pageComplete = isPageComplete(); + + // Initialize a variable with the no error status + Status status = new Status(IStatus.OK, "not_used", 0, "", null); + + setPageComplete(pageComplete); + + if (!pageComplete) + status = new Status(IStatus.ERROR, "not_used", 0, "You must enter a summary and a description", null); + + attributeStatus = status; + + // Show the most serious error + applyToStatusLine(attributeStatus); + + setPageComplete(pageComplete); + getWizard().getContainer().updateButtons(); + } + + @Override + public IWizardPage getNextPage() { + saveDataToModel(); + return null; + } + + /** + * Sets the completed field on the wizard class when all the needed + * information is entered and the wizard can be completed + * + * @return true if the wizard can be completed, false otherwise + */ + @Override + public boolean isPageComplete() { + AbstractBugWizard wizard = (AbstractBugWizard) getWizard(); + if (summaryText.getText() == null || summaryText.getText().equals("") || descriptionText.getText() == null + || descriptionText.getText().equals("")) { + wizard.attributeCompleted = false; + return false; + } + // saveDataToModel(); + wizard.attributeCompleted = true; + return true; + } + + /** + * Save the data obtained from this point in the wizard to the model. + */ + public void saveDataToModel() { + // get the model that we are using + AbstractBugWizard wizard = (AbstractBugWizard) getWizard(); + NewBugModel nbm = wizard.model; + + nbm.setDescription(descriptionText.getText()); + nbm.setSummary(summaryText.getText()); + + // go through each of the attributes and sync their values with the + // combo boxes + for (Iterator<Attribute> it = nbm.getAttributes().iterator(); it.hasNext();) { + Attribute attribute = it.next(); + String key = attribute.getName(); + Map<String, String> values = attribute.getOptionValues(); + + try { + if (values == null) + values = new HashMap<String, String>(); + if (key.equals(BugReportElement.OP_SYS.toString())) { + String os = oSCombo.getItem(oSCombo.getSelectionIndex()); + attribute.setValue(os); + } else if (key.equals(BugReportElement.VERSION.toString())) { + String version = versionCombo.getItem(versionCombo.getSelectionIndex()); + attribute.setValue(version); + } else if (key.equals(BugReportElement.BUG_SEVERITY.toString())) { + String severity = severityCombo.getItem(severityCombo.getSelectionIndex()); + attribute.setValue(severity); + } else if (key.equals(BugReportElement.REP_PLATFORM.toString())) { + String platform = platformCombo.getItem(platformCombo.getSelectionIndex()); + attribute.setValue(platform); + } else if (key.equals(BugReportElement.TARGET_MILESTONE.toString())) { + int index = milestoneCombo.getSelectionIndex(); + if(index >= 0) { + String milestone = milestoneCombo.getItem(milestoneCombo.getSelectionIndex()); + attribute.setValue(milestone); + } + } else if (key.equals(BugReportElement.COMPONENT.toString())) { + String component = componentCombo.getItem(componentCombo.getSelectionIndex()); + attribute.setValue(component); + } else if (key.equals(BugReportElement.PRIORITY.toString())) { + String priority = priorityCombo.getItem(priorityCombo.getSelectionIndex()); + attribute.setValue(priority); + } else if (key.equals(BugReportElement.BUG_FILE_LOC.toString())) { + String url = urlText.getText(); + if (url.equalsIgnoreCase("http://")) + url = ""; + attribute.setValue(url); + } else if (key.equals(BugReportElement.ASSIGNED_TO.toString())) { + String assignTo = assignedToText.getText(); + attribute.setValue(assignTo); + } else { + // do nothing + } + } catch (IllegalArgumentException e) { + MylarStatusHandler.fail(e, "could not set attribute: " + attribute, false); + } + } + // wizard.attributeCompleted = true; + } + + @Override + protected void setControl(Control c) { + super.setControl(c); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + // whether the priority exists or not + boolean priExist = false; + boolean mileExist = false; + + String url = null; + + // get the model for the new bug + AbstractBugWizard wizard = (AbstractBugWizard) getWizard(); + NewBugModel nbm = wizard.model; + + // Set the current platform and OS on the model + setPlatformOptions(nbm); + + // Attributes Composite- this holds all the combo fields and text + // fields + Composite attributesComposite = new Composite(parent, SWT.NONE); + GridLayout attributesLayout = new GridLayout(); + attributesLayout.numColumns = 4; + attributesLayout.horizontalSpacing = 14; + attributesLayout.verticalSpacing = 6; + attributesLayout.makeColumnsEqualWidth = false; + attributesComposite.setLayout(attributesLayout); + + GridData attributesData = new GridData(GridData.FILL_BOTH); + attributesData.horizontalSpan = 1; + attributesData.grabExcessVerticalSpace = false; + attributesComposite.setLayoutData(attributesData); + // End Attributes Composite + + GridLayout attributesTitleLayout = new GridLayout(); + attributesTitleLayout.horizontalSpacing = 0; + attributesTitleLayout.marginWidth = 0; + + GridData attributesTitleData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + attributesTitleData.horizontalSpan = 4; + + attributesTitleData.grabExcessVerticalSpace = false; + + // Add the product to the composite + newLayout(attributesComposite, 1, "Product", PROPERTY); + newLayout(attributesComposite, 1, nbm.getProduct(), VALUE); + + // Populate Attributes + for (Iterator<Attribute> it = nbm.getAttributes().iterator(); it.hasNext();) { + Attribute attribute = it.next(); + String key = attribute.getParameterName(); + String name = attribute.getName(); + String value = checkText(attribute.getValue()); + Map<String, String> values = attribute.getOptionValues(); + + // if it is a hidden field, don't try to display it + if (attribute.isHidden()) + continue; + + if (key == null) + key = ""; + + if (values == null) + values = new HashMap<String, String>(); + + GridData data = new GridData(GridData.BEGINNING); + data.horizontalSpan = 1; + data.horizontalIndent = HORZ_INDENT; + data.widthHint = 150; + // create and populate the combo fields for the attributes + if (key.equals(BugReportElement.OP_SYS.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + oSCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY); + + oSCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + oSCombo.add(a[i]); + } + int index; + if ((index = oSCombo.indexOf(value)) == -1) + index = 0; + oSCombo.select(index); + oSCombo.addListener(SWT.Modify, this); + } else if (key.equals(BugReportElement.VERSION.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + + versionCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + + versionCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + versionCombo.add(a[i]); + } + int index; + if ((index = versionCombo.indexOf(value)) == -1) + index = 0; + versionCombo.select(index); + versionCombo.addListener(SWT.Modify, this); + } else if (key.equals(BugReportElement.BUG_SEVERITY.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + severityCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + + severityCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + severityCombo.add(a[i]); + } + int index; + if ((index = severityCombo.indexOf(value)) == -1) + index = 0; + severityCombo.select(index); + severityCombo.addListener(SWT.Modify, this); + + } else if (key.equals(BugReportElement.REP_PLATFORM.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + platformCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + + platformCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + platformCombo.add(a[i]); + } + int index; + if ((index = platformCombo.indexOf(value)) == -1) + index = 0; + platformCombo.select(index); + platformCombo.addListener(SWT.Modify, this); + } else if (key.equals(BugReportElement.TARGET_MILESTONE.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + milestoneCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + milestoneCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + milestoneCombo.add(a[i]); + } + int index; + if ((index = milestoneCombo.indexOf(value)) == -1) + index = 0; + milestoneCombo.select(index); + milestoneCombo.addListener(SWT.Modify, this); + //if(s.isEmpty()) milestoneCombo.setEnabled(false); + mileExist = true; + } else if (key.equals(BugReportElement.COMPONENT.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + componentCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + + componentCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + componentCombo.add(a[i]); + } + int index; + if ((index = componentCombo.indexOf(value)) == -1) + index = 0; + componentCombo.select(index); + componentCombo.addListener(SWT.Modify, this); + } else if (key.equals(BugReportElement.PRIORITY.getKeyString())) { + newLayout(attributesComposite, 1, name, PROPERTY); + priorityCombo = new Combo(attributesComposite, SWT.NO_BACKGROUND | SWT.MULTI | SWT.V_SCROLL + | SWT.READ_ONLY); + + priorityCombo.setLayoutData(data); + Set<String> s = values.keySet(); + String[] a = s.toArray(new String[s.size()]); + for (int i = 0; i < a.length; i++) { + priorityCombo.add(a[i]); + } + int index; + if ((index = priorityCombo.indexOf(value)) == -1) + index = 0; + priorityCombo.select(index); + priorityCombo.addListener(SWT.Modify, this); + priExist = true; + } else if (key.equals(BugReportElement.BUG_FILE_LOC.getKeyString())) { + url = value; + } else { + // do nothing if it isn't a standard value to change + } + } + + if (priExist && !mileExist) { + newLayout(attributesComposite, 1, "", PROPERTY); + newLayout(attributesComposite, 1, "", PROPERTY); + } + + Composite textComposite = new Composite(attributesComposite, SWT.NONE); + textComposite.setLayout(new GridLayout(3, false)); + GridData textCompositeGD = new GridData(); + textCompositeGD.horizontalSpan = 4; + textCompositeGD.grabExcessHorizontalSpace = true; + textComposite.setLayoutData(textCompositeGD); + + + GridData urlTextData; + if (url != null) { + newLayout(textComposite, 1, BugReportElement.BUG_FILE_LOC.toString(), PROPERTY); + urlText = new Text(textComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP); + urlTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + + urlTextData.horizontalSpan = 2; + // summaryTextData.widthHint = 200; + urlText.setLayoutData(urlTextData); + urlText.setText(url); + urlText.addListener(SWT.FocusOut, this); + } + + GridData summaryTextData; + newLayout(textComposite, 1, BugReportElement.ASSIGNED_TO.toString(), PROPERTY); + Label l = new Label(textComposite, SWT.NONE); + l.setText("(if email is incorrect submit will not proceed)"); + summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + summaryTextData.horizontalSpan = 1; + l.setLayoutData(summaryTextData); + assignedToText = new Text(textComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP); + summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + + summaryTextData.horizontalSpan = 1; + summaryTextData.widthHint = 200; + assignedToText.setLayoutData(summaryTextData); + assignedToText.setText(""); + + // add the summary text field + newLayout(textComposite, 1, BugReportElement.SHORT_DESC.toString(), PROPERTY); + summaryText = new Text(textComposite, SWT.BORDER | SWT.SINGLE | SWT.WRAP); + summaryTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + + summaryTextData.horizontalSpan = 2; + summaryTextData.widthHint = 200; + summaryText.setLayoutData(summaryTextData); + summaryText.setText(nbm.getSummary()); + summaryText.addListener(SWT.Modify, this); + + // Description Text + Composite descriptionComposite = new Composite(attributesComposite, SWT.NONE); + + descriptionComposite.setLayout(attributesTitleLayout); + + GridData descriptionData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + descriptionData.horizontalSpan = 4; + descriptionData.grabExcessVerticalSpace = false; + descriptionComposite.setLayoutData(descriptionData); + newLayout(descriptionComposite, 4, "Description:", HEADER); + + // add the description text field + descriptionText = new Text(attributesComposite, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.WRAP); + + descriptionText.setFont(AbstractBugEditor.COMMENT_FONT); + GridData descriptionTextData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + descriptionTextData.horizontalSpan = 4; + descriptionTextData.widthHint = AbstractBugEditor.DESCRIPTION_WIDTH; + descriptionTextData.heightHint = AbstractBugEditor.DESCRIPTION_HEIGHT; + descriptionText.setLayoutData(descriptionTextData); + descriptionText.addListener(SWT.Modify, this); + + // serverButton = new Button(attributesComposite, SWT.RADIO); + // serverButton.setText("Submit bug report to the server."); + // GridData toServerButtonData = new + // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + // toServerButtonData.horizontalSpan = 4; + // serverButton.setLayoutData(toServerButtonData); + // serverButton.setSelection(true); + // + // offlineButton = new Button(attributesComposite, SWT.RADIO); + // offlineButton.setText("Save bug report offline."); + // GridData offlineButtonData = new + // GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + // offlineButtonData.horizontalSpan = 4; + // offlineButton.setLayoutData(offlineButtonData); + // offlineButton.setSelection(false); + + // if (wizard.fromDialog) + // offlineButton.setEnabled(false); + + setControl(attributesComposite); + return; + } + + // /** + // * @return <code>true</code> if the radio button to submit the bug to the + // * server is selected. + // */ + // public boolean serverSelected() { + // return (serverButton == null) ? false : serverButton.getSelection(); + // } + // + // /** + // * @return <code>true</code> if the radio button to save the bug offline + // * is selected. + // */ + // public boolean offlineSelected() { + // return (offlineButton == null) ? false : offlineButton.getSelection(); + // } + + /* + * The following are Bugzilla's: OS's All AIX Windows 95 Windows 98 Windows + * CE Windows Mobile 2003 Windows Mobile 2005 Windows ME Windows 2000 + * Windows NT Windows XP Windows 2003 Server Windows All MacOS X Linux + * Linux-GTK Linux-Motif HP-UX Neutrino QNX-Photon Solaris Solaris-GTK + * Solaris-Motif SymbianOS-Series 80 Unix All other + * + * The following are the platforsm in Bugzilla: All Macintosh PC Power PC + * Sun Other + * + * The following are Java's Archictures: [PA_RISC, ppc, sparc, x86, x86_64, + * ia64, ia64_32] + * + * The following are Java's OS's: [aix, hpux, linux, macosx, qnx, solaris, + * win32] + */ + /** + * Sets the OS and Platform for the new bug + * + * @param newBugModel + * The bug to set the options for + */ + public void setPlatformOptions(NewBugModel newBugModel) { + try { + // A Map from Java's OS and Platform to Buzilla's + Map<String, String> java2buzillaOSMap = new HashMap<String, String>(); + Map<String, String> java2buzillaPlatformMap = new HashMap<String, String>(); + + java2buzillaPlatformMap.put("x86", "PC"); + java2buzillaPlatformMap.put("x86_64", "PC"); + java2buzillaPlatformMap.put("ia64", "PC"); + java2buzillaPlatformMap.put("ia64_32", "PC"); + java2buzillaPlatformMap.put("sparc", "Sun"); + java2buzillaPlatformMap.put("ppc", "Power"); + + java2buzillaOSMap.put("aix", "AIX"); + java2buzillaOSMap.put("hpux", "HP-UX"); + java2buzillaOSMap.put("linux", "Linux"); + java2buzillaOSMap.put("macosx", "MacOS X"); + java2buzillaOSMap.put("qnx", "QNX-Photon"); + java2buzillaOSMap.put("solaris", "Solaris"); + java2buzillaOSMap.put("win32", "Windows All"); + + // Get OS Lookup Map + // Check that the result is in Values, if it is not, set it to other + Attribute opSysAttribute = newBugModel.getAttribute(BugReportElement.OP_SYS.toString()); + Attribute platformAttribute = newBugModel.getAttribute(BugReportElement.REP_PLATFORM.toString()); + + String OS = Platform.getOS(); + String platform = Platform.getOSArch(); + + String bugzillaOS = null; // Bugzilla String for OS + String bugzillaPlatform = null; // Bugzilla String for Platform + + if (java2buzillaOSMap != null && java2buzillaOSMap.containsKey(OS) && opSysAttribute != null + && opSysAttribute.getOptionValues() != null) { + bugzillaOS = java2buzillaOSMap.get(OS); + if (opSysAttribute != null && !opSysAttribute.getOptionValues().values().contains(bugzillaOS)) { + // If the OS we found is not in the list of available + // options, set bugzillaOS + // to null, and just use "other" + bugzillaOS = null; + } + } else { + // If we have a strangeOS, then just set buzillaOS to null, and + // use "other" + bugzillaOS = null; + } + + if (platform != null && java2buzillaPlatformMap.containsKey(platform)) { + bugzillaPlatform = java2buzillaPlatformMap.get(platform); + + if (platformAttribute != null + && !platformAttribute.getOptionValues().values().contains(bugzillaPlatform)) { + // If the platform we found is not int the list of available + // optinos, set the + // Bugzilla Platform to null, and juse use "other" + bugzillaPlatform = null; + } + } else { + // If we have a strange platform, then just set bugzillaPatforrm + // to null, and use "other" + bugzillaPlatform = null; + } + + // Set the OS and the Platform in the model + if (bugzillaOS != null && opSysAttribute != null) + opSysAttribute.setValue(bugzillaOS); + if (bugzillaPlatform != null && platformAttribute != null) + platformAttribute.setValue(bugzillaPlatform); + + } catch (Exception e) { + MylarStatusHandler.fail(e, "could not set platform options", false); + } + } + +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java new file mode 100644 index 000000000..d63e669bb --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/BugzillaProductPage.java @@ -0,0 +1,260 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.wizard; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +import javax.security.auth.login.LoginException; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaRepositoryUtil; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.core.NewBugModel; +import org.eclipse.mylar.internal.bugzilla.ui.BugzillaUiPlugin; +import org.eclipse.mylar.internal.tasklist.ui.views.TaskRepositoriesView; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; + +/** + * @author Shawn Minto + * + * The first page of the new bug wizard where the user chooses the bug's product + */ +public class BugzillaProductPage extends AbstractWizardListPage { + + private static final String NEW_BUGZILLA_TASK_ERROR_TITLE = "New Bugzilla Task Error"; + + private static final String DESCRIPTION = "Pick a product on which to enter a bug.\n" + + "Press the Update button if you do not see the desired product."; + + private static final String LABEL_UPDATE = "Update Products from Repository"; + + /** The list of products to submit a bug report for */ + static List<String> products = null; + + /** + * Reference to the bug wizard which created this page so we can create the + * second page + */ + NewBugzillaReportWizard bugWizard; + + /** + * String to hold previous product; determines if attribute option values + * need to be updated + */ + private String prevProduct; + + private final TaskRepository repository; + + /** + * Constructor for BugzillaProductPage + * + * @param workbench + * The instance of the workbench + * @param bugWiz + * The bug wizard which created this page + * @param repository + * The repository the data is coming from + */ + public BugzillaProductPage(IWorkbench workbench, NewBugzillaReportWizard bugWiz, TaskRepository repository) { + super("Page1", IBugzillaConstants.TITLE_NEW_BUG, DESCRIPTION, workbench); + this.bugWizard = bugWiz; + this.repository = repository; + setImageDescriptor(BugzillaUiPlugin.imageDescriptorFromPlugin("org.eclipse.mylar.bugzilla.ui", + "icons/wizban/bug-wizard.gif")); + } + + protected ProgressMonitorDialog monitorDialog = new ProgressMonitorDialog(BugzillaPlugin.getDefault() + .getWorkbench().getActiveWorkbenchWindow().getShell()); + + protected IPreferenceStore prefs = BugzillaPlugin.getDefault().getPreferenceStore(); + + @Override + public void createAdditionalControls(Composite parent) { + Button updateButton = new Button(parent, SWT.LEFT | SWT.PUSH); + updateButton.setText(LABEL_UPDATE); + + updateButton.setLayoutData(new GridData()); + + updateButton.addMouseListener(new MouseAdapter() { + + @Override + public void mouseUp(MouseEvent e) { + + monitorDialog.open(); + IProgressMonitor monitor = monitorDialog.getProgressMonitor(); + monitor.beginTask("Updating search options...", 55); + + try { + BugzillaRepositoryUtil.updateQueryOptions(repository, monitor); + + products = new ArrayList<String>(); + for (String product : BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT, + repository.getUrl())) { + products.add(product); + } + monitor.worked(1); + populateList(false); + } catch (LoginException exception) { + // we had a problem that seems to have been caused from bad + // login info + MessageDialog + .openError( + null, + "Login Error", + "Bugzilla could not log you in to get the information you requested since login name or password is incorrect.\nPlease check your settings in the bugzilla preferences. "); + BugzillaPlugin.log(exception); + } catch (IOException exception) { + MessageDialog + .openError( + null, + "Connection Error","\nPlease check your settings in the bugzilla preferences. "); + } finally { + monitor.done(); + monitorDialog.close(); + } + } + }); + } + + private void initProducts() { + // try to get the list of products from the server + if (!bugWizard.model.hasParsedProducts()) { + String repositoryUrl = repository.getUrl(); + try { + String[] storedProducts = BugzillaRepositoryUtil.getQueryOptions(IBugzillaConstants.VALUES_PRODUCT, + repositoryUrl); + if (storedProducts.length > 0) { + products = Arrays.asList(storedProducts); + } else { + products = BugzillaRepositoryUtil.getProductList(repository); + } + bugWizard.model.setConnected(true); + bugWizard.model.setParsedProductsStatus(true); + + } catch (Exception e) { + bugWizard.model.setConnected(false); + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + MessageDialog + .openError(Display.getDefault().getActiveShell(), NEW_BUGZILLA_TASK_ERROR_TITLE, + "Unable to get products. Ensure proper repository configuration in "+TaskRepositoriesView.NAME+"."); + } + }); + } + } + } + + /** + * Populates the listBox with all available products. + * + * @param read + */ + @Override + protected void populateList(boolean init) { + if (init) { + initProducts(); + } + + if (products != null) { + listBox.removeAll(); + Iterator<String> itr = products.iterator(); + + while (itr.hasNext()) { + String prod = itr.next(); + listBox.add(prod); + } + } + listBox.setFocus(); + } + + @Override + public void handleEvent(Event event) { + handleEventHelper(event, "You must select a product"); + } + + @Override + public IWizardPage getNextPage() { + // save the product information to the model + saveDataToModel(); + NewBugzillaReportWizard wizard = (NewBugzillaReportWizard) getWizard(); + NewBugModel model = wizard.model; + + // try to get the attributes from the bugzilla server + try { + //if (prevProduct != null && !prevProduct.equals(model.getProduct())) { + //!model.hasParsedAttributes() || + String serverUrl = repository.getUrl(); +// if (model.isConnected()) { +// BugzillaRepositoryUtil.setupNewBugAttributes(serverUrl, model, false); +// } else { + + BugzillaRepositoryUtil.setupBugAttributes(serverUrl, model); +// } + model.setParsedAttributesStatus(true); + if (prevProduct == null) { + bugWizard.setAttributePage(new WizardAttributesPage(workbench)); + bugWizard.addPage(bugWizard.getAttributePage()); + } else { + // selected product has changed + // will createControl again with new attributes in model + bugWizard.getAttributePage().setControl(null); + } + //} + } catch (final Exception e) { + e.printStackTrace(); + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + MessageDialog.openError(Display.getDefault().getActiveShell(), NEW_BUGZILLA_TASK_ERROR_TITLE, e + .getLocalizedMessage() + + " Ensure proper repository configuration in " + TaskRepositoriesView.NAME + "."); + } + }); +// MylarStatusHandler.fail(e, e.getLocalizedMessage()+" Ensure proper repository configuration in "+TaskRepositoriesView.NAME+".", true); +// BugzillaPlugin.getDefault().logAndShowExceptionDetailsDialog(e, "occurred.", "Bugzilla Error"); + } + return super.getNextPage(); + } + + /** + * Save the currently selected product to the model when next is clicked + */ + private void saveDataToModel() { + // Gets the model + NewBugModel model = bugWizard.model; + + prevProduct = model.getProduct(); + model.setProduct((listBox.getSelection())[0]); + } + + @Override + public String getTableName() { + return "Product:"; + } +} diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java new file mode 100644 index 000000000..99526c481 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/wizard/NewBugzillaReportWizard.java @@ -0,0 +1,128 @@ +/******************************************************************************* + * Copyright (c) 2003 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylar.internal.bugzilla.ui.wizard; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; +import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryConnector; +import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTask; +import org.eclipse.mylar.internal.tasklist.ui.TaskUiUtil; +import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.mylar.provisional.tasklist.TaskCategory; +import org.eclipse.mylar.provisional.tasklist.TaskRepository; + +/** + * @author Mik Kersten + */ +public class NewBugzillaReportWizard extends AbstractBugWizard { + + private static final String TITLE = "New Bugzilla Task"; + + /** + * The wizard page where the attributes are selected and the bug is + * submitted + */ + private WizardAttributesPage attributePage; + + private final TaskRepository repository; + + public NewBugzillaReportWizard(TaskRepository repository) { + this(false, repository); + super.setWindowTitle(TITLE); + } + + public NewBugzillaReportWizard(boolean fromDialog, TaskRepository repository) { + super(repository); + this.repository = repository; + this.fromDialog = fromDialog; + } + + @Override + public void addPages() { + super.addPages(); + addPage(new BugzillaProductPage(workbenchInstance, this, repository)); + } + + @Override + public boolean canFinish() { + return attributeCompleted; + } + + @Override + protected void saveBugOffline() { + BugzillaRepositoryConnector client = (BugzillaRepositoryConnector)MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); + client.saveOffline(model, true); + } + + @Override + protected AbstractBugzillaWizardPage getWizardDataPage() { + return attributePage; + } + + public WizardAttributesPage getAttributePage() { + return attributePage; + } + + public void setAttributePage(WizardAttributesPage attributePage) { + this.attributePage = attributePage; + } + + @Override + public boolean performFinish() { + super.performFinish(); + String bugIdString = this.getId(); + int bugId = -1; + boolean validId = false; + try { + if (bugIdString != null) { + bugId = Integer.parseInt(bugIdString); + validId = true; + } + } catch (NumberFormatException nfe) { + // ignore + } + if (!validId) { + MessageDialog.openError(null, IBugzillaConstants.TITLE_MESSAGE_DIALOG, + "Could not create bug id, no valid id"); + return false; + } + + BugzillaTask newTask = new BugzillaTask(AbstractRepositoryTask.getHandle(repository.getUrl(), + bugId), "<bugzilla info>", true); + Object selectedObject = null; + if (TaskListView.getDefault() != null) + selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection()) + .getFirstElement(); + +// MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask); + + if (selectedObject instanceof TaskCategory) { + MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, ((TaskCategory) selectedObject)); + } else { + MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(newTask, MylarTaskListPlugin.getTaskListManager().getTaskList().getRootCategory()); + } + + AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryConnector(BugzillaPlugin.REPOSITORY_KIND); +// client.addTaskToArchive(newTask); + TaskUiUtil.openEditor(newTask, true); + + if (!newTask.isDownloaded()) { + client.synchronize(newTask, true, null); + } + + return true; + } +} diff --git a/org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch b/org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch new file mode 100644 index 000000000..6ae599b1f --- /dev/null +++ b/org.eclipse.mylyn.help.ui/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType"> +<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/> +<mapAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS"/> +<stringAttribute key="org.eclipse.ui.externaltools.ATTR_DISABLED_BUILDER" value="org.eclipse.jdt.core.javabuilder"/> +<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/> +</launchConfiguration> diff --git a/org.eclipse.mylyn.help.ui/.project b/org.eclipse.mylyn.help.ui/.project new file mode 100644 index 000000000..240934ada --- /dev/null +++ b/org.eclipse.mylyn.help.ui/.project @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.mylar.doc</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs b/org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 000000000..b51ee80ea --- /dev/null +++ b/org.eclipse.mylyn.help.ui/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#Fri Jun 02 15:30:45 PDT 2006 +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=true diff --git a/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF new file mode 100644 index 000000000..264ee8811 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/META-INF/MANIFEST.MF @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Mylar Documentation Plugin +Bundle-SymbolicName: org.eclipse.mylar.doc; singleton:=true +Bundle-Version: 0.5.3 +Bundle-Localization: plugin +Eclipse-AutoStart: true +Bundle-Vendor: Eclipse.org diff --git a/org.eclipse.mylyn.help.ui/about.html b/org.eclipse.mylyn.help.ui/about.html new file mode 100644 index 000000000..1aeb16b5f --- /dev/null +++ b/org.eclipse.mylyn.help.ui/about.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<html> +<head> +<title>About</title> +<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1"> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>May 2, 2006</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/contributing.html b/org.eclipse.mylyn.help.ui/doc/contributing.html new file mode 100644 index 000000000..83a26ee1f --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/contributing.html @@ -0,0 +1,176 @@ +<html> + <head> + <title> + Mylar FAQ + </title> + </head> + <body> + <center><h1>Mylar Contributor Reference</h1></center> + <p>Those interested in contributing should start out by emailing +<a href="mailto:mylar-dev@eclipse.org">mylar-dev@eclipse.org</a> in order to get +an idea of the current priorities. 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>. </p> + <ul> + <li><a href="#contributing-intro">Introduction</a></li> + <li><a href="#contributing-setup">Workspace setup</a></li> + <li><a href="#bootstrap">Working bootstrapped</a></li> + <li><a href="#contributing-patches">Contributing patches</li> +<!-- <li>Building</li>--> + </a></li> + <li><a href="#bootstrap">Building the JIRA Connector</a></li> + <li><a href="#building-dist">Building a distribution</a></li> + </ul><hr width="50%"> + <h3> <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>. + 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 <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). There should be no errors or warnings.</li> + <li>Run org.eclipse.mylar.tests.AllTests as a JUnit Plug-in Test, with + assertions enabled. All tests should pass and there should be no + console output once you have done the following:<ul> + <li>Add the following to the test configuration under Arguments -> VM + Arguments: -enableassertions -Xmx384M</li> + <li>Add a <b>credentials.properties</b> file to + org.eclipse.mylar.bugzilla.tests, and define "username: xxx" and + "password: yyy" in it. Email mylar-dev@ecipse.org for a username and + password.</li> + </ul> + </li> + </ul> + <hr> + <h3><a name="connector-jira">JIRA Connector</a></h3> + <ul> + <li>Get the latest <a href="http://subclipse.tigris.org/download.html"> + Subclipse</a> plug-in, e.g. from the following update site: + subclipse.tigris.org/update_1.0.x</li> + <li>Set up a Subversion repository for + <a href="http://jira-dashboard.tigris.org/">JIRA Dashboard</a> (see the + <a href="http://jira-dashboard.tigris.org/servlets/ProjectSource">JIRA + Dahsboard doc</a> for troubleshooting):<ul> + <li>username: <code>guest</code> </li> + <li>password: <blank></li> + <li>repository: + <a href="http://jira-dashboard.tigris.org/svn/jira-dashboard/trunk"> + http://jira-dashboard.tigris.org/svn/jira-dashboard/trunk</a></li> + </ul> + </li> + <li>Check out the JIRA Dashboard Core featureres:<ul> + <li>org.tigris.jira.core</li> + <li>org.tigris.jira.core.soap</li> + <li>org.tigris.jira.core-feature</li> + </ul> + </li> + <li>Create a working set that excludes <i>org.tigris.jira</i> plug-ins + so that you have no warnings in the Problems list</li> + <li>Note that the JIRA connector has it's own test suite: <i> + org.eclipse.mylar.jira.tests.AllJiraTests</i></li> + </ul> + <hr> +<h3><a name="bootstrap">Working bootsrapped</a> </h3> +<p>To make eating your own dog food easier and avoid having to update to dev +builds Mylar committers work bootstrapped:</p> + <ul> + <li>Set up a fresh workspace launched from an Eclipse that does not have + Mylar installed, and check out Mylar into + it.</li> + <li>Create a new Launch Configuration, point it at your workspace, + and work in that. The launching workspace will typically use very + little memory, but if you have a memory constrained machine you can kill + its java process.</li> + <li>Whenever your changes make it into HEAD synch up your launching + workspace and restart. You could conceivably </li> + </ul> + <hr> +<h3><a name="contributing-patches">Contributing patches</a> </h3> + <p>All contributions to Mylar including patches should be made by using + Mylar in order to ensure that we + <a href="http://en.wikipedia.org/wiki/Eat_one's_own_dog_food">eat our our + own dog food</a>. 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. 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. </li> + <li>Synchronize often to ensure you have the latest code. 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 -> Preferences -> Java -> Code Style -> Formatter. + Format code using Eclipse's formatter (Ctrl+Shift+F) + and ensure that no have been added.</li> + <li>Ensure that there is no console output. 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 + -> Create Patch, and make the file suffix ".txt".</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 -> Overview -> change version + number to current date (e.g. 0.4.7.v20060125-0800)<ul> + <li>On Plug-ins tab -> Versions... -> 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> -> <i>Switch to Another Branch...</i>, then <i>Refresh</i> the + <i>Branches</i> + and select <b>e_3_1 </b></li> + <li>The list of files that should not be overwritten is in: + org.eclipse.mylar-site/merge.text</li> + </ul> + <p>Deploying:</p> + <ul> + <li>Instructions are in org.eclipse.mylar-site/release.txt</li> + </ul> + <p> </p> +</body></html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/dev/changes.html b/org.eclipse.mylyn.help.ui/doc/dev/changes.html new file mode 100644 index 000000000..bea7d91d3 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/dev/changes.html @@ -0,0 +1,12395 @@ +<HTML> +<HEAD> + <TITLE>Mylar Release Notes</TITLE> + + <style> +<!-- +div.Section1 + {page:Section1;} +a:link + {color:blue; + text-decoration:underline;} + div.MsoNormal + {margin:0in; + margin-bottom:.0001pt; + font-size:12.0pt; + font-family:"Times New Roman"; + color:windowtext;} +--> +</style> + +</HEAD> +<BODY LINK="#4756AC" VLINK="#60657B" BGCOLOR="#FFFFFF"> + + <h2>Release Notes</h2> + <div class="Section1"> + <h3>Mylar 0.3.9 released 2005-09-26</h3> + <p class="MsoPlainText"><font face="Tahoma" size="2"> + <span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">Mylar 0.3.9.1 is + now available, includes numerous bug fixes, and support for Eclipse + 3.2M2. 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. + But fortunately it was possible to coerce the update site allow you + to select either the 3.1 or 3.2 based feature. 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. 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> </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 & noteworthy snippets are + below). These features are available for those users who update and + are in Phase 2 of the user study (under Preferences -> Mylar -> User + Study must have over 25000 events). 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>. The focus for this week is refactoring + awareness and continuing to de-couple the UBC study. Special thanks + goes out to Brian de Alwis for identifying some important Linux/GTK + issues. </span></font><b><font face="Tahoma" size="2"> + <span style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> + </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 "edit + highlighters" button to "choose highlighter" 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 + "remove from this category" 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 + "new" 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> </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. The most notable changes are synchronization status + for Bugzilla (pasted from the New & Noteworthy below) and a move to + extension points for the Mylar bridges. 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 + "new" 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">"link + with editor" 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> </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. This week’s focus will be tuning + Active Search, Bugzilla and task list enhancements, and + infrastructure improvements including making the bridges + extension-point based. 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. Here + is the + <a title="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=Mylar&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"> + </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"> + </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"> + </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"> + </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"> + </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"> + </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"> + 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"> + "unfiltered" 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> </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. 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 + "unsure" 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 + "Collapse All" 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 "Make less interesting" 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 + "download failed" 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> </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. Note + that due to vacation schedules this was a 3 week cycle and not our + usual 1 week cycle. 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. 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">"glasses" + 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> </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. Most of the key bugs have been addressed, and + we’re now focusing on usability enhancements and refinements. We + also worked on Active Search, but that needs considerably more + effort and won’t be release until mid or late next month. 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">"close + all editors" 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> </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. 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">"close + all editors" 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 "About" 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 "submit" 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 " + refresh products" 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 + "create bugzilla report" action to task list </span></font> + </td> + </tr> + </table> + </div> + <h3> </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> </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. 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. 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. All reports marked as P3 should be considered + when we schedule the following week’s tasks. For the duration of the + study we’ll rev the minor-minor version number each Friday, making those + updates available to study subjects. 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 "search in task 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=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> </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. Aware of Java, plugin.xml, Ant build.xml, and Bugzilla + structure. Active search prototype. Task + list, generic interest decorators, sorters, filters. + </span></font> + </p> + <p> + </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. 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 Binary files differnew file mode 100644 index 000000000..1ece91b2c --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/dev/dependencies.vsd diff --git a/org.eclipse.mylyn.help.ui/doc/dev/index.html b/org.eclipse.mylyn.help.ui/doc/dev/index.html new file mode 100644 index 000000000..b2832954a --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/dev/index.html @@ -0,0 +1,20 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> +<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." > + <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <meta http-equiv="Content-Style-Type" content="text/css"> + <title> + Mylar Tools + </title> + </head> + <body> + <h1> + Developer Documentation</h1> + <p>The latest developer documentation is at: + <a href="http://eclipse.org/mylar/dev.html"> + http://eclipse.org/mylar/dev.html</a> </p> + + </body> +</html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/dev/model.vsd b/org.eclipse.mylyn.help.ui/doc/dev/model.vsd Binary files differnew file mode 100644 index 000000000..168c5f186 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/dev/model.vsd diff --git a/org.eclipse.mylyn.help.ui/doc/dev/plan.html b/org.eclipse.mylyn.help.ui/doc/dev/plan.html new file mode 100644 index 000000000..69bdef96f --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/dev/plan.html @@ -0,0 +1,371 @@ +<html> + +<head> +<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> +<title>April 2006</title> +</head> + +<body> + + <p>The following is a tentative plan for Mylar releases up to 1.0.0. Current priorities are represented by the <a href="bugs.php"> + open bugzilla reports</a>. + </p> + + <table border="0" cellspacing="0" cellpadding="0" align="center"> + <tr> + + <td height="18" align="right"></td> + <td height="18" align="center"> + </td> + <td align="center" height="18"></td> + <td height="18" align="center"></td> + <td height="18" align="center">Eclipse</td> + <td height="18" align="center"></td> + <td align="center" height="18">Mylar</td> + <td height="18" align="center"></td> + <td align="center">Planned Features</td> + <td height="18" align="center"></td> + <td align="center">Planned API*</td> + </tr> + <tr> + + <td height="18" align="right"><b>April </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> </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"> </td> + <td height="18"> 3.2M6</td> + <td height="18"> </td> + <td align="right" height="18"> 0.5.0</td> + <td height="18"> </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"> </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 </b></td> + <td height="18"> + <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td align="right" height="18"></td> + <td height="18"></td> + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + <td height="18"></td> + + <td align="right" height="18"></td> + <td height="18"></td> + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td align="right" height="18"></td> + + <td height="18"></td> + + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18">19</td> + + <td height="18"></td> + + <td height="18">3.2RC4</td> + + <td height="18"></td> + + <td align="right" height="18">0.5.2</td> + + <td height="18"></td> + + <td rowspan="4" align="left" valign="top">Tasks: generic attributes + in task list<br> + Context: active search improvements, local context, monitor + improvements</td> + + <td height="18"></td> + + <td rowspan="4" align="left" valign="top">Changes to ITask hierarchy</td> + + </tr> + + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td align="right" height="18"> </td> + <td height="18"></td> + </tr> + + <tr> + + <td height="18" align="right"><b>June </b></td> + <td height="18"> + <img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_l.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td align="right" height="18"></td> + <td height="18"></td> + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + <td height="18"></td> + + <td align="right" height="18"></td> + <td height="18"></td> + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18">9</td> + + <td height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td align="right" height="18">0.5.3</td> + + <td height="18"></td> + + <td rowspan="3" align="left" valign="top">Tasks: common editor<br> + Context: Apply Mylar to debug views</td> + + <td height="18"></td> + + <td rowspan="3" align="left" valign="top">Monitor API (provisional)</td> + + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td align="right" height="18"></td> + + <td height="18"></td> + + </tr> + <tr> + <td height="18" align="right"></td> + <td height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/tbar_r.gif" width="24" height="18"></td> + <td align="right" height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td height="18"></td> + <td align="right" height="18"> </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"> 0.6.0</td> + <td height="18"></td> + <td align="left" valign="top" rowspan="2">Previously experimental features + finalized, UI and performance tuning, docs</td> + <td height="18"></td> + <td align="left" valign="top">Tasks API (provisional)</td> + </tr> + <tr> + <td height="18" align="right"></td> + <td align="center" height="18"><img src="http://www.eclipse.org/mylar/doc/images/dev/gray.gif" width="2" height="18"></td> + <td align="right" height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + + <td align="right" height="18"></td> + + <td height="18"></td> + + <td height="18"></td> + <td align="left" valign="top"> </td> + </tr> + <tr> + + <td height="18" align="right"><b>Sept </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"> </td> + + <td height="18"></td> + + <td align="left" valign="top"> </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"> 0.7.0</td> + <td height="18"></td> + <td>Mylar context model revision</td> + + <td height="18"></td> + + <td>Context API (provisional)</td> + </tr> + <tr> + + <td height="18" align="right"><b>2007 </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"> </td> + + <td height="18"></td> + + <td align="left" valign="top"> </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"> 1.0.0</td> + <td height="18"></td> + <td>Tools project quality</td> + + <td height="18"></td> + + <td>Meet Eclipse API contract</td> + </tr> + + </table> +<p>* See the +<a href="http://www.eclipse.org/mylar/doc/devref.php#extending-overview"> +Contributor Reference</a> for the extensibility overview. </p> + <p><i>Last updated: 2005-04-03</i></p> +</body> + +</html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/faq.html b/org.eclipse.mylyn.help.ui/doc/faq.html new file mode 100644 index 000000000..3538480f3 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/faq.html @@ -0,0 +1,486 @@ +<html> + <head> + <title> + Mylar FAQ + </title> + </head> + <body> + <div align=center><h1>Mylar Frequently Asked Questions</h1></div> + <p><b>Setup</b></p> + <ul> + <li><a href="#configuration-eclipse">Recommended configuration</a></li> + <li><a href="#install">Install troubleshooting</a></li> + <li><a href="#install-linux">Installing on Linux</a> + </li> + <li><a href="#install-macos">Installing on MacOS</a></li> + <li><a href="#uninstall">Uninstall troubleshooting</a></li> + <li><a href="#tasklist-backup">Task backup and restore</a></li> + </ul> + <p><b>Integration</b></p> +<ul> + <li><a href="#performance-summary">Performance profile</a></li> + <li><a href="#subversion-clients">Subversion limitations</a></li> +</ul> + <p><b>Working with Context</b></p> +<ul> + <li><a href="#context-ui-config">Which Focused UI features can I turn off?</a></li> +</ul> +<p><b>Tasks and Repository Connectors</b></p> + <ul> + <li><a href="#repositories-unsupported">What if Mylar doesn't support my task/bug/issue tracker?</a></li> + <li><a href="#upgrading-repositories">How do I upgrade to multiple task repository support?</a> + </li> + <li><a href="#versions-repositories">Why is only one task appearing in Bugzilla queries?</a> + </li> + <li><a href="#repositories-jira-config">Is there any configuration + needed to make Mylar work with my JIRA repository?</a></li> + <li><a href="#eclipse-views-tasks">How does the Mylar Task List relate to the Eclipse Tasks view?</a></li> + <li><a href="#repositories-connectivity">Connectivity and proxy servers</a></li> + </ul> +<p><b>Java Development</b></p> + <ul> + <li><a href="#content-assist">Content assist troubleshooting</a></li> + <li><a href="#filtering-declarations">How do I stop declarations from showing up in the Package Explorer?</a></li> + <li><a href="#active-search-empty">Why does nothing show up in the Active Search or Active Hierarchy?</a></li> + </ul> + + <p><b>Key Limitations </b></p> + <ul> + <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106678">Bug 106678</a> + The Package Explorer hierarchical layout is not supported properly yet and + will show uninteresting elements when enabled.</li> + <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=102663">Bug + 102663</a> Multiple workbench windows are not supported and Mylar may + not capture context correctly if you have more than one window open.</li> + </ul> + <p> </p> + + + + <hr> +<h3><a name="configuration-eclipse">Recommended configuration</a></h3> + <p>Recommendations for Mylar 0.5.0:</p> + <ul> + <li>Package Explorer<ul> + <li>Use flat layout in the Package Explorer (local pull down -> <i>Layout</i> + -> <i>Flat</i>). Hierarchical layout is not supported.</li> + <li>Link the Package Explorer with the editor (toolbar -> <i>Link with + Editor</i>). With Mylar applied this won't cause the jumping around + problems it typically does.</li> + <li>Deselect the Referenced Libraries filter (local pull down -> <i>Filters</i> + -> <i>Referenced Libraries</i>). With Mylar applied libraries won't blow + up the tree.</li> + <li>Leave the <i>General</i> -> <i>Appearance </i>-> <i>Java Type Indicator + </i>off. + Since the type under the Java file is visible when Mylar is visible when + Mylar is applied this information is redundant.</li> + </ul> + </li> + <li>Editors<ul> + <li>Turn comment folding on to reduce clutter when using auto folding + (<i>Preferences</i> -> <i>Java </i>-> <i>Editor </i>-> <i>Folding</i>). </li> + <li>Turn off or increase the number of editors to leave open (<i>Preferences</i> -> + <i>General </i>-> <i>Editors </i>-> <i>Number of opened editors before closing</i>). Since + Mylar will manage the open editors with task activation, this number can + be set higher or automatic closing disabled entirely.</li> + <li>If auto folding is used, the Outline view can be closed or made a + fast view</li> + </ul> + </li> + <li>Views<ul> + <li>Outline: can keep closed for Java development, since the Package Explorer and folded signatures should + provide enough context, and the in-place Outline (Ctrl+O) can be used + when needed.</li> + </ul> + </li> + <li>Team<ul> + <li>Set Synchronize view to Change Sets mode (on 3.2: third toolbar + button: select <i>Change Sets</i>; on 3.1: toggle toolbar button: + <i>Show Change + Sets</i>)</li> + <li>Use graphical CVS decorators only (<i>Preferences -> Team -> CVS -> Label Decorations + -> Text Decorations</i> -> clear all but Project; <i>Icon Decorations</i> -> enable + all). This helps reduce visual clutter.</li> + </ul> + </li> + </ul> + <hr> +<h3> </h3> + <h3><a name="performance-summary">Performance profile</a></h3> +<p>The goal is for Mylar to have no noticeable effect on Eclipse's speed or +memory usage, you do not need to increase the amount of memory Eclipse runs with +to use Mylar, and any performance issue should be +<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Mylar">reported as +a bug</a>. The current performance profile is:</p> +<ol> + <li>Mylar only runs if a task is active, and has no impact on Eclipse if no + task is active.</li> + <li>Task context models have negligible memory overhead. </li> + <li>When a task is active, additional view refresh is required to update the + views based on interest model changes. This should not be noticeable + on Windows where refresh is very quick, but could be more noticeable on + other platforms.</li> + <li>The time to activate a task context is dominated by the time it takes + Eclipse to open the editors in the context. You can set the preference + for how many editors to open in the Mylar preference page (e.g. setting to 1 + will dramatically reduce activation time, but also remove the benefit of + having open editors correspond to the task context). You can also turn off + editor management entirely in the Mylar Tasks view pull-down.</li> + <li>Eclipse startup is slowed down by (4) if a task is active when Eclipse + is shut down.</li> + <li>The low priority background searches that the Active Search view runs + can be noticeable on slower machines.</li> +</ol> + <hr> + <h3> </h3> + <h3><a name="install">Install Troubleshooting</a></h3> + <p>For supported platforms and known limitations please see + <a href="http://eclipse.org/mylar/dl.php">http://eclipse.org/mylar/dl.php</a> + Install/update failures can include:</p> +<p><b>Update manager failure</b>: the update manager failed because it could not +access the update site, or because it got confused about the configuration state +of your Eclipse. In this case you may see update errors like: <tt>org.eclipse.update.internal.core.SiteFilePackedPluginContentConsumer</tt>. +First try updating again to +see if the feature is accessible. If you are trying to update the JIRA +connector you can also try de-selecting that feature in case the Tigris.org +update site is not accessible. Using use "Search new features.." when +installing can help avoid this problem. If that does not work see the +feature configuration troubleshooting below.</p><b>Incompatible VM (e.g. JDK 1.4)</b>: in this case you'll errors like the following in your log file. To +check JDK version that Eclipse was launched with to to Help -> About Eclipse SDK +-> Configuration Details and verify that the java.vm.version is 1.5. Mac +users should refer to the last comment on +<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=116347#c4">bug 1163477</a> +for instructions on how to change the 1.4 default.<p> +<tt> Root exception: + java.lang.UnsupportedClassVersionError: <br> + org/eclipse/mylar/tasklist/MylarTasklistPlugin + (Unsupported major.minor version 49.0) +</tt> +</p> +<p> +If you are using JDK 1.6 on Eclipse 3.1 (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=140955">not +recommended</a>) you must add the following line to your config.ini file: <tt> +<br> + org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1,JRE-1.1,J2SE-1.2,<br> + J2SE-1.3,J2SE-1.4,J2SE-1.5,JavaSE-1.6</p><p> +</tt> +<b>Incompatible version of Eclipse</b>: separate versions and update sites exist +<a href="http://eclipse.org/mylar/dl.php">for Eclipse 3.1 and for the latest 3.2</a>), in which case you may see errors like the following in your +<workspace>/.metadata/.log file or in a Mylar view:</p> +<p> +<tt> java.lang.NoSuchMethodError: + org.eclipse.ui.internal.dialogs.FilteredTree.getFilterControl()<br> + The activator org.eclipse.mylar.java.MylarJavaPlugin for bundle org.eclipse.mylar.java is invalid +</tt> +</p> +<p><b>Mylar feature configuration problem</b>: if the above do not address the +issue, the easiest thing to do is +uninstall any old versions and update to the latest Mylar. Your tasks won't be +lost, by default they are stored in the <workspace>/.mylar/tasklist.xml file +which will be read next time Mylar starts correctly. First, uninstall the old version of Mylar using Help -> +Software Updates -> Manage Configuration. You need to first Disable on all +Mylar features by right-clicking them, allow Eclipse to restart after the last +is disabled, and after restart. Then ensure that the 3rd toolbar button is +pressed (figure below) so that you see the disabled features to uninstall, and +Uninstall them using the popup menu. If you don't uninstall the the Update +Manager will think that you have the latest and tell you that there are no +updates. Note that manually removing the plug-ins +and features can lead to Eclipse configuration errors. After uninstalling update Eclipse +by adding the correct update site specified at: + <a href="http://eclipse.org/mylar/dl.php">http://eclipse.org/mylar/dl.php</a>, +and after that automatically or manually updating will install the correct +version.</p> +<p> +<img border="0" src="images/faq/eclipse-manage-configuration.gif" width="679" height="335"></p> + <hr> + <p> + </p> + + +<h3><a name="install-linux">Installing on Linux</a></h3> + <p>Mylar Task Management features make user of Eclipse's Internal Browser + which may require additional install steps. The following have been + verified on Fedora Core.</p> + <ol> + <li>Run Mozilla (not firefox) to confirm that it works.</li> + <li>Confirm the location of your Mozilla install ( /usr/lib/mozilla-1.7.12 + on our test box)</li> + <li>Set necessary environment variables in <home_directory>/.bashrc, + adding the following 3 lines<br> + MOZILLA_FIVE_HOME=/usr/lib/mozilla-1.7.12<br> + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MOZILLA_FIVE_HOME<br> + export MOZILLA_FIVE_HOME LD_LIBRARY_PATH </li> + <li>Log out and log in again (or type "source .bashrc" at the prompt)</li> + <li>Start Eclipse and test the internal web browser</li> + </ol> + <p>If you are get exceptions indicating missing libraries, check that the + paths are accurate and that you in fact have the libraries requested. For + example, on our test box a library was still missing after these steps. The + libstdc++.so.5 was being reported as missing. To solve this problem, find an + rpm online that will install the missing legacy library. In our case we + found necessary rpm (compat-libstdc++-33-3.2.3-47.fc4.i386.rpm) on + <a title="http://www.rpmfind.net/" href="http://www.rpmfind.net">rpmfind.net</a> + using their search facility. References: + <a title="http://www.eclipse.org/swt/faq.php" href="http://www.eclipse.org/swt/faq.php"> + SWT FAQ</a></p> + <hr> + + +<h3> </h3> +<h3><a name="install-macos">Installing on MacOS</a></h3> + <p>If you see errors like the following it may be due to Xerces missing from + the Mac JDK so you may need to add it to your default classpath. + Please refer to and comment on + <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=144287">bug 144287</a> + if you see this problem.</p> +<blockquote> + <p>Could not create Bugzilla editor input<br> + java.io.IOException: SAX2 driver class org.apache.xerces.parsers.SAXParser + not found</p> +</blockquote> + <p>To ensure that you are using the 1.5 VM refer to the last comment on +<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=116347#c4">bug 1163477</a> +for instructions on how to change the 1.4 default.</p> + <hr> + <p> </p> + <h3><a name="uninstall">Uninstall Troubleshooting</a></h3> + <p> +On Eclipse 3.1, you may need to reset the Java editor to be default for ".java" +again via: <i>Preferences -> General -> Editors -> File Associations +</i> </p> + <p> +On Eclipse 3.2, you may need to ensure that the "Java Completions" and "Java +Types" proposal categories are included in the default proposals via: +<i>Preferences -> Java -> Editor -> Content Assist -> Advanced</i> (<a href="#content-assist-duplication">see +screenshot</a>) <i>-> Restore Defaults</i></p> + <hr> + <p> + </p> + + +<h3><a name="tasklist-backup">Task backup and restore</a> </h3> +<p>The task list is <b>backed up by default</b> in the + <workspace>/.mylar/backup directory, with rolling backups set according to + the schedule in <i>Preferences -> Mylar -> Task List -> Backup</i>. + Use <i>File -> Import -> Mylar Task Data</i> to restore from one of the + archive zips.</p> +<p>If the Task List is blank Mylar failed to <a href="#install-failure">install or update</a>, +or there was a problem reading the task list. By default Mylar +keeps your task list in <i><workspace>/.mylar/tasklist.xml</i>. If +you move workspaces, and have not changed the Mylar data directory via the Task +List preference page, the new location will be used when Eclipse restarts (hit +Restore Defaults on that page to copy tasks back to the default location). +If your tasks disappear due to to a bug you can check the .mylar folder for a <i>tasklist-backup.xml</i> +file, which will contain the previously-saved list. </p> +<p>You can also back up your task list and context data manually or periodically use + <i>File -> + Import/Export -> Mylar Task Data</i>. Note that when restoring + an previous tasklist.xml file you should first close Eclipse.</p> + <p> + <img border="0" src="images/faq/tasklist-backup.gif" width="525" height="310"></p> + + <hr> + + +<h3> </h3> +<h3><a name="context-ui-config">Which Focused UI features can I turn off?</a></h3> + <p> + All of them. When no task is active neither are any of Mylar's + features. When working with task contexts Mylar's Focused UI features + are all optional and in general configurable. The following table + summarizes how the key features can be toggled. Additional + configuration options are under the Mylar and General -> Appearance + preference pages.</p> +<table border="1" style="border-collapse: collapse" width="100%" id="table2" cellpadding="4" bordercolor="#FFFFFF"> + <tr> + <td bgcolor="#595791" width="17%" align="center"><font color="#FFFFFF"> + <b>UI Mechanism</b></font></td> + <td bgcolor="#595791" width="20%" align="center"><font color="#FFFFFF"> + <b>Example/description</b></font></td> + <td bgcolor="#595791" width="*" align="center"><font color="#FFFFFF"><b> + Toggle using</b></font></td> + </tr> + <tr> + <td bgcolor="#FAF7FB">Interest filtering</td> + <td bgcolor="#FAF7FB" align="left"> + Package Explorer</td> + <td bgcolor="#FAF7FB">Apply Mylar button on view toolbar</td> + </tr> + <tr> + <td bgcolor="#FAF7FB">Interest decoration</td> + <td bgcolor="#FAF7FB" align="left"> + Bolding of landmark elements</td> + <td bgcolor="#FAF7FB">Preferences -> General -> Appearance -> Label + Decoration</td> + </tr> + <tr> + <td bgcolor="#FAF7FB">Content assist</td> + <td bgcolor="#FAF7FB" align="left"> + Ranking of interesting elements</td> + <td bgcolor="#FAF7FB">Eclipse 3.2: Java -> Editor -> Content Assist -> + Work in Progress -> turn off Mylar, turn on Java<br> + Eclipse 3.1: set the Java editor to be default for .java, not the Mylar + Java editor</td> + </tr> + <tr> + <td bgcolor="#FAF7FB">Active change sets</td> + <td bgcolor="#FAF7FB" align="left"> + Grouping of changes by tasks</td> + <td bgcolor="#FAF7FB">Preferences -> Mylar -> Team</td> + </tr> + <tr> + <td bgcolor="#FAF7FB">Editor management</td> + <td bgcolor="#FAF7FB" align="left"> + Auto opening/closing of editors</td> + <td bgcolor="#FAF7FB">Preferences -> Mylar -> Editor Management</td> + </tr> + <tr> + <td bgcolor="#FAF7FB">Active views</td> + <td bgcolor="#FAF7FB" align="left"> + Active Search and Hierarchy</td> + <td bgcolor="#FAF7FB">Only on if view is active</td> + </tr> +</table> + + <hr> + + <h3> </h3> +<h3><a name="repositories-unsupported">What if Mylar doesn't support my task/bug/issue tracker?</a></h3> +<p>First, do a search of the <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=anywordssubstr&short_desc=%5Bconnector%5D&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">open +repository connector requests</a> and vote for the corresponding bug if your tracker is found, or create +a new report. In the meantime, you can work with those reports (but not +with queries) via the web integration. To create a task from any web-based +repository:</p> +<ul> + <li>Drag the URL from the Address bar of the browser, or from a hyperlink in + a bug listing to the Mylar Tasks view. This will create a task for the + bug, link it to the page, and populate the description with the title of the + corresponding page. In Mozilla, simply drag + the URL. In Internet Explorer you must have Ctrl pressed in + order for Eclipse to recognize the drop.</li> + <li>Alternatively you can copy the URL, press the New Task button on the + Mylar Tasks view. This has the same effect as above but you can edit + the description after retrieving it.</li> + <li>Opening the task will now open the corresponding issue. You can + also right-click the task and select Open in External Browser.</li> +</ul> + <p> + <img border="0" src="images/0.4.1/tasklist-weblink-editor.gif" width="585" height="195"></p> + <hr> + <p> </p> + <h3><a name="repositories-connectivity">Connectivity and proxy servers</a></h3> + <p>For accessing repositories via a proxy server, Mylar uses the settings + under <i>Preferences -> Install/Update</i>. If you are seeing + errors like <span class="e" id="q_10b3e1bc7372e609_1"> + <font face="Times New Roman" size="3"><span style="FONT-SIZE: 12pt">"HTTP + Response Code 407" it is likely that you need to configure these proxy + server settings.</span></font></span></p> + <hr> + <p> </p> + <h3><a name="upgrading-repositories">How do I upgrade to multiple +task repository support?</a></h3> +<p>Bugzilla Client users follow these steps after updating in order to +migrate to multiple repository support from version 0.4.6 or older</p> +<ul> + <li>After +updating and restarting, deactivate your active task, open the Mylar -> Task +Repositories view and re-add your previous repository using the wizard.</li> +<li>Ensure that you enter the correct Server URL by pressing the “validate” button +on the corresponding dialog, since this URL will be used for the migration.</li> + <li>Exit the workbench and restart Eclipse to complete the migration.</li> +</ul> + <hr> + <p> </p> +<h3><a name="versions-repositories">Why is only one task appearing in Bugzilla +queries?</a></h3> + <p>This is a symptom of the wrong Bugzilla version selected in your Mylar + Bugzilla preferences ( Window -> Preferences -> Mylar -> Bugzilla Client ). + For example, if you are connecting to the Eclipse.org Bugzilla then the 2.20 + option must be selected.</p> + <hr> +<h3> </h3> +<h3><a name="repositories-jira-config">Is there any configuration needed to make +Mylar work with my JIRA repository?</a></h3> + <p>Yes, JIRA SOAP/RPC services have to be running on the server. For + additional details see the Requirements at: + <a href="http://jira-dashboard.tigris.org/"> + http://jira-dashboard.tigris.org/</a> </p> + <hr> +<h3> </h3> +<h3><a name="eclipse-views-tasks">How does the Mylar Task List relate to the Eclipse Tasks view?</a></h3> + <p>The SDK's Tasks view is used for showing markers such as 'todo' tags + which indicate a local problem with a resource, similar to a compiler + warning. As such, these 'tasks' are at a much lower level of + granularity than than Mylar's tasks, and one task could involve cleaning up + multiple todos. In order to make working with only the markers in a + particular task context, e.g. for clean-up before committing, the Apply + Mylar filter is available for both the Problems and the Tasks views. </p> + <hr> +<h3> </h3> + <h3><a name="subversion-clients">Subversion Limitations</a></h3> + <p>Mylar's Active Change Set integration, which allows you to work with + changes per-task, support's the Eclipse SDK's CVS integration, and should + work with any source repository client that extends Eclipse's Change Set + support. As of March 2006 no Subversion clients support change sets, + and as such this feature is not available for those clients. </p> + <p> </p> + <hr> + <h3> </h3> +<h3><a name="active-search-empty0">Why does nothing show up in the Active Search or Active Hierarchy?</a></h3> + <p> + As you work and elements become landmarks (bold decoration), and + these elements populate the Active Search and Active Hierarchy + views. To force an element to populate the views manually make + it a landmark by right-clicking or hitting Ctrl+Alt+Shift+Up Arrow. +</p> + <hr> +<p> + </p> + <h3><a name="content-assist">Content assist troubleshooting</a></h3> +<p>In Eclipse 3.2, Mylar uses extended content assist processors in order to +rank and separate the elements in the current task context. To see +proposals ranked according to interest you must have only the <i>(Mylar)</i> +proposals kinds enabled in the list below, otherwise you will see duplicates. +<b>If you do not see any proposals</b>, check this list to ensure that either +the Mylar or the plain proposals are enabled. Running <i>New -> Mylar -> Recommended +Preferences</i> will do this for you automatically, or you can set toggle them +manually in the preference page. Proposals will disappear if a +workspace into which Mylar was installed is run without Mylar installed (e.g. as +a result of uninstalling or multiple Eclipses using same workspace, see Platform +<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=140416">bug 140416</a>).</p> +<p>If after invoking content assist you see an error message dialog that states +"The extension tool too long to return from the 'computeCompletionProposals()' +operation", this is most likely due to something interrupting the proposal +operation (e.g. garbage collection). Ignore it if it does not recur, +increase Eclipse's memory if it does (e.g via -Xmx384M command line argument), +or see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=141457">bug 141457</a> +for more details.</p> +<p> + <img border="0" src="images/faq/content-assist.gif"></p> + <hr> +<p> </p> + <h3><a name="filtering-declarations">How do I stop declarations from showing up in the Package Explorer?</a></h3> +<p>If you don't like Mylar's constant showing of Java members in the + Package Explorer, select the drop-down menu, then "Filters..." and + enable the "Mylar Java Declarations Filter". It will then + stick in the menu in case you want to toggle between modes. +Note that this will hide interest information about members that aren't in your +current file (e.g. showing you which methods are landmarks) so this mode is not +recommended, but can be useful for 1024x768 screen resolutions.</p> + <p> + <img border="0" src="images/0.3/filtering-declarations.gif" width="441" height="211"></p> + <hr> +<p> + </p> + <h3><a name="active-search-empty">Why does nothing show up in the Active Search or Active Hierarchy?</a></h3> + <p> + As you work and elements become landmarks (bold decoration), and + these elements populate the Active Search and Active Hierarchy + views. To force an element to populate the views manually make + it a landmark by right-clicking or hitting Ctrl+Alt+Shift+Up Arrow. +</p> + <hr> +<p> + </p> +<p> </p> +</body></html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif Binary files differnew file mode 100644 index 000000000..ecfd2e891 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-editor.gif 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 Binary files differnew file mode 100644 index 000000000..c211f3c04 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/bugzilla-versions.gif 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 Binary files differnew file mode 100644 index 000000000..22a4b73a1 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/task-activity.gif 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 Binary files differnew file mode 100644 index 000000000..88c6ab700 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.4.10/tasklist-status.gif 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 Binary files differnew file mode 100644 index 000000000..3dabe9c5b --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-project-explorer.gif 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 Binary files differnew file mode 100644 index 000000000..84a923cb7 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/apply-task-markers.gif 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 Binary files differnew file mode 100644 index 000000000..36a82463a --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/colors-and-fonts.gif 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 Binary files differnew file mode 100644 index 000000000..8b687aac5 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/navigate-alt-click.gif 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 Binary files differnew file mode 100644 index 000000000..d8db0972c --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/open-task-from-history.gif 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 Binary files differnew file mode 100644 index 000000000..4ddaba40f --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/query-synchronization.gif 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 Binary files differnew file mode 100644 index 000000000..5a2beb235 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/resource-history-open-task.gif 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 Binary files differnew file mode 100644 index 000000000..15223483e --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/task-editor-hyperlinks.gif 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 Binary files differnew file mode 100644 index 000000000..a455fc3fc --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-archive.gif 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 Binary files differnew file mode 100644 index 000000000..a2d110bd1 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.0/tasklist-backup.gif 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 Binary files differnew file mode 100644 index 000000000..df618d3b9 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/apply-tasklist.gif 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 Binary files differnew file mode 100644 index 000000000..10e6c4be4 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-attach-popup.gif 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 Binary files differnew file mode 100644 index 000000000..6f9015f34 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/context-retrieve.gif 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 Binary files differnew file mode 100644 index 000000000..2b5ec2de0 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/editors-close.gif 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 Binary files differnew file mode 100644 index 000000000..89bcc93fe --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.1/jira-query-custom.gif 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 Binary files differnew file mode 100644 index 000000000..8501646c7 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-editor.gif 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 Binary files differnew file mode 100644 index 000000000..5afa19dbb --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-encodings-settings.gif 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 Binary files differnew file mode 100644 index 000000000..f67baeb31 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/bugzilla-search.gif 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 Binary files differnew file mode 100644 index 000000000..07b7474e4 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/changesets-model-based.gif 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 Binary files differnew file mode 100644 index 000000000..441e8b8e3 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/jira-editor.gif 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 Binary files differnew file mode 100644 index 000000000..8503d1cdb --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/task-repository-sync.gif 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 Binary files differnew file mode 100644 index 000000000..e53ffb440 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/0.5.2/tasklist-apply-mylar.gif diff --git a/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif b/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif Binary files differnew file mode 100644 index 000000000..09ebe09a3 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/dev/gray.gif 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 Binary files differnew file mode 100644 index 000000000..bc9edc1c2 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_l.gif 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 Binary files differnew file mode 100644 index 000000000..d748bab4b --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/dev/tbar_r.gif 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 Binary files differnew file mode 100644 index 000000000..47e59b973 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/images/faq/content-assist.gif diff --git a/org.eclipse.mylyn.help.ui/doc/integrating.html b/org.eclipse.mylyn.help.ui/doc/integrating.html new file mode 100644 index 000000000..b43da3ed5 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/integrating.html @@ -0,0 +1,80 @@ +<html> + <head> + <title> + Mylar FAQ + </title> + </head> + <body> + <center><h1>Mylar Integrator Reference</h1></center> + <p align="left">We recommend that those interested in integrating Mylar + email <a href="mailto:mylar-dev@eclipse.org"> +mylar-dev@eclipse.org</a> regarding for pointers to examples and guidance on + upcoming changes.</p> + <ul> + <li><a href="#extending-overview">Extensibility Overview</a></li> + <li><a href="#frameworks">Frameworks & APIs</a></li> + <li><a href="#repository-requirements">Task repository requirements</a></li> + </ul> + <hr width="50%"> + <h3> <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. 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. 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. </p> + <hr> + <h3><a name="frameworks">Frameworks and APIs</a></h3> +<p>Mylar provides the following Frameworks. 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. 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. Connection to the task repository is handled by the +connector (e.g. via HTTP for the Bugzilla Connector, via SOAP for the JIRA +Connector). 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. 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> </p> +</body></html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/new-0.3.html b/org.eclipse.mylyn.help.ui/doc/new-0.3.html new file mode 100644 index 000000000..6dc16be72 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/new-0.3.html @@ -0,0 +1,711 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> +<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." > +<meta http-equiv="Content-Language" content="en-us"> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" + type="text/css"> +<title>Mylar New & Noteworthy</title> +</head> +<body> +<h1 align="center">New and Noteworthy for Mylar 0.3</h1> +<p>Covers 0.3.1 (released July 11, 2005) to 0.4.0 (released October 28, 2005). Send questions to <a href="mailto:mylar-users@eclipse.org">mylar-users@eclipse.org</a>. +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. 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 "Link with Editor" 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. 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. Once the errors are fixed the predicted + interest goes away. Set this on the Java preference page. + 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. 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. 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. This will cause them to become landmarks, and + to populate those views with related elements. 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 "Make Less Interesting" 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. + 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. + Use the pull-downs on the toolbar to alter the degree-of-separation + scope of the search. 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 "Filters..." and + enable the "Mylar Java Declarations Filter". 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. + Note that the parent of the resource, e.g. the project or folder, + needs to be interesting for it's children to show. + <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. It also + allows you to distinguish between task contexts if you have multiple + tasks active. <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 ".java" + 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. 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. 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>). 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. 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. <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. For example, + to find all System.out/err calls before checking in, search for + "System." 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. Keyboard shortcuts for these + are Ctrl+Alt+Shift+Up Arrow for Make Landmark, and + Ctrl+Alt+Shift+Down Arrow for Make Less Interesting. 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> </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 "incoming" overlay is displayed. If + a bug has changes on it that have been saved but have not been + committed to Bugzilla, the gray "outgoing" overlay is displayed. + 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. In offline mode the cached bug + copy is always used. 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 "Go Into Category" action from the context menu. To + go back to viewing all tasks and categories under the root use the + "Go Up To Root" 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. Note that this will temporarily suppress all + other filters. To clear the query press the "x" 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 + "Summary" tab of the Task Editor. 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. This can be set as a Task List preferences. + 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). <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. This can be set as a Task List preferences. + 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). + </td> + </tr> + <tr> + <td colspan="2"> + <hr> + </td> + </tr> + </tbody> +</table> + +<h3>Bugzilla Client</h3> + +<table cellpadding="10" cellspacing="0" width="600" id="table36"> + <tr> + <td width="30%" valign="top" align="left"> + <p align="right"><b>Support Ctrl+click in Java Editor to navigate to + bug</b></p> + </td> + <td width="70%" valign="top"> + Ctrl+click on a comment that + contains one of the following forms will open the bug with the given + id: bug# 123, bug 123, + Bug #123, + Bug#123. (Note that all of these are + case insensitive and can be followed by a colon or whitespace).<p> + <img border="0" src="images/0.3/bugzilla-hyperlink.gif" width="381" height="102"></p> + </td> + </tr> +</table> + +<table cellpadding="10" cellspacing="0" width="600" id="table37"> + <tr> + <td> + <hr> + </td> + </tr> +</table> + +<table cellpadding="10" cellspacing="0" width="600" id="table38"> + <tr> + <td align="left" valign="top" width="30%"> + <p align="right"><b>Custom queries</b></p> + </td> + <td valign="top" width="70%"> + To create a custom Bugzilla + query paste the query URL into the New Bugzilla Query dialog. This + enables support of queries that can not be configured via the + dialog, and as such some query hits may not open or format properly.<p> + <img border="0" src="images/0.3/bugzilla-query-custom.gif" width="483" height="106"></p> + + </td> + </tr> + </table> + +</body> +</html> diff --git a/org.eclipse.mylyn.help.ui/doc/new-0.4.html b/org.eclipse.mylyn.help.ui/doc/new-0.4.html new file mode 100644 index 000000000..b150304f5 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/new-0.4.html @@ -0,0 +1,1053 @@ +<html> +<head> + <title>Mylar New & 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 & Noteworthy for Mylar 0.4.1 - 0.5.0</h1></div> +<ul> + <li>To avoid potentially confusing the update manager use "Search for new +features.." when installing.</li> + <li><b>Bugzilla Connector users</b>: after updating, if you get a "Could not log in" 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 -> + Mylar -> Preference Configuration wizard if it does not pop up + automatically. If auto folding doesn't work reset the folding provider (see + <a href="#active-folding">Active Folding</a>).<br> + </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. Brock Janiczak contributed patches to JIRA and + and task list support. 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. 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. 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. This can be repeated until the desired + element is found. You can also Alt+Click the white space in + Package Explorer to unfilter all of the projects. If Alt is + let go, the view will spring back to showing only the task context. + 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. + 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 "Mark Less Interesting" now + recurses to children). 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 "Close Editors + Automatically" 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. If you were + using Mylar's active folding restore the default provider via + Preferences -> Java -> Editor -> Folding -> 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. 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. + 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). <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> </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 -> Mylar -> 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. The zip files can later be + imported used using File -> Import -> 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 -> Mylar -> 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. + It is filtered by default, but shows up when the "Find:" view filter + is used. 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 + updating.<p>Task priorities are now icon based instead of using the Bugzilla + P1..5 scheme, and the default priority has no icon. More task + status is indicated</p> + <ul> + <li>Notes are overlaid on top (see "long: ui issues" 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. 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. Note that on + very large repositories (e.g. Codehaus the very first query that's + run on a newly added repository will be slow). + <p>Refer to the <a href="http://www.eclipse.org/mylar/start.php"> + Getting Started</a> page for an integration overview. 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. + When a task becomes overdue, a notification 'toaster' pops up that + can be used to bring the task up. 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. 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. In Mozilla, simply drag + the URL. 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. Tasks that are not + completed and are past their reminder date will no longer get + filtered away. The reminder date of a task a task or bug + report can be cleared using the Task Info editor tab. + 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> + </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. You can now drag-and-drop multiple tasks, mark + completed, delete, and synchronize multiple reports. 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. 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> <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. Invoke it via File -> + New -> Other -> Mylar Task Planner, specify the number of days, and + you will see a report of your past activity. You can drag + tasks from the task list into the plan (e.g. from a Bugzilla query), + and set their reminders and estimates. 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. Tooltip behavior has been improved. + 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. 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. If you + click Get Description the title of the page will be inserted into + the Description field. 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. + <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 export</b></p> + </td> + <td width="70%" valign="top"> + The Mylar Task List and related data can be exported, e.g. for + backup purposes. 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> </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. All resources in the task's context automatically get + included in this change set, making it possible to synchronize and + commit only those resources. Resources modified that are not + part of the Task Context will appear outside of the Change Set in + the Synchronize view. Note that as with other Change Sets you + need to set the Synchronize view into either Incoming or Outgoing + mode and toggle the "Show Change Sets" 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. 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. 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). 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. Right + clicking a Change Set will bring up an "Open Corresponding Report" + action to navigate to the corresponding issue (either Bugzilla + report or Web Link). 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. + In both cases the commit message will be populated by the + description and URL of the task (if available). The comment + prefix can be changed in the Task List preferences page. <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> </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. 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 "view" link, hit Ctrl+A and Ctrl+C on the + text to get it into the clipboard, then Apply Patch). To + expand all comments click the "Expand All" button at the bottom of + the editor. + <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. 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. Double click each query category to edit it, + press "Update Options", and then simply click OK to save the query. + 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. 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. Note that when using the Browser + queries will not automatically refresh after submitting changes on a + bug. You can set the Browser to be the default editor in the + Task List preference page.<p> + <img border="0" src="images/0.4.1/bugzilla-prefs-open-reports.gif" width="231" height="50"><p> + <img border="0" src="images/0.4.1/bugzilla-editor-browser.gif" width="563" height="360"></td> + </tr> + <tr> + <td colspan="2"> + <hr> + </td> + </tr> +</table> + +</body> +</html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/new.html b/org.eclipse.mylyn.help.ui/doc/new.html new file mode 100644 index 000000000..35d096da8 --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/new.html @@ -0,0 +1,407 @@ +<html> +<head> + <title>Mylar New & 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 & Noteworthy for Mylar 0.5.2</h1></div> + +<table border="1" style="border-collapse: collapse" width="100%" id="table128" cellpadding="4" bordercolor="#FFFFFF"> + <tr> + <td bgcolor="#595791" width="7%" align="center"><b> + <font color="#FFFFFF" size="1">Release</font></b></td> + <td bgcolor="#595791" width="5%" align="center"><b> + <font color="#FFFFFF" size="1">Resolved + </font></b></td> + <td bgcolor="#595791" width="*" align="center"><b> + <font color="#FFFFFF" size="1">Community Contributions</font></b></td> + </tr> + <tr> + <td bgcolor="#FAF7FB"><font size="1">0.5.3<br> + <i>tbd</i></font></td> + <td bgcolor="#FAF7FB" align="center"> + <font size="1"> + <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-05-19&chfieldto=2006-06-09&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0="> + x<br> + reports</a></font></td> + <td bgcolor="#FAF7FB"><font size="1">...</font></td> + </tr> + <tr> + <td bgcolor="#E0D0E6"><font size="1">0.5.2<br> + <i>May 22</i></font></td> + <td bgcolor="#E0D0E6" align="center"> + <font size="1"> + <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Mylar&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2006-04-29&chfieldto=2006-05-20&chfield=resolution&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0="> + 64<br> + reports</a></font></td> + <td bgcolor="#E0D0E6"><font size="1">Brock Janiczak made another big + contribution with the + <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=133764"> + form-based JIRA editor</a>, updates for + <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=139320">new JIRA + APIs</a>, and + <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=141251">wizard + progress</a>. 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>. Sefan Langer made use of the internal browser for + tasks <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=132656"> + optional</a>. 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. Gunnar Wagenknecht contributed a patch for RC1 + compatibility.</font></td> + </tr> + </table> + +<p>Also see:<br> +<b> - </b><b> +<a href="new-0.4.html">New & Noteworthy for Mylar 0.4</a></b><br> +<b> - <a href="new-0.3.html">New & Noteworthy for +Mylar 0.3</a></b></p> + +<p>Update instructions:</p> +<ul> + <li>Use "Search for new features.." when updating to avoid confusing the + Update Manager</li> + <li>Bugzilla users: submit all outgoing changes before updating since this + update will recreate the offline file</li> + <li>JIRA users: JIRA Core Services 0.9.0 is required and included on the + update site, synch queries after updating</li> +</ul> + +<hr> + +<table cellpadding="10" cellspacing="0" id="table234"> + <tr> + <td align="left" valign="top" width="15%" bgcolor="#E0D0E6"> + <p align="right"><b>misc 0.5.3</b></p> + </td> + <td valign="top" width="70%"> + resource exclusion page, can be used to prevent + monitoring of projects, generated files that get checked + in, etc.<p>Bugzilla</p> + <ul> + <li>reports open offline, synch in background</li> + <li>new comments are all unfolded</li> + <li>first synch will be slow if lots of old tasks</li> + <li>can add attachments</li> + <li>reports synch in background, open without going + to server</li> + </ul> + <p>"Open in Browser" obeys platform options. + Better browser integration.</p> + <p> + Viewers: Multiple window support (update FAQ), Apply Mylar + performance improved<p> + Preference clean-up<p> + Subclipse change set support <br> + - setup instructions<br> + <a href="http://subclipse.tigris.org/servlets/ReadMsg?list=users&msgNo=6914"> + http://subclipse.tigris.org/servlets/ReadMsg?list=users&msgNo=6914</a> + <br> + <a href="http://subclipse.tigris.org/update_1.2.x"> + http://subclipse.tigris.org/update_1.2.x</a> <br> + <p> + </td> + </tr> + <tr> + <td colspan=2> + <hr> + </td> + </tr> +</table> + + <h2>Task List</h2> + +<table cellpadding="10" cellspacing="0"> + <tr> + <td align="left" valign="top" width="15%" bgcolor="#FAF7FB"> + <p align="right"><b>Daily Progress </b></p> + </td> + <td valign="top" width="70%"> + Using + Apply Mylar in the Task List now helps track daily task + progress by highlighting tasks scheduled for today (default + is blue) and always showing tasks completed today + (default is green). 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). + 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. </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. 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. To mark a task uninteresting set its reminder + for next week or later. Also note that tasks scheduled for + today are highlighted in blue by default (see <i>Preferences -> + General -> Fonts and Colors</i> to change).<p> + <img src="images/0.5.1/apply-tasklist.gif"></td> + </tr> + </table> + +<h2> </h2> +<h2>Task Context</h2> + +<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table211"> + <tr> + <td align="left" valign="top" width="15%" bgcolor=#FAF7FB> + <p align="right"><b>Editor Auto Close</b></p> + </td> + <td valign="top" width="70%"> + Editors now close automatically when the corresponding files become + uninteresting. 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. 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. 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. The filters are restored when the + Apply Mylar button is toggled off.</td> + </tr> + </table> + +<p> </p> +<h2>Team</h2> + +<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table233"> + <tr> + <td align="left" valign="top" width="15%" bgcolor="#FAF7FB"> + <p align="right"><b>Support for CVS Change Sets with Models</b></p> + </td> + <td valign="top" width="70%"> + If you are using the model-based change sets, you will notice that + the Mylar Active Change sets work show up with a decoration in the + lower-right corner, and that you can view both incoming and outgoing + change sets at the same time. 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>). + <p> + <img src="images/0.5.2/changesets-model-based.gif"></td> + </tr> +</table> + +<p> </p> + +<h2>Bugzilla Connector</h2> + +<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table227"> + <tr> + <td align="left" valign="top" width="15%" bgcolor="#FAF7FB"> + <p align="right"><b>Search Integration</b></p> + </td> + <td valign="top" width="70%"> + The Bugzilla search page now only shows attributes relevant to the + selected product. 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). 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). 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). + 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. If you do not set this + value your local time zone will be used. 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. 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> </h2> +<h2>JIRA Connector</h2> + +<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table223"> + <tr> + <td align="left" valign="top" width="15%" bgcolor="#FAF7FB"> + <p align="right"><b>JIRA Editor<br> + (Experimental)</b></p> + </td> + <td valign="top" width="70%"> + The Eclipse Forms-based JIRA editor provides integrated + editing for JIRA repository tasks. At this time + only new comment posting is supported, and attributes + can not be edited. Since offline editing for JIRA + tasks is not yet supported saving a comment will result + in it being posted. 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 -> <i>Add Existing Repository Task</i>)</td> + </tr> + <tr> + <td colspan=2> + <hr> + </td> + </tr> +</table> + +<table cellpadding="10" cellspacing="0" http://www.eclipse.org/mylar/doc/images/dev/ id="table204"> + <tr> + <td align="left" valign="top" width="15%" bgcolor=#FAF7FB> + <p align="right"><b>Custom Queries</b></p> + </td> + <td valign="top" width="70%"> + In addition to using filters stored on the server, custom JIRA + queries can now be added via <i>New Repository Query</i> wizard. <p> + <img src="images/0.5.1/jira-query-custom.gif"></td> + </tr> + </table> + +</body> +</html>
\ No newline at end of file diff --git a/org.eclipse.mylyn.help.ui/doc/overview.html b/org.eclipse.mylyn.help.ui/doc/overview.html new file mode 100644 index 000000000..930bb775c --- /dev/null +++ b/org.eclipse.mylyn.help.ui/doc/overview.html @@ -0,0 +1,69 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> +<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." > + <link rel="stylesheet" href="book.css" charset="ISO-8859-1" type="text/css"> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <meta http-equiv="Content-Style-Type" content="text/css"> + <title> + Mylar Overview + </title> + </head> + <body> + <h1> + Mylar</h1> + <blockquote> + <p><b>Please note: </b>documentation of Mylar is still poor. The best way to get an overview of Mylar is by watching the flash + demos and by reviewing the latest <b><a href="new.html">New & Noteworthy</a></b></p> + </blockquote> + <h3>Flash Demos </h3> + <p>From <a href="http://eclipse.org/mylar/doc.php"> + http://eclipse.org/mylar/doc.php</a> </p> + <li><b><a href="http://eclipse.org/mylar/doc/demo/mylar-demo-04.html"> + Getting started</a></b> (v0.4, 3.5 min, 8.7 MB) </li> + <li><a href="http://eclipse.org/mylar/doc/demo/mylar-demo-04-reports.html"> + <b>Working with tasks and Bugzilla reports</b> </a>(v0.4, 3.5 min, 6 MB)</li> + <h3>Overview</h3> + <p>As you work on programming tasks, Mylar watches your activity and creates + a task context. This context is associated with the task that you have + activated. Mylar extends Eclipse structure views and editors to show + you only what you're working on by focusing on the task context, and to + highlight the degree of interest of the program structure that you are + working on. The following list and figure summarize the core Mylar + features. </p> + <ol> + <li>Use the task list to create tasks and categories. You can also + add a bugzilla report as a task, or create a bugzilla query as a + category. A task context is activated by clicking the gray + glasses, which causes the task and its category to become bold. + Note that tasks can show up in multiple categories (e.g. as a result of + a query, as in the figure below). To disable the context click the + glasses again. If you are using bugzilla reports you must + configure the Bugzilla server first (Preferences -> Bugzilla). If + you double-click a Bugzilla report it will open with the internal + browser, or with a Bugzilla Editor if you set Preferences -> Mylar -> + Task List accordingly.</li> + <li>Click the Mylar glasses to filter out all uninteresting elements + (i.e. those not a part of the task context), shown here on the Outline + view. You will notice that views with Mylar filtering update + automatically as you work. Toggle this button to switch between + the standard view mode and the Mylar interest filtering. If you + have no task context active and all of the Mylar glasses are toggled off + all of the Mylar functionality is disabled.</li> + <li>The Problems list can be filtered just like the outline.</li> + <li>The editor provides an automatic folding feature that can be toggled + using the toolbar button next to "Mark Occurrences". When enabled + all uninteresting elements will be folded, an interesting elements + unfolded. Note that if you use the Mylar Java editor for ".java" + files the highest interest elements will be moved to the top of the + content assist list.</li> + <li>Mylar filtering works in the Package Explorer as well. + Elements that are not a part of the task context show up in gray + consistently throughout the views. The highest interest elements, + called Landmarks, show up in bold. </li> + </ol> + <p><img border="0" src="images/0.3/overview.gif" width="640" height="461"></p> + <p> </p> + + </body> +</html> diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java deleted file mode 100644 index d045345b4..000000000 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TableSorterTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.tasklist.tests; - -import junit.framework.TestCase; - -import org.eclipse.mylar.internal.tasklist.ui.views.TaskListTableSorter; -import org.eclipse.mylar.provisional.tasklist.Task; -import org.eclipse.mylar.provisional.tasklist.TaskCategory; -import org.eclipse.mylar.provisional.tasklist.TaskList; - -/** - * @author Mik Kersten - */ -public class TableSorterTest extends TestCase { - - public void testRootTaskSorting() { - TaskListTableSorter sorter = new TaskListTableSorter(null, "description"); - - Task task = new Task("1", "", true); - TaskCategory category = new TaskCategory("cat", new TaskList()); - - assertEquals(-1, sorter.compare(null, task, category)); - assertEquals(1, sorter.compare(null, category, task)); - } -} diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java deleted file mode 100644 index adeeb9592..000000000 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityViewTest.java +++ /dev/null @@ -1,344 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.tasklist.tests; - -import java.util.Calendar; -import java.util.GregorianCalendar; - -import junit.framework.TestCase; - -import org.eclipse.mylar.internal.core.MylarContextManager; -import org.eclipse.mylar.provisional.core.InteractionEvent; -import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate; -import org.eclipse.mylar.provisional.tasklist.DateRangeContainer; -import org.eclipse.mylar.provisional.tasklist.ITask; -import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; -import org.eclipse.mylar.provisional.tasklist.Task; -import org.eclipse.mylar.provisional.tasklist.TaskList; - -/** - * @author Rob Elves - */ -public class TaskActivityViewTest extends TestCase { - - private long currentStartMili = 1200; - - private long currentEndMili = 1900; - - private TaskList taskList; - - protected void setUp() throws Exception { - super.setUp(); - taskList = MylarTaskListPlugin.getTaskListManager().getTaskList(); - } - - protected void tearDown() throws Exception { -// MylarTaskListPlugin.getTaskListManager().readExistingOrCreateNewList(); - MylarTaskListPlugin.getTaskListManager().resetTaskList(); - super.tearDown(); - } - - public void testDateRangeContainer() { - - Calendar startDate = GregorianCalendar.getInstance(); - startDate.setTimeInMillis(1000); - Calendar endDate = GregorianCalendar.getInstance(); - endDate.setTimeInMillis(2000); - - DateRangeContainer testContainer = new DateRangeContainer(startDate, endDate, "test date range container", taskList); - assertTrue(testContainer.includes(startDate)); - assertTrue(testContainer.includes(endDate)); - Calendar midTime = GregorianCalendar.getInstance(); - midTime.setTimeInMillis(1500); - assertTrue(testContainer.includes(midTime)); - - ITask task1 = new Task("task 1", "Task 1", true); - ITask task2 = new Task("task 2", "Task 2", true); - - Calendar currentTaskStart = GregorianCalendar.getInstance(); - currentTaskStart.setTimeInMillis(currentStartMili); - Calendar currentTaskEnd = GregorianCalendar.getInstance(); - currentTaskEnd.setTimeInMillis(currentEndMili); - testContainer.addTask(new DateRangeActivityDelegate(testContainer, task1, currentTaskStart, currentTaskEnd, 0)); - assertEquals(currentEndMili - currentStartMili, testContainer.getTotalElapsed()); - testContainer.addTask(new DateRangeActivityDelegate(testContainer, task2, currentTaskStart, currentTaskEnd, 0)); - assertEquals(2 * (currentEndMili - currentStartMili), testContainer.getTotalElapsed()); - assertEquals(2, testContainer.getChildren().size()); - testContainer.addTask(new DateRangeActivityDelegate(testContainer, task2, currentTaskStart, currentTaskEnd)); - assertEquals(3 * (currentEndMili - currentStartMili), testContainer.getTotalElapsed()); - assertEquals(2 * (currentEndMili - currentStartMili), testContainer.getElapsed(new DateRangeActivityDelegate( - testContainer, task2, currentTaskStart, currentTaskEnd))); - assertEquals(2, testContainer.getChildren().size()); - } - - public void testNegativeInactivity() { - Calendar startDate = GregorianCalendar.getInstance(); - startDate.setTimeInMillis(1000); - Calendar endDate = GregorianCalendar.getInstance(); - endDate.setTimeInMillis(2000); - ITask task1 = new Task("task 1", "Task 1", true); - DateRangeContainer testContainer = new DateRangeContainer(startDate, endDate, "test date range container", taskList); - testContainer.addTask(new DateRangeActivityDelegate(testContainer, task1, startDate, endDate, 3000)); - assertEquals(0, testContainer.getTotalElapsed()); - } - - public void testTaskListManagerActivity() { - - ITask task1 = new Task("task 1", "Task 1", true); - ITask task2 = new Task("task 2", "Task 2", true); - MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1); - MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task2); - - // test this week - DateRangeContainer thisWeekActivity = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek(); - assertNotNull(thisWeekActivity); - assertEquals(0, thisWeekActivity.getChildren().size()); - - Calendar thisWeekCalendarStart = GregorianCalendar.getInstance(); - Calendar thisWeekCalendarStop = GregorianCalendar.getInstance(); - thisWeekCalendarStop.add(Calendar.MILLISECOND, 2); - assertTrue(thisWeekActivity.includes(thisWeekCalendarStart)); - - InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - thisWeekCalendarStart.getTime(), thisWeekCalendarStart.getTime()); - InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - thisWeekCalendarStop.getTime(), thisWeekCalendarStop.getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2); - assertEquals(1, thisWeekActivity.getChildren().size()); - assertEquals(thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime(), - thisWeekActivity.getTotalElapsed()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2); - assertEquals(1, thisWeekActivity.getChildren().size()); - assertEquals(2 * (thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime()), - thisWeekActivity.getTotalElapsed()); - assertEquals(2 * (thisWeekCalendarStop.getTime().getTime() - thisWeekCalendarStart.getTime().getTime()), - thisWeekActivity.getElapsed(new DateRangeActivityDelegate(thisWeekActivity, task1, null, null))); - - // multiple tasks in category - event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2.getHandleIdentifier(), - "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, thisWeekCalendarStart - .getTime(), thisWeekCalendarStart.getTime()); - event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2.getHandleIdentifier(), - "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, thisWeekCalendarStop - .getTime(), thisWeekCalendarStop.getTime()); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2); - assertEquals(2, thisWeekActivity.getChildren().size()); - - // test Past - DateRangeContainer pastActivity = MylarTaskListPlugin.getTaskListManager().getActivityPast(); - assertNotNull(pastActivity); - assertEquals(0, pastActivity.getChildren().size()); - - InteractionEvent event3 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - pastActivity.getStart().getTime(), pastActivity.getStart().getTime()); - InteractionEvent event4 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - pastActivity.getEnd().getTime(), pastActivity.getEnd().getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event3); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event4); - assertEquals(1, pastActivity.getChildren().size()); - - // test Future - DateRangeContainer futureActivity = MylarTaskListPlugin.getTaskListManager().getActivityFuture(); - assertNotNull(futureActivity); - assertEquals(0, futureActivity.getChildren().size()); - - InteractionEvent event5 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - futureActivity.getStart().getTime(), futureActivity.getStart().getTime()); - InteractionEvent event6 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - futureActivity.getEnd().getTime(), futureActivity.getEnd().getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event5); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event6); - assertEquals(1, futureActivity.getChildren().size()); - - // test Next week activity - DateRangeContainer activityNextWeek = MylarTaskListPlugin.getTaskListManager().getActivityNextWeek(); - assertNotNull(activityNextWeek); - assertEquals(0, activityNextWeek.getChildren().size()); - - InteractionEvent event7 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - activityNextWeek.getStart().getTime(), activityNextWeek.getStart().getTime()); - InteractionEvent event8 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - activityNextWeek.getEnd().getTime(), activityNextWeek.getEnd().getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event7); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event8); - assertEquals(1, activityNextWeek.getChildren().size()); - - // test Previous week activity - DateRangeContainer activityPreviousWeek = MylarTaskListPlugin.getTaskListManager().getActivityPrevious(); - assertNotNull(activityPreviousWeek); - assertEquals(0, activityPreviousWeek.getChildren().size()); - - InteractionEvent event9 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - activityPreviousWeek.getStart().getTime(), activityPreviousWeek.getStart().getTime()); - InteractionEvent event10 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task2 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - activityPreviousWeek.getEnd().getTime(), activityPreviousWeek.getEnd().getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event9); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event10); - assertEquals(1, activityPreviousWeek.getChildren().size()); - } - - public void testTaskListManagerInactivity() { - - ITask task1 = new Task("task 1", "Task 1", true); - MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1); - - DateRangeContainer activityThisWeek = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek(); - assertNotNull(activityThisWeek); - assertEquals(0, activityThisWeek.getChildren().size()); - - InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - activityThisWeek.getStart().getTime(), activityThisWeek.getStart().getTime()); - InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - activityThisWeek.getEnd().getTime(), activityThisWeek.getEnd().getTime()); - - Calendar inactivityStart = GregorianCalendar.getInstance(); - Calendar inactivityEnd = GregorianCalendar.getInstance(); - inactivityEnd.add(Calendar.HOUR_OF_DAY, 1); - - InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind", - MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation", - MylarContextManager.ACTIVITY_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime()); - InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind", - MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation", - MylarContextManager.ACTIVITY_ACTIVATED, 2f, inactivityEnd.getTime(), inactivityEnd.getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2); - assertEquals(1, activityThisWeek.getChildren().size()); - - long expectedTotalTime = (activityThisWeek.getEnd().getTime().getTime() - activityThisWeek.getStart().getTime() - .getTime()) - - (inactivityEnd.getTime().getTime() - inactivityStart.getTime().getTime()); - assertEquals(expectedTotalTime, activityThisWeek.getTotalElapsed()); - assertEquals(expectedTotalTime, activityThisWeek.getElapsed(new DateRangeActivityDelegate(activityThisWeek, - task1, null, null))); - - } - - // attention:Deactivated -> task:Activated -> attention:Activated -> - // task:Deactivated - public void testInterleavedActivation() { - - ITask task1 = new Task("task 1", "Task 1", true); - MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1); - - DateRangeContainer activityThisWeek = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek(); - assertNotNull(activityThisWeek); - assertEquals(0, activityThisWeek.getChildren().size()); - - Calendar taskActivationStart = GregorianCalendar.getInstance(); - taskActivationStart.add(Calendar.MILLISECOND, 15); - Calendar taskActivationStop = GregorianCalendar.getInstance(); - taskActivationStop.add(Calendar.MILLISECOND, 25); - - Calendar inactivityStart = GregorianCalendar.getInstance(); - inactivityStart.add(Calendar.MILLISECOND, 5); - Calendar inactivityStop = GregorianCalendar.getInstance(); - inactivityStop.add(Calendar.MILLISECOND, 18); - - InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - taskActivationStart.getTime(), taskActivationStart.getTime()); - InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - taskActivationStop.getTime(), taskActivationStop.getTime()); - - InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind", - MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation", - MylarContextManager.ACTIVITY_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime()); - InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind", - MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation", - MylarContextManager.ACTIVITY_ACTIVATED, 2f, inactivityStop.getTime(), inactivityStop.getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2); - assertEquals(1, activityThisWeek.getChildren().size()); - - long expectedTotalTime = taskActivationStop.getTimeInMillis() - taskActivationStart.getTimeInMillis(); - assertEquals(expectedTotalTime, activityThisWeek.getTotalElapsed()); - assertEquals(expectedTotalTime, activityThisWeek.getElapsed(new DateRangeActivityDelegate(activityThisWeek, - task1, null, null))); - } - - // task:Activated -> attention:Deactivated -> task:Deactivated -> - // attention:Activated - public void testInterleavedActivation2() { - - ITask task1 = new Task("task 1", "Task 1", true); - MylarTaskListPlugin.getTaskListManager().getTaskList().addTask(task1); - - DateRangeContainer activityThisWeek = MylarTaskListPlugin.getTaskListManager().getActivityThisWeek(); - assertNotNull(activityThisWeek); - assertEquals(0, activityThisWeek.getChildren().size()); - - Calendar taskActivationStart = GregorianCalendar.getInstance(); - taskActivationStart.add(Calendar.MILLISECOND, 10); - Calendar taskActivationStop = GregorianCalendar.getInstance(); - taskActivationStop.add(Calendar.MILLISECOND, 20); - - Calendar inactivityStart = GregorianCalendar.getInstance(); - inactivityStart.add(Calendar.MILLISECOND, 15); - Calendar inactivityStop = GregorianCalendar.getInstance(); - inactivityStop.add(Calendar.MILLISECOND, 25); - - InteractionEvent event1 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_ACTIVATED, 2f, - taskActivationStart.getTime(), taskActivationStart.getTime()); - InteractionEvent event2 = new InteractionEvent(InteractionEvent.Kind.SELECTION, "structureKind", task1 - .getHandleIdentifier(), "originId", "navigatedRelation", MylarContextManager.ACTIVITY_DEACTIVATED, 2f, - taskActivationStop.getTime(), taskActivationStop.getTime()); - - InteractionEvent inactivityEvent1 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind", - MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation", - MylarContextManager.ACTIVITY_DEACTIVATED, 2f, inactivityStart.getTime(), inactivityStart.getTime()); - InteractionEvent inactivityEvent2 = new InteractionEvent(InteractionEvent.Kind.COMMAND, "structureKind", - MylarContextManager.ACTIVITY_HANDLE, "originId", "navigatedRelation", - MylarContextManager.ACTIVITY_ACTIVATED, 2f, inactivityStop.getTime(), inactivityStop.getTime()); - - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent1); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(event2); - MylarTaskListPlugin.getTaskListManager().parseInteractionEvent(inactivityEvent2); - assertEquals(1, activityThisWeek.getChildren().size()); - - long expectedTotalTime = inactivityStart.getTimeInMillis() - taskActivationStart.getTimeInMillis(); - assertEquals(expectedTotalTime, activityThisWeek.getTotalElapsed()); - assertEquals(expectedTotalTime, activityThisWeek.getElapsed(new DateRangeActivityDelegate(activityThisWeek, - task1, null, null))); - } - -} diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java deleted file mode 100644 index beef09500..000000000 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskKeyComparatorTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.tasklist.tests; - -import java.util.Arrays; - -import junit.framework.TestCase; - -import org.eclipse.mylar.internal.tasklist.ui.views.TaskKeyComparator; - -/** - * @author Eugene Kuleshov https://bugs.eclipse.org/bugs/show_bug.cgi?id=129511 - * @author Mik Kersten - */ -public class TaskKeyComparatorTest extends TestCase { - - public void testPatterns() { - comparisonCheck("", new String[] { null, null, "" }); - comparisonCheck(" ", new String[] { null, null, " " }); - comparisonCheck("aa", new String[] { null, null, "aa" }); - comparisonCheck("11", new String[] { "", "11", "" }); - comparisonCheck("11 aa", new String[] { "", "11", " aa" }); - comparisonCheck(" 11 aa", new String[] { null, null, " 11 aa" }); - comparisonCheck("aa11 bb", new String[] { "aa", "11", " bb" }); - comparisonCheck("aa-11 bb", new String[] { "aa-", "11", " bb" }); - comparisonCheck("aa 11 bb", new String[] { null, null, "aa 11 bb" }); - comparisonCheck("aa bb 11 cc", new String[] { null, null, "aa bb 11 cc" }); - - comparisonCheck("aa", "aa", 0); - comparisonCheck("aa", "bb", -1); - comparisonCheck("bb", "aa", 1); - - comparisonCheck("aa11", "aa11", 0); - comparisonCheck("aa11", "aa12", -1); - comparisonCheck("aa12", "aa11", 1); - - comparisonCheck("aa1", "aa11", -1); - comparisonCheck("aa1", "aa2", -1); - comparisonCheck("aa1", "aa21", -1); - - comparisonCheck("aa1 aaa", "aa1 aaa", 0); - comparisonCheck("aa1 aaa", "aa1 bbb", -1); - comparisonCheck("aa1 bbb", "aa11 aaa", -1); - } - - private void comparisonCheck(String s, String[] exptecation) { - String[] res = new TaskKeyComparator().split(s); - assertTrue("Invalid " + Arrays.asList(res) + " " + Arrays.asList(exptecation), Arrays.equals(res, exptecation)); - } - - public void comparisonCheck(String s1, String s2, int n) { - assertEquals(n, new TaskKeyComparator().compare(s1, s2)); - } - -} diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java index 2372d45db..722d52f65 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java @@ -25,11 +25,9 @@ import junit.framework.TestCase; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.mylar.internal.bugzilla.core.BugzillaPlugin; import org.eclipse.mylar.internal.bugzilla.core.IBugzillaConstants; -import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaQueryHit; import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaRepositoryQuery; import org.eclipse.mylar.internal.bugzilla.ui.tasklist.BugzillaTask; import org.eclipse.mylar.internal.tasklist.ScheduledTaskListRefreshJob; -import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; import org.eclipse.mylar.provisional.tasklist.ITask; @@ -75,25 +73,25 @@ public class TaskListManagerTest extends TestCase { File legacyListFile = new File("temptasklist.xml"); legacyListFile.deleteOnExit(); TaskTestUtil.copy(TaskTestUtil.getLocalFile("testdata/legacy/tasklist_0_4_8.xml"), legacyListFile); - + assertEquals(362445, legacyListFile.length()); assertTrue(legacyListFile.exists()); - + manager.setTaskListFile(legacyListFile); manager.readExistingOrCreateNewList(); manager.setTaskListFile(originalFile); - + Set<ITask> allTasks = manager.getTaskList().getAllTasks(); Set<ITask> allRootTasks = manager.getTaskList().getRootTasks(); Set<ITaskContainer> allCategories = manager.getTaskList().getCategories(); - Set<ITaskListElement> allRoots = manager.getTaskList().getRootElements(); + Set<ITaskListElement> allRoots = manager.getTaskList().getRootElements(); assertEquals(0, allRootTasks.size()); - + manager.saveTaskList(); TaskList list = new TaskList(); manager.setTaskList(list); manager.readExistingOrCreateNewList(); - + assertEquals(allRootTasks.size(), manager.getTaskList().getRootTasks().size()); assertEquals(allCategories, manager.getTaskList().getCategories()); assertEquals(allRoots.size(), manager.getTaskList().getRootElements().size()); @@ -104,15 +102,15 @@ public class TaskListManagerTest extends TestCase { list = new TaskList(); manager.setTaskList(list); manager.readExistingOrCreateNewList(); - + assertEquals(allRootTasks.size(), manager.getTaskList().getRootTasks().size()); assertEquals(allCategories, manager.getTaskList().getCategories()); assertEquals(allRoots.size(), manager.getTaskList().getRootElements().size()); assertEquals(allTasks.size(), manager.getTaskList().getAllTasks().size()); - + manager.deactivateTask(manager.getTaskList().getActiveTask()); } - + public void testRepositoryUrlHandles() { String repository = IBugzillaConstants.ECLIPSE_BUGZILLA_URL; @@ -138,7 +136,7 @@ public class TaskListManagerTest extends TestCase { Task task1 = new Task("t1", "t1", true); manager.moveToRoot(task1); assertEquals(1, manager.getTaskList().getRootTasks().size()); - assertEquals(TaskList.LABEL_ROOT, task1.getCategory().getHandleIdentifier()); + assertEquals(TaskList.LABEL_ROOT, task1.getCategory().getHandleIdentifier()); TaskCategory cat1 = new TaskCategory("c1"); manager.addCategory(cat1); @@ -175,9 +173,9 @@ public class TaskListManagerTest extends TestCase { TaskList list = new TaskList(); assertTrue(list.isEmpty()); list.internalAddRootTask(new Task("", "", true)); - assertFalse(list.isEmpty()); + assertFalse(list.isEmpty()); } - + public void testCategories() { BugzillaTask task = new BugzillaTask("b1", "b 1", true); TaskCategory category = new TaskCategory("cat"); @@ -188,8 +186,8 @@ public class TaskListManagerTest extends TestCase { TaskList list = new TaskList(); manager.setTaskList(list); manager.readExistingOrCreateNewList(); - assertEquals(2, manager.getTaskList().getCategories().size()); - assertEquals(1, manager.getTaskList().getAllTasks().size()); + assertEquals(2, manager.getTaskList().getCategories().size()); + assertEquals(1, manager.getTaskList().getAllTasks().size()); } public void testDelete() { @@ -199,7 +197,7 @@ public class TaskListManagerTest extends TestCase { manager.deleteTask(task); assertEquals(0, manager.getTaskList().getAllTasks().size()); } - + public void testBugzillaCustomQueryExternalization() { BugzillaRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1"); query.setCustomQuery(true); @@ -211,10 +209,10 @@ public class TaskListManagerTest extends TestCase { manager.setTaskList(list); manager.readExistingOrCreateNewList(); assertEquals(1, manager.getTaskList().getQueries().size()); - BugzillaRepositoryQuery readQuery = (BugzillaRepositoryQuery) manager.getTaskList().getQueries().get(0); + BugzillaRepositoryQuery readQuery = (BugzillaRepositoryQuery)manager.getTaskList().getQueries().get(0); assertTrue(readQuery.isCustomQuery()); } - + public void testQueryExternalization() { AbstractRepositoryQuery query = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl", "label", "1"); assertEquals("repositoryUrl", query.getRepositoryUrl()); @@ -236,17 +234,17 @@ public class TaskListManagerTest extends TestCase { BugzillaTask repositoryTask = new BugzillaTask("handle", "label", true); repositoryTask.setKind("kind"); manager.getTaskList().addTaskToArchive(repositoryTask); - // repositoryTask.setCategory(manager.getTaskList().getArchiveCategory()); +// repositoryTask.setCategory(manager.getTaskList().getArchiveCategory()); assertEquals(1, manager.getTaskList().getArchiveTasks().size()); assertEquals(0, manager.getTaskList().getRootTasks().size()); manager.saveTaskList(); - + manager.setTaskList(new TaskList()); manager.readExistingOrCreateNewList(); assertEquals(1, manager.getTaskList().getArchiveTasks().size()); assertEquals(0, manager.getTaskList().getRootTasks().size()); } - + public void testRepositoryTaskExternalization() { BugzillaTask repositoryTask = new BugzillaTask("handle", "label", true); repositoryTask.setKind("kind"); @@ -257,9 +255,8 @@ public class TaskListManagerTest extends TestCase { manager.setTaskList(list); manager.readExistingOrCreateNewList(); assertEquals(1, manager.getTaskList().getRootTasks().size()); - AbstractRepositoryTask readTask = (AbstractRepositoryTask) manager.getTaskList().getRootTasks().iterator() - .next(); - + AbstractRepositoryTask readTask = (AbstractRepositoryTask)manager.getTaskList().getRootTasks().iterator().next(); + assertEquals(repositoryTask.getHandleIdentifier(), readTask.getHandleIdentifier()); assertEquals(repositoryTask.getDescription(), readTask.getDescription()); assertEquals(repositoryTask.getKind(), readTask.getKind()); @@ -284,23 +281,23 @@ public class TaskListManagerTest extends TestCase { Iterator<TaskCategory> iterator = readCats.iterator(); TaskCategory readCat1 = iterator.next(); assertEquals(cat1, readCat1); - assertEquals(1, readCat1.getChildren().size()); - + assertEquals(1, readCat1.getChildren().size()); + manager.saveTaskList(); - assertNotNull(manager.getTaskList()); + assertNotNull(manager.getTaskList()); manager.setTaskList(new TaskList()); manager.readExistingOrCreateNewList(); // read again readCats = manager.getTaskList().getTaskCategories(); assertTrue(manager.getTaskList().getCategories().contains(cat1)); - + iterator = readCats.iterator(); readCat1 = iterator.next(); assertEquals(cat1, readCat1); assertEquals(1, readCat1.getChildren().size()); } - + public void testCreationAndExternalization() { Set<ITask> rootTasks = new HashSet<ITask>(); Task task1 = new Task(manager.genUniqueTaskHandle(), "task 1", true); @@ -338,7 +335,7 @@ public class TaskListManagerTest extends TestCase { manager.moveToRoot(reportInRoot); rootTasks.add(reportInRoot); - assertEquals("" + manager.getTaskList().getRootElements(), 5, manager.getTaskList().getRootElements().size()); + assertEquals(""+ manager.getTaskList().getRootElements(), 5, manager.getTaskList().getRootElements().size()); manager.saveTaskList(); assertNotNull(manager.getTaskList()); @@ -347,13 +344,13 @@ public class TaskListManagerTest extends TestCase { manager.readExistingOrCreateNewList(); assertNotNull(manager.getTaskList()); - assertEquals(rootTasks, manager.getTaskList().getRootTasks()); - + assertEquals(rootTasks, manager.getTaskList().getRootTasks()); + Set<ITask> readList = manager.getTaskList().getRootTasks(); for (ITask task : readList) { if (task.equals(task1)) { assertEquals(task1.getDescription(), task.getDescription()); - assertEquals(1, task.getChildren().size()); + assertEquals(1, task.getChildren().size()); } if (task.equals(reportInRoot)) { assertEquals(reportInRoot.getDescription(), task.getDescription()); @@ -373,63 +370,7 @@ public class TaskListManagerTest extends TestCase { ScheduledTaskListRefreshJob job = new ScheduledTaskListRefreshJob(500, manager); job.run(new NullProgressMonitor()); Thread.sleep(1500); - assertEquals(counter, job.getCount()); + assertEquals(counter, job.getCount()); } - - public void testgetQueriesAndHitsForHandle() { - - BugzillaQueryHit hit1 = new BugzillaQueryHit("description1", "P1", "repositoryURL", 1, null, "status"); - BugzillaQueryHit hit2 = new BugzillaQueryHit("description2", "P1", "repositoryURL", 2, null, "status"); - BugzillaQueryHit hit3 = new BugzillaQueryHit("description3", "P1", "repositoryURL", 3, null, "status"); - - BugzillaQueryHit hit1twin = new BugzillaQueryHit("description1", "P1", "repositoryURL", 1, null, "status"); - BugzillaQueryHit hit2twin = new BugzillaQueryHit("description2", "P1", "repositoryURL", 2, null, "status"); - BugzillaQueryHit hit3twin = new BugzillaQueryHit("description3", "P1", "repositoryURL", 3, null, "status"); - - AbstractRepositoryQuery query1 = new AbstractRepositoryQuery() { - @Override - public String getRepositoryKind() { - // ignore - return "newkind"; - } - }; - - AbstractRepositoryQuery query2 = new AbstractRepositoryQuery() { - @Override - public String getRepositoryKind() { - // ignore - return "newkind"; - } - }; - - query1.addHit(hit1); - query1.addHit(hit2); - query1.addHit(hit3); - assertEquals(query1.getHits().size(), 3); - - query2.addHit(hit1twin); - query2.addHit(hit2twin); - query2.addHit(hit3twin); - assertEquals(query2.getHits().size(), 3); - - manager.addQuery(query1); - manager.addQuery(query2); - - TaskList taskList = manager.getTaskList(); - Set<AbstractRepositoryQuery> queriesReturned = taskList.getQueriesForHandle(AbstractRepositoryTask.getHandle( - "repositoryURL", 1)); - assertNotNull(queriesReturned); - assertEquals(queriesReturned.size(), 2); - assertTrue(queriesReturned.contains(query1)); - assertTrue(queriesReturned.contains(query2)); - - Set<AbstractQueryHit> hitsReturned = taskList.getQueryHitsForHandle(AbstractRepositoryTask.getHandle( - "repositoryURL", 2)); - assertNotNull(hitsReturned); - assertEquals(hitsReturned.size(), 2); - assertTrue(hitsReturned.contains(hit2)); - assertTrue(hitsReturned.contains(hit2twin)); - - } - + } diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java index edf744c36..c0e8e3957 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListNotificationManagerTest.java @@ -20,6 +20,7 @@ import junit.framework.TestCase; import org.eclipse.mylar.internal.tasklist.ui.ITaskListNotification; import org.eclipse.mylar.internal.tasklist.ui.ITaskListNotificationProvider; import org.eclipse.mylar.internal.tasklist.ui.TaskListNotificationManager; +import org.eclipse.mylar.internal.tasklist.ui.TaskListNotificationPopup; import org.eclipse.mylar.internal.tasklist.ui.TaskListNotificationReminder; import org.eclipse.mylar.provisional.tasklist.Task; import org.eclipse.swt.SWT; @@ -27,7 +28,7 @@ import org.eclipse.swt.widgets.Shell; public class TaskListNotificationManagerTest extends TestCase { -// TaskListNotificationPopup popup; + TaskListNotificationPopup popup; Shell dialogShell; diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java index 613762283..acc16b1f3 100644 --- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java +++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTestUtil.java @@ -20,7 +20,7 @@ import java.io.OutputStream; import java.net.URL; import java.util.Date; -import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.FileLocator; import org.eclipse.mylar.bugzilla.core.Attribute; import org.eclipse.mylar.bugzilla.core.BugReport; import org.eclipse.mylar.bugzilla.core.Comment; @@ -35,8 +35,7 @@ public class TaskTestUtil { public static File getLocalFile(String path) { try { URL installURL = MylarTasksTestsPlugin.getDefault().getBundle().getEntry(path); - - URL localURL = Platform.asLocalURL(installURL);//FileLocator.toFileURL(installURL); + URL localURL = FileLocator.toFileURL(installURL); return new File(localURL.getFile()); } catch (IOException e) { return null; diff --git a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF index 176b01be4..e01ee6a7a 100644 --- a/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF +++ b/org.eclipse.mylyn.tasks.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Mylar TaskList Plug-in Bundle-SymbolicName: org.eclipse.mylar.tasklist; singleton:=true -Bundle-Version: 0.4.9 +Bundle-Version: 0.4.8.v20060221-1550 Bundle-Activator: org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin Bundle-Localization: plugin Require-Bundle: org.eclipse.ui, diff --git a/org.eclipse.mylyn.tasks.ui/build.xml b/org.eclipse.mylyn.tasks.ui/build.xml deleted file mode 100644 index 9e71711ee..000000000 --- a/org.eclipse.mylyn.tasks.ui/build.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- WARNING: Eclipse auto-generated file. - Any modifications will be overwritten. - To include a user specific buildfile here, simply create one in the same - directory with the processing instruction <?eclipse.ant.import?> - as the first entry and export the buildfile again. --> -<project basedir="." default="build" name="org.eclipse.mylar.tasklist"> - <property environment="env"/> - <property name="ECLIPSE_HOME" value="../../../Apps/eclipse-3.2M5"/> - <property name="debuglevel" value="source,lines,vars"/> - <property name="target" value="1.5"/> - <property name="source" value="1.5"/> - <path id="Plug-in Dependencies.libraryclasspath"> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui_3.2.0.I20060216-1600.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.swt_3.2.0.v3224m.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.swt.win32.win32.x86_3.2.0.v3224.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.jface_3.2.0.I20060216-1600.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.commands_3.2.0.I20060214-1600.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui.workbench_3.2.0.I20060216-1600.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime_3.2.0.v20060216.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.0.v20060215a/runtime_registry_compatibility.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.registry_3.2.0.v20060217.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.jobs_3.2.0.v20060206.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.preferences_1.0.0.v20060215a.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.contenttype_3.2.0.v20060215a.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.common_1.0.0.v20060215a.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.osgi_3.2.0.v20060214.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.resources_3.2.0.v20060214.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui.browser_3.2.0.v20060212.jar"/> - <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ui.forms_3.2.0.v20060212b.jar"/> - <pathelement location="../../../org.eclipse.mylar.core"/> - </path> - <path id="org.eclipse.mylar.tasklist.classpath"> - <path refid="Plug-in Dependencies.libraryclasspath"/> - <pathelement location="bin"/> - </path> - <target name="init"> - <mkdir dir="bin"/> - <copy includeemptydirs="false" todir="bin"> - <fileset dir="src" excludes="**/*.launch, **/*.java"/> - </copy> - </target> - <target name="clean"> - <delete dir="bin"/> - </target> - <target depends="clean" name="cleanall"/> - <target depends="build-subprojects,build-project" name="build"/> - <target name="build-subprojects"/> - <target depends="init" name="build-project"> - <echo message="${ant.project.name}: ${ant.file}"/> - <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}"> - <src path="src"/> - <classpath refid="org.eclipse.mylar.tasklist.classpath"/> - </javac> - </target> - <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/> - <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler"> - <copy todir="${ant.library.dir}"> - <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> - </copy> - <unzip dest="${ant.library.dir}"> - <patternset includes="jdtCompilerAdapter.jar"/> - <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> - </unzip> - </target> - <target description="compile project with Eclipse compiler" name="build-eclipse-compiler"> - <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> - <antcall target="build"/> - </target> -</project> diff --git a/org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gif b/org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gif Binary files differdeleted file mode 100644 index 0205b2917..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/elcl16/expandall.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gif b/org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gif Binary files differdeleted file mode 100644 index 8a1fd4734..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/elcl16/filter-archive.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gif b/org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gif Binary files differdeleted file mode 100644 index fd01f49e0..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-notes.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gif b/org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gif Binary files differdeleted file mode 100644 index 77b112185..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/etool16/task-repository-notes.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gif Binary files differdeleted file mode 100644 index 7fe247650..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/overlay-synchronizing.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gif Binary files differdeleted file mode 100644 index d98c0701d..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-1.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gif Binary files differdeleted file mode 100644 index 17118d84b..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-2.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gif Binary files differdeleted file mode 100644 index 45b759436..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-3.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gif Binary files differdeleted file mode 100644 index 3313cd5ff..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-4.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gif Binary files differdeleted file mode 100644 index 8c5125e46..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/priority-5.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gif Binary files differdeleted file mode 100644 index 1e364acb5..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-conflict.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gif Binary files differdeleted file mode 100644 index 45b759436..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-normal.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gif Binary files differdeleted file mode 100644 index 7323d9601..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/status-server-context.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gif b/org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gif Binary files differdeleted file mode 100644 index 44ed28d04..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/eview16/task-activity.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gif b/org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gif Binary files differdeleted file mode 100644 index 08e472ad6..000000000 --- a/org.eclipse.mylyn.tasks.ui/icons/wizban/banner-repository.gif +++ /dev/null diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml index 51e5551b5..2ec83dc7d 100644 --- a/org.eclipse.mylyn.tasks.ui/plugin.xml +++ b/org.eclipse.mylyn.tasks.ui/plugin.xml @@ -32,6 +32,7 @@ <extension point="org.eclipse.ui.importWizards"> <wizard + category="org.eclipse.mylar.tasklist.importcategory" class="org.eclipse.mylar.internal.tasklist.ui.wizards.TaskDataImportWizard" icon="icons/eview16/task-list.gif" id="org.eclipse.mylar.tasklist.ui.importWizard" @@ -40,10 +41,14 @@ Import Mylar task data files from file system. </description> </wizard> + <category + id="org.eclipse.mylar.tasklist.importcategory" + name="Mylar"/> </extension> <extension point="org.eclipse.ui.exportWizards"> <wizard + category="org.eclipse.mylar.tasklist.exportcategory" class="org.eclipse.mylar.internal.tasklist.ui.wizards.TaskDataExportWizard" icon="icons/eview16/task-list.gif" id="org.eclipse.mylar.tasklist.ui.exportWizard" @@ -52,6 +57,9 @@ Export Mylar task data files to the file system. </description> </wizard> + <category + id="org.eclipse.mylar.tasklist.exportcategory" + name="Mylar"/> </extension> @@ -90,7 +98,7 @@ name="Task Repositories"> </view> </extension> - + <extension point="org.eclipse.ui.perspectiveExtensions"> <perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective"> <viewShortcut id="org.eclipse.mylar.tasks.ui.views.TaskListView"/> @@ -156,17 +164,6 @@ targetID="org.eclipse.mylar.tasks.ui.views.TaskListView"> <action - class="org.eclipse.mylar.internal.tasklist.ui.actions.NewRepositoryTaskAction" - enablesFor="*" - icon="icons/etool16/task-repository-new.gif" - id="org.eclipse.mylar.bugzilla.tasklist.addNew" - label="New Repository Task" - style="push" - toolbarPath="reports" - tooltip="New Repository Task"> - </action> - - <action class="org.eclipse.mylar.internal.tasklist.ui.SynchronizeReportsAction" enablesFor="*" icon="icons/etool16/repository-synchronize.gif" @@ -193,18 +190,7 @@ label="Add Existing Repository Task" style="push" tooltip="Add Repository Task"> - </action> - - <action - class="org.eclipse.mylar.internal.tasklist.ui.actions.NewRepositoryTaskAction" - enablesFor="*" - icon="icons/etool16/task-repository-new.gif" - id="org.eclipse.mylar.bugzilla.tasklist.popup.addNew" - label="New Repository Task" - menubarPath="reports" - tooltip="New Repository Task"/> - - + </action> <action class="org.eclipse.mylar.internal.tasklist.ui.actions.NewQueryAction" enablesFor="*" diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java index 07117f52c..1148fd29e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ScheduledTaskListRefreshJob.java @@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.mylar.provisional.tasklist.TaskList; @@ -55,9 +55,9 @@ public class ScheduledTaskListRefreshJob extends Job { List<AbstractRepositoryQuery> queries = Collections.unmodifiableList(taskList.getQueries()); for (AbstractRepositoryQuery query : queries) { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( query.getRepositoryKind()); - connector.synchronize(query); + client.synchronize(query); if (monitor.isCanceled()) return Status.CANCEL_STATUS; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java deleted file mode 100644 index 50f9985c3..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskPlannerLabelProvider.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.planner.ui; - -import java.text.DateFormat; - -import org.eclipse.jface.viewers.IColorProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.mylar.internal.core.util.DateUtil; -import org.eclipse.mylar.internal.core.util.MylarStatusHandler; -import org.eclipse.mylar.internal.tasklist.ui.views.TaskElementLabelProvider; -import org.eclipse.mylar.provisional.tasklist.ITask; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; - -/** - * @author Ken Sueda - */ -public class TaskPlannerLabelProvider extends TaskElementLabelProvider implements ITableLabelProvider, IColorProvider { - - private TaskElementLabelProvider taskListLabelProvider = new TaskElementLabelProvider(); - - public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 0) { - return super.getImage(element); - } else { - return null; - } - } - - public String getColumnText(Object element, int columnIndex) { - try { - if (element instanceof ITask) { - ITask task = (ITask) element; - switch (columnIndex) { - case 1: - return task.getPriority(); - case 2: - return task.getDescription(); - case 3: - if (task.getCreationDate() != null) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getCreationDate()); - } else { - MylarStatusHandler.log("Task has no creation date: " + task.getDescription(), this); - return "[unknown]"; - } - case 4: - if (task.getCompletionDate() != null) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getCompletionDate()); - } else { - return ""; - } - case 5: - return DateUtil.getFormattedDurationShort(task.getElapsedTime()); - case 6: - return task.getEstimateTimeHours() + " hours"; - } - } - } catch (RuntimeException e) { - MylarStatusHandler.fail(e, "Could not produce completed task label", false); - return ""; - } - return null; - } - - public Color getForeground(Object element) { - return taskListLabelProvider.getForeground(element); - } - - public Color getBackground(Object element) { - return taskListLabelProvider.getBackground(element); - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java deleted file mode 100644 index 03a6ee7a7..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/PlanningPerspectiveFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui; - -import org.eclipse.mylar.internal.tasklist.ui.views.TaskActivityView; -import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; -import org.eclipse.ui.IFolderLayout; -import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IPerspectiveFactory; - -/** - * @author Mik Kersten - */ -public class PlanningPerspectiveFactory implements IPerspectiveFactory { - - public void createInitialLayout(IPageLayout layout) { - defineActions(layout); - defineLayout(layout); - } - - public void defineActions(IPageLayout layout) { - layout.addShowViewShortcut(IPageLayout.ID_RES_NAV); - layout.addShowViewShortcut(IPageLayout.ID_PROP_SHEET); - layout.addShowViewShortcut(TaskListView.ID); - layout.addShowViewShortcut(TaskActivityView.ID); - - layout.addActionSet(IPageLayout.ID_NAVIGATE_ACTION_SET); - } - - public void defineLayout(IPageLayout layout) { - String editorArea = layout.getEditorArea(); - - IFolderLayout topLeft = layout.createFolder( - "topLeft", IPageLayout.LEFT, (float) 0.4, editorArea);//$NON-NLS-1$ - topLeft.addView(TaskListView.ID); - - IFolderLayout bottomLeft = layout.createFolder( - "bottomLeft", IPageLayout.BOTTOM, (float) 0.50,//$NON-NLS-1$ - "topLeft");//$NON-NLS-1$ - bottomLeft.addView(TaskActivityView.ID); - topLeft.addPlaceholder(IPageLayout.ID_RES_NAV); - -// IFolderLayout bottomRight = layout.createFolder( -// "bottomRight", IPageLayout.BOTTOM, (float) 0.66,//$NON-NLS-1$ -// editorArea); -// -// bottomRight.addView(IPageLayout.ID_TASK_LIST); - - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java index dd9a79c4e..390b73b60 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/SynchronizeReportsAction.java @@ -17,7 +17,7 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryTask; import org.eclipse.mylar.provisional.tasklist.ITask; @@ -53,31 +53,31 @@ public class SynchronizeReportsAction extends Action implements IViewActionDeleg @Override public void run() { if (query != null) { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(query.getRepositoryKind()); - if (connector != null) connector.synchronize(query); + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(query.getRepositoryKind()); + if (client != null) client.synchronize(query); } else if (TaskListView.getDefault() != null) { ISelection selection = TaskListView.getDefault().getViewer().getSelection(); for (Object obj : ((IStructuredSelection) selection).toList()) { if (obj instanceof AbstractRepositoryQuery) { AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) obj; - AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(repositoryQuery.getRepositoryKind()); + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(repositoryQuery.getRepositoryKind()); if (client != null) client.synchronize(repositoryQuery); } else if (obj instanceof TaskCategory) { TaskCategory cat = (TaskCategory) obj; for (ITask task : cat.getChildren()) { if (task instanceof AbstractRepositoryTask) { - AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(task.getRepositoryKind()); + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(task.getRepositoryKind()); if (client != null) client.requestRefresh((AbstractRepositoryTask)task); } } } else if (obj instanceof AbstractRepositoryTask) { AbstractRepositoryTask bugTask = (AbstractRepositoryTask)obj; - AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(bugTask.getRepositoryKind()); + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(bugTask.getRepositoryKind()); if (client != null) client.requestRefresh(bugTask); } else if (obj instanceof AbstractQueryHit) { AbstractQueryHit hit = (AbstractQueryHit) obj; if (hit.getCorrespondingTask() != null) { - AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(hit.getCorrespondingTask().getRepositoryKind()); + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient(hit.getCorrespondingTask().getRepositoryKind()); if (client != null) client.requestRefresh(hit.getCorrespondingTask()); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java deleted file mode 100644 index 55d91b855..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskArchiveFilter.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ -package org.eclipse.mylar.internal.tasklist.ui; - -import org.eclipse.mylar.provisional.tasklist.TaskArchive; - -/** - * @author Mik Kersten - */ -public class TaskArchiveFilter extends AbstractTaskFilter { - - public boolean select(Object element) { - if (element instanceof TaskArchive) { - return false; - } - return true; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java deleted file mode 100644 index 1fc94d074..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskCompletionFilter.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ -package org.eclipse.mylar.internal.tasklist.ui; - -import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; -import org.eclipse.mylar.provisional.tasklist.ITask; - -/** - * @author Mik Kersten - */ -public class TaskCompletionFilter extends AbstractTaskFilter { - - public boolean select(Object element) { - if (element instanceof ITask) { - ITask task = (ITask) element; - if (shouldAlwaysShow(task)) { - return true; - } - return !task.isCompleted(); - } else if (element instanceof AbstractQueryHit) { - AbstractQueryHit hit = (AbstractQueryHit) element; - if (hit.getCorrespondingTask() != null) { - if (shouldAlwaysShow(hit.getCorrespondingTask())) { - return true; - } else { - return !hit.getCorrespondingTask().isCompleted(); - } - } else { - return true; - } - } - return true; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java deleted file mode 100644 index eb7714308..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListColorsAndFonts.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui; - -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.widgets.Display; - -/** - * @author Mik Kersten - */ -public class TaskListColorsAndFonts { - - public static final Color BACKGROUND_ARCHIVE = new Color(Display.getDefault(), 225, 226, 246); - - public static final Color COLOR_GRAY_LIGHT = new Color(Display.getDefault(), 170, 170, 170); - - public static final Color COLOR_TASK_COMPLETED = new Color(Display.getDefault(), 170, 170, 170); - - public static final Color COLOR_TASK_ACTIVE = new Color(Display.getDefault(), 36, 22, 50); - - public static final Color COLOR_TASK_OVERDUE = new Color(Display.getDefault(), 200, 10, 30); - - public static final Color COLOR_HYPERLINK = new Color(Display.getDefault(), 0, 0, 255); - - public static final Font BOLD = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT); - - public static final Font ITALIC = JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT); - - /** - * NOTE: disposal of JFaceResources fonts handled by registry. - */ - public static void dispose() { - BACKGROUND_ARCHIVE.dispose(); - COLOR_GRAY_LIGHT.dispose(); - COLOR_TASK_COMPLETED.dispose(); - COLOR_TASK_ACTIVE.dispose(); - COLOR_TASK_OVERDUE.dispose(); - COLOR_HYPERLINK.dispose(); - } - - public static final String THEME_COLOR_ID_TASKLIST_CATEGORY = "org.eclipse.mylar.tasklist.ui.colors.background.category"; - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java deleted file mode 100644 index 1d74525b2..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListImageDescriptor.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 - 2006 Mylar eclipse.org project and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Mylar project committers - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui; - -import org.eclipse.jface.resource.CompositeImageDescriptor; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.util.Assert; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.Point; - -/** - * @author Mik Kersten - */ -public class TaskListImageDescriptor extends CompositeImageDescriptor { - - private ImageData base; - - private ImageData overlay; - - private Point fSize; - - private boolean top; - - private boolean left; - - public TaskListImageDescriptor(ImageDescriptor baseDesc, ImageDescriptor overlayDesc, boolean top, - boolean left) { - this.base = getImageData(baseDesc); - this.top = top; - this.left = left; - if (overlayDesc != null) - this.overlay = getImageData(overlayDesc); - Point size = new Point(base.width, base.height); - setImageSize(size); - } - - public TaskListImageDescriptor(ImageDescriptor baseDesc, Point size) { - this.base = getImageData(baseDesc); - setImageSize(size); - } - - @Override - protected void drawCompositeImage(int width, int height) { - drawImage(base, 0, 0); - int x = 0; - int y = 0; - if (!left) - x = 8;// base.width - overlay.width; - if (!top) - y = 8;// base.height - overlay.height; - if (overlay != null) { - drawImage(overlay, x, y); - } - } - - private ImageData getImageData(ImageDescriptor descriptor) { - ImageData data = descriptor.getImageData(); // see bug 51965: - // getImageData can - // return null - if (data == null) { - data = DEFAULT_IMAGE_DATA; - } - return data; - } - - /** - * Sets the size of the image created by calling - * <code>createImage()</code>. - * - * @param size - * the size of the image returned from calling - * <code>createImage()</code> - * @see ImageDescriptor#createImage() - */ - public void setImageSize(Point size) { - Assert.isNotNull(size); - Assert.isTrue(size.x >= 0 && size.y >= 0); - fSize = size; - } - - @Override - protected Point getSize() { - return new Point(fSize.x, fSize.y); - } - -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java index 20ae4fadf..afff7d4e6 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationManager.java @@ -19,6 +19,9 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.swt.events.ShellEvent; +import org.eclipse.swt.events.ShellListener; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; /** @@ -30,13 +33,13 @@ public class TaskListNotificationManager { private static final String OPEN_NOTIFICATION_JOB = "Open Notification Job"; -// private static final long CLOSE_POPUP_DELAY = 1000 * 10; + private static final long CLOSE_POPUP_DELAY = 1000 * 10; private static final long OPEN_POPUP_DELAY = 1000 * 60; private static final boolean runSystem = true; -// private TaskListNotificationPopup popup; + private TaskListNotificationPopup popup; private List<ITaskListNotification> notifications = new ArrayList<ITaskListNotification>(); @@ -53,22 +56,23 @@ public class TaskListNotificationManager { if (!PlatformUI.getWorkbench().getDisplay().isDisposed()) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { -// if ((popup != null && popup.close()) || popup == null) { -// closeJob.cancel(); -// collectNotifications(); -// synchronized (TaskListNotificationManager.class) { -// if (currentlyNotifying.size() > 0) { -// popup = new TaskListNotificationPopup(new Shell(PlatformUI.getWorkbench().getDisplay())); -// popup.setContents(new ArrayList<ITaskListNotification>(currentlyNotifying)); -// cleanNotified(); -// popup.setBlockOnOpen(false); -// popup.open(); -// closeJob.setSystem(runSystem); -// closeJob.schedule(CLOSE_POPUP_DELAY); -// popup.getShell().addShellListener(SHELL_LISTENER); -// } -// } -// } + if ((popup != null && popup.close()) || popup == null) { + closeJob.cancel(); + collectNotifications(); + synchronized (TaskListNotificationManager.class) { + if (currentlyNotifying.size() > 0) { + popup = new TaskListNotificationPopup(new Shell(PlatformUI.getWorkbench().getDisplay())); + popup.setContents(new ArrayList<ITaskListNotification>(currentlyNotifying)); + cleanNotified(); + popup.setBlockOnOpen(false); + popup.open(); + closeJob.setSystem(runSystem); + closeJob.schedule(CLOSE_POPUP_DELAY); + popup.getShell().addShellListener(SHELL_LISTENER); + } + } + } + } }); } @@ -91,11 +95,11 @@ public class TaskListNotificationManager { if (!PlatformUI.getWorkbench().getDisplay().isDisposed()) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { -// if (popup != null) { -// synchronized (popup) { -// popup.close(); -// } -// } + if (popup != null) { + synchronized (popup) { + popup.close(); + } + } } }); } @@ -107,43 +111,43 @@ public class TaskListNotificationManager { }; -// private ShellListener SHELL_LISTENER = new ShellListener() { -// -// public void shellClosed(ShellEvent arg0) { -// } -// -// public void shellDeactivated(ShellEvent arg0) { -//// popup.close(); -// // don't want notifications right away -// openJob.cancel(); -// openJob.schedule(OPEN_POPUP_DELAY); -// } -// -// public void shellActivated(ShellEvent arg0) { -// closeJob.cancel(); -// } -// -// public void shellDeiconified(ShellEvent arg0) { -// // ingore -// } -// -// public void shellIconified(ShellEvent arg0) { -// // ignore -// } -// }; - -// private void cleanNotified() { -// for (ITaskListNotification notification : currentlyNotifying) { -// notification.setNotified(true); -// } -// currentlyNotifying.clear(); -// } -// -// private void collectNotifications() { -// for (ITaskListNotificationProvider provider : notificationProviders) { -// currentlyNotifying.addAll(provider.getNotifications()); -// } -// } + private ShellListener SHELL_LISTENER = new ShellListener() { + + public void shellClosed(ShellEvent arg0) { + } + + public void shellDeactivated(ShellEvent arg0) { + popup.close(); + // don't want notifications right away + openJob.cancel(); + openJob.schedule(OPEN_POPUP_DELAY); + } + + public void shellActivated(ShellEvent arg0) { + closeJob.cancel(); + } + + public void shellDeiconified(ShellEvent arg0) { + // ingore + } + + public void shellIconified(ShellEvent arg0) { + // ignore + } + }; + + private void cleanNotified() { + for (ITaskListNotification notification : currentlyNotifying) { + notification.setNotified(true); + } + currentlyNotifying.clear(); + } + + private void collectNotifications() { + for (ITaskListNotificationProvider provider : notificationProviders) { + currentlyNotifying.addAll(provider.getNotifications()); + } + } public void startNotification(long initialStartupTime) { openJob.setSystem(runSystem); @@ -153,9 +157,9 @@ public class TaskListNotificationManager { public void stopNotification() { openJob.cancel(); closeJob.cancel(); -// if(popup != null) { -// popup.close(); -// } + if(popup != null) { + popup.close(); + } } public void addNotificationProvider(ITaskListNotificationProvider notification_provider) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java index 0dcdd6a0b..ef7dbb753 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListNotificationPopup.java @@ -1,226 +1,227 @@ -///******************************************************************************* -// * Copyright (c) 2004 - 2006 University Of British Columbia and others. -// * All rights reserved. This program and the accompanying materials -// * are made available under the terms of the Eclipse Public License v1.0 -// * which accompanies this distribution, and is available at -// * http://www.eclipse.org/legal/epl-v10.html -// * -// * Contributors: -// * University Of British Columbia - initial API and implementation -// *******************************************************************************/ -// -//package org.eclipse.mylar.internal.tasklist.ui; -// -//import java.util.List; -// -//import org.eclipse.swt.SWT; -//import org.eclipse.swt.events.SelectionAdapter; -//import org.eclipse.swt.events.SelectionEvent; -//import org.eclipse.swt.graphics.Font; -//import org.eclipse.swt.graphics.FontData; -//import org.eclipse.swt.graphics.Rectangle; -//import org.eclipse.swt.layout.GridLayout; -//import org.eclipse.swt.layout.RowData; -//import org.eclipse.swt.layout.RowLayout; -//import org.eclipse.swt.widgets.Button; -//import org.eclipse.swt.widgets.Composite; -//import org.eclipse.swt.widgets.Control; -//import org.eclipse.swt.widgets.Display; -//import org.eclipse.swt.widgets.Shell; -//import org.eclipse.ui.IWorkbenchWindow; -//import org.eclipse.ui.PlatformUI; -//import org.eclipse.ui.forms.events.HyperlinkAdapter; -//import org.eclipse.ui.forms.events.HyperlinkEvent; -//import org.eclipse.ui.forms.widgets.Form; -//import org.eclipse.ui.forms.widgets.FormToolkit; -//import org.eclipse.ui.forms.widgets.ImageHyperlink; -//import org.eclipse.ui.forms.widgets.Section; -// -///** -// * @author Rob Elves -// */ -//public class TaskListNotificationPopup extends PopupDialog { -// -// private static final int BUTTON_FONT_SIZE = 7; -// -// static boolean takeFocusOnOpen = false; -// -// static boolean persistBounds = false; -// -// static boolean showDialogMenu = false; -// -// static boolean showPersistAction = false; -// -// static String titleText; -// -// static final String MYLAR_NOTIFICATION_LABEL = "Mylar Notification"; -// -// static String infoText = null; -// -// private FormToolkit toolkit; -// -// private Form form; -// -// private Rectangle bounds; -// -// List<ITaskListNotification> notifications; -// -// private Composite sectionClient; -// -// public TaskListNotificationPopup(Shell parent) { -// super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, takeFocusOnOpen, persistBounds, showDialogMenu, -// showPersistAction, titleText, infoText); -// } -// -// public void setContents(List<ITaskListNotification> notifications) { -// this.notifications = notifications; -// } -// -// protected Control createContents(Composite parent) { -// getShell().setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); -// return createDialogArea(parent); -// } -// -// protected final Control createDialogArea(final Composite parent) { -// -// getShell().setText(MYLAR_NOTIFICATION_LABEL); -// -// toolkit = new FormToolkit(parent.getDisplay()); -// form = toolkit.createForm(parent); -// form.getBody().setLayout(new GridLayout()); -// -// Section section = toolkit.createSection(form.getBody(), Section.TITLE_BAR); -// -// section.setText(MYLAR_NOTIFICATION_LABEL); -// section.setLayout(new GridLayout()); -// -// sectionClient = toolkit.createComposite(section); -// sectionClient.setLayout(new GridLayout()); -// for (final ITaskListNotification notification : notifications) { -// ImageHyperlink link = toolkit.createImageHyperlink(sectionClient, SWT.WRAP | SWT.TOP); -// link.setText(notification.getDescription()); -// link.setImage(notification.getNotificationIcon()); -// link.addHyperlinkListener(new HyperlinkAdapter() { -// public void linkActivated(HyperlinkEvent e) { -// notification.setNotified(true); -// notification.openResource(); -// IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); -// if (window != null) { -// Shell windowShell = window.getShell(); -// if (windowShell != null) { -//// windowShell.moveAbove(null); -// windowShell.setMaximized(true); -// windowShell.open(); -// } -// } -// } -// }); -// } -// -// section.setClient(sectionClient); -// -// Composite buttonsComposite = toolkit.createComposite(sectionClient); -// buttonsComposite.setLayout(new RowLayout()); -// Button buttonOpenAll = toolkit.createButton(buttonsComposite, "Open All", SWT.NONE); -// -// { -// Font initialFont = buttonOpenAll.getFont(); -// FontData[] fontData = initialFont.getFontData(); -// for (int i = 0; i < fontData.length; i++) { -// fontData[i].setHeight(BUTTON_FONT_SIZE); -// } -// Font newFont = new Font(getShell().getDisplay(), fontData); -// buttonOpenAll.setFont(newFont); -// } -// buttonOpenAll.addSelectionListener(new SelectionAdapter() { -// public void widgetSelected(SelectionEvent e) { -// for (ITaskListNotification notification : notifications) { -// notification.setNotified(true); -// notification.openResource(); -// } -// IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); -// if (window != null) { -// Shell windowShell = window.getShell(); -// if (windowShell != null) { -// windowShell.setMaximized(true); -// windowShell.open(); -// } -// } -// close(); -// } -// }); -// -// RowData buttonOpenAllRowData = new RowData(45, 15); -// buttonOpenAll.setLayoutData(buttonOpenAllRowData); -// -// Button buttonDismiss = toolkit.createButton(buttonsComposite, "Close", SWT.NONE); -// -// { -// Font initialFont = buttonDismiss.getFont(); -// FontData[] fontData = initialFont.getFontData(); -// for (int i = 0; i < fontData.length; i++) { -// fontData[i].setHeight(BUTTON_FONT_SIZE); -// } -// Font newFont = new Font(getShell().getDisplay(), fontData); -// buttonDismiss.setFont(newFont); -// } -// buttonDismiss.addSelectionListener(new SelectionAdapter() { -// public void widgetSelected(SelectionEvent e) { -// for (ITaskListNotification notification : notifications) { -// notification.setNotified(true); -// } -// close(); -// } -// }); -// -// RowData buttonDismissRowData = new RowData(30, 15); -// buttonDismiss.setLayoutData(buttonDismissRowData); -// // toolkit.paintBordersFor(parent); -// form.pack(); -// return parent; -// } -// -// /** -// * Initialize the shell's bounds. -// */ -// public void initializeBounds() { -// getShell().setBounds(restoreBounds()); -// } -// -// private Rectangle restoreBounds() { -// bounds = form.getBounds(); -// Rectangle maxBounds = null; -// if (getShell() != null && !getShell().isDisposed()) -// maxBounds = getShell().getDisplay().getClientArea(); -// else { -// // fallback -// Display display = Display.getCurrent(); -// if (display == null) -// display = Display.getDefault(); -// if (display != null && !display.isDisposed()) -// maxBounds = display.getBounds(); -// } -// -// if (bounds.width > -1 && bounds.height > -1) { -// if (maxBounds != null) { -// bounds.width = Math.min(bounds.width, maxBounds.width); -// bounds.height = Math.min(bounds.height, maxBounds.height); -// } -// // Enforce an absolute minimal size -// bounds.width = Math.max(bounds.width, 30); -// bounds.height = Math.max(bounds.height, 30); -// } -// -// if (bounds.x > -1 && bounds.y > -1 && maxBounds != null) { -// bounds.x = Math.max(bounds.x, maxBounds.x); -// bounds.y = Math.max(bounds.y, maxBounds.y); -// -// if (bounds.width > -1 && bounds.height > -1) { -// bounds.x = maxBounds.width - bounds.width; -// bounds.y = maxBounds.height - bounds.height; -// } -// } -// return bounds; -// } -// -//} +/******************************************************************************* + * Copyright (c) 2004 - 2006 University Of British Columbia and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * University Of British Columbia - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylar.internal.tasklist.ui; + +import java.util.List; + +import org.eclipse.jface.dialogs.PopupDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.RowData; +import org.eclipse.swt.layout.RowLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.forms.events.HyperlinkAdapter; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.widgets.Form; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.ImageHyperlink; +import org.eclipse.ui.forms.widgets.Section; + +/** + * @author Rob Elves + */ +public class TaskListNotificationPopup extends PopupDialog { + + private static final int BUTTON_FONT_SIZE = 7; + + static boolean takeFocusOnOpen = false; + + static boolean persistBounds = false; + + static boolean showDialogMenu = false; + + static boolean showPersistAction = false; + + static String titleText; + + static final String MYLAR_NOTIFICATION_LABEL = "Mylar Notification"; + + static String infoText = null; + + private FormToolkit toolkit; + + private Form form; + + private Rectangle bounds; + + List<ITaskListNotification> notifications; + + private Composite sectionClient; + + public TaskListNotificationPopup(Shell parent) { + super(parent, PopupDialog.INFOPOPUP_SHELLSTYLE | SWT.ON_TOP, takeFocusOnOpen, persistBounds, showDialogMenu, + showPersistAction, titleText, infoText); + } + + public void setContents(List<ITaskListNotification> notifications) { + this.notifications = notifications; + } + + protected Control createContents(Composite parent) { + getShell().setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY)); + return createDialogArea(parent); + } + + protected final Control createDialogArea(final Composite parent) { + + getShell().setText(MYLAR_NOTIFICATION_LABEL); + + toolkit = new FormToolkit(parent.getDisplay()); + form = toolkit.createForm(parent); + form.getBody().setLayout(new GridLayout()); + + Section section = toolkit.createSection(form.getBody(), Section.TITLE_BAR); + + section.setText(MYLAR_NOTIFICATION_LABEL); + section.setLayout(new GridLayout()); + + sectionClient = toolkit.createComposite(section); + sectionClient.setLayout(new GridLayout()); + for (final ITaskListNotification notification : notifications) { + ImageHyperlink link = toolkit.createImageHyperlink(sectionClient, SWT.WRAP | SWT.TOP); + link.setText(notification.getDescription()); + link.setImage(notification.getNotificationIcon()); + link.addHyperlinkListener(new HyperlinkAdapter() { + public void linkActivated(HyperlinkEvent e) { + notification.setNotified(true); + notification.openResource(); + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + Shell windowShell = window.getShell(); + if (windowShell != null) { +// windowShell.moveAbove(null); + windowShell.setMaximized(true); + windowShell.open(); + } + } + } + }); + } + + section.setClient(sectionClient); + + Composite buttonsComposite = toolkit.createComposite(sectionClient); + buttonsComposite.setLayout(new RowLayout()); + Button buttonOpenAll = toolkit.createButton(buttonsComposite, "Open All", SWT.NONE); + + { + Font initialFont = buttonOpenAll.getFont(); + FontData[] fontData = initialFont.getFontData(); + for (int i = 0; i < fontData.length; i++) { + fontData[i].setHeight(BUTTON_FONT_SIZE); + } + Font newFont = new Font(getShell().getDisplay(), fontData); + buttonOpenAll.setFont(newFont); + } + buttonOpenAll.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + for (ITaskListNotification notification : notifications) { + notification.setNotified(true); + notification.openResource(); + } + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + Shell windowShell = window.getShell(); + if (windowShell != null) { + windowShell.setMaximized(true); + windowShell.open(); + } + } + close(); + } + }); + + RowData buttonOpenAllRowData = new RowData(45, 15); + buttonOpenAll.setLayoutData(buttonOpenAllRowData); + + Button buttonDismiss = toolkit.createButton(buttonsComposite, "Close", SWT.NONE); + + { + Font initialFont = buttonDismiss.getFont(); + FontData[] fontData = initialFont.getFontData(); + for (int i = 0; i < fontData.length; i++) { + fontData[i].setHeight(BUTTON_FONT_SIZE); + } + Font newFont = new Font(getShell().getDisplay(), fontData); + buttonDismiss.setFont(newFont); + } + buttonDismiss.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + for (ITaskListNotification notification : notifications) { + notification.setNotified(true); + } + close(); + } + }); + + RowData buttonDismissRowData = new RowData(30, 15); + buttonDismiss.setLayoutData(buttonDismissRowData); + // toolkit.paintBordersFor(parent); + form.pack(); + return parent; + } + + /** + * Initialize the shell's bounds. + */ + public void initializeBounds() { + getShell().setBounds(restoreBounds()); + } + + private Rectangle restoreBounds() { + bounds = form.getBounds(); + Rectangle maxBounds = null; + if (getShell() != null && !getShell().isDisposed()) + maxBounds = getShell().getDisplay().getClientArea(); + else { + // fallback + Display display = Display.getCurrent(); + if (display == null) + display = Display.getDefault(); + if (display != null && !display.isDisposed()) + maxBounds = display.getBounds(); + } + + if (bounds.width > -1 && bounds.height > -1) { + if (maxBounds != null) { + bounds.width = Math.min(bounds.width, maxBounds.width); + bounds.height = Math.min(bounds.height, maxBounds.height); + } + // Enforce an absolute minimal size + bounds.width = Math.max(bounds.width, 30); + bounds.height = Math.max(bounds.height, 30); + } + + if (bounds.x > -1 && bounds.y > -1 && maxBounds != null) { + bounds.x = Math.max(bounds.x, maxBounds.x); + bounds.y = Math.max(bounds.y, maxBounds.y); + + if (bounds.width > -1 && bounds.height > -1) { + bounds.x = maxBounds.width - bounds.width; + bounds.y = maxBounds.height - bounds.height; + } + } + return bounds; + } + +} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java index a55785557..7b4319506 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/TaskListPatternFilter.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.eclipse.mylar.internal.tasklist.ui; -import org.eclipse.ui.internal.dialogs.PatternFilter; +import org.eclipse.ui.dialogs.PatternFilter; /** * @author Mik Kersten diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java index b77703e6d..50cee6384 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/AddRepositoryAction.java @@ -47,7 +47,6 @@ public class AddRepositoryAction extends Action { if (wizard != null && shell != null && !shell.isDisposed()) { WizardDialog dialog = new WizardDialog(shell, wizard); dialog.create(); - dialog.getShell().setText("Add New Task Repository"); // dialog.getShell().setText("Mylar Tasks"); dialog.setBlockOnOpen(true); if (dialog.open() == Dialog.CANCEL) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java deleted file mode 100644 index 2ae9a6d1f..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ExpandAllAction.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.actions; - -import org.eclipse.jface.action.Action; -import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; -import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; - -/** - * @author Mik Kersten - */ -public class ExpandAllAction extends Action { - - private static final String LABEL = "Expand All"; - - public static final String ID = "org.eclipse.mylar.tasklist.actions.expand.all"; - - private TaskListView taskListView; - - public ExpandAllAction(TaskListView taskListView) { - super(LABEL); - this.taskListView = taskListView; - setId(ID); - setText(LABEL); - setToolTipText(LABEL); - setImageDescriptor(TaskListImages.EXPAND_ALL); - } - - public void run() { - if (taskListView.getViewer() != null) - taskListView.getViewer().expandAll(); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java deleted file mode 100644 index 3fc809151..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/FilterArchiveContainerAction.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.actions; - -import org.eclipse.jface.action.Action; -import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants; -import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; -import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; -import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; - -/** - * @author Mik Kersten - */ -public class FilterArchiveContainerAction extends Action { - - public static final String ID = "org.eclipse.mylar.tasklist.actions.filter.archive"; - - private static final String LABEL = "Filter Archive Category"; - - private final TaskListView view; - - public FilterArchiveContainerAction(TaskListView view) { - this.view = view; - setText(LABEL); - setToolTipText(LABEL); - setId(ID); - setImageDescriptor(TaskListImages.FILTER_ARCHIVE); - setChecked(MylarTaskListPlugin.getMylarCorePrefs().contains(TaskListPreferenceConstants.FILTER_ARCHIVE_MODE)); - } - - @Override - public void run() { - MylarTaskListPlugin.getMylarCorePrefs().setValue(TaskListPreferenceConstants.FILTER_ARCHIVE_MODE, isChecked()); - if (isChecked()) { - view.addFilter(view.getArchiveFilter()); - } else { - view.removeFilter(view.getArchiveFilter()); - } - this.view.getViewer().refresh(); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java deleted file mode 100644 index e38bde8f5..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/NewRepositoryTaskAction.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.actions; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.mylar.internal.tasklist.TaskListPreferenceConstants; -import org.eclipse.mylar.internal.tasklist.ui.wizards.MultiRepositoryAwareWizard; -import org.eclipse.mylar.internal.tasklist.ui.wizards.NewRepositoryTaskPage; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; -import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IViewActionDelegate; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.PlatformUI; - -/** - * @author Mik Kersten and Ken Sueda - */ -public class NewRepositoryTaskAction extends Action implements IViewActionDelegate { - - public static final String ID = "org.eclipse.mylar.tasklist.ui.repositories.actions.create"; - - @Override - public void run() { - - boolean offline = MylarTaskListPlugin.getPrefs().getBoolean(TaskListPreferenceConstants.WORK_OFFLINE); - if (offline) { - MessageDialog.openInformation(null, "Unable to create bug report", - "Unable to create a new bug report since you are currently offline"); - return; - } - // TaskRepository repository = - // MylarTaskListPlugin.getRepositoryManager().getDefaultRepository(BugzillaPlugin.REPOSITORY_KIND); - List<String> connectorKinds = new ArrayList<String>(); - for (AbstractRepositoryConnector client: MylarTaskListPlugin.getRepositoryManager().getRepositoryClients()) { - if (client.canCreateTaskFromId()) { - connectorKinds.add(client.getRepositoryType()); - } - } - - IWizard wizard = new MultiRepositoryAwareWizard(new NewRepositoryTaskPage(connectorKinds)); - - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - if (wizard != null && shell != null && !shell.isDisposed()) { - - WizardDialog dialog = new WizardDialog(shell, wizard); - dialog.setBlockOnOpen(true); - dialog.open(); - - } else { - // TODO handle not good - } - } - - public void init(IViewPart view) { - - } - - public void run(IAction action) { - run(); - } - - public void selectionChanged(IAction action, ISelection selection) { - - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java index 2769aebe6..38dfe1e37 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/OpenTaskListElementAction.java @@ -20,7 +20,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.mylar.internal.tasklist.ui.TaskListUiUtil; import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; import org.eclipse.mylar.provisional.tasklist.ITask; import org.eclipse.mylar.provisional.tasklist.ITaskContainer; @@ -58,10 +58,10 @@ public class OpenTaskListElementAction extends Action { //element instanceof IQueryHit; boolean forceUpdate = false; - final AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + final AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( task.getRepositoryKind()); - if (!task.isLocal() && connector != null) { - Job refreshJob = connector.synchronize(task, forceUpdate, new IJobChangeListener() { + if (!task.isLocal() && client != null) { + Job refreshJob = client.synchronize(task, forceUpdate, new IJobChangeListener() { public void done(IJobChangeEvent event) { TaskListUiUtil.openEditor(task); @@ -97,7 +97,7 @@ public class OpenTaskListElementAction extends Action { TaskListUiUtil.openEditor((ITaskContainer) element); } else if (element instanceof AbstractRepositoryQuery) { AbstractRepositoryQuery query = (AbstractRepositoryQuery) element; - AbstractRepositoryConnector client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( query.getRepositoryKind()); client.openEditQueryDialog(query); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java deleted file mode 100644 index e10eccc0e..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityContentProvider.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.views; - -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.mylar.provisional.tasklist.DateRangeContainer; -import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate; -import org.eclipse.mylar.provisional.tasklist.TaskListManager; - -/** - * @author Rob Elves - * @author Mik Kersten - */ -public class TaskActivityContentProvider implements IStructuredContentProvider, ITreeContentProvider { - -// private TreeViewer treeViewer; - - private TaskListManager taskListManager; - - public TaskActivityContentProvider(TaskListManager taskActivityManager) { - this.taskListManager = taskActivityManager; -// this.treeViewer = viewer; - } - - public void inputChanged(Viewer v, Object oldInput, Object newInput) { -// treeViewer = (TreeViewer)v; -// taskActivityManager = MylarTaskListPlugin.getTaskActivityManager(); -// taskActivityManager.addListener(this); - } - - public void dispose() { -// taskActivityManager.removeListener(this); - } - - public Object[] getElements(Object parent) { - return taskListManager.getDateRanges(); - } - - public Object getParent(Object child) { - if (child instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate dateRangeTaskWrapper = (DateRangeActivityDelegate) child; - return dateRangeTaskWrapper.getParent(); - } else { - return new Object[0]; - } - } - - public Object[] getChildren(Object parent) { - if (parent instanceof DateRangeContainer) { - DateRangeContainer taskContainer = (DateRangeContainer) parent; - return taskContainer.getChildren().toArray(); - } else { - return new Object[0]; - } - } - - public boolean hasChildren(Object parent) { - if (parent instanceof DateRangeContainer) { - DateRangeContainer dateRangeTaskCategory = (DateRangeContainer) parent; - return dateRangeTaskCategory.getChildren() != null && dateRangeTaskCategory.getChildren().size() > 0; - } else { - return false; - } - } - -// public void changed(Object o) { -// if (o != null) { -// treeViewer.refresh(o); -// } else { -// treeViewer.refresh(); -// } -// } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java deleted file mode 100644 index 441af1185..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityLabelProvider.java +++ /dev/null @@ -1,142 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.views; - -import java.text.DateFormat; - -import org.eclipse.jface.viewers.DecoratingLabelProvider; -import org.eclipse.jface.viewers.IColorProvider; -import org.eclipse.jface.viewers.IFontProvider; -import org.eclipse.jface.viewers.ILabelDecorator; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.mylar.internal.core.util.DateUtil; -import org.eclipse.mylar.internal.core.util.MylarStatusHandler; -import org.eclipse.mylar.internal.tasklist.ui.TaskListColorsAndFonts; -import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; -import org.eclipse.mylar.internal.tasklist.ui.TaskListUiUtil; -import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate; -import org.eclipse.mylar.provisional.tasklist.DateRangeContainer; -import org.eclipse.mylar.provisional.tasklist.ITask; -import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; -import org.eclipse.mylar.provisional.tasklist.Task.PriorityLevel; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.Image; - -/** - * @author Rob Elves - */ -public class TaskActivityLabelProvider extends DecoratingLabelProvider implements ITableLabelProvider, IColorProvider, - IFontProvider { - - private static final String UNITS_HOURS = " hours"; - - private static final String NO_MINUTES = "0 minutes"; - - private Color categoryBackgroundColor; - - public TaskActivityLabelProvider(ILabelProvider provider, ILabelDecorator decorator, Color parentBacground) { - super(provider, decorator); - this.categoryBackgroundColor = parentBacground; - } - - public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 0) { - if (element instanceof DateRangeContainer) { - return TaskListImages.getImage(TaskListImages.CALENDAR); - } else if (element instanceof DateRangeActivityDelegate) { - return super.getImage(((DateRangeActivityDelegate) element).getCorrespondingTask()); - } else { - return super.getImage(element); - } - } else if (columnIndex == 1) { - if (element instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate taskElement = (DateRangeActivityDelegate) element; - return TaskListUiUtil.getImageForPriority(PriorityLevel.fromString(taskElement.getPriority())); - } - } - return null; - } - - public String getColumnText(Object element, int columnIndex) { - if (element instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate activityDelegate = (DateRangeActivityDelegate) element; - ITask task = activityDelegate.getCorrespondingTask(); - switch (columnIndex) { - case 2: - return task.getDescription(); - case 3: - return DateUtil.getFormattedDurationShort(activityDelegate.getDateRangeContainer().getElapsed(activityDelegate)); - case 4: - return task.getEstimateTimeHours() + UNITS_HOURS; - case 5: - if (task.getReminderDate() != null) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getReminderDate()); - } else { - return ""; - } - case 6: - if (activityDelegate.getStart() > 0) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(activityDelegate.getStart()); - } else { - return ""; - } - } - } else if (element instanceof DateRangeContainer) { - DateRangeContainer taskCategory = (DateRangeContainer) element; - switch (columnIndex) { - case 2: - return taskCategory.getDescription(); - case 3: - String elapsedTimeString = NO_MINUTES; - try { - elapsedTimeString = DateUtil.getFormattedDurationShort(taskCategory.getTotalElapsed()); - if (elapsedTimeString.equals("")) - elapsedTimeString = NO_MINUTES; - } catch (RuntimeException e) { - MylarStatusHandler.fail(e, "Could not format elapsed time", true); - } - return elapsedTimeString; - case 4: - return taskCategory.getTotalEstimated() + UNITS_HOURS; - } - } - return null; - } - - @Override - public Color getBackground(Object element) { - if (element instanceof AbstractTaskContainer) { - return categoryBackgroundColor; - } else { - return super.getBackground(element); - } - } - - public Font getFont(Object element) { - if (element instanceof DateRangeContainer) { - DateRangeContainer container = (DateRangeContainer) element; - if (container.isPresent()) { - return TaskListColorsAndFonts.BOLD; - } - } else if (element instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate durationDelegate = (DateRangeActivityDelegate) element; - return super.getFont(durationDelegate.getCorrespondingTask()); - } - return super.getFont(element); - } - - public void setCategoryBackgroundColor(Color categoryBackgroundColor) { - this.categoryBackgroundColor = categoryBackgroundColor; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java deleted file mode 100644 index 50a0c1b0f..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java +++ /dev/null @@ -1,580 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.views; - -import java.text.DateFormat; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ComboBoxCellEditor; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.ICellEditorListener; -import org.eclipse.jface.viewers.ICellModifier; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.ViewerDropAdapter; -import org.eclipse.mylar.internal.core.dt.MylarWebRef; -import org.eclipse.mylar.internal.tasklist.planner.ui.ReminderCellEditor; -import org.eclipse.mylar.internal.tasklist.ui.TaskListColorsAndFonts; -import org.eclipse.mylar.internal.tasklist.ui.actions.OpenTaskListElementAction; -import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit; -import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; -import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate; -import org.eclipse.mylar.provisional.tasklist.DateRangeContainer; -import org.eclipse.mylar.provisional.tasklist.ITask; -import org.eclipse.mylar.provisional.tasklist.ITaskActivityListener; -import org.eclipse.mylar.provisional.tasklist.ITaskListChangeListener; -import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; -import org.eclipse.mylar.provisional.tasklist.TaskListManager; -import org.eclipse.swt.SWT; -import org.eclipse.swt.dnd.DND; -import org.eclipse.swt.dnd.TextTransfer; -import org.eclipse.swt.dnd.Transfer; -import org.eclipse.swt.dnd.TransferData; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.ControlListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.TreeColumn; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.part.ViewPart; -import org.eclipse.ui.themes.IThemeManager; - -/** - * @author Rob Elves - */ -public class TaskActivityView extends ViewPart { - - private static final String MEMENTO_KEY_WIDTH = "colwidth"; - - public static final String ID = "org.eclipse.mylar.tasklist.activity"; - - public static final String columnWidthIdentifier = "org.eclipse.mylar.tasklist.ui.views.taskactivity.columnwidth"; - - public static final String tableSortIdentifier = "org.eclipse.mylar.tasklist.ui.views.taskactivity.sortIndex"; - - private static TaskActivityView INSTANCE; - - private IMemento taskActivityMemento; - - private OpenTaskListElementAction openTaskEditor; - - private String[] columnNames = new String[] { " ", " !", "Description", "Elapsed", "Estimated", "Reminder", - "Last Active" }; - - private int[] columnWidths = new int[] { 60, 12, 160, 60, 70, 100, 100 }; - - private TreeColumn[] columns; - - private TaskActivityLabelProvider taskHistoryTreeLabelProvider; - - private TreeViewer treeViewer; - - private TaskActivityContentProvider taskActivityTableContentProvider; - - private IThemeManager themeManager; - - private final IPropertyChangeListener THEME_CHANGE_LISTENER = new IPropertyChangeListener() { - public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME) - || event.getProperty().equals(TaskListColorsAndFonts.THEME_COLOR_ID_TASKLIST_CATEGORY)) { - taskHistoryTreeLabelProvider.setCategoryBackgroundColor(themeManager.getCurrentTheme() - .getColorRegistry().get(TaskListColorsAndFonts.THEME_COLOR_ID_TASKLIST_CATEGORY)); - refresh(); - } - } - }; - - /** - * TODO: need lazier refresh policy. - */ - private final ITaskActivityListener ACTIVITY_LISTENER = new ITaskActivityListener() { - - public void taskActivated(ITask task) { - refresh(); - // TaskActivityView.this.treeViewer.refresh(task); - } - - public void tasksActivated(List<ITask> tasks) { - for (ITask task : tasks) { - taskActivated(task); - } - } - - public void taskDeactivated(ITask task) { - // don't need to refresh here - // TaskActivityView.this.treeViewer.refresh(task); - } - - public void activityChanged(DateRangeContainer week) { - refresh(); - // TaskActivityView.this.treeViewer.refresh(week); - } - - public void tasklistRead() { - refresh(); - } - }; - - private ITaskListChangeListener TASK_CHANGE_LISTENER = new ITaskListChangeListener() { - - public void localInfoChanged(final ITask updateTask) { - refresh(); - } - - public void repositoryInfoChanged(ITask task) { - localInfoChanged(task); - } - - public void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer) { - // ignore - } - - public void taskDeleted(ITask task) { - // ignore - } - - public void containerAdded(AbstractTaskContainer container) { - // ignore - } - - public void containerDeleted(AbstractTaskContainer container) { - // ignore - } - - public void taskAdded(ITask task) { - // ignore - } - - public void containerInfoChanged(AbstractTaskContainer container) { - // ignore - } - }; - - private TaskActivityViewSorter sorter; - - public static TaskActivityView openInActivePerspective() { - try { - return (TaskActivityView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ID); - } catch (Exception e) { - return null; - } - } - - public TaskActivityView() { - INSTANCE = this; - MylarTaskListPlugin.getTaskListManager().addActivityListener(ACTIVITY_LISTENER); - MylarTaskListPlugin.getTaskListManager().getTaskList().addChangeListener(TASK_CHANGE_LISTENER); - } - - @Override - public void dispose() { - super.dispose(); - MylarTaskListPlugin.getTaskListManager().removeActivityListener(ACTIVITY_LISTENER); - MylarTaskListPlugin.getTaskListManager().getTaskList().removeChangeListener(TASK_CHANGE_LISTENER); - } - - @Override - public void createPartControl(Composite parent) { - themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); - themeManager.addPropertyChangeListener(THEME_CHANGE_LISTENER); - - int treeStyle = SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION; - treeViewer = new TreeViewer(parent, treeStyle); - - getViewer().getTree().setHeaderVisible(true); - getViewer().getTree().setLinesVisible(true); - getViewer().setColumnProperties(columnNames); - getViewer().setUseHashlookup(true); - - columns = new TreeColumn[columnNames.length]; - for (int i = 0; i < columnNames.length; i++) { - columns[i] = new TreeColumn(getViewer().getTree(), SWT.LEFT); - columns[i].setText(columnNames[i]); - columns[i].setWidth(columnWidths[i]); - - final int index = i; - columns[i].addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - int column = index - 1; - if (column == sorter.getSortColumn()) { - sorter.reverseDirection(); - } else { - sorter.setSortColumn(column); - } - getViewer().refresh(); - // if(taskActivityMemento != null) { - // sorter.saveState(taskActivityMemento); - // } - - } - }); - - columns[i].addControlListener(new ControlListener() { - public void controlResized(ControlEvent e) { - for (int j = 0; j < columnWidths.length; j++) { - if (columns[j].equals(e.getSource())) { - columnWidths[j] = columns[j].getWidth(); - } - } - } - - public void controlMoved(ControlEvent e) { - // don't care if the control is moved - } - }); - } - - IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); - Color categoryBackground = themeManager.getCurrentTheme().getColorRegistry().get( - TaskListColorsAndFonts.THEME_COLOR_ID_TASKLIST_CATEGORY); - - taskHistoryTreeLabelProvider = new TaskActivityLabelProvider(new TaskElementLabelProvider(), PlatformUI - .getWorkbench().getDecoratorManager().getLabelDecorator(), categoryBackground); - - sorter = new TaskActivityViewSorter(); - getViewer().setSorter(sorter); - taskActivityTableContentProvider = new TaskActivityContentProvider(MylarTaskListPlugin.getTaskListManager()); - - getViewer().setContentProvider(taskActivityTableContentProvider); - getViewer().setLabelProvider(taskHistoryTreeLabelProvider); - getViewer().setInput(getViewSite()); - restoreState(); - createCellEditorListener(); - makeActions(); - initDrop(); - hookOpenAction(); - - } - - @MylarWebRef(name = "Drag and drop article", url = "http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html") - private void initDrop() { - Transfer[] types = new Transfer[] { TextTransfer.getInstance() }; - - treeViewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(treeViewer) { - { - setFeedbackEnabled(false); - } - - @Override - public boolean performDrop(Object data) { - - IStructuredSelection selection = ((IStructuredSelection) TaskListView.getDefault().getViewer() - .getSelection()); - - Object target = getCurrentTarget(); - DateRangeContainer container; - Calendar reminderCalendar; - if (target instanceof DateRangeContainer) { - container = (DateRangeContainer) target; - reminderCalendar = container.getStart(); - - } else if (target instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) target; - reminderCalendar = dateRangeActivityDelegate.getDateRangeContainer().getStart(); - } else { - return false; - } - - for (Iterator iter = selection.iterator(); iter.hasNext();) { - Object selectedObject = iter.next(); - ITask task = null; - if (selectedObject instanceof ITask) { - task = (ITask) selectedObject; - } else if (selectedObject instanceof AbstractQueryHit) { - task = ((AbstractQueryHit) selectedObject).getOrCreateCorrespondingTask(); - } - if (task != null) { - MylarTaskListPlugin.getTaskListManager().setReminder(task, reminderCalendar.getTime()); - } - } - return true; - } - - @Override - public boolean validateDrop(Object targetObject, int operation, TransferData transferType) { - Object selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection()) - .getFirstElement(); - - if (selectedObject instanceof AbstractTaskContainer) { - return false; - } - - Object target = getCurrentTarget(); - DateRangeContainer dateRangeContainer = null; - if (target instanceof DateRangeContainer) { - dateRangeContainer = (DateRangeContainer) target; - } else if (target instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) target; - dateRangeContainer = dateRangeActivityDelegate.getDateRangeContainer(); - } - - if (dateRangeContainer != null && (dateRangeContainer.isPresent() || dateRangeContainer.isFuture())) { - return true; - } - return false; - } - }); - } - - private void makeActions() { - openTaskEditor = new OpenTaskListElementAction(this.getViewer()); - // openUrlInExternal = new OpenTaskInExternalBrowserAction(); - } - - private void hookOpenAction() { - getViewer().addDoubleClickListener(new IDoubleClickListener() { - public void doubleClick(DoubleClickEvent event) { - openTaskEditor.run(); - } - }); - } - - public static TaskActivityView getDefault() { - return INSTANCE; - } - - private TreeViewer getViewer() { - return treeViewer; - } - - private void refresh() { - if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().getDisplay().isDisposed()) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - if (getViewer().getControl() != null && !getViewer().getControl().isDisposed()) { - TaskActivityView.this.treeViewer.refresh(); - } - } - }); - } - } - - public ITask getSelectedTask() { - ISelection selection = getViewer().getSelection(); - if (selection.isEmpty()) - return null; - if (selection instanceof StructuredSelection) { - StructuredSelection structuredSelection = (StructuredSelection) selection; - Object element = structuredSelection.getFirstElement(); - if (element instanceof ITask) { - return (ITask) structuredSelection.getFirstElement(); - } - } - return null; - } - - @Override - public void setFocus() { - // ignore - } - - private void createCellEditorListener() { - CellEditor[] editors = new CellEditor[columnNames.length]; - final ComboBoxCellEditor estimateEditor = new ComboBoxCellEditor(treeViewer.getTree(), - TaskListManager.ESTIMATE_TIMES, SWT.READ_ONLY); - final ReminderCellEditor reminderEditor = new ReminderCellEditor(treeViewer.getTree()); - editors[0] = null; // not used - editors[1] = null;// not used - editors[2] = null;// not used - editors[3] = null;// not used - editors[4] = estimateEditor; - editors[5] = reminderEditor; - reminderEditor.addListener(new ICellEditorListener() { - public void applyEditorValue() { - Object selection = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement(); - if (selection instanceof DateRangeActivityDelegate) { - // ((ITask) - // selection).setReminderDate(reminderEditor.getReminderDate()); - // treeViewer.refresh(); - DateRangeActivityDelegate dateRangeActivityDelegate = (DateRangeActivityDelegate) selection; - MylarTaskListPlugin.getTaskListManager().setReminder( - dateRangeActivityDelegate.getCorrespondingTask(), reminderEditor.getReminderDate()); - // MylarTaskListPlugin.getTaskListManager().notifyLocalInfoChanged((ITask) - // selection); - } - } - - public void cancelEditor() { - } - - public void editorValueChanged(boolean oldValidState, boolean newValidState) { - } - - }); - estimateEditor.addListener(new ICellEditorListener() { - public void applyEditorValue() { - Object selection = ((IStructuredSelection) treeViewer.getSelection()).getFirstElement(); - if (selection instanceof ITask) { - ITask task = (ITask) selection; - int estimate = (Integer) estimateEditor.getValue(); - if (estimate == -1) { - estimate = 0; - } - task.setEstimatedTimeHours(estimate); - // updateLabels(); - refresh(); - // treeViewer.refresh(); - } - } - - public void cancelEditor() { - } - - public void editorValueChanged(boolean oldValidState, boolean newValidState) { - } - - }); - treeViewer.setCellEditors(editors); - getViewer().setCellModifier(new TaskActivityCellModifier(treeViewer)); - } - - private class TaskActivityCellModifier implements ICellModifier { - - private TreeViewer treeViewer; - - public TaskActivityCellModifier(TreeViewer tableViewer) { - this.treeViewer = tableViewer; - } - - public boolean canModify(Object element, String property) { - int columnIndex = Arrays.asList(columnNames).indexOf(property); - if (columnIndex == 4 || columnIndex == 5) { - return true; - } - return false; - } - - public Object getValue(Object element, String property) { - if (element instanceof ITask) { - int columnIndex = Arrays.asList(columnNames).indexOf(property); - if (element instanceof ITask) { - if (columnIndex == 5) { - if (((ITask) element).getReminderDate() != null) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format( - ((ITask) element).getReminderDate()); - } else { - return null; - } - } else if (columnIndex == 4) { - return new Integer(Arrays.asList(TaskListManager.ESTIMATE_TIMES).indexOf( - ((ITask) element).getEstimateTimeHours())); - } - } - } - return null; - } - - public void modify(Object element, String property, Object value) { - int columnIndex = Arrays.asList(columnNames).indexOf(property); - if (element instanceof ITask) { - ITask task = (ITask) element; - if (columnIndex == 4) { - if (value instanceof Integer) { - task.setEstimatedTimeHours(((Integer) value).intValue() * 10); - treeViewer.refresh(); - } - } - } - } - } - - // OLD SORTER - // private class TaskActivityTableSorter extends ViewerSorter { - // - // public TaskActivityTableSorter() { - // super(); - // } - // - // @Override - // public int compare(Viewer compareViewer, Object o1, Object o2) { - // if (o1 instanceof DateRangeContainer) { - // if (o2 instanceof DateRangeContainer) { - // DateRangeContainer dateRangeTaskContainer1 = (DateRangeContainer) o1; - // DateRangeContainer dateRangeTaskContainer2 = (DateRangeContainer) o2; - // return - // dateRangeTaskContainer2.getStart().compareTo(dateRangeTaskContainer1.getStart()); - // } else { - // return 1; - // } - // } else if (o1 instanceof ITask) { - // if (o2 instanceof AbstractTaskContainer) { - // return -1; - // } else if (o2 instanceof DateRangeActivityDelegate) { - // DateRangeActivityDelegate task1 = (DateRangeActivityDelegate) o1; - // DateRangeActivityDelegate task2 = (DateRangeActivityDelegate) o2; - // Calendar calendar1 = task1.getStart();// - // MylarTaskListPlugin.getTaskActivityManager().getLastOccurrence(task1.getHandleIdentifier()); - // Calendar calendar2 = task2.getStart();// - // MylarTaskListPlugin.getTaskActivityManager().getLastOccurrence(task2.getHandleIdentifier()); - // if (calendar1 != null && calendar2 != null) { - // return calendar2.compareTo(calendar1); - // } - // } - // } - // return 0; - // } - // } - - @Override - public void init(IViewSite site, IMemento memento) throws PartInitException { - super.init(site, memento); - this.taskActivityMemento = memento; - } - - @Override - public void saveState(IMemento memento) { - IMemento colMemento = memento.createChild(columnWidthIdentifier); - for (int i = 0; i < columnWidths.length; i++) { - IMemento m = colMemento.createChild("col" + i); - m.putInteger(MEMENTO_KEY_WIDTH, columnWidths[i]); - } - - sorter.saveState(memento); - } - - private void restoreState() { - - if (taskActivityMemento != null) { - IMemento taskActivityWidth = taskActivityMemento.getChild(columnWidthIdentifier); - if (taskActivityWidth != null) { - for (int i = 0; i < columnWidths.length; i++) { - IMemento m = taskActivityWidth.getChild("col" + i); - if (m != null) { - int width = m.getInteger(MEMENTO_KEY_WIDTH); - columnWidths[i] = width; - columns[i].setWidth(width); - } - } - } - - sorter.restoreState(taskActivityMemento); - - } - getViewer().refresh(); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java deleted file mode 100644 index e5a3a9ad5..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityViewSorter.java +++ /dev/null @@ -1,193 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.views; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; -import org.eclipse.mylar.provisional.tasklist.DateRangeActivityDelegate; -import org.eclipse.mylar.provisional.tasklist.DateRangeContainer; -import org.eclipse.mylar.provisional.tasklist.ITask; -import org.eclipse.mylar.provisional.tasklist.Task; -import org.eclipse.mylar.provisional.tasklist.Task.PriorityLevel; -import org.eclipse.ui.IMemento; - -/** - * @author Rob Elves - */ -public class TaskActivityViewSorter extends ViewerSorter { - - private static final String activitySortColumn = "org.eclipse.mylar.tasklist.ui.views.taskactivitysorter.sortcolumn"; - - private static final String activityViewSorterSettings = "org.eclipse.mylar.tasklist.ui.views.taskactivitysorter.sortsettings"; - - private int[] directions; - - private final static int ASCENDING = 1; - - private final static int DESCENDING = -1; - - private final static int PRIORITY = 0; - - private final static int DESCRIPTION = 1; - - private final static int ELAPSED = 2; - - private final static int ESTIMATED = 3; - - private final static int REMINDER = 4; - - private final static int LAST_ACTIVE = 5; - - private int sortColumn = LAST_ACTIVE; - - final static int[] DEFAULT_DIRECTIONS = { ASCENDING, ASCENDING, ASCENDING, DESCENDING, DESCENDING, DESCENDING, - DESCENDING }; - - public TaskActivityViewSorter() { - resetState(); - } - - public void reverseDirection() { - directions[sortColumn] *= -1; - } - - public void setSortDirection(int direction) { - if (direction == ASCENDING || direction == DESCENDING) - directions[sortColumn] = direction; - } - - public int getDirection() { - return directions[sortColumn]; - } - - public int getSortColumn() { - return sortColumn; - } - - public void setSortColumn(int col) { - if (col < 0 || col >= directions.length) { - sortColumn = LAST_ACTIVE; - } else { - sortColumn = col; - } - } - - public void resetState() { - directions = new int[DEFAULT_DIRECTIONS.length]; - System.arraycopy(DEFAULT_DIRECTIONS, 0, directions, 0, directions.length); - } - - private int compare(DateRangeActivityDelegate task1, DateRangeActivityDelegate task2) { - if (sortColumn >= directions.length) - return 0; - - switch (sortColumn) { - case PRIORITY: { - PriorityLevel a = Task.PriorityLevel.fromString(task1.getPriority()); - PriorityLevel b = Task.PriorityLevel.fromString(task2.getPriority()); - int result = a.compareTo(b); - return result * directions[sortColumn]; - } - case DESCRIPTION: { - String description1 = task1.getDescription(); - String description2 = task2.getDescription(); - int result = collator.compare(description1, description2); - return result * directions[sortColumn]; - } - case ELAPSED: { - long elapsed1 = task1.getDateRangeContainer().getElapsed(task1); - long elapsed2 = task2.getDateRangeContainer().getElapsed(task2); - int result = new Long(elapsed1).compareTo(new Long(elapsed2)); - return result * directions[sortColumn]; - } - case ESTIMATED: { - int estimate1 = task1.getEstimateTimeHours(); - int estimate2 = task2.getEstimateTimeHours(); - int result = estimate1 - estimate2; - return result * directions[sortColumn]; - } - case REMINDER: { - int result = 0; - if (task1.getReminderDate() != null && task2.getReminderDate() != null) { - long reminder1 = task1.getReminderDate().getTime(); - long reminder2 = task2.getReminderDate().getTime(); - result = new Long(reminder1).compareTo(new Long(reminder2)); - } else if (task1.getReminderDate() != null) { - result = 1; - } else if (task2.getReminderDate() != null) { - result = -1; - } - return result * directions[sortColumn]; - } - case LAST_ACTIVE: { - long active1 = task1.getStart(); - long active2 = task2.getStart(); - int result = new Long(active1).compareTo(new Long(active2)); - return result * directions[sortColumn]; - } - } - return 0; - } - - public int compare(Viewer viewer, Object o1, Object o2) { - if (o1 instanceof DateRangeContainer) { - if (o2 instanceof DateRangeContainer) { - DateRangeContainer dateRangeTaskContainer1 = (DateRangeContainer) o1; - DateRangeContainer dateRangeTaskContainer2 = (DateRangeContainer) o2; - return dateRangeTaskContainer2.getStart().compareTo(dateRangeTaskContainer1.getStart()); - } else { - return 1; - } - } else if (o1 instanceof ITask) { - if (o2 instanceof AbstractTaskContainer) { - return -1; - } else if (o2 instanceof DateRangeActivityDelegate) { - DateRangeActivityDelegate task1 = (DateRangeActivityDelegate) o1; - DateRangeActivityDelegate task2 = (DateRangeActivityDelegate) o2; - return compare(task1, task2); - } - } - return 0; - } - - public void saveState(IMemento memento) { - if (memento == null) - return; - IMemento sortingMemento = memento.createChild(activityViewSorterSettings); - if (sortingMemento != null) { - - for (int i = 0; i < directions.length; i++) { - sortingMemento.putInteger("direction" + i, directions[i]); - } - sortingMemento.putInteger(activitySortColumn, sortColumn); - } - } - - public void restoreState(IMemento memento) { - if (memento == null) - return; - - IMemento sortingMemento = memento.getChild(activityViewSorterSettings); - if (sortingMemento != null) { - try { - for (int i = 0; i < directions.length; i++) { - directions[i] = sortingMemento.getInteger("direction" + i); - } - sortColumn = sortingMemento.getInteger(activitySortColumn); - } catch (NumberFormatException e) { - resetState(); - } - } - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java deleted file mode 100644 index 5025e4fc5..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskKeyComparator.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.eclipse.mylar.internal.tasklist.ui.views; - -import java.util.Comparator; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author Eugene Kuleshov (https://bugs.eclipse.org/bugs/show_bug.cgi?id=129511) - */ -public class TaskKeyComparator implements Comparator { - - public static final Pattern PATTERN = Pattern.compile("(?:([A-Za-z]*[:_\\-]?)(\\d+))?(.*)"); - - public int compare(Object o1, Object o2) { - String[] a1 = split((String) o1); - String[] a2 = split((String) o2); - - String s1 = a1[0]; - String s2 = a2[0]; - if (s1 == null && s2 != null) - return -1; - if (s1 != null && s2 == null) - return 1; - - if (s1 != null && s2 != null) { - int n = s1.compareTo(s2); - if (n != 0) - return n; - - s1 = a1[1]; - s2 = a2[1]; - if (s1.length() == s2.length() || s1.length() == 0 || s2.length() == 0) { - n = s1.compareTo(s2); - } else { - n = Integer.valueOf(s1).compareTo(Integer.valueOf(s2)); - } - if (n != 0) - return n; - } - - return a1[2].compareTo(a2[2]); - } - - public String[] split(String s) { - Matcher matcher = PATTERN.matcher(s); - - if (!matcher.find()) { - return new String[] { null, null, s }; - } - - int n = matcher.groupCount(); - String[] res = new String[n]; - for (int i = 1; i < n + 1; i++) { - res[i - 1] = matcher.group(i); - } - return res; - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java index bd0ae641b..85f387a1e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListFilteredTree.java @@ -16,24 +16,34 @@ import java.lang.reflect.Field; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.mylar.internal.core.util.MylarStatusHandler; import org.eclipse.mylar.provisional.tasklist.ITask; +import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.internal.dialogs.FilteredTree; -import org.eclipse.ui.internal.dialogs.PatternFilter; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.dialogs.FilteredTree; +import org.eclipse.ui.dialogs.PatternFilter; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * @author Mik Kersten */ public class TaskListFilteredTree extends FilteredTree { -// private static final int LABEL_MAX_SIZE = 30; + private static final int LABEL_MAX_SIZE = 30; private static final int DELAY_REFRESH = 700; -// private static final String LABEL_NO_ACTIVE = " <no active task>"; + private static final String LABEL_FIND = " Find:"; + + private static final String LABEL_NO_ACTIVE = " <no active task>"; private Job refreshJob; -// private Hyperlink activeTaskLabel; + private Hyperlink activeTaskLabel; public TaskListFilteredTree(Composite parent, int treeStyle, PatternFilter filter) { super(parent, treeStyle, filter); @@ -47,9 +57,54 @@ public class TaskListFilteredTree extends FilteredTree { MylarStatusHandler.fail(e, "Could not get refresh job", false); } } + + @Override + protected Composite createFilterControls(Composite parent){ + Composite container = new Composite(parent, SWT.NULL); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + container.setLayoutData(gridData); + GridLayout gridLayout = new GridLayout(4, false); + gridLayout.marginHeight = 0; + gridLayout.marginWidth = 0; + container.setLayout(gridLayout); + + Label label = new Label(container, SWT.LEFT); + label.setText(LABEL_FIND); + + super.createFilterControls(container); +// patternFilter.setSize(100, patternFilter.getSize().y); + + activeTaskLabel = new Hyperlink(container, SWT.RIGHT); + activeTaskLabel.setText(LABEL_NO_ACTIVE); + ITask activeTask = MylarTaskListPlugin.getTaskListManager().getTaskList().getActiveTask(); + if (activeTask != null) { + indicateActiveTask(activeTask); + } + activeTaskLabel.addMouseListener(new MouseListener() { + + public void mouseDoubleClick(MouseEvent e) { + // ignore + } + + public void mouseDown(MouseEvent e) { + TaskListFilteredTree.super.filterText.setText(""); + TaskListFilteredTree.this.textChanged(0); + TaskListView.getDefault().selectedAndFocusTask( + MylarTaskListPlugin.getTaskListManager().getTaskList().getActiveTask() + ); + } + + public void mouseUp(MouseEvent e) { + // ignore + } + }); + + return container; + } protected void textChanged() { textChanged(DELAY_REFRESH); + //refreshJob.schedule(200); } public void textChanged(int delay) { @@ -59,17 +114,17 @@ public class TaskListFilteredTree extends FilteredTree { } public void indicateActiveTask(ITask task) { -// String text = task.getDescription(); -// if (text.length() > LABEL_MAX_SIZE) { -// text = text.substring(0, LABEL_MAX_SIZE); -// } -// activeTaskLabel.setText(text); -// activeTaskLabel.setUnderlined(true); + String text = task.getDescription(); + if (text.length() > LABEL_MAX_SIZE) { + text = text.substring(0, LABEL_MAX_SIZE); + } + activeTaskLabel.setText(text); + activeTaskLabel.setUnderlined(true); } public void indicateNoActiveTask() { -// activeTaskLabel.setText(LABEL_NO_ACTIVE); -// activeTaskLabel.setUnderlined(false); + activeTaskLabel.setText(LABEL_NO_ACTIVE); + activeTaskLabel.setUnderlined(false); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java deleted file mode 100644 index 3f0a835ed..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListTableSorter.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.views; - - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery; -import org.eclipse.mylar.provisional.tasklist.ITask; -import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer; -import org.eclipse.mylar.provisional.tasklist.ITaskListElement; -import org.eclipse.mylar.provisional.tasklist.TaskArchive; - -/** - * @author Mik Kersten - */ -public class TaskListTableSorter extends ViewerSorter { - - private final TaskListView view; - - private String column; - - private TaskKeyComparator taskKeyComparator = new TaskKeyComparator(); - - public TaskListTableSorter(TaskListView view, String column) { - super(); - this.view = view; - this.column = column; - } - - /** - * compare - invoked when column is selected calls the actual comparison - * method for particular criteria - */ - @Override - public int compare(Viewer compareViewer, Object o1, Object o2) { - if (o1 instanceof AbstractTaskContainer && o2 instanceof TaskArchive) { - return -1; - } else if (o2 instanceof AbstractTaskContainer && o1 instanceof TaskArchive) { - return 1; - } - - if (o1 instanceof AbstractTaskContainer && o2 instanceof ITask) { - return 1; - } - if (o1 instanceof AbstractTaskContainer || o1 instanceof AbstractRepositoryQuery) { - if (o2 instanceof AbstractTaskContainer || o2 instanceof AbstractRepositoryQuery) { - return this.view.sortDirection - * ((ITaskListElement) o1).getDescription().compareTo(((ITaskListElement) o2).getDescription()); - } else { - return -1; - } - } else if (o1 instanceof ITaskListElement) { - if (o2 instanceof AbstractTaskContainer || o2 instanceof AbstractRepositoryQuery) { - return -1; - } else if (o2 instanceof ITaskListElement) { - ITaskListElement element1 = (ITaskListElement) o1; - ITaskListElement element2 = (ITaskListElement) o2; - - return compareElements(element1, element2); - } - } else { - return 0; - } - return 0; - } - - private int compareElements(ITaskListElement element1, ITaskListElement element2) { - if (column != null && column.equals(this.view.columnNames[1])) { - return 0; - } else if (column == this.view.columnNames[2]) { - return this.view.sortDirection * element1.getPriority().compareTo(element2.getPriority()); - } else if (column == this.view.columnNames[4]) { - String c1 = element1.getDescription(); - String c2 = element2.getDescription(); - return this.view.sortDirection * taskKeyComparator.compare(c1, c2); - } else { - return 0; - } - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java index bcd96cd4e..048296716 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskListView.java @@ -103,6 +103,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.FilteredTree; import org.eclipse.ui.part.DrillDownAdapter; import org.eclipse.ui.part.PluginTransfer; import org.eclipse.ui.part.ViewPart; @@ -1325,7 +1326,7 @@ public class TaskListView extends ViewPart { } - public TaskListFilteredTree getFilteredTree() { + public FilteredTree getFilteredTree() { return filteredTree; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java index c0dcc2dea..b2037d68f 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskRepositoryLabelProvider.java @@ -14,7 +14,7 @@ package org.eclipse.mylar.internal.tasklist.ui.views; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.mylar.provisional.tasklist.TaskRepository; import org.eclipse.swt.graphics.Image; @@ -28,8 +28,8 @@ public class TaskRepositoryLabelProvider extends LabelProvider implements ITable if (object instanceof TaskRepository) { TaskRepository repository = (TaskRepository) object; return repository.getKind() + ": " + repository.getUrl().toExternalForm(); - } else if (object instanceof AbstractRepositoryConnector) { - return ((AbstractRepositoryConnector)object).getLabel(); + } else if (object instanceof AbstractRepositoryClient) { + return ((AbstractRepositoryClient)object).getLabel(); } else { return getText(object); } @@ -40,8 +40,8 @@ public class TaskRepositoryLabelProvider extends LabelProvider implements ITable } public Image getImage(Object object) { - if (object instanceof AbstractRepositoryConnector) { - AbstractRepositoryConnector repositoryClient = (AbstractRepositoryConnector)object; + if (object instanceof AbstractRepositoryClient) { + AbstractRepositoryClient repositoryClient = (AbstractRepositoryClient)object; Image image = MylarTaskListPlugin.getDefault().getBrandingIcons().get(repositoryClient); if (image != null) { return image; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java index b562353eb..fd0c40d01 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractAddExistingTaskWizard.java @@ -15,7 +15,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.ITask; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.mylar.provisional.tasklist.TaskCategory; @@ -36,9 +36,9 @@ public abstract class AbstractAddExistingTaskWizard extends Wizard { @Override public final boolean performFinish() { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( this.repository.getKind()); - ITask newTask = connector.createTaskFromExistingId(repository, getTaskId()); + ITask newTask = client.createTaskFromExistingId(repository, getTaskId()); if (newTask != null && TaskListView.getDefault() != null) { Object selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection()) diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java index d32b6ed9d..af2c33a22 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AbstractRepositoryClientWizard.java @@ -12,7 +12,7 @@ package org.eclipse.mylar.internal.tasklist.ui.wizards; import org.eclipse.jface.wizard.Wizard; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.ui.INewWizard; /** @@ -24,13 +24,13 @@ public abstract class AbstractRepositoryClientWizard extends Wizard implements I protected AbstractRepositorySettingsPage abstractRepositorySettingsPage; - protected AbstractRepositoryConnector repositoryClient; + protected AbstractRepositoryClient repositoryClient; - public void setRepositoryClient(AbstractRepositoryConnector repository) { + public void setRepositoryClient(AbstractRepositoryClient repository) { this.repositoryClient = repository; } - public AbstractRepositoryConnector getRepositoryClient() { + public AbstractRepositoryClient getRepositoryClient() { return repositoryClient; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java index 4f9ef99fa..7202fe62d 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddExistingTaskWizard.java @@ -12,7 +12,7 @@ package org.eclipse.mylar.internal.tasklist.ui.wizards; import org.eclipse.jface.wizard.IWizard; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.mylar.provisional.tasklist.TaskRepository; @@ -27,14 +27,11 @@ public class AddExistingTaskWizard extends MultiRepositoryAwareWizard { @Override protected IWizard createWizard(TaskRepository taskRepository) { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( taskRepository.getKind()); - if (connector.canCreateTaskFromId()) { - return connector.getAddExistingTaskWizard(taskRepository); - } else { - return null; - } + return client.getAddExistingTaskWizard(taskRepository); } + }); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java index 9db45940e..1c4af901b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/AddRepositoryWizard.java @@ -32,7 +32,7 @@ public class AddRepositoryWizard extends AbstractRepositoryClientWizard { @Override public boolean performFinish() { if (canFinish()) { - TaskRepository repository = new TaskRepository(repositoryClient.getRepositoryType(), + TaskRepository repository = new TaskRepository(repositoryClient.getKind(), super.abstractRepositorySettingsPage.getServerUrl()); if (repository != null) { repository.setAuthenticationCredentials(abstractRepositorySettingsPage.getUserName(), diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java index a14e56562..533cf4f1d 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/EditRepositoryWizard.java @@ -13,7 +13,7 @@ package org.eclipse.mylar.internal.tasklist.ui.wizards; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.mylar.provisional.tasklist.TaskRepository; import org.eclipse.ui.INewWizard; @@ -32,9 +32,9 @@ public class EditRepositoryWizard extends Wizard implements INewWizard { super(); oldRepository = repository; // super.setForcePreviousAndNextButtons(true); - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( repository.getKind()); - abstractRepositorySettingsPage = connector.getSettingsPage(); + abstractRepositorySettingsPage = client.getSettingsPage(); abstractRepositorySettingsPage.setRepository(repository); abstractRepositorySettingsPage.setWizard(this); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java index 33a8b7593..c07cd29df 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewQueryWizard.java @@ -12,7 +12,7 @@ package org.eclipse.mylar.internal.tasklist.ui.wizards; import org.eclipse.jface.wizard.IWizard; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.mylar.provisional.tasklist.TaskRepository; @@ -26,9 +26,9 @@ public class NewQueryWizard extends MultiRepositoryAwareWizard { @Override protected IWizard createWizard(TaskRepository taskRepository) { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( + AbstractRepositoryClient client = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( taskRepository.getKind()); - return connector.getQueryWizard(taskRepository); + return client.getQueryWizard(taskRepository); } }); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java deleted file mode 100644 index 3ed78aae2..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/NewRepositoryTaskPage.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.internal.tasklist.ui.wizards; - -import java.util.List; - -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; -import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; -import org.eclipse.mylar.provisional.tasklist.TaskRepository; - -/** - * @author Mik Kersten - */ -public class NewRepositoryTaskPage extends SelectRepositoryPage { - - public NewRepositoryTaskPage(List<String> kinds) { - super(kinds); - } - - @Override - protected IWizard createWizard(TaskRepository taskRepository) { - AbstractRepositoryConnector connector = MylarTaskListPlugin.getRepositoryManager().getRepositoryClient( - taskRepository.getKind()); - return connector.getNewTaskWizard(taskRepository); - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java index 410dae054..d5e541c49 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryClientPage.java @@ -20,7 +20,7 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.mylar.internal.tasklist.ui.views.TaskRepositoryLabelProvider; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; @@ -78,8 +78,8 @@ public class SelectRepositoryClientPage extends WizardPage { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - if (selection.getFirstElement() instanceof AbstractRepositoryConnector) { - wizard.setRepositoryClient((AbstractRepositoryConnector) selection.getFirstElement()); + if (selection.getFirstElement() instanceof AbstractRepositoryClient) { + wizard.setRepositoryClient((AbstractRepositoryClient) selection.getFirstElement()); SelectRepositoryClientPage.this.setPageComplete(true); wizard.getContainer().updateButtons(); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java index 0b8a59902..7ad30b039 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/SelectRepositoryPage.java @@ -11,15 +11,13 @@ package org.eclipse.mylar.internal.tasklist.ui.wizards; -import java.util.ArrayList; -import java.util.List; - import org.eclipse.jface.viewers.IOpenListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.OpenEvent; import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.wizard.IWizard; @@ -47,7 +45,7 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage { protected MultiRepositoryAwareWizard wizard; - private List<String> repositoryKinds = null; + private String repositoryKind = null; class RepositoryContentProvider implements IStructuredContentProvider { @@ -58,12 +56,8 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage { } public Object[] getElements(Object parent) { - if (repositoryKinds != null) { - List<TaskRepository> repositories = new ArrayList<TaskRepository>(); - for (String repositoryKind : repositoryKinds) { - repositories.addAll(MylarTaskListPlugin.getRepositoryManager().getRepositories(repositoryKind)); - } - return repositories.toArray(); + if (repositoryKind != null) { + return MylarTaskListPlugin.getRepositoryManager().getRepositories(repositoryKind).toArray(); } else { return MylarTaskListPlugin.getRepositoryManager().getAllRepositories().toArray(); } @@ -76,9 +70,9 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage { setDescription(DESCRIPTION); } - public SelectRepositoryPage(List<String> repositoryKinds) { + public SelectRepositoryPage(String repositoryKind) { this(); - this.repositoryKinds = repositoryKinds; + this.repositoryKind = repositoryKind; } public void createControl(Composite parent) { @@ -110,11 +104,11 @@ public abstract class SelectRepositoryPage extends WizardSelectionPage { }); viewer.getTable().setFocus(); -// TaskRepository defaultRepository = MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( -// repositoryKind); -// if (defaultRepository != null) { -// viewer.setSelection(new StructuredSelection(defaultRepository)); -// } + TaskRepository defaultRepository = MylarTaskListPlugin.getRepositoryManager().getDefaultRepository( + repositoryKind); + if (defaultRepository != null) { + viewer.setSelection(new StructuredSelection(defaultRepository)); + } setControl(container); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java index ed927793a..73d1d0da9 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/wizards/TaskDataImportWizard.java @@ -115,7 +115,6 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { if (!sourceZipFile.exists()) { MessageDialog .openError(getShell(), "File not found", sourceZipFile.toString() + " could not be found."); - return false; } Enumeration entries; @@ -171,8 +170,10 @@ public class TaskDataImportWizard extends Wizard implements IImportWizard { // Get file paths to check for existence String sourceDir = importPage.getSourceDirectory(); sourceDirFile = new File(sourceDir); - if (!sourceDirFile.exists() || !sourceDirFile.isDirectory()) { - MessageDialog.openError(getShell(), "Location not found", sourceZipFile.toString() + " could not be found or is not a folder."); + if (!sourceDirFile.exists() || !sourceDirFile.isDirectory()) { + // This should never happen + MylarStatusHandler.fail(new Exception("File Import Exception"), + "Could not import data because specified location does not exist or is not a folder", true); return false; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java index fa946a14d..8b03b0f34 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListExtensionReader.java @@ -24,7 +24,7 @@ import org.eclipse.mylar.internal.core.util.MylarStatusHandler; import org.eclipse.mylar.internal.tasklist.ui.IDynamicSubMenuContributor; import org.eclipse.mylar.internal.tasklist.ui.ITaskEditorFactory; import org.eclipse.mylar.internal.tasklist.ui.TaskListImages; -import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryConnector; +import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryClient; import org.eclipse.mylar.provisional.tasklist.ITaskListExternalizer; import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin; import org.eclipse.ui.plugin.AbstractUIPlugin; @@ -151,18 +151,16 @@ public class TaskListExtensionReader { try { Object type = element.getAttribute(ELMNT_TYPE); Object repository = element.createExecutableExtension(ATTR_CLASS); - if (repository instanceof AbstractRepositoryConnector && type != null) { - MylarTaskListPlugin.getRepositoryManager().addRepositoryClient((AbstractRepositoryConnector) repository); + if (repository instanceof AbstractRepositoryClient && type != null) { + MylarTaskListPlugin.getRepositoryManager().addRepositoryClient((AbstractRepositoryClient) repository); String iconPath = element.getAttribute(ATTR_BRANDING_ICON); if (iconPath != null) { -// ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getContributor().getName(), -// iconPath); - ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getNamespace(), + ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(element.getContributor().getName(), iconPath); if (descriptor != null) { - MylarTaskListPlugin.getDefault().getBrandingIcons().put((AbstractRepositoryConnector) repository, TaskListImages.getImage(descriptor)); + MylarTaskListPlugin.getDefault().getBrandingIcons().put((AbstractRepositoryClient) repository, TaskListImages.getImage(descriptor)); } } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java index fbf351eab..8cc1a7694 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListSaveManager.java @@ -40,8 +40,6 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen private static final String FILE_SUFFIX_BACKUP = "-backup.xml"; private BackgroundSaveTimer saveTimer = null; - - private boolean initializationWarningDialogShow = false; /** * Fort testing. @@ -51,13 +49,23 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen public TaskListSaveManager() { saveTimer = new BackgroundSaveTimer(this); saveTimer.setSaveIntervalMillis(DEFAULT_SAVE_INTERVAL); - saveTimer.start(); + saveTimer.start(); } /** * Called periodically by the save timer */ public void saveRequested() { + if (!MylarTaskListPlugin.getDefault().isInitialized()) { + if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getDisplay() != null) { + MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), MylarTaskListPlugin.TITLE_DIALOG, + "If task list is blank, Mylar Task List may have failed to initialize.\n\n" + + "First, try restarting to see if that corrects the problem.\n\n" + + "Then, check the Error Log view for messages, and the FAQ for solutions.\n\n" + + MylarTaskListPlugin.URL_HOMEPAGE); + } + } + if (MylarTaskListPlugin.getDefault() != null && MylarTaskListPlugin.getDefault().isShellActive() || forceBackgroundSave) { try { @@ -68,33 +76,15 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen } } - public void saveTaskListAndContexts() { - if (MylarTaskListPlugin.getDefault() != null && MylarTaskListPlugin.getDefault().isInitialized()) { + public void saveTaskListAndContexts() { + if (MylarTaskListPlugin.getDefault() != null) { MylarTaskListPlugin.getTaskListManager().saveTaskList(); - for (ITask task : new ArrayList<ITask>(MylarTaskListPlugin.getTaskListManager().getTaskList() - .getActiveTasks())) { + for (ITask task : new ArrayList<ITask>(MylarTaskListPlugin.getTaskListManager().getTaskList().getActiveTasks())) { MylarPlugin.getContextManager().saveContext(task.getHandleIdentifier()); } - } else { - MylarStatusHandler.log("Possible task list initialization failure, not saving list.", this); - if (PlatformUI.getWorkbench() != null && !initializationWarningDialogShow) { - initializationWarningDialogShow = true; - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getDisplay() != null) { - MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), - MylarTaskListPlugin.TITLE_DIALOG, - "If task list is blank, Mylar Task List may have failed to initialize.\n\n" - + "First, try restarting to see if that corrects the problem.\n\n" - + "Then, check the Error Log view for messages, and the FAQ for solutions.\n\n" - + MylarTaskListPlugin.URL_HOMEPAGE); - } - } - }); - } } } - + /** * Copies all files in the current data directory to the specified folder. * Will overwrite. @@ -173,9 +163,9 @@ public class TaskListSaveManager implements ITaskActivityListener, DisposeListen } public void repositoryInfoChanged(ITask task) { - // ignore + // ignore } - + public void tasklistRead() { // ignore } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java index 94d9c6b65..5a2460d1b 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/util/TaskListWriter.java @@ -100,18 +100,13 @@ public class TaskListWriter { for (AbstractRepositoryQuery query : taskList.getQueries()) { Element element = null; - try { - for (ITaskListExternalizer externalizer : externalizers) { - if (externalizer.canCreateElementFor(query)) - element = externalizer.createQueryElement(query, doc, root); - } - if (element == null && delagatingExternalizer.canCreateElementFor(query)) { - delagatingExternalizer.createQueryElement(query, doc, root); - } - } catch (Throwable t) { - MylarStatusHandler.fail(t, "Did not externalize: " + query.getDescription(), true); - } - if (element == null) { + for (ITaskListExternalizer externalizer : externalizers) { + if (externalizer.canCreateElementFor(query)) + element = externalizer.createQueryElement(query, doc, root); + } + if (element == null && delagatingExternalizer.canCreateElementFor(query)) { + delagatingExternalizer.createQueryElement(query, doc, root); + } else if (element == null) { MylarStatusHandler.log("Did not externalize: " + query, this); } } @@ -120,6 +115,13 @@ public class TaskListWriter { createTaskElement(doc, root, task); } +// for (ITask task : taskList.getArchiveTasks()) { +// createTaskElement(doc, root, task); +// } + +// for (ITask task : taskList.getRootTasks()) { +// createTaskElement(doc, root, task); +// } doc.appendChild(root); writeDOMtoFile(doc, outFile); return; @@ -305,13 +307,16 @@ public class TaskListWriter { // A factory API that enables applications to obtain a parser // that produces DOM object trees from XML documents + // DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Using DocumentBuilder, obtain a Document from XML file. + // DocumentBuilder builder = null; Document document = null; try { // create new instance of DocumentBuilder + // builder = factory.newDocumentBuilder(); } catch (ParserConfigurationException pce) { inputFile.renameTo(new File(inputFile.getName() + FILE_SUFFIX_SAVE)); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryClient.java index 17528b384..e7e65401e 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryConnector.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryClient.java @@ -25,18 +25,16 @@ import org.eclipse.mylar.internal.tasklist.ui.wizards.AbstractRepositorySettings /** * @author Mik Kersten */ -public abstract class AbstractRepositoryConnector { +public abstract class AbstractRepositoryClient { private static final int MAX_REFRESH_JOBS = 5; +// private TaskCategory archiveCategory = null; + private List<AbstractRepositoryTask> toBeRefreshed = new LinkedList<AbstractRepositoryTask>(); private Map<AbstractRepositoryTask, Job> currentlyRefreshing = new HashMap<AbstractRepositoryTask, Job>(); - public abstract boolean canCreateTaskFromId(); - - public abstract boolean canCreateNewTask(); - public void requestRefresh(AbstractRepositoryTask task) { if (!currentlyRefreshing.containsKey(task) && !toBeRefreshed.contains(task)) { toBeRefreshed.add(task); @@ -86,7 +84,7 @@ public abstract class AbstractRepositoryConnector { /** * @return the unique type of the repository, e.g. "bugzilla" */ - public abstract String getRepositoryType(); + public abstract String getKind(); /** * @param id @@ -116,6 +114,4 @@ public abstract class AbstractRepositoryConnector { public abstract IWizard getAddExistingTaskWizard(TaskRepository repository); - public abstract IWizard getNewTaskWizard(TaskRepository taskRepository); - } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java deleted file mode 100644 index 7a8050b8f..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractTaskContainer.java +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ -package org.eclipse.mylar.provisional.tasklist; - -import java.util.HashSet; -import java.util.Set; - -/** - * Manipulate containers via TaskListManager - * - * @author Mik Kersten - */ -public abstract class AbstractTaskContainer implements ITaskListElement { - - private String handle = ""; - - private Set<String> childHandles = new HashSet<String>(); - - private TaskList taskList; - -// public abstract boolean isArchive(); -// -// public abstract void setIsArchive(boolean isArchive); - - public AbstractTaskContainer(String handleAndDescription, TaskList taskList) { - assert handle != null; - this.handle = handleAndDescription; - this.taskList = taskList; - } - - public abstract boolean isLocal(); - - public Set<ITask> getChildren() { - Set<ITask> children = new HashSet<ITask>(); - for (String childHandle : childHandles) { - ITask task = taskList.getTask(childHandle); - if (task != null) { - children.add(task); - } - } - return children; - } - - public String getDescription() { - return handle; - } - - public String getHandleIdentifier() { - return handle; - } - - void setDescription(String description) { - this.handle = description; - } - - public void setHandleIdentifier(String handle) { - this.handle = handle; - } - - void add(ITask task) { - childHandles.add(task.getHandleIdentifier()); - } - - void remove(ITask task) { - childHandles.remove(task.getHandleIdentifier()); - } - - public boolean isCompleted() { - return false; - } - - public int hashCode() { - return handle.hashCode(); - } - - @Override - public boolean equals(Object object) { - if (object == null) - return false; - if (object instanceof AbstractTaskContainer) { - AbstractTaskContainer compare = (AbstractTaskContainer) object; - return this.getHandleIdentifier().equals(compare.getHandleIdentifier()); - } else { - return false; - } - } - - @Override - public String toString() { - return "container: " + handle; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java deleted file mode 100644 index b09740dd5..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeActivityDelegate.java +++ /dev/null @@ -1,259 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.provisional.tasklist; - -import java.util.Calendar; -import java.util.Date; -import java.util.Set; - -/** - * @author Rob Elves - * @author Mik Kersten - */ -public class DateRangeActivityDelegate implements ITask { - - private ITask task = null; - -// private Calendar start = null; -// -// private Calendar end = null; - - private DateRangeContainer parent; - - private long startMili = 0; - private long endMili = 0; - private long inactivity = 0; - - public DateRangeActivityDelegate(DateRangeContainer parent, ITask task, Calendar start, Calendar end) { - this(parent, task, start, end, 0); - } - - public DateRangeActivityDelegate(DateRangeContainer parent, ITask task, Calendar start, Calendar end, long inactivity) { - if (task == null) { - throw new RuntimeException("attempted to instantiated with null task: " + parent); - } - this.task = task; - if(start != null) { - this.startMili = start.getTimeInMillis(); - } - if(end != null) { - this.endMili = end.getTimeInMillis(); - } -// this.start = start; -// this.end = end; - this.parent = parent; - this.inactivity = inactivity; - } - - public long getEnd() { - return endMili; - } - - public long getStart() { - return startMili; - } - - public long getInactivity() { - return inactivity; - } - - public long getActivity() { - return (endMili - startMili) - inactivity; - } - - public ITask getCorrespondingTask() { - return task; - } - - @Override - public int hashCode() { - final int PRIME = 31; - int result = 1; - result = PRIME * result + ((task == null) ? 0 : task.hashCode()); - result = PRIME * result + ((parent == null) ? 0 : parent.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final DateRangeActivityDelegate other = (DateRangeActivityDelegate) obj; - if (task == null) { - if (other.task != null) - return false; - } else if (!task.equals(other.task)) - return false; - if (parent == null) { - if (other.parent != null) - return false; - } else if (!parent.equals(other.parent)) - return false; - return true; - } - - public DateRangeContainer getDateRangeContainer() { - return parent; - } - - public void addSubTask(ITask task) { - task.addSubTask(task); - } - - public AbstractTaskContainer getContainer() { - return task.getContainer(); - } - - public Set<ITask> getChildren() { - return task.getChildren(); - } - - public Date getCompletionDate() { - return task.getCompletionDate(); - } - - public Date getCreationDate() { - return task.getCreationDate(); - } - - public String getDescription() { - return task.getDescription(); - } - - public long getElapsedTime() { - return task.getElapsedTime(); - } - - public int getEstimateTimeHours() { - return task.getEstimateTimeHours(); - } - - public String getHandleIdentifier() { - return task.getHandleIdentifier(); - } - - public String getKind() { - return task.getKind(); - } - - public String getNotes() { - return task.getNotes(); - } - - public ITask getParent() { - return task.getParent(); - } - - public String getPriority() { - return task.getPriority(); - } - - public Date getReminderDate() { - return task.getReminderDate(); - } - - public String getUrl() { - return task.getUrl(); - } - - public boolean hasBeenReminded() { - return task.hasBeenReminded(); - } - - public boolean hasValidUrl() { - return task.hasValidUrl(); - } - - public boolean isActive() { - return task.isActive(); - } - - public boolean isCompleted() { - return task.isCompleted(); - } - - public boolean isPastReminder() { - return task.isPastReminder(); - } - - public void removeSubTask(ITask task) { - task.removeSubTask(task); - } - - public void setActive(boolean active) { - task.setActive(active); - } - - public void setContainer(AbstractTaskContainer category) { - task.setContainer(category); - } - - public void setCompleted(boolean completed) { - task.setCompleted(completed); - } - - public void setCompletionDate(Date date) { - task.setCompletionDate(date); - } - - public void setCreationDate(Date date) { - task.setCreationDate(date); - } - -// public void setDescription(String description) { -// task.setDescription(description); -// } - - public void setElapsedTime(long elapsed) { - task.setElapsedTime(elapsed); - } - - public void setEstimatedTimeHours(int estimated) { - task.setEstimatedTimeHours(estimated); - } - - public void setHandleIdentifier(String id) { - task.setHandleIdentifier(id); - } - - public void setKind(String kind) { - task.setKind(kind); - } - - public void setNotes(String notes) { - task.setNotes(notes); - } - - public void setParent(ITask parent) { - task.setParent(parent); - } - - public void setPriority(String priority) { - task.setPriority(priority); - } - - public void setReminded(boolean reminded) { - task.setReminded(reminded); - } - - public void setReminderDate(Date date) { - task.setReminderDate(date); - } - - public void setUrl(String url) { - task.setUrl(url); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java deleted file mode 100644 index c985e9405..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/DateRangeContainer.java +++ /dev/null @@ -1,212 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.provisional.tasklist; - -import java.text.DateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -/** - * @author Rob Elves - * @author Mik Kersten - */ -public class DateRangeContainer extends AbstractTaskContainer { - - private Set<ITask> children = new HashSet<ITask>(); - - private Map<DateRangeActivityDelegate, Long> taskToDuration = new HashMap<DateRangeActivityDelegate, Long>(); - - private Calendar startDate; - - private Calendar endDate; - - private long totalElapsed = 0; - - private long totalEstimated = 0; - -// private String description; - - public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, String description, TaskList taskList) { - super(description, taskList); - this.startDate = startDate; - this.endDate = endDate; - } - - public DateRangeContainer(Calendar startDate, Calendar endDate, String description, TaskList taskList) { - super(description, taskList); - this.startDate = startDate; - this.endDate = endDate; - } - - public DateRangeContainer(GregorianCalendar startDate, GregorianCalendar endDate, TaskList taskList) { - super(DateFormat.getDateInstance(DateFormat.FULL).format(startDate.getTime()) - + " to " - + DateFormat.getDateInstance(DateFormat.FULL).format(endDate.getTime()), - taskList); - // super(startDate.hashCode() + endDate.hashCode() + ""); -// String start = DateFormat.getDateInstance(DateFormat.FULL).format(startDate.getTime()); -// String end = DateFormat.getDateInstance(DateFormat.FULL).format(endDate.getTime()); -// this.description = start + " to " + end; - this.startDate = startDate; - this.endDate = endDate; - } - - public DateRangeContainer(Date time, Date time2, String description, TaskList taskList) { - super(description, taskList); - startDate = new GregorianCalendar(); - startDate.setTime(time); - endDate = new GregorianCalendar(); - endDate.setTime(time2); -// this.description = description; - } - - public boolean includes(Calendar cal) { - return (startDate.getTimeInMillis() <= cal.getTimeInMillis()) - && (endDate.getTimeInMillis() >= cal.getTimeInMillis()); - } - - public void clear() { - children.clear(); - } - - public void addTask(DateRangeActivityDelegate taskWrapper) { - long taskActivity = taskWrapper.getActivity(); - if(taskActivity < 0) taskActivity = 0; - totalElapsed += taskActivity; - children.remove(taskWrapper); - children.add(taskWrapper); - if (taskToDuration.containsKey(taskWrapper)) { - long previous = taskToDuration.get(taskWrapper); - long newDuration = previous + taskActivity; - taskToDuration.put(taskWrapper, newDuration); - } else { - taskToDuration.put(taskWrapper, taskActivity); - } - } - - public Calendar getStart() { - return startDate; - } - - public Calendar getEnd() { - return endDate; - } - - public long getTotalElapsed() { - return totalElapsed; - } - - public long getElapsed(DateRangeActivityDelegate taskWrapper) { - if (taskToDuration.containsKey(taskWrapper)) { - return taskToDuration.get(taskWrapper); - } else { - return 0; - } - } - - public long getTotalEstimated() { - totalEstimated = 0; - for (ITask task : children) { - totalEstimated += task.getEstimateTimeHours(); - } - return totalEstimated; - } - -// public Set<TaskActivityDurationDelegate> getElements() { -// return tasks; -// } - - public boolean isArchive() { - return false; - } - - public void setIsArchive(boolean isArchive) { - // ignore - } - - public String getPriority() { - return ""; - } - -// public String getDescription() { -// return description; -// } - -// public void setDescription(String description) { -// this.description = description; -// } - -// public String getHandleIdentifier() { -// return description; -// } - - public void setHandleIdentifier(String id) { - // ignore - } - - public Set<ITask> getChildren() { -// Set<ITask> taskSet = new HashSet<ITask>(); -// taskSet.addAll(tasks); - return children; -// Set<ITask> emptySet = Collections.emptySet(); -// return emptySet; - } - - public boolean isFuture() { - return !isPresent() && getStart().after(Calendar.getInstance()); - } - - public boolean isPresent() { - return getStart().before(Calendar.getInstance()) && getEnd().after(Calendar.getInstance()); - } - - @Override - public int hashCode() { - final int PRIME = 31; - int result = 1; - result = PRIME * result + ((startDate == null) ? 0 : startDate.hashCode()); - result = PRIME * result + ((endDate == null) ? 0 : endDate.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final DateRangeContainer other = (DateRangeContainer) obj; - if (startDate == null) { - if (other.startDate != null) - return false; - } else if (!startDate.equals(other.startDate)) - return false; - if (endDate == null) { - if (other.endDate != null) - return false; - } else if (!endDate.equals(other.endDate)) - return false; - return true; - } - - @Override - public boolean isLocal() { - return true; - } -}
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java deleted file mode 100644 index 9f4151b43..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/ITaskListChangeListener.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.provisional.tasklist; - -/** - * Listener for task list modifications and task content modifications. - * - * @author Mik Kersten - */ -public interface ITaskListChangeListener { - - public abstract void localInfoChanged(ITask task); - - public abstract void repositoryInfoChanged(ITask task); - - public abstract void taskDeleted(ITask task); - - public abstract void containerAdded(AbstractTaskContainer container); - - public abstract void containerDeleted(AbstractTaskContainer container); - - public abstract void containerInfoChanged(AbstractTaskContainer container); - - /** - * @param task - * @param fromContainer can be null - * @param toContainer can be null - */ - public abstract void taskMoved(ITask task, AbstractTaskContainer fromContainer, AbstractTaskContainer toContainer); - - public abstract void taskAdded(ITask task); - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java index c6058b737..c8268eba4 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/MylarTaskListPlugin.java @@ -66,7 +66,7 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup { private static TaskRepositoryManager taskRepositoryManager; - private TaskListSaveManager taskListSaveManager; + private TaskListSaveManager taskListSaveManager = new TaskListSaveManager(); private TaskListRefreshManager taskListRefreshManager; @@ -94,7 +94,7 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup { private boolean initialized = false; - private Map<AbstractRepositoryConnector, Image> brandingIcons = new HashMap<AbstractRepositoryConnector, Image>(); + private Map<AbstractRepositoryClient, Image> brandingIcons = new HashMap<AbstractRepositoryClient, Image>(); public enum TaskListSaveMode { ONE_HOUR, THREE_HOURS, DAY; @@ -284,12 +284,14 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup { taskRepositoryManager.readRepositories(); taskListManager.addListener(CONTEXT_TASK_ACTIVITY_LISTENER); + taskListManager.addListener(taskListSaveManager); + taskListManager.readExistingOrCreateNewList(); initialized = true; migrateHandlesToRepositorySupport(); if (getPrefs().getBoolean(TaskListPreferenceConstants.REPOSITORY_SYNCH_ON_STARTUP)) { - for (AbstractRepositoryConnector repositoryClient : taskRepositoryManager.getRepositoryClients()) { + for (AbstractRepositoryClient repositoryClient : taskRepositoryManager.getRepositoryClients()) { repositoryClient.synchronize(); } } @@ -303,9 +305,6 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup { taskListRefreshManager = new TaskListRefreshManager(); taskListRefreshManager.startRefreshJob(); - taskListSaveManager = new TaskListSaveManager(); - taskListManager.addListener(taskListSaveManager); - MylarPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(PREFERENCE_LISTENER); getPrefs().addPropertyChangeListener(taskListRefreshManager); PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().addDisposeListener( @@ -576,14 +575,14 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup { return taskRepositoryManager; } - public Map<AbstractRepositoryConnector, Image> getBrandingIcons() { + public Map<AbstractRepositoryClient, Image> getBrandingIcons() { return brandingIcons; } public boolean isInitialized() { return initialized; } -} +} // /** // * Sets the directory containing the task list file to use. diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java deleted file mode 100644 index dabc7b95e..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskArchive.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004 - 2006 University Of British Columbia and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * University Of British Columbia - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylar.provisional.tasklist; - - -/** - * @author Mik Kersten - */ -public class TaskArchive extends AbstractTaskContainer { - - public static final String HANDLE = "archive"; - - public static final String LABEL_ARCHIVE = "Archive (all tasks)"; - - public TaskArchive(TaskList taskList) { - super(HANDLE, taskList); - } - - public String getPriority() { - return Task.PriorityLevel.P1.toString(); - } - - @Override - public String getHandleIdentifier() { - return HANDLE; - } - - public String getDescription() { - return LABEL_ARCHIVE; - } - - @Override - public boolean isLocal() { - return true; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java index ffa6131ff..dfa49cd5d 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/TaskRepositoryManager.java @@ -33,7 +33,7 @@ public class TaskRepositoryManager { public static final String PREF_REPOSITORIES = "org.eclipse.mylar.tasklist.repositories."; - private Map<String, AbstractRepositoryConnector> repositoryClients = new HashMap<String, AbstractRepositoryConnector>(); + private Map<String, AbstractRepositoryClient> repositoryClients = new HashMap<String, AbstractRepositoryClient>(); private Map<String, Set<TaskRepository>> repositoryMap = new HashMap<String, Set<TaskRepository>>(); @@ -51,21 +51,21 @@ public class TaskRepositoryManager { private static final String PREF_STORE_DELIM = ", "; - public Collection<AbstractRepositoryConnector> getRepositoryClients() { + public Collection<AbstractRepositoryClient> getRepositoryClients() { return Collections.unmodifiableCollection(repositoryClients.values()); } - public AbstractRepositoryConnector getRepositoryClient(String kind) { + public AbstractRepositoryClient getRepositoryClient(String kind) { return repositoryClients.get(kind); } - public void addRepositoryClient(AbstractRepositoryConnector repositoryClient) { + public void addRepositoryClient(AbstractRepositoryClient repositoryClient) { if (!repositoryClients.values().contains(repositoryClient)) { - repositoryClients.put(repositoryClient.getRepositoryType(), repositoryClient); + repositoryClients.put(repositoryClient.getKind(), repositoryClient); } } - public void removeRepositoryClient(AbstractRepositoryConnector repositoryClient) { + public void removeRepositoryClient(AbstractRepositoryClient repositoryClient) { repositoryClients.remove(repositoryClient); } @@ -118,9 +118,9 @@ public class TaskRepositoryManager { public List<TaskRepository> getAllRepositories() { List<TaskRepository> repositories = new ArrayList<TaskRepository>(); - for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) { - if (repositoryMap.containsKey(repositoryClient.getRepositoryType())) { - repositories.addAll(repositoryMap.get(repositoryClient.getRepositoryType())); + for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) { + if (repositoryMap.containsKey(repositoryClient.getKind())) { + repositories.addAll(repositoryMap.get(repositoryClient.getKind())); } } return repositories; @@ -162,8 +162,8 @@ public class TaskRepositoryManager { } public Map<String, Set<TaskRepository>> readRepositories() { - for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) { - String read = MylarTaskListPlugin.getPrefs().getString(PREF_REPOSITORIES + repositoryClient.getRepositoryType()); + for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) { + String read = MylarTaskListPlugin.getPrefs().getString(PREF_REPOSITORIES + repositoryClient.getKind()); Set<TaskRepository> repositories = new HashSet<TaskRepository>(); if (read != null) { StringTokenizer st = new StringTokenizer(read, PREF_STORE_DELIM); @@ -171,8 +171,8 @@ public class TaskRepositoryManager { String urlString = st.nextToken(); try { URL url = new URL(urlString); - repositoryMap.put(repositoryClient.getRepositoryType(), repositories); - repositories.add(new TaskRepository(repositoryClient.getRepositoryType(), url)); + repositoryMap.put(repositoryClient.getKind(), repositories); + repositories.add(new TaskRepository(repositoryClient.getKind(), url)); } catch (MalformedURLException e) { MylarStatusHandler.fail(e, "could not restore URL: " + urlString, false); } @@ -186,13 +186,13 @@ public class TaskRepositoryManager { } private void saveRepositories() { - for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) { - if (repositoryMap.containsKey(repositoryClient.getRepositoryType())) { + for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) { + if (repositoryMap.containsKey(repositoryClient.getKind())) { String repositoriesToStore = ""; - for (TaskRepository repository : repositoryMap.get(repositoryClient.getRepositoryType())) { + for (TaskRepository repository : repositoryMap.get(repositoryClient.getKind())) { repositoriesToStore += repository.getUrl().toExternalForm() + PREF_STORE_DELIM; } - String prefId = PREF_REPOSITORIES + repositoryClient.getRepositoryType(); + String prefId = PREF_REPOSITORIES + repositoryClient.getKind(); MylarTaskListPlugin.getPrefs().setValue(prefId, repositoriesToStore); } } @@ -207,8 +207,8 @@ public class TaskRepositoryManager { */ public void clearRepositories() { repositoryMap.clear(); - for (AbstractRepositoryConnector repositoryClient : repositoryClients.values()) { - String prefId = PREF_REPOSITORIES + repositoryClient.getRepositoryType(); + for (AbstractRepositoryClient repositoryClient : repositoryClients.values()) { + String prefId = PREF_REPOSITORIES + repositoryClient.getKind(); MylarTaskListPlugin.getPrefs().setValue(prefId, ""); } } |