diff options
Diffstat (limited to 'org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn')
22 files changed, 0 insertions, 2893 deletions
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/Messages.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/Messages.java deleted file mode 100644 index 5825d3b24..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/Messages.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import org.eclipse.osgi.util.NLS; - -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.trac.ui.messages"; //$NON-NLS-1$ - - static { - // load message values from bundle file - reloadMessages(); - } - - public static void reloadMessages() { - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - public static String TracConnectorUi_Replying_to__comment_X_X_; - - public static String TracConnectorUi_Replying_to__comment_ticket_X_X_X_; - - public static String TracConnectorUi_Replying_to__ticket_X_X_; - - public static String TracConnectorUi_Ticket; - - public static String WebHyperlink_Open_URL_X; -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracConnectorUi.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracConnectorUi.java deleted file mode 100644 index 4b44e763a..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracConnectorUi.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector.TaskKind; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.ui.wizard.TracQueryPage; -import org.eclipse.mylyn.internal.trac.ui.wizard.TracRepositorySettingsPage; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.mylyn.tasks.core.ITask; -import org.eclipse.mylyn.tasks.core.ITaskComment; -import org.eclipse.mylyn.tasks.core.ITaskMapping; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi; -import org.eclipse.mylyn.tasks.ui.LegendElement; -import org.eclipse.mylyn.tasks.ui.wizards.ITaskRepositoryPage; -import org.eclipse.mylyn.tasks.ui.wizards.ITaskSearchPage; -import org.eclipse.mylyn.tasks.ui.wizards.NewTaskWizard; -import org.eclipse.mylyn.tasks.ui.wizards.NewWebTaskWizard; -import org.eclipse.mylyn.tasks.ui.wizards.RepositoryQueryWizard; -import org.eclipse.osgi.util.NLS; - -/** - * @author Mik Kersten - * @author Steffen Pingel - */ -public class TracConnectorUi extends AbstractRepositoryConnectorUi { - - @SuppressWarnings("restriction") - public TracConnectorUi() { - org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.getDefault().addSearchHandler(new TracSearchHandler()); - } - - @Override - public IHyperlink[] findHyperlinks(TaskRepository repository, String text, int lineOffset, int regionOffset) { - return TracHyperlinkUtil.findTicketHyperlinks(repository, text, lineOffset, regionOffset); - } - - @Override - public String getTaskKindLabel(ITask repositoryTask) { - return Messages.TracConnectorUi_Ticket; - } - - @Override - public ITaskRepositoryPage getSettingsPage(TaskRepository taskRepository) { - return new TracRepositorySettingsPage(taskRepository); - } - - @Override - public ITaskSearchPage getSearchPage(TaskRepository repository, IStructuredSelection selection) { - return new TracQueryPage(repository); - } - - @Override - public boolean hasSearchPage() { - return true; - } - - @Override - public IWizard getNewTaskWizard(TaskRepository repository, ITaskMapping selection) { - if (TracRepositoryConnector.hasRichEditor(repository)) { - return new NewTaskWizard(repository, selection); - } else { - return new NewWebTaskWizard(repository, repository.getRepositoryUrl() + ITracClient.NEW_TICKET_URL, - selection); - } - } - - @Override - public IWizard getQueryWizard(TaskRepository repository, IRepositoryQuery query) { - RepositoryQueryWizard wizard = new RepositoryQueryWizard(repository); - wizard.addPage(new TracQueryPage(repository, query)); - return wizard; - } - - @Override - public String getConnectorKind() { - return TracCorePlugin.CONNECTOR_KIND; - } - - @Override - public ImageDescriptor getTaskKindOverlay(ITask task) { - TaskKind taskKind = TaskKind.fromString(task.getTaskKind()); - if (taskKind == TaskKind.DEFECT) { - return TracImages.OVERLAY_DEFECT; - } else if (taskKind == TaskKind.ENHANCEMENT) { - return TracImages.OVERLAY_ENHANCEMENT; - } else if (taskKind == TaskKind.TASK) { - return null; - } - return super.getTaskKindOverlay(task); - } - - @Override - public List<LegendElement> getLegendElements() { - List<LegendElement> legendItems = new ArrayList<LegendElement>(); - legendItems.add(LegendElement.createTask(TaskKind.DEFECT.toString(), TracImages.OVERLAY_DEFECT)); - legendItems.add(LegendElement.createTask(TaskKind.ENHANCEMENT.toString(), TracImages.OVERLAY_ENHANCEMENT)); - legendItems.add(LegendElement.createTask(TaskKind.TASK.toString(), null)); - return legendItems; - } - - @Override - public String getReplyText(TaskRepository taskRepository, ITask task, ITaskComment taskComment, boolean includeTask) { - if (taskComment == null) { - return NLS.bind(Messages.TracConnectorUi_Replying_to__ticket_X_X_, task.getTaskKey(), task.getOwner()); - } else if (includeTask) { - return NLS.bind(Messages.TracConnectorUi_Replying_to__comment_ticket_X_X_X_, new Object[] { - task.getTaskKey(), taskComment.getNumber(), taskComment.getAuthor().getPersonId() }); - } else { - return NLS.bind(Messages.TracConnectorUi_Replying_to__comment_X_X_, taskComment.getNumber(), - taskComment.getAuthor().getPersonId()); - } - } -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java deleted file mode 100644 index c8a0336c7..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkDetector.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import java.util.List; - -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.AbstractTaskHyperlinkDetector; - -/** - * @author Steffen Pingel - */ -public class TracHyperlinkDetector extends AbstractTaskHyperlinkDetector { - - public TracHyperlinkDetector() { - } - - @Override - protected List<IHyperlink> detectHyperlinks(ITextViewer textViewer, String content, int index, int contentOffset) { - TaskRepository taskRepository = getTaskRepository(textViewer); - if (taskRepository != null && TracCorePlugin.CONNECTOR_KIND.equals(taskRepository.getConnectorKind())) { - return TracHyperlinkUtil.findTracHyperlinks(taskRepository, content, index, contentOffset); - } - return null; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java deleted file mode 100644 index 57568e65e..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracHyperlinkUtil.java +++ /dev/null @@ -1,309 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - * David Green - fix for bug 244017 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.TaskHyperlink; - -/** - * Utility class for detecting Trac hyperlinks. - * - * @author Steffen Pingel - */ -public class TracHyperlinkUtil { - - static Pattern ticketPattern = createPattern("(ticket:|#)(\\d+)"); //$NON-NLS-1$ - - static Pattern commentPattern = createPattern("comment:ticket:(\\d+):(\\d+)"); //$NON-NLS-1$ - - static Pattern reportPattern1 = createPattern("report:(\\d+)"); //$NON-NLS-1$ - - static Pattern reportPattern2 = createPattern("\\{(\\d+)\\}"); //$NON-NLS-1$ - - static Pattern changesetPattern1 = createPattern("(r|changeset:)(\\d+)(/\\w+)?"); //$NON-NLS-1$ - - static Pattern changesetPattern2 = createPattern("\\[(\\d+)(/\\w+)?\\]"); //$NON-NLS-1$ - - static Pattern revisionLogPattern1 = createPattern("r(\\d+):(\\d+)"); //$NON-NLS-1$ - - static Pattern revisionLogPattern2 = createPattern("\\[(\\d+):(\\d+)\\]"); //$NON-NLS-1$ - - static Pattern revisionLogPattern3 = createPattern("log:(\\w+)?@(\\d+):(\\d+)"); //$NON-NLS-1$ - - static Pattern diffPattern1 = createPattern("diff:@(\\d+):(\\d+)"); //$NON-NLS-1$ - - static Pattern diffPattern2 = createPattern("diff:([\\w\\./-]+)(@(\\d+))?//([\\w\\./-]+)(@(\\d+))?"); //$NON-NLS-1$ - - static Pattern wikiPattern1 = createPattern("wiki:(\\w+)"); //$NON-NLS-1$ - - static Pattern wikiPattern2 = Pattern.compile("(?<![!.a-z])[A-Z][a-z0-9]+[A-Z]\\w*"); //$NON-NLS-1$ - - static Pattern milestonePattern = createPattern("milestone:([\\w\\.]+)"); //$NON-NLS-1$ - - static Pattern attachmentPattern = createPattern("attachment:ticket:(\\d+):([\\w\\.]+)"); //$NON-NLS-1$ - - static Pattern filesPattern = createPattern("source:/*([\\w\\./\\-_]+)(@(\\d+)(#L(\\d+))?)?"); //$NON-NLS-1$ - - private static Pattern createPattern(String regexp) { - // hyperlink patterns prefixed with "!" are not links - return Pattern.compile("(?<!!)" + regexp); //$NON-NLS-1$ - } - - /** - * Detects hyperlinks to Trac tickets. - */ - public static IHyperlink[] findTicketHyperlinks(TaskRepository repository, String text, int lineOffset, - int regionOffset) { - List<IHyperlink> links = null; - Matcher m = ticketPattern.matcher(text); - while (m.find()) { - if (isInRegion(lineOffset, m)) { - String id = m.group(2); - if (links == null) { - links = new ArrayList<IHyperlink>(); - } - links.add(new TaskHyperlink(determineRegion(regionOffset, m), repository, id)); - } - } - return links == null ? null : links.toArray(new IHyperlink[0]); - } - - /** - * Detects Trac hyperlinks. - * - * <ul> - * <li>Ticket comments: comment:ticket:1:2 - * <li>Reports: {1} or report:1 - * <li>Changesets: r1, [1], changeset:1 or (restricted) [1/trunk], changeset:1/trunk - * <li>Revision log: r1:3, [1:3] or log:@1:3, log:trunk@1:3 - * <li>Diffs: diff:@1:3, diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-default or - * diff:trunk/trac@3538//sandbox/vc-refactoring@3539 - * <li>Wiki pages: CamelCase or wiki:CamelCase - * <li>Milestones: milestone:1.0 - * <li>Attachment: attachment:ticket:944:attachment.1073.diff - * <li>Files: source:trunk/COPYING - * <li>A specific file revision: source:/trunk/COPYING@200 - * <li>A particular line of a specific file revision: source:/trunk/COPYING@200#L25 - * </ul> - * - * @see http://trac.edgewall.org/wiki/TracLinks - */ - public static List<IHyperlink> findTracHyperlinks(TaskRepository repository, String text, int offsetInText, - int textOffset) { - List<IHyperlink> links = new ArrayList<IHyperlink>(); - - Matcher m = commentPattern.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String id = m.group(1); - // String comment = m.group(2); - links.add(new TaskHyperlink(determineRegion(textOffset, m), repository, id)); - } - } - - m = reportPattern1.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String id = m.group(1); - links.add(new WebHyperlink(determineRegion(textOffset, m), repository.getRepositoryUrl() - + ITracClient.REPORT_URL + id)); - } - } - - m = reportPattern2.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String id = m.group(1); - links.add(new WebHyperlink(determineRegion(textOffset, m), repository.getRepositoryUrl() - + ITracClient.REPORT_URL + id)); - } - } - - m = revisionLogPattern1.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String rev = m.group(1); - String stopRev = m.group(2); - String url = repository.getRepositoryUrl() + ITracClient.REVISION_LOG_URL + "?rev=" + rev //$NON-NLS-1$ - + "&stop_rev=" + stopRev; //$NON-NLS-1$ - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = revisionLogPattern2.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String rev = m.group(1); - String stopRev = m.group(2); - String url = repository.getRepositoryUrl() + ITracClient.REVISION_LOG_URL + "?rev=" + rev //$NON-NLS-1$ - + "&stop_rev=" + stopRev; //$NON-NLS-1$ - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = revisionLogPattern3.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String branch = m.group(1); - String rev = m.group(2); - String stopRev = m.group(3); - String url = repository.getRepositoryUrl() + ITracClient.REVISION_LOG_URL; - if (branch != null) { - url += branch; - } - url += "?rev=" + rev + "&stop_rev=" + stopRev; //$NON-NLS-1$ //$NON-NLS-2$ - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = changesetPattern1.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String rev = m.group(2); - String branch = m.group(3); - String url = repository.getRepositoryUrl() + ITracClient.CHANGESET_URL + rev; - if (branch != null) { - url += branch; - } - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = changesetPattern2.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String rev = m.group(1); - String branch = m.group(2); - String url = repository.getRepositoryUrl() + ITracClient.CHANGESET_URL + rev; - if (branch != null) { - url += branch; - } - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = diffPattern1.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String old_rev = m.group(1); - String new_rev = m.group(2); - String url = repository.getRepositoryUrl() + ITracClient.CHANGESET_URL; - url += "?new=" + new_rev + "&old=" + old_rev; //$NON-NLS-1$ //$NON-NLS-2$ - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = diffPattern2.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String old_path = m.group(1); - String old_rev = m.group(3); - String new_path = m.group(4); - String new_rev = m.group(6); - String url = repository.getRepositoryUrl() + ITracClient.CHANGESET_URL; - try { - url += "?new_path=" + URLEncoder.encode(new_path, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$ - url += "&old_path=" + URLEncoder.encode(old_path, "UTF-8"); //$NON-NLS-1$ //$NON-NLS-2$ - } catch (UnsupportedEncodingException e) { - StatusHandler.log(new Status(IStatus.WARNING, TracUiPlugin.ID_PLUGIN, "Unexcpected exception", e)); //$NON-NLS-1$ - continue; - } - if (new_rev != null) { - url += "&new=" + new_rev; //$NON-NLS-1$ - } - if (old_rev != null) { - url += "&old=" + old_rev; //$NON-NLS-1$ - } - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - m = wikiPattern1.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String page = m.group(1); - links.add(new WebHyperlink(determineRegion(textOffset, m), repository.getRepositoryUrl() - + ITracClient.WIKI_URL + page)); - } - } - - m = wikiPattern2.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String page = m.group(0); - links.add(new WebHyperlink(determineRegion(textOffset, m), repository.getRepositoryUrl() - + ITracClient.WIKI_URL + page)); - } - } - - m = milestonePattern.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String milestone = m.group(1); - links.add(new WebHyperlink(determineRegion(textOffset, m), repository.getRepositoryUrl() - + ITracClient.MILESTONE_URL + milestone)); - } - } - - m = attachmentPattern.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String id = m.group(1); - // String attachment = m.group(2); - links.add(new TaskHyperlink(determineRegion(textOffset, m), repository, id)); - } - } - - m = filesPattern.matcher(text); - while (m.find()) { - if (isInRegion(offsetInText, m)) { - String filename = m.group(1); - String rev = m.group(3); - String line = m.group(5); - String url = repository.getRepositoryUrl() + ITracClient.BROWSER_URL + filename; - if (rev != null) { - url += "?rev=" + rev; //$NON-NLS-1$ - if (line != null) { - url += "#L" + line; //$NON-NLS-1$ - } - } - links.add(new WebHyperlink(determineRegion(textOffset, m), url)); - } - } - - return links; - } - - private static boolean isInRegion(int offsetInText, Matcher m) { - return (offsetInText == -1) || (offsetInText >= m.start() && offsetInText <= m.end()); - } - - private static IRegion determineRegion(int textOffset, Matcher m) { - return new Region(textOffset + m.start(), m.end() - m.start()); - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracImages.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracImages.java deleted file mode 100644 index b783ce233..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracImages.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import java.net.MalformedURLException; -import java.net.URL; - -import org.eclipse.jface.resource.ImageDescriptor; - -/** - * @author Shawn Minto - * @author Mik Kersten - * @author Steffen Pingel - */ -public class TracImages { - - private static final URL baseURL = TracUiPlugin.getDefault().getBundle().getEntry("/icons/"); //$NON-NLS-1$ - - public static final String T_VIEW = "eview16"; //$NON-NLS-1$ - - public static final ImageDescriptor OVERLAY_DEFECT = create(T_VIEW, "overlay-critical.gif"); //$NON-NLS-1$ - - public static final ImageDescriptor OVERLAY_ENHANCEMENT = create(T_VIEW, "overlay-enhancement.gif"); //$NON-NLS-1$ - - private static ImageDescriptor create(String prefix, String name) { - try { - return ImageDescriptor.createFromURL(makeIconFileURL(prefix, name)); - } catch (MalformedURLException e) { - return ImageDescriptor.getMissingImageDescriptor(); - } - } - - private static URL makeIconFileURL(String prefix, String name) throws MalformedURLException { - if (baseURL == null) { - throw new MalformedURLException(); - } - - StringBuilder buffer = new StringBuilder(prefix); - if (prefix != "") { //$NON-NLS-1$ - buffer.append('/'); - } - buffer.append(name); - return new URL(baseURL, buffer.toString()); - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracSearchHandler.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracSearchHandler.java deleted file mode 100644 index 5f995310f..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracSearchHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import org.eclipse.mylyn.internal.tasks.core.AbstractSearchHandler; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.model.TracSearch; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter.CompareOperator; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.core.data.TaskData; - -@SuppressWarnings("restriction") -public class TracSearchHandler extends AbstractSearchHandler { - - @Override - public String getConnectorKind() { - return TracCorePlugin.CONNECTOR_KIND; - } - - @Override - public boolean queryForText(TaskRepository taskRepository, IRepositoryQuery query, TaskData taskData, - String searchString) { - TracSearchFilter filter = new TracSearchFilter("description"); //$NON-NLS-1$ - filter.setOperator(CompareOperator.CONTAINS); - filter.addValue(searchString); - - TracSearch search = new TracSearch(); - search.addFilter(filter); - - // TODO copied from TracQueryPage.getQueryUrl() - StringBuilder sb = new StringBuilder(); - sb.append(taskRepository.getRepositoryUrl()); - sb.append(ITracClient.QUERY_URL); - sb.append(search.toUrl()); - - query.setUrl(sb.toString()); - - return true; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskListMigrator.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskListMigrator.java deleted file mode 100644 index 696495545..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracTaskListMigrator.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; -import org.eclipse.mylyn.internal.trac.core.util.TracUtil; -import org.eclipse.mylyn.tasks.core.AbstractTaskListMigrator; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.mylyn.tasks.core.ITask; -import org.w3c.dom.Element; - -/** - * @author Steffen Pingel - */ -public class TracTaskListMigrator extends AbstractTaskListMigrator { - - private static final String KEY_TRAC = "Trac"; //$NON-NLS-1$ - - private static final String KEY_TRAC_TASK = KEY_TRAC + KEY_TASK; - - private static final String KEY_TRAC_QUERY = KEY_TRAC + KEY_QUERY; - - private static final String KEY_SUPPORTS_SUBTASKS = "SupportsSubtasks"; //$NON-NLS-1$ - - @Override - public String getConnectorKind() { - return TracCorePlugin.CONNECTOR_KIND; - } - - @Override - public String getTaskElementName() { - return KEY_TRAC_TASK; - } - - @Override - public Set<String> getQueryElementNames() { - Set<String> names = new HashSet<String>(); - names.add(KEY_TRAC_QUERY); - return names; - } - - @Override - public void migrateQuery(IRepositoryQuery query, Element element) { - // nothing to do - } - - @Override - public void migrateTask(ITask task, Element element) { - String lastModDate = element.getAttribute(KEY_LAST_MOD_DATE); - task.setModificationDate(TracUtil.parseDate(lastModDate)); - task.setAttribute(TracRepositoryConnector.TASK_KEY_UPDATE_DATE, lastModDate); - if (element.hasAttribute(KEY_SUPPORTS_SUBTASKS)) { - task.setAttribute(TracRepositoryConnector.TASK_KEY_SUPPORTS_SUBTASKS, Boolean.valueOf( - element.getAttribute(KEY_SUPPORTS_SUBTASKS)).toString()); - } - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java deleted file mode 100644 index d39701d79..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/TracUiPlugin.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.tasks.ui.TaskRepositoryLocationUiFactory; -import org.eclipse.mylyn.tasks.ui.TasksUi; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** - * @author Mik Kersten - * @author Steffen Pingel - */ -public class TracUiPlugin extends AbstractUIPlugin { - - public static final String ID_PLUGIN = "org.eclipse.mylyn.trac.ui"; //$NON-NLS-1$ - - private static TracUiPlugin plugin; - - public TracUiPlugin() { - plugin = this; - } - - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - - TracCorePlugin.getDefault().getConnector().setTaskRepositoryLocationFactory( - new TaskRepositoryLocationUiFactory()); - TasksUi.getRepositoryManager().addListener(TracCorePlugin.getDefault().getConnector().getClientManager()); - } - - @Override - public void stop(BundleContext context) throws Exception { - TasksUi.getRepositoryManager().removeListener(TracCorePlugin.getDefault().getConnector().getClientManager()); - - plugin = null; - super.stop(context); - } - - public static TracUiPlugin getDefault() { - return plugin; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/WebHyperlink.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/WebHyperlink.java deleted file mode 100644 index a6bf140ad..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/WebHyperlink.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui; - -import java.text.MessageFormat; - -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.hyperlink.IHyperlink; -import org.eclipse.mylyn.tasks.ui.TasksUiUtil; - -/** - * Encapsulates link from text to a URL. - * - * @author Steffen Pingel - * @since 2.0 - */ -public class WebHyperlink implements IHyperlink { - - private final IRegion region; - - private final String url; - - public WebHyperlink(IRegion region, String url) { - this.region = region; - this.url = url; - } - - public IRegion getHyperlinkRegion() { - return region; - } - - public String getTypeLabel() { - return null; - } - - public String getHyperlinkText() { - return MessageFormat.format(Messages.WebHyperlink_Open_URL_X, url); - } - - public void open() { - TasksUiUtil.openTask(url); - } - - public String getURLString() { - return url; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/Messages.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/Messages.java deleted file mode 100644 index 7ec02f46b..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/Messages.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.editor; - -import org.eclipse.osgi.util.NLS; - -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.trac.ui.editor.messages"; //$NON-NLS-1$ - - static { - // load message values from bundle file - reloadMessages(); - } - - public static void reloadMessages() { - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - public static String TracPeoplePart_People; - public static String TracPeoplePart__Select_to_remove_; - - public static String TracTaskEditorPageFactory_Browser; -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracCcAttributeEditor.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracCcAttributeEditor.java deleted file mode 100644 index df787ef83..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracCcAttributeEditor.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.editor; - -import org.eclipse.jface.layout.GridDataFactory; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.mylyn.internal.trac.core.TracAttributeMapper; -import org.eclipse.mylyn.tasks.core.data.TaskAttribute; -import org.eclipse.mylyn.tasks.core.data.TaskDataModel; -import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor; -import org.eclipse.mylyn.tasks.ui.editors.LayoutHint; -import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.ColumnSpan; -import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.RowSpan; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.List; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * @author Rob Elves - */ -public class TracCcAttributeEditor extends AbstractAttributeEditor { - - private List list; - - private TaskAttribute attrRemoveCc; - - public TracCcAttributeEditor(TaskDataModel manager, TaskAttribute taskAttribute) { - super(manager, taskAttribute); - setLayoutHint(new LayoutHint(RowSpan.MULTIPLE, ColumnSpan.SINGLE)); - } - - @Override - public void createControl(Composite parent, FormToolkit toolkit) { - list = new List(parent, SWT.FLAT | SWT.MULTI | SWT.V_SCROLL); - toolkit.adapt(list, true, true); - list.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); - list.setFont(JFaceResources.getDefaultFont()); - GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(list); - - TaskAttribute attrUserCC = getTaskAttribute(); - if (attrUserCC != null) { - for (String value : attrUserCC.getValues()) { - list.add(value); - } - } - - attrRemoveCc = getModel().getTaskData().getRoot().getMappedAttribute(TracAttributeMapper.REMOVE_CC); - for (String item : attrRemoveCc.getValues()) { - int i = list.indexOf(item); - if (i != -1) { - list.select(i); - } - } - - list.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - for (String cc : list.getItems()) { - int index = list.indexOf(cc); - if (list.isSelected(index)) { - java.util.List<String> remove = attrRemoveCc.getValues(); - if (!remove.contains(cc)) { - attrRemoveCc.addValue(cc); - } - } else { - attrRemoveCc.removeValue(cc); - } - } - getModel().attributeChanged(attrRemoveCc); - } - }); - - list.showSelection(); - - setControl(list); - } -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracPeoplePart.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracPeoplePart.java deleted file mode 100644 index 434596536..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracPeoplePart.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.editor; - -import org.eclipse.jface.layout.GridDataFactory; -import org.eclipse.mylyn.internal.trac.core.TracAttribute; -import org.eclipse.mylyn.internal.trac.core.TracAttributeMapper; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.core.data.TaskAttribute; -import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor; -import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.Section; - -/** - * @author Robert Elves - */ -public class TracPeoplePart extends AbstractTaskEditorPart { - - private static final int COLUMN_MARGIN = 5; - - public TracPeoplePart() { - setPartName(Messages.TracPeoplePart_People); - } - - private void addAttribute(Composite composite, FormToolkit toolkit, TaskAttribute attribute) { - AbstractAttributeEditor editor = createAttributeEditor(attribute); - if (editor != null) { - editor.createLabelControl(composite, toolkit); - GridDataFactory.defaultsFor(editor.getLabelControl()).indent(COLUMN_MARGIN, 0).applyTo( - editor.getLabelControl()); - editor.createControl(composite, toolkit); - getTaskEditorPage().getAttributeEditorToolkit().adapt(editor); - if (editor instanceof TracCcAttributeEditor) { - GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).hint(130, 95).applyTo( - editor.getControl()); - } else { - GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.TOP).applyTo(editor.getControl()); - } - } - } - - @Override - public void createControl(Composite parent, FormToolkit toolkit) { - Section section = createSection(parent, toolkit, true); - Composite peopleComposite = toolkit.createComposite(section); - GridLayout layout = new GridLayout(2, false); - layout.marginWidth = 5; - peopleComposite.setLayout(layout); - - addAttribute(peopleComposite, toolkit, getTaskData().getRoot().getMappedAttribute(TaskAttribute.USER_ASSIGNED)); - addAttribute(peopleComposite, toolkit, getTaskData().getRoot().getMappedAttribute(TaskAttribute.USER_REPORTER)); - addAttribute(peopleComposite, toolkit, getTaskData().getRoot().getMappedAttribute(TracAttributeMapper.NEW_CC)); - addSelfToCC(peopleComposite); - TaskAttribute cc = getTaskData().getRoot().getMappedAttribute(TracAttribute.CC.getTaskKey()); - TaskAttribute removeCc = getTaskData().getRoot().getMappedAttribute(TracAttributeMapper.REMOVE_CC); - if (cc != null && removeCc != null) { - addAttribute(peopleComposite, toolkit, cc); - toolkit.createLabel(peopleComposite, ""); //$NON-NLS-1$ - Label label = toolkit.createLabel(peopleComposite, Messages.TracPeoplePart__Select_to_remove_); - GridDataFactory.fillDefaults().indent(0, 5).align(SWT.CENTER, SWT.CENTER).applyTo(label); - } - - toolkit.paintBordersFor(peopleComposite); - section.setClient(peopleComposite); - setSection(toolkit, section); - } - - /** - * Creates a check box for adding the repository user to the cc list. Does nothing if the repository does not have a - * valid username, the repository user is the assignee, reporter or already on the the cc list. - */ - private void addSelfToCC(Composite composite) { - TaskRepository repository = this.getTaskEditorPage().getTaskRepository(); - if (repository.getUserName() == null) { - return; - } - - TaskAttribute root = getTaskData().getRoot(); - TaskAttribute owner = root.getMappedAttribute(TaskAttribute.USER_ASSIGNED); - if (owner != null && owner.getValue().indexOf(repository.getUserName()) != -1) { - return; - } - - TaskAttribute reporter = root.getMappedAttribute(TaskAttribute.USER_REPORTER); - if (reporter != null && reporter.getValue().indexOf(repository.getUserName()) != -1) { - return; - } - - TaskAttribute ccAttribute = root.getMappedAttribute(TaskAttribute.USER_CC); - if (ccAttribute != null && ccAttribute.getValues().contains(repository.getUserName())) { - return; - } - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracRenderingEngine.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracRenderingEngine.java deleted file mode 100644 index 493e5b23e..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracRenderingEngine.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Xiaoyang Guan - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.editor; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.client.TracException; -import org.eclipse.mylyn.internal.trac.core.client.TracXmlRpcClient; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.editors.AbstractRenderingEngine; - -/** - * - * @author Xiaoyang Guan - * @since 2.1 - */ -public class TracRenderingEngine extends AbstractRenderingEngine { - - /** - * generate HTML preview page for <code>text</code> - */ - @Override - public String renderAsHtml(TaskRepository repository, String text, IProgressMonitor monitor) throws CoreException { - monitor.beginTask("Render HTML Preview", IProgressMonitor.UNKNOWN); //$NON-NLS-1$ - try { - ITracClient client = TracCorePlugin.getDefault() - .getConnector() - .getClientManager() - .getTracClient(repository); - if (client instanceof TracXmlRpcClient) { - TracXmlRpcClient tracXmlRpcClient = (TracXmlRpcClient) client; - String htmlText = tracXmlRpcClient.wikiToHtml(text, monitor); - if (monitor.isCanceled()) { - throw new OperationCanceledException(); - } - - String htmlHeader = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" //$NON-NLS-1$ - + "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">" //$NON-NLS-1$ - + "<head>" //$NON-NLS-1$ - + "<link rel=\"stylesheet\" href=\"REPOSITORY_URL/chrome/common/css/trac.css\" type=\"text/css\" />" //$NON-NLS-1$ - + "<link rel=\"stylesheet\" href=\"REPOSITORY_URL/chrome/common/css/wiki.css\" type=\"text/css\" />" //$NON-NLS-1$ - + "<link rel=\"icon\" href=\"REPOSITORY_URL/chrome/common/trac.ico\" type=\"image/x-icon\" />" //$NON-NLS-1$ - + "<link rel=\"shortcut icon\" href=\"EPOSITORY_URL/chrome/common/trac.ico\" type=\"image/x-icon\" />" //$NON-NLS-1$ - + "<style type=\"text/css\">body {background: #f4f4f4 url(REPOSITORY_URL/chrome/common/draft.png);margin: 0;padding: 0;}</style>" //$NON-NLS-1$ - + "</head>"; //$NON-NLS-1$ - String htmlBody = "<body> " + htmlText + "</body>"; //$NON-NLS-1$ //$NON-NLS-2$ - String htmlFooter = "</html>"; //$NON-NLS-1$ - - String html = htmlHeader.replace("REPOSITORY_URL", repository.getRepositoryUrl()) + htmlBody //$NON-NLS-1$ - + htmlFooter; - return html; - } else { - throw new CoreException(TracCorePlugin.toStatus(new TracException( - "Preview is available only in XML-RPC access mode"), repository)); //$NON-NLS-1$ - } - } catch (TracException e) { - throw new CoreException(TracCorePlugin.toStatus(e, repository)); - } finally { - monitor.done(); - } - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorPage.java deleted file mode 100644 index d9e1c9a05..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorPage.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.editor; - -import java.util.Iterator; -import java.util.Set; - -import org.eclipse.mylyn.internal.trac.core.TracAttribute; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.tasks.core.data.TaskAttribute; -import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor; -import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage; -import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart; -import org.eclipse.mylyn.tasks.ui.editors.AttributeEditorFactory; -import org.eclipse.mylyn.tasks.ui.editors.TaskEditor; -import org.eclipse.mylyn.tasks.ui.editors.TaskEditorPartDescriptor; - -/** - * @author Steffen Pingel - */ -public class TracTaskEditorPage extends AbstractTaskEditorPage { - - private TracRenderingEngine renderingEngine; - - public TracTaskEditorPage(TaskEditor editor) { - super(editor, TracCorePlugin.CONNECTOR_KIND); - } - - @Override - protected Set<TaskEditorPartDescriptor> createPartDescriptors() { - Set<TaskEditorPartDescriptor> descriptors = super.createPartDescriptors(); - // remove unnecessary default editor parts - for (Iterator<TaskEditorPartDescriptor> it = descriptors.iterator(); it.hasNext();) { - TaskEditorPartDescriptor taskEditorPartDescriptor = it.next(); - if (taskEditorPartDescriptor.getId().equals(ID_PART_PEOPLE)) { - it.remove(); - } - } - descriptors.add(new TaskEditorPartDescriptor(ID_PART_PEOPLE) { - @Override - public AbstractTaskEditorPart createPart() { - return new TracPeoplePart(); - } - }.setPath(PATH_PEOPLE)); - return descriptors; - } - - @Override - protected void createParts() { - if (renderingEngine == null) { - renderingEngine = new TracRenderingEngine(); - } - getAttributeEditorToolkit().setRenderingEngine(renderingEngine); - super.createParts(); - } - - @Override - protected AttributeEditorFactory createAttributeEditorFactory() { - AttributeEditorFactory factory = new AttributeEditorFactory(getModel(), getTaskRepository(), getEditorSite()) { - @Override - public AbstractAttributeEditor createEditor(String type, TaskAttribute taskAttribute) { - if (TracAttribute.CC.getTracKey().equals(taskAttribute.getId())) { - return new TracCcAttributeEditor(getModel(), taskAttribute); - } - return super.createEditor(type, taskAttribute); - } - }; - return factory; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorPageFactory.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorPageFactory.java deleted file mode 100644 index 69d5e49e1..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/TracTaskEditorPageFactory.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.editor; - -import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; -import org.eclipse.mylyn.tasks.ui.ITasksUiConstants; -import org.eclipse.mylyn.tasks.ui.TasksUiImages; -import org.eclipse.mylyn.tasks.ui.TasksUiUtil; -import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPageFactory; -import org.eclipse.mylyn.tasks.ui.editors.BrowserFormPage; -import org.eclipse.mylyn.tasks.ui.editors.TaskEditor; -import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.forms.editor.FormPage; - -/** - * @author Steffen Pingel - */ -public class TracTaskEditorPageFactory extends AbstractTaskEditorPageFactory { - - @Override - public boolean canCreatePageFor(TaskEditorInput input) { - if (input.getTask().getConnectorKind().equals(TracCorePlugin.CONNECTOR_KIND)) { - return true; - } else if (TasksUiUtil.isOutgoingNewTask(input.getTask(), TracCorePlugin.CONNECTOR_KIND)) { - return true; - } - return false; - } - - @Override - public FormPage createPage(TaskEditor parentEditor) { - TaskEditorInput input = parentEditor.getTaskEditorInput(); - if (TasksUiUtil.isOutgoingNewTask(input.getTask(), TracCorePlugin.CONNECTOR_KIND)) { - return new TracTaskEditorPage(parentEditor); - } else if (TracRepositoryConnector.hasRichEditor(input.getTaskRepository())) { - return new TracTaskEditorPage(parentEditor); - } else { - return new BrowserFormPage(parentEditor, Messages.TracTaskEditorPageFactory_Browser); - } - } - - @Override - public String[] getConflictingIds(TaskEditorInput input) { - if (!input.getTask().getConnectorKind().equals(TracCorePlugin.CONNECTOR_KIND)) { - return new String[] { ITasksUiConstants.ID_PAGE_PLANNING }; - } - return null; - } - - @Override - public Image getPageImage() { - return CommonImages.getImage(TasksUiImages.REPOSITORY_SMALL); - } - - @Override - public String getPageText() { - return "Trac"; //$NON-NLS-1$ - } - - @Override - public int getPriority() { - return PRIORITY_TASK; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/messages.properties b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/messages.properties deleted file mode 100644 index 9375dba7a..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/editor/messages.properties +++ /dev/null @@ -1,4 +0,0 @@ -TracPeoplePart_People=People -TracPeoplePart__Select_to_remove_=(Select to remove) - -TracTaskEditorPageFactory_Browser=Browser diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/messages.properties b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/messages.properties deleted file mode 100644 index 49118f301..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/messages.properties +++ /dev/null @@ -1,6 +0,0 @@ -TracConnectorUi_Replying_to__comment_X_X_=Replying to [comment:{0} {1}]: -TracConnectorUi_Replying_to__comment_ticket_X_X_X_=Replying to [comment:ticket:{0}:{1} {2}]: -TracConnectorUi_Replying_to__ticket_X_X_=Replying to [ticket:{0} {1}]: -TracConnectorUi_Ticket=Ticket - -WebHyperlink_Open_URL_X=Open URL {0} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/Messages.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/Messages.java deleted file mode 100644 index 3df17dd34..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/Messages.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.wizard; - -import org.eclipse.osgi.util.NLS; - -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.trac.ui.wizard.messages"; //$NON-NLS-1$ - - static { - // load message values from bundle file - reloadMessages(); - } - - public static void reloadMessages() { - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - public static String TracFilterQueryPage_Add_search_filters_to_define_query; - - public static String TracFilterQueryPage_CC; - - public static String TracFilterQueryPage_Component; - - public static String TracFilterQueryPage_Keywords; - - public static String TracFilterQueryPage_Milestone; - - public static String TracFilterQueryPage_New_Trac_Query; - - public static String TracFilterQueryPage_or; - - public static String TracFilterQueryPage_Owner; - - public static String TracFilterQueryPage_Priority; - - public static String TracFilterQueryPage_Query_Title; - - public static String TracFilterQueryPage_Reporter; - - public static String TracFilterQueryPage_Resolution; - - public static String TracFilterQueryPage_Select_to_add_filter; - - public static String TracFilterQueryPage_Status; - - public static String TracFilterQueryPage_Summary; - - public static String TracFilterQueryPage_Type; - - public static String TracFilterQueryPage_Version; - - public static String TracQueryPage_CC; - - public static String TracQueryPage_Component; - - public static String TracQueryPage_Description; - - public static String TracQueryPage_Enter_query_parameters; - - public static String TracQueryPage_If_attributes_are_blank_or_stale_press_the_Update_button; - - public static String TracQueryPage_Keywords; - - public static String TracQueryPage_Milestone; - - public static String TracQueryPage_No_repository_available; - - public static String TracQueryPage_Owner; - - public static String TracQueryPage_Priority; - - public static String TracQueryPage_Query_Title; - - public static String TracQueryPage_Reporter; - - public static String TracQueryPage_Resolution; - - public static String TracQueryPage_Status; - - public static String TracQueryPage_Summary; - - public static String TracQueryPage_Type; - - public static String TracQueryPage_Update_Attributes_Failed; - - public static String TracQueryPage_Update_Attributes_from_Repository; - - public static String TracQueryPage_Version; - - public static String TracRepositorySettingsPage_Access_Type_; - - public static String TracRepositorySettingsPage_Authentication_credentials_are_valid; - - public static String TracRepositorySettingsPage_Automatic__Use_Validate_Settings_; - - public static String TracRepositorySettingsPage_EXAMPLE_HTTP_TRAC_EDGEWALL_ORG; - - public static String TracRepositorySettingsPage_No_Trac_repository_found_at_url; - - public static String TracRepositorySettingsPage_Trac_Repository_Settings; -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java deleted file mode 100644 index 18553c803..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java +++ /dev/null @@ -1,449 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.wizard; - -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.model.TracSearch; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter.CompareOperator; -import org.eclipse.mylyn.internal.trac.core.util.TracUtil; -import org.eclipse.mylyn.internal.trac.ui.TracUiPlugin; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -/** - * @author Steffen Pingel - */ -public class TracFilterQueryPage extends AbstractRepositoryQueryPage { - - private static final String TITLE = Messages.TracFilterQueryPage_New_Trac_Query; - - private static final String DESCRIPTION = Messages.TracFilterQueryPage_Add_search_filters_to_define_query; - - private static final String TITLE_QUERY_TITLE = Messages.TracFilterQueryPage_Query_Title; - - private Text titleText; - - private Composite scrollComposite; - - /* Maintain order of criterions in order to be able to restore this later. */ - private final Set<SearchField> visibleSearchFields = new LinkedHashSet<SearchField>(); - - private List<SearchField> searchFields; - - public TracFilterQueryPage(TaskRepository repository, IRepositoryQuery query) { - super(TITLE, repository, query); - setTitle(TITLE); - setDescription(DESCRIPTION); - } - - @Override - public void applyTo(IRepositoryQuery query) { - query.setUrl(getQueryUrl(getTaskRepository().getRepositoryUrl())); - query.setSummary(getQueryTitle()); - } - - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayoutData(new GridData()); - composite.setLayout(new GridLayout(1, false)); - - createTitleGroup(composite); - - ScrolledComposite scrolledComposite = new ScrolledComposite(composite, SWT.V_SCROLL | SWT.BORDER); - GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true); - scrolledComposite.setExpandHorizontal(true); - scrolledComposite.setLayoutData(gd); - - scrollComposite = new Composite(scrolledComposite, SWT.None); - scrolledComposite.setContent(scrollComposite); - scrollComposite.setLayout(new GridLayout(4, false)); - - createAddFilterGroup(composite); - - if (getQuery() != null) { - titleText.setText(getQuery().getSummary()); - TracSearch search = TracUtil.toTracSearch(getQuery()); - if (search != null) { - restoreWidgetValues(search); - } - } - - Dialog.applyDialogFont(composite); - setControl(composite); - } - - @Override - public String getQueryTitle() { - return (titleText != null) ? titleText.getText() : null; - } - - private void restoreWidgetValues(TracSearch search) { - List<TracSearchFilter> filters = search.getFilters(); - for (TracSearchFilter filter : filters) { - SearchField field = getSearchField(filter.getFieldName()); - if (field != null) { - showSearchField(field, filter); - } else { - StatusHandler.log(new Status(IStatus.WARNING, TracUiPlugin.ID_PLUGIN, - "Ignoring invalid search filter: " + filter)); //$NON-NLS-1$ - } - } - } - - private SearchField getSearchField(String fieldName) { - for (SearchField searchField : searchFields) { - if (searchField.getFieldName().equals(fieldName)) { - return searchField; - } - } - return null; - } - - private void createAddFilterGroup(Composite parent) { - GridLayout layout; - GridData gd; - - Composite composite = new Composite(parent, SWT.NONE); - layout = new GridLayout(2, false); - composite.setLayout(layout); - composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - composite.setLayoutData(gd); - - Label label = new Label(composite, SWT.LEFT); - label.setText(Messages.TracFilterQueryPage_Select_to_add_filter); - - // condition - final Combo filterCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); - - searchFields = new ArrayList<SearchField>(); - searchFields.add(new TextSearchField("summary", Messages.TracFilterQueryPage_Summary)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("reporter", Messages.TracFilterQueryPage_Reporter)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("owner", Messages.TracFilterQueryPage_Owner)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("type", Messages.TracFilterQueryPage_Type)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("status", Messages.TracFilterQueryPage_Status)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("priority", Messages.TracFilterQueryPage_Priority)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("milestone", Messages.TracFilterQueryPage_Milestone)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("component", Messages.TracFilterQueryPage_Component)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("version", Messages.TracFilterQueryPage_Version)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("resoution", Messages.TracFilterQueryPage_Resolution)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("keywords", Messages.TracFilterQueryPage_Keywords)); //$NON-NLS-1$ - searchFields.add(new TextSearchField("cc", Messages.TracFilterQueryPage_CC)); //$NON-NLS-1$ - - filterCombo.add(""); //$NON-NLS-1$ - for (SearchField field : searchFields) { - filterCombo.add(field.getDisplayName()); - } - - filterCombo.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - if (filterCombo.getText().length() > 0) { - SearchField field = searchFields.get(filterCombo.getSelectionIndex() - 1); - showSearchField(field, null); - filterCombo.setText(""); //$NON-NLS-1$ - } - } - }); - } - - private void createTitleGroup(Composite composite) { - Group group = new Group(composite, SWT.NONE); - group.setText(TITLE_QUERY_TITLE); - group.setLayout(new GridLayout(1, false)); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - group.setLayoutData(gd); - - titleText = new Text(group, SWT.BORDER); - gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - titleText.setLayoutData(gd); - - titleText.addKeyListener(new KeyListener() { - public void keyPressed(KeyEvent e) { - // ignore - } - - public void keyReleased(KeyEvent e) { - getContainer().updateButtons(); - } - }); - } - - @Override - public boolean isPageComplete() { - if (titleText != null && titleText.getText().length() > 0) { - return true; - } - return false; - } - - private void showSearchField(SearchField field, TracSearchFilter filter) { - assert filter == null || !visibleSearchFields.contains(field); - - if (!visibleSearchFields.contains(field)) { - field.createControls(scrollComposite, filter); - visibleSearchFields.add(field); - } else { - field.addControl(scrollComposite); - } - updateScrollPane(); - } - - public String getQueryUrl(String repsitoryUrl) { - TracSearch search = new TracSearch(); - for (SearchField field : visibleSearchFields) { - search.addFilter(field.getFilter()); - } - - StringBuilder sb = new StringBuilder(); - sb.append(repsitoryUrl); - sb.append(ITracClient.QUERY_URL); - sb.append(search.toUrl()); - return sb.toString(); - } - - private void hideSearchField(SearchField field) { - visibleSearchFields.remove(field); - } - - private void updateScrollPane() { - scrollComposite.setSize(scrollComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - scrollComposite.layout(); - } - - private abstract class SearchField { - - protected String fieldName; - - private final String displayName; - - public SearchField(String fieldName, String displayName) { - this.fieldName = fieldName; - this.displayName = displayName; - } - - public abstract void createControls(Composite parent, TracSearchFilter filter); - - public abstract void addControl(Composite parent); - - public String getFieldName() { - return fieldName; - } - - public String getDisplayName() { - return displayName; - } - - public abstract TracSearchFilter getFilter(); - - } - - private class TextSearchField extends SearchField { - - private final CompareOperator[] compareOperators = { CompareOperator.CONTAINS, CompareOperator.CONTAINS_NOT, - CompareOperator.BEGINS_WITH, CompareOperator.ENDS_WITH, CompareOperator.IS, CompareOperator.IS_NOT, }; - - private List<TextCriterion> criterions; - - public TextSearchField(String fieldName, String displayName) { - super(fieldName, displayName); - } - - @Override - public void createControls(Composite parent, TracSearchFilter filter) { - if (filter != null) { - TextCriterion first = addCriterion(parent); - first.setCondition(filter.getOperator()); - List<String> values = filter.getValues(); - if (!values.isEmpty()) { - first.setSearchText(values.get(0)); - for (int i = 1; i < values.size(); i++) { - TextCriterion criterion = addCriterion(parent); - criterion.setSearchText(values.get(1)); - } - } - } else { - addCriterion(parent); - } - - } - - @Override - public void addControl(Composite parent) { - addCriterion(parent); - } - - public TextCriterion addCriterion(Composite parent) { - TextCriterion criterion = new TextCriterion(); - if (criterions == null) { - criterions = new ArrayList<TextCriterion>(); - criterion.createControl(parent); - } else { - criterion.createControl(parent, criterions.get(criterions.size() - 1)); - } - criterions.add(criterion); - return criterion; - } - - @Override - public TracSearchFilter getFilter() { - TracSearchFilter newFilter = new TracSearchFilter(getFieldName()); - newFilter.setOperator(criterions.get(0).getCondition()); - for (TextCriterion criterion : criterions) { - newFilter.addValue(criterion.getSearchText()); - } - return newFilter; - } - - public void removeCriterion(TextCriterion criterion) { - int i = criterions.indexOf(criterion); - if (i == -1) { - throw new RuntimeException(); - } - if (i == 0) { - // the first criterion is special since it contains the compare - // operator combo - if (criterions.size() > 1) { - // copy the value from the second criterion to the first - TextCriterion sourceCriterion = criterions.get(1); - criterion.searchText.setText(sourceCriterion.searchText.getText()); - removeCriterionByIndex(1); - } else { - // no more criterions, remove all controls - removeCriterionByIndex(0); - hideSearchField(this); - } - } else { - removeCriterionByIndex(i); - } - } - - private void removeCriterionByIndex(int i) { - criterions.get(i).remove(); - criterions.remove(i); - updateScrollPane(); - } - - private class TextCriterion { - - private Combo conditionCombo; - - private Text searchText; - - private Label label; - - private Button removeButton; - - public void createControl(Composite parent) { - label = new Label(parent, SWT.LEFT); - label.setText(getDisplayName() + ": "); //$NON-NLS-1$ - - conditionCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); - for (CompareOperator op : compareOperators) { - conditionCombo.add(op.toString()); - } - conditionCombo.setText(compareOperators[0].toString()); - - createSearchTextAndRemoveButton(parent); - } - - public void createControl(Composite parent, TextCriterion top) { - label = new Label(parent, SWT.RIGHT); - GridData gd = new GridData(); - gd.horizontalAlignment = SWT.END; - gd.horizontalSpan = 2; - label.setLayoutData(gd); - label.setText(Messages.TracFilterQueryPage_or); - - createSearchTextAndRemoveButton(parent); - - label.moveBelow(top.removeButton); - searchText.moveBelow(label); - removeButton.moveBelow(searchText); - } - - private void createSearchTextAndRemoveButton(Composite parent) { - searchText = new Text(parent, SWT.BORDER); - GridData gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL); - searchText.setLayoutData(gd); - - removeButton = new Button(parent, SWT.PUSH); - removeButton.setText("-"); //$NON-NLS-1$ - removeButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - TextSearchField.this.removeCriterion(TextCriterion.this); - } - }); - } - - public void remove() { - label.dispose(); - if (conditionCombo != null) { - conditionCombo.dispose(); - } - searchText.dispose(); - removeButton.dispose(); - } - - public CompareOperator getCondition() { - return (conditionCombo != null) ? compareOperators[conditionCombo.getSelectionIndex()] : null; - } - - public String getSearchText() { - return searchText.getText(); - } - - public boolean setCondition(CompareOperator operator) { - if (conditionCombo != null) { - int i = conditionCombo.indexOf(operator.toString()); - if (i != -1) { - conditionCombo.select(i); - return true; - } - } - return false; - } - - public void setSearchText(String text) { - searchText.setText(text); - } - - } - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryPage.java deleted file mode 100644 index ebdbf9444..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracQueryPage.java +++ /dev/null @@ -1,759 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.wizard; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.client.TracException; -import org.eclipse.mylyn.internal.trac.core.model.TracSearch; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter.CompareOperator; -import org.eclipse.mylyn.internal.trac.core.util.TracUtil; -import org.eclipse.mylyn.internal.trac.ui.TracUiPlugin; -import org.eclipse.mylyn.tasks.core.IRepositoryQuery; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.ui.TasksUi; -import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.List; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.progress.IProgressService; - -/** - * Trac search page. Provides a form similar to the one the Bugzilla connector uses. - * - * @author Steffen Pingel - */ -public class TracQueryPage extends AbstractRepositoryQueryPage { - - private Text titleText; - - private static final int PRODUCT_HEIGHT = 60; - - private static final int STATUS_HEIGHT = 40; - - protected final static String PAGE_NAME = "TracSearchPage"; //$NON-NLS-1$ - - private static final String SEARCH_URL_ID = PAGE_NAME + ".SEARCHURL"; //$NON-NLS-1$ - - protected Combo summaryText = null; - - protected Combo repositoryCombo = null; - - private TextSearchField summaryField; - - private TextSearchField descriptionField; - - private ListSearchField componentField; - - private ListSearchField versionField; - - private ListSearchField milestoneField; - - private ListSearchField priorityField; - - private ListSearchField typeField; - - private ListSearchField resolutionField; - - private ListSearchField statusField; - - private Button updateButton; - - private TextSearchField keywordsField; - - private final Map<String, SearchField> searchFieldByName = new HashMap<String, SearchField>(); - - private boolean firstTime = true; - - // private UserSearchField ownerField; - // - // private UserSearchField reporterField; - // - // private UserSearchField ccField; - - public TracQueryPage(TaskRepository repository, IRepositoryQuery query) { - super(Messages.TracQueryPage_Enter_query_parameters, repository, query); - setTitle(Messages.TracQueryPage_Enter_query_parameters); - setDescription(Messages.TracQueryPage_If_attributes_are_blank_or_stale_press_the_Update_button); - } - - public TracQueryPage(TaskRepository repository) { - this(repository, null); - } - - public void createControl(Composite parent) { - Composite control = new Composite(parent, SWT.NONE); - GridData gd = new GridData(GridData.FILL_BOTH); - control.setLayoutData(gd); - GridLayout layout = new GridLayout(4, false); - if (inSearchContainer()) { - layout.marginWidth = 0; - layout.marginHeight = 0; - } - control.setLayout(layout); - - createTitleGroup(control); - - summaryField = new TextSearchField("summary"); //$NON-NLS-1$ - summaryField.createControls(control, Messages.TracQueryPage_Summary); - - descriptionField = new TextSearchField("description"); //$NON-NLS-1$ - descriptionField.createControls(control, Messages.TracQueryPage_Description); - - keywordsField = new TextSearchField("keywords"); //$NON-NLS-1$ - keywordsField.createControls(control, Messages.TracQueryPage_Keywords); - - createOptionsGroup(control); - - createUserGroup(control); - - if (getQuery() != null) { - titleText.setText(getQuery().getSummary()); - TracSearch search = TracUtil.toTracSearch(getQuery()); - if (search != null) { - restoreWidgetValues(search); - } - } - - Dialog.applyDialogFont(control); - setControl(control); - } - - @Override - public boolean canFlipToNextPage() { - return false; - } - - private void restoreWidgetValues(TracSearch search) { - java.util.List<TracSearchFilter> filters = search.getFilters(); - for (TracSearchFilter filter : filters) { - SearchField field = searchFieldByName.get(filter.getFieldName()); - if (field != null) { - field.setFilter(filter); - } else { - StatusHandler.log(new Status(IStatus.WARNING, TracUiPlugin.ID_PLUGIN, - "Ignoring invalid search filter: " + filter)); //$NON-NLS-1$ - } - } - } - - private void createTitleGroup(Composite control) { - if (inSearchContainer()) { - return; - } - - Label titleLabel = new Label(control, SWT.NONE); - titleLabel.setText(Messages.TracQueryPage_Query_Title); - - titleText = new Text(control, SWT.BORDER); - GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - gd.horizontalSpan = 3; - titleText.setLayoutData(gd); - titleText.addKeyListener(new KeyListener() { - public void keyPressed(KeyEvent e) { - // ignore - } - - public void keyReleased(KeyEvent e) { - getContainer().updateButtons(); - } - }); - } - - protected Control createOptionsGroup(Composite control) { - Group group = new Group(control, SWT.NONE); - // group.setText("Ticket Attributes"); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - group.setLayout(layout); - GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); - gd.horizontalSpan = 4; - group.setLayoutData(gd); - - createProductAttributes(group); - createTicketAttributes(group); - createUpdateButton(group); - - return group; - } - - protected void createUserGroup(Composite control) { - UserSearchField userField = new UserSearchField(); - userField.createControls(control); - } - - /** - * Creates the area for selection on product attributes component/version/milestone. - */ - protected Control createProductAttributes(Composite control) { - Composite group = new Composite(control, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - group.setLayout(layout); - GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); - gd.horizontalSpan = 1; - group.setLayoutData(gd); - - Label label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Component); - - label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Version); - - label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Milestone); - - componentField = new ListSearchField("component"); //$NON-NLS-1$ - componentField.createControls(group, PRODUCT_HEIGHT); - - versionField = new ListSearchField("version"); //$NON-NLS-1$ - versionField.createControls(group, PRODUCT_HEIGHT); - - milestoneField = new ListSearchField("milestone"); //$NON-NLS-1$ - milestoneField.createControls(group, PRODUCT_HEIGHT); - - return group; - } - - /** - * Creates the area for selection of ticket attributes status/resolution/priority. - */ - protected Control createTicketAttributes(Composite control) { - Composite group = new Composite(control, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 4; - group.setLayout(layout); - GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); - gd.horizontalSpan = 1; - group.setLayoutData(gd); - - Label label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Status); - - label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Resolution); - - label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Type); - - label = new Label(group, SWT.LEFT); - label.setText(Messages.TracQueryPage_Priority); - - statusField = new ListSearchField("status"); //$NON-NLS-1$ - statusField.createControls(group, STATUS_HEIGHT); - - resolutionField = new ListSearchField("resolution"); //$NON-NLS-1$ - resolutionField.createControls(group, STATUS_HEIGHT); - - typeField = new ListSearchField("type"); //$NON-NLS-1$ - typeField.createControls(group, STATUS_HEIGHT); - - priorityField = new ListSearchField("priority"); //$NON-NLS-1$ - priorityField.createControls(group, STATUS_HEIGHT); - - return group; - } - - protected Control createUpdateButton(final Composite control) { - Composite group = new Composite(control, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - group.setLayout(layout); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - updateButton = new Button(group, SWT.PUSH); - updateButton.setText(Messages.TracQueryPage_Update_Attributes_from_Repository); - updateButton.setLayoutData(new GridData()); - updateButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (getTaskRepository() != null) { - updateAttributesFromRepository(true); - } else { - MessageDialog.openInformation(Display.getCurrent().getActiveShell(), - Messages.TracQueryPage_Update_Attributes_Failed, - Messages.TracQueryPage_No_repository_available); - } - } - }); - - return group; - } - - @Override - public void setVisible(boolean visible) { - super.setVisible(visible); - - if (getSearchContainer() != null) { - getSearchContainer().setPerformActionEnabled(true); - } - - if (visible && firstTime) { - firstTime = false; - if (!hasAttributes()) { - // delay the execution so the dialog's progress bar is visible - // when the attributes are updated - Display.getDefault().asyncExec(new Runnable() { - public void run() { - if (getControl() != null && !getControl().isDisposed()) { - initializePage(); - } - } - - }); - } else { - // no remote connection is needed to get attributes therefore do - // not use delayed execution to avoid flickering - initializePage(); - } - } - } - - private void initializePage() { - updateAttributesFromRepository(false); - boolean restored = (getQuery() != null); - if (inSearchContainer()) { - restored |= restoreWidgetValues(); - } - if (!restored) { - // initialize with default values - } - } - - private boolean hasAttributes() { - TracRepositoryConnector connector = (TracRepositoryConnector) TasksUi.getRepositoryManager() - .getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); - ITracClient client = connector.getClientManager().getTracClient(getTaskRepository()); - return client.hasAttributes(); - } - - private void updateAttributesFromRepository(final boolean force) { - TracRepositoryConnector connector = (TracRepositoryConnector) TasksUi.getRepositoryManager() - .getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); - final ITracClient client = connector.getClientManager().getTracClient(getTaskRepository()); - - if (!client.hasAttributes() || force) { - try { - IRunnableWithProgress runnable = new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - try { - client.updateAttributes(monitor, force); - } catch (TracException e) { - throw new InvocationTargetException(e); - } - } - }; - - if (getContainer() != null) { - getContainer().run(true, true, runnable); - } else if (getSearchContainer() != null) { - getSearchContainer().getRunnableContext().run(true, true, runnable); - } else { - IProgressService service = PlatformUI.getWorkbench().getProgressService(); - service.busyCursorWhile(runnable); - } - } catch (InvocationTargetException e) { - setErrorMessage(TracCorePlugin.toStatus(e.getCause(), getTaskRepository()).getMessage()); - return; - } catch (InterruptedException e) { - return; - } - } - - statusField.setValues(client.getTicketStatus()); - resolutionField.setValues(client.getTicketResolutions()); - typeField.setValues(client.getTicketTypes()); - priorityField.setValues(client.getPriorities()); - - componentField.setValues(client.getComponents()); - versionField.setValues(client.getVersions()); - milestoneField.setValues(client.getMilestones()); - } - - @Override - public boolean isPageComplete() { - if (titleText != null && titleText.getText().length() > 0) { - return true; - } - return false; - } - - public String getQueryUrl(String repsitoryUrl) { - TracSearch search = getTracSearch(); - - StringBuilder sb = new StringBuilder(); - sb.append(repsitoryUrl); - sb.append(ITracClient.QUERY_URL); - sb.append(search.toUrl()); - return sb.toString(); - } - - private TracSearch getTracSearch() { - TracSearch search = new TracSearch(); - for (SearchField field : searchFieldByName.values()) { - TracSearchFilter filter = field.getFilter(); - if (filter != null) { - search.addFilter(filter); - } - } - return search; - } - - // public boolean performAction() { - // - // Proxy proxySettings = TasksUiPlugin.getDefault().getProxySettings(); - // SearchHitCollector collector = new - // SearchHitCollector(TasksUiPlugin.getTaskList(), - // repository, getQuery(), proxySettings); - // NewSearchUI.runQueryInBackground(collector); - // - // return true; - // } - - @Override - public boolean performSearch() { - if (inSearchContainer()) { - saveState(); - } - - return super.performSearch(); - } - - @Override - public IDialogSettings getDialogSettings() { - IDialogSettings settings = TracUiPlugin.getDefault().getDialogSettings(); - IDialogSettings dialogSettings = settings.getSection(PAGE_NAME); - if (dialogSettings == null) { - dialogSettings = settings.addNewSection(PAGE_NAME); - } - return dialogSettings; - } - - private boolean restoreWidgetValues() { - IDialogSettings settings = getDialogSettings(); - String repoId = "." + getTaskRepository().getRepositoryUrl(); //$NON-NLS-1$ - - String searchUrl = settings.get(SEARCH_URL_ID + repoId); - if (searchUrl == null) { - return false; - } - - restoreWidgetValues(new TracSearch(searchUrl)); - return true; - } - - @Override - public void saveState() { - String repoId = "." + getTaskRepository().getRepositoryUrl(); //$NON-NLS-1$ - IDialogSettings settings = getDialogSettings(); - settings.put(SEARCH_URL_ID + repoId, getTracSearch().toUrl()); - } - - private abstract class SearchField { - - protected String fieldName; - - public SearchField(String fieldName) { - this.fieldName = fieldName; - - if (fieldName != null) { - assert !searchFieldByName.containsKey(fieldName); - searchFieldByName.put(fieldName, this); - } - } - - public String getFieldName() { - return fieldName; - } - - public abstract TracSearchFilter getFilter(); - - public abstract void setFilter(TracSearchFilter filter); - - } - - private class TextSearchField extends SearchField { - - private Combo conditionCombo; - - protected Text searchText; - - private Label label; - - private final CompareOperator[] compareOperators = { CompareOperator.CONTAINS, CompareOperator.CONTAINS_NOT, - CompareOperator.BEGINS_WITH, CompareOperator.ENDS_WITH, CompareOperator.IS, CompareOperator.IS_NOT, }; - - public TextSearchField(String fieldName) { - super(fieldName); - } - - public void createControls(Composite parent, String labelText) { - if (labelText != null) { - label = new Label(parent, SWT.LEFT); - label.setText(labelText); - } - - conditionCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); - for (CompareOperator op : compareOperators) { - conditionCombo.add(op.toString()); - } - conditionCombo.setText(compareOperators[0].toString()); - - searchText = new Text(parent, SWT.BORDER); - GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false); - // the user search field has additional controls and no fieldName - if (fieldName != null) { - gd.horizontalSpan = 2; - } - searchText.setLayoutData(gd); - } - - public CompareOperator getCondition() { - return compareOperators[conditionCombo.getSelectionIndex()]; - } - - public String getSearchText() { - return searchText.getText(); - } - - public boolean setCondition(CompareOperator operator) { - if (conditionCombo != null) { - int i = conditionCombo.indexOf(operator.toString()); - if (i != -1) { - conditionCombo.select(i); - return true; - } - } - return false; - } - - public void setSearchText(String text) { - searchText.setText(text); - } - - @Override - public TracSearchFilter getFilter() { - String text = getSearchText(); - if (text.length() == 0) { - return null; - } - - TracSearchFilter newFilter = new TracSearchFilter(getFieldName()); - newFilter.setOperator(getCondition()); - newFilter.addValue(getSearchText()); - return newFilter; - } - - @Override - public void setFilter(TracSearchFilter filter) { - setCondition(filter.getOperator()); - java.util.List<String> values = filter.getValues(); - setSearchText(values.get(0)); - } - - public void setFieldName(String fieldName) { - this.fieldName = fieldName; - } - - } - - private class ListSearchField extends SearchField { - - private List list; - - public ListSearchField(String fieldName) { - super(fieldName); - } - - public void setValues(Object[] items) { - // preserve selected values - TracSearchFilter filter = getFilter(); - - list.removeAll(); - if (items != null) { - list.setEnabled(true); - for (Object item : items) { - list.add(item.toString()); - } - - // restore selected values - if (filter != null) { - setFilter(filter); - } - } else { - list.setEnabled(false); - } - } - - public void createControls(Composite parent, int height) { - list = new List(parent, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); - GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); - gd.heightHint = height; - list.setLayoutData(gd); - } - - @Override - public TracSearchFilter getFilter() { - int[] indicies = list.getSelectionIndices(); - if (indicies.length == 0) { - return null; - } - - TracSearchFilter newFilter = new TracSearchFilter(getFieldName()); - newFilter.setOperator(CompareOperator.IS); - for (int i : indicies) { - newFilter.addValue(list.getItem(i)); - } - return newFilter; - } - - @Override - public void setFilter(TracSearchFilter filter) { - list.deselectAll(); - java.util.List<String> values = filter.getValues(); - for (String item : values) { - int i = list.indexOf(item); - if (i != -1) { - list.select(i); - } else { - list.add(item, 0); - list.select(0); - } - } - } - - public void selectItems(String[] items) { - list.deselectAll(); - for (String item : items) { - int i = list.indexOf(item); - if (i != -1) { - list.select(i); - } - } - } - - } - - private class UserSearchField extends SearchField { - - private final TextSearchField textField; - - private Combo userCombo; - - public UserSearchField() { - super(null); - - textField = new TextSearchField(null); - - new UserSelectionSearchField("owner", 0); //$NON-NLS-1$ - - new UserSelectionSearchField("reporter", 1); //$NON-NLS-1$ - - new UserSelectionSearchField("cc", 2); //$NON-NLS-1$ - } - - public void createControls(Composite parent) { - userCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY); - userCombo.add(Messages.TracQueryPage_Owner); - userCombo.add(Messages.TracQueryPage_Reporter); - userCombo.add(Messages.TracQueryPage_CC); - userCombo.select(0); - - textField.createControls(parent, null); - } - - @Override - public TracSearchFilter getFilter() { - return null; - } - - @Override - public void setFilter(TracSearchFilter filter) { - } - - private void setSelection(int index) { - userCombo.select(index); - } - - private int getSelection() { - return userCombo.getSelectionIndex(); - } - - class UserSelectionSearchField extends SearchField { - - private final int index; - - public UserSelectionSearchField(String fieldName, int index) { - super(fieldName); - - this.index = index; - } - - @Override - public TracSearchFilter getFilter() { - if (index == getSelection()) { - textField.setFieldName(fieldName); - return textField.getFilter(); - } - return null; - } - - @Override - public void setFilter(TracSearchFilter filter) { - textField.setFieldName(fieldName); - textField.setFilter(filter); - setSelection(index); - } - - } - - } - - @Override - public String getQueryTitle() { - return (titleText != null) ? titleText.getText() : null; - } - - @Override - public void applyTo(IRepositoryQuery query) { - query.setUrl(getQueryUrl(getTaskRepository().getRepositoryUrl())); - query.setSummary(getQueryTitle()); - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java deleted file mode 100644 index 5952282d4..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracRepositorySettingsPage.java +++ /dev/null @@ -1,248 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Steffen Pingel and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Tasktop Technologies - initial API and implementation - *******************************************************************************/ - -package org.eclipse.mylyn.internal.trac.ui.wizard; - -import java.net.MalformedURLException; -import java.net.URL; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.mylyn.commons.net.AbstractWebLocation; -import org.eclipse.mylyn.internal.trac.core.TracClientFactory; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.client.TracException; -import org.eclipse.mylyn.internal.trac.core.client.TracLoginException; -import org.eclipse.mylyn.internal.trac.core.client.TracPermissionDeniedException; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; -import org.eclipse.mylyn.internal.trac.ui.TracUiPlugin; -import org.eclipse.mylyn.tasks.core.RepositoryStatus; -import org.eclipse.mylyn.tasks.core.RepositoryTemplate; -import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.core.TaskRepositoryLocationFactory; -import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositorySettingsPage; -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 Steffen Pingel - */ -public class TracRepositorySettingsPage extends AbstractRepositorySettingsPage { - - private static final String TITLE = Messages.TracRepositorySettingsPage_Trac_Repository_Settings; - - private static final String DESCRIPTION = Messages.TracRepositorySettingsPage_EXAMPLE_HTTP_TRAC_EDGEWALL_ORG; - - private Combo accessTypeCombo; - - /** Supported access types. */ - private Version[] versions; - - public TracRepositorySettingsPage(TaskRepository taskRepository) { - super(TITLE, DESCRIPTION, taskRepository); - setNeedsAnonymousLogin(true); - setNeedsEncoding(false); - setNeedsTimeZone(false); - } - - @Override - protected void repositoryTemplateSelected(RepositoryTemplate template) { - repositoryLabelEditor.setStringValue(template.label); - setUrl(template.repositoryUrl); - setAnonymous(template.anonymous); - - try { - Version version = Version.valueOf(template.version); - setTracVersion(version); - } catch (RuntimeException ex) { - setTracVersion(Version.TRAC_0_9); - } - - getContainer().updateButtons(); - } - - @Override - protected void createAdditionalControls(final Composite parent) { - addRepositoryTemplatesToServerUrlCombo(); - - Label accessTypeLabel = new Label(parent, SWT.NONE); - accessTypeLabel.setText(Messages.TracRepositorySettingsPage_Access_Type_); - accessTypeCombo = new Combo(parent, SWT.READ_ONLY); - - accessTypeCombo.add(Messages.TracRepositorySettingsPage_Automatic__Use_Validate_Settings_); - versions = Version.values(); - for (Version version : versions) { - accessTypeCombo.add(version.toString()); - } - if (repository != null) { - setTracVersion(Version.fromVersion(repository.getVersion())); - } else { - setTracVersion(null); - } - accessTypeCombo.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - if (accessTypeCombo.getSelectionIndex() > 0) { - setVersion(versions[accessTypeCombo.getSelectionIndex() - 1].name()); - } - getWizard().getContainer().updateButtons(); - } - - public void widgetDefaultSelected(SelectionEvent e) { - // ignore - } - }); - } - - @Override - public boolean isPageComplete() { - // make sure "Automatic" is not selected as a version - return super.isPageComplete() && accessTypeCombo != null && accessTypeCombo.getSelectionIndex() != 0; - } - - @Override - protected boolean isValidUrl(String name) { - if ((name.startsWith(URL_PREFIX_HTTPS) || name.startsWith(URL_PREFIX_HTTP)) && !name.endsWith("/")) { //$NON-NLS-1$ - try { - new URL(name); - return true; - } catch (MalformedURLException e) { - } - } - return false; - } - - public Version getTracVersion() { - if (accessTypeCombo.getSelectionIndex() == 0) { - return null; - } else { - return versions[accessTypeCombo.getSelectionIndex() - 1]; - } - } - - public void setTracVersion(Version version) { - if (version == null) { - // select "Automatic" - accessTypeCombo.select(0); - } else { - int i = accessTypeCombo.indexOf(version.toString()); - if (i != -1) { - accessTypeCombo.select(i); - } - setVersion(version.name()); - } - } - - @Override - protected void applyValidatorResult(Validator validator) { - super.applyValidatorResult(validator); - - if (((TracValidator) validator).getResult() != null) { - setTracVersion(((TracValidator) validator).getResult()); - } - } - - // public for testing - public class TracValidator extends Validator { - - private final String repositoryUrl; - - private final TaskRepository taskRepository; - - private final Version version; - - private Version result; - - public TracValidator(TaskRepository taskRepository, Version version) { - this.repositoryUrl = taskRepository.getRepositoryUrl(); - this.taskRepository = taskRepository; - this.version = version; - } - - @Override - public void run(IProgressMonitor monitor) throws CoreException { - try { - //validate(Provider.of(monitor)); - validate(monitor); - } catch (MalformedURLException e) { - throw new CoreException(RepositoryStatus.createStatus(repositoryUrl, IStatus.ERROR, - TracUiPlugin.ID_PLUGIN, INVALID_REPOSITORY_URL)); - } catch (TracLoginException e) { - throw new CoreException(RepositoryStatus.createStatus(repositoryUrl, IStatus.ERROR, - TracUiPlugin.ID_PLUGIN, INVALID_LOGIN)); - } catch (TracPermissionDeniedException e) { - throw new CoreException(RepositoryStatus.createStatus(repositoryUrl, IStatus.ERROR, - TracUiPlugin.ID_PLUGIN, "Insufficient permissions for selected access type.")); //$NON-NLS-1$ - } catch (TracException e) { - String message = Messages.TracRepositorySettingsPage_No_Trac_repository_found_at_url; - if (e.getMessage() != null) { - message += ": " + e.getMessage(); //$NON-NLS-1$ - } - throw new CoreException(RepositoryStatus.createStatus(repositoryUrl, IStatus.ERROR, - TracUiPlugin.ID_PLUGIN, message)); - } - } - - public void validate(IProgressMonitor monitor) throws MalformedURLException, TracException { - AbstractWebLocation location = new TaskRepositoryLocationFactory().createWebLocation(taskRepository); - - if (version != null) { - ITracClient client = TracClientFactory.createClient(location, version); - client.validate(monitor); - } else { - // probe version: XML-RPC access first, then web - // access - try { - ITracClient client = TracClientFactory.createClient(location, Version.XML_RPC); - client.validate(monitor); - result = Version.XML_RPC; - } catch (TracException e) { - try { - ITracClient client = TracClientFactory.createClient(location, Version.TRAC_0_9); - client.validate(monitor); - result = Version.TRAC_0_9; - - if (e instanceof TracPermissionDeniedException) { - setStatus(RepositoryStatus.createStatus(repositoryUrl, IStatus.INFO, - TracUiPlugin.ID_PLUGIN, - Messages.TracRepositorySettingsPage_Authentication_credentials_are_valid)); - } - } catch (TracLoginException e2) { - throw e; - } catch (TracException e2) { - throw new TracException(); - } - } - } - } - - public Version getResult() { - return result; - } - - } - - @Override - protected Validator getValidator(TaskRepository repository) { - return new TracValidator(repository, getTracVersion()); - } - - @Override - public String getConnectorKind() { - return TracCorePlugin.CONNECTOR_KIND; - } - -} diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/messages.properties b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/messages.properties deleted file mode 100644 index 5d39ba92d..000000000 --- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/messages.properties +++ /dev/null @@ -1,44 +0,0 @@ -TracFilterQueryPage_Add_search_filters_to_define_query=Add search filters to define query. -TracFilterQueryPage_CC=CC -TracFilterQueryPage_Component=Component -TracFilterQueryPage_Keywords=Keywords -TracFilterQueryPage_Milestone=Milestone -TracFilterQueryPage_New_Trac_Query=New Trac Query -TracFilterQueryPage_or=or -TracFilterQueryPage_Owner=Owner -TracFilterQueryPage_Priority=Priority -TracFilterQueryPage_Query_Title=Query Title -TracFilterQueryPage_Reporter=Reporter -TracFilterQueryPage_Resolution=Resolution -TracFilterQueryPage_Select_to_add_filter=Select to add filter: -TracFilterQueryPage_Status=Status -TracFilterQueryPage_Summary=Summary -TracFilterQueryPage_Type=Type -TracFilterQueryPage_Version=Version - -TracQueryPage_CC=CC -TracQueryPage_Component=Component -TracQueryPage_Description=Description -TracQueryPage_Enter_query_parameters=Enter query parameters -TracQueryPage_If_attributes_are_blank_or_stale_press_the_Update_button=If attributes are blank or stale press the Update button. -TracQueryPage_Keywords=Keywords -TracQueryPage_Milestone=Milestone -TracQueryPage_No_repository_available=No repository available, please add one using the Task Repositories view. -TracQueryPage_Owner=Owner -TracQueryPage_Priority=Priority -TracQueryPage_Query_Title=Query Title: -TracQueryPage_Reporter=Reporter -TracQueryPage_Resolution=Resolution -TracQueryPage_Status=Status -TracQueryPage_Summary=Summary -TracQueryPage_Type=Type -TracQueryPage_Update_Attributes_Failed=Update Attributes Failed -TracQueryPage_Update_Attributes_from_Repository=Update Attributes from Repository -TracQueryPage_Version=Version - -TracRepositorySettingsPage_Access_Type_=Access Type: -TracRepositorySettingsPage_Authentication_credentials_are_valid=Authentication credentials are valid. Note: Insufficient permissions for XML-RPC access, falling back to web access. -TracRepositorySettingsPage_Automatic__Use_Validate_Settings_=Automatic (Use Validate Settings) -TracRepositorySettingsPage_EXAMPLE_HTTP_TRAC_EDGEWALL_ORG=Example: http://trac.edgewall.org -TracRepositorySettingsPage_No_Trac_repository_found_at_url=No Trac repository found at url -TracRepositorySettingsPage_Trac_Repository_Settings=Trac Repository Settings |