Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 162480 Details for
Bug 302907
[api] support categorization in Task Repositories view
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
v1
clipboard.txt (text/plain), 30.65 KB, created by
Robert Elves
on 2010-03-18 18:58:48 EDT
(
hide
)
Description:
v1
Filename:
MIME Type:
Creator:
Robert Elves
Created:
2010-03-18 18:58:48 EDT
Size:
30.65 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.tasks.core >Index: src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java,v >retrieving revision 1.32 >diff -u -r1.32 TaskRepositoryManager.java >--- src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java 10 Jan 2010 05:02:07 -0000 1.32 >+++ src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java 18 Mar 2010 22:57:27 -0000 >@@ -57,7 +57,11 @@ > > private final Map<String, AbstractRepositoryConnector> repositoryConnectors = new HashMap<String, AbstractRepositoryConnector>(); > >- private final Map<String, Set<TaskRepository>> repositoryMap = new HashMap<String, Set<TaskRepository>>(); >+ // connector kinds to corresponding repositories >+ private final Map<String, Set<TaskRepository>> connectorKindsMap = new HashMap<String, Set<TaskRepository>>(); >+ >+ // repository kind to corresponding repositories >+ //private final Map<AbstractRepositoryKind, Set<TaskRepository>> repositoryKindsMap = new HashMap<AbstractRepositoryKind, Set<TaskRepository>>(); > > private final Set<IRepositoryListener> listeners = new CopyOnWriteArraySet<IRepositoryListener>(); > >@@ -67,6 +71,8 @@ > > public static final String PREFIX_LOCAL = "local-"; //$NON-NLS-1$ > >+ private static final Map<String, AbstractRepositoryKind> repositoryKinds = new HashMap<String, AbstractRepositoryKind>(); >+ > private final PropertyChangeListener PROPERTY_CHANGE_LISTENER = new PropertyChangeListener() { > public void propertyChange(PropertyChangeEvent evt) { > TaskRepositoryManager.this.notifyRepositorySettingsChanged((TaskRepository) evt.getSource(), >@@ -77,6 +83,9 @@ > private final TaskRepositoriesExternalizer externalizer = new TaskRepositoriesExternalizer(); > > public TaskRepositoryManager() { >+ repositoryKinds.put(RepositoryKindTasks.getInstance().getHandleIdentifier(), RepositoryKindTasks.getInstance()); >+ repositoryKinds.put(RepositoryKindBugs.getInstance().getHandleIdentifier(), RepositoryKindBugs.getInstance()); >+ repositoryKinds.put(RepositoryKindOther.getInstance().getHandleIdentifier(), RepositoryKindOther.getInstance()); > } > > public synchronized Collection<AbstractRepositoryConnector> getRepositoryConnectors() { >@@ -109,15 +118,18 @@ > public void addRepository(final TaskRepository repository) { > synchronized (this) { > Set<TaskRepository> repositories; >- repositories = repositoryMap.get(repository.getConnectorKind()); >+ repositories = connectorKindsMap.get(repository.getConnectorKind()); > if (repositories == null) { > repositories = new HashSet<TaskRepository>(); >- repositoryMap.put(repository.getConnectorKind(), repositories); >+ connectorKindsMap.put(repository.getConnectorKind(), repositories); > } > if (!repositories.add(repository)) { > // TODO 4.0 return false to indicate that remove was unsuccessful > return; > } >+ >+ addToRepositoryKindsMap(repository); >+ > repository.addChangeListener(PROPERTY_CHANGE_LISTENER); > } > >@@ -142,7 +154,7 @@ > > public void removeRepository(final TaskRepository repository) { > synchronized (this) { >- Set<TaskRepository> repositories = repositoryMap.get(repository.getConnectorKind()); >+ Set<TaskRepository> repositories = connectorKindsMap.get(repository.getConnectorKind()); > if (repositories == null || !repositories.remove(repository)) { > // TODO 4.0 return false to indicate that remove was unsuccessful > return; >@@ -182,13 +194,24 @@ > return sb.toString(); > } > >+ public AbstractRepositoryKind getRepositoryKind(String repositoryKindHandle) { >+ if (repositoryKindHandle == null) { >+ return RepositoryKindOther.getInstance(); >+ } >+ AbstractRepositoryKind kind = repositoryKinds.get(repositoryKindHandle); >+ if (kind == null) { >+ kind = RepositoryKindOther.getInstance(); >+ } >+ return kind; >+ } >+ > public TaskRepository getRepository(String kind, String urlString) { > Assert.isNotNull(kind); > Assert.isNotNull(urlString); > urlString = stripSlashes(urlString); > synchronized (this) { >- if (repositoryMap.containsKey(kind)) { >- for (TaskRepository repository : repositoryMap.get(kind)) { >+ if (connectorKindsMap.containsKey(kind)) { >+ for (TaskRepository repository : connectorKindsMap.get(kind)) { > if (stripSlashes(repository.getRepositoryUrl()).equals(urlString)) { > return repository; > } >@@ -205,8 +228,8 @@ > Assert.isNotNull(urlString); > urlString = stripSlashes(urlString); > synchronized (this) { >- for (String kind : repositoryMap.keySet()) { >- for (TaskRepository repository : repositoryMap.get(kind)) { >+ for (String kind : connectorKindsMap.keySet()) { >+ for (TaskRepository repository : connectorKindsMap.get(kind)) { > if (stripSlashes(repository.getRepositoryUrl()).equals(urlString)) { > return repository; > } >@@ -233,11 +256,11 @@ > return null; > } > >- public Set<TaskRepository> getRepositories(String kind) { >- Assert.isNotNull(kind); >+ public Set<TaskRepository> getRepositories(String connectorKind) { >+ Assert.isNotNull(connectorKind); > Set<TaskRepository> result; > synchronized (this) { >- result = repositoryMap.get(kind); >+ result = connectorKindsMap.get(connectorKind); > } > if (result == null) { > return Collections.emptySet(); >@@ -245,12 +268,24 @@ > return new HashSet<TaskRepository>(result); > } > >+// public Set<TaskRepository> getRepositories(AbstractRepositoryKind repositoryKind) { >+// Assert.isNotNull(repositoryKind); >+// Set<TaskRepository> result; >+// synchronized (this) { >+// result = repositoryKindsMap.get(repositoryKind); >+// } >+// if (result == null) { >+// return Collections.emptySet(); >+// } >+// return new HashSet<TaskRepository>(result); >+// } >+ > public List<TaskRepository> getAllRepositories() { > List<TaskRepository> repositories = new ArrayList<TaskRepository>(); > synchronized (this) { > for (AbstractRepositoryConnector repositoryConnector : repositoryConnectors.values()) { >- if (repositoryMap.containsKey(repositoryConnector.getConnectorKind())) { >- repositories.addAll(repositoryMap.get(repositoryConnector.getConnectorKind())); >+ if (connectorKindsMap.containsKey(repositoryConnector.getConnectorKind())) { >+ repositories.addAll(connectorKindsMap.get(repositoryConnector.getConnectorKind())); > } > } > } >@@ -260,12 +295,12 @@ > @Deprecated > public synchronized TaskRepository getDefaultRepository(String kind) { > // HACK: returns first repository found >- if (repositoryMap.containsKey(kind)) { >- for (TaskRepository repository : repositoryMap.get(kind)) { >+ if (connectorKindsMap.containsKey(kind)) { >+ for (TaskRepository repository : connectorKindsMap.get(kind)) { > return repository; > } > } else { >- Collection<Set<TaskRepository>> values = repositoryMap.values(); >+ Collection<Set<TaskRepository>> values = connectorKindsMap.values(); > if (!values.isEmpty()) { > Set<TaskRepository> repoistorySet = values.iterator().next(); > return repoistorySet.iterator().next(); >@@ -276,7 +311,7 @@ > > Map<String, Set<TaskRepository>> readRepositories(String repositoriesFilePath) { > >- repositoryMap.clear(); >+ connectorKindsMap.clear(); > orphanedRepositories.clear(); > > loadRepositories(repositoriesFilePath); >@@ -289,7 +324,7 @@ > // "Repository listener failed", t)); > // } > // } >- return repositoryMap; >+ return connectorKindsMap; > } > > private void loadRepositories(String repositoriesFilePath) { >@@ -300,7 +335,7 @@ > > // Will only load repositories for which a connector exists > for (AbstractRepositoryConnector repositoryConnector : repositoryConnectors.values()) { >- repositoryMap.put(repositoryConnector.getConnectorKind(), new HashSet<TaskRepository>()); >+ connectorKindsMap.put(repositoryConnector.getConnectorKind(), new HashSet<TaskRepository>()); > } > if (repositoriesFile.exists()) { > Set<TaskRepository> repositories = externalizer.readRepositoriesFromXML(repositoriesFile); >@@ -309,9 +344,13 @@ > if (removeHttpAuthMigration(repository)) { > migration = true; > } >- if (repositoryMap.containsKey(repository.getConnectorKind())) { >- repositoryMap.get(repository.getConnectorKind()).add(repository); >+ if (connectorKindsMap.containsKey(repository.getConnectorKind())) { >+ connectorKindsMap.get(repository.getConnectorKind()).add(repository); >+ >+ addToRepositoryKindsMap(repository); >+ > repository.addChangeListener(PROPERTY_CHANGE_LISTENER); >+ > } else { > orphanedRepositories.add(repository); > } >@@ -323,6 +362,25 @@ > } > } > >+ private void addToRepositoryKindsMap(TaskRepository repository) { >+ String propertyRepositoryKind = repository.getProperty(AbstractRepositoryKind.PROPERTY_REPOSITORY_KIND); >+ if (propertyRepositoryKind == null) { >+ repository.setProperty(AbstractRepositoryKind.PROPERTY_REPOSITORY_KIND, RepositoryKindOther.getInstance() >+ .getHandleIdentifier()); >+ } >+// String propertyRepositoryKind = repository.getProperty(AbstractRepositoryKind.PROPERTY_REPOSITORY_KIND); >+// AbstractRepositoryKind repositoryKind = repositoryKinds.get(propertyRepositoryKind); >+// if (repositoryKind == null) { >+// repositoryKind = RepositoryKindBugs.getInstance(); >+// } >+// Set<TaskRepository> repositories = repositoryKindsMap.get(repositoryKind); >+// if (repositories == null) { >+// repositories = new HashSet<TaskRepository>(); >+// repositoryKindsMap.put(repositoryKind, repositories); >+// } >+// repositories.add(repository); >+ } >+ > @SuppressWarnings("deprecation") > private boolean removeHttpAuthMigration(TaskRepository repository) { > String httpusername = repository.getProperty(TaskRepository.AUTH_HTTP_USERNAME); >@@ -375,7 +433,7 @@ > removeRepository(repository); > } > synchronized (this) { >- repositoryMap.clear(); >+ connectorKindsMap.clear(); > orphanedRepositories.clear(); > } > } >Index: src/org/eclipse/mylyn/internal/tasks/core/AbstractRepositoryKind.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/core/AbstractRepositoryKind.java >diff -N src/org/eclipse/mylyn/internal/tasks/core/AbstractRepositoryKind.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/core/AbstractRepositoryKind.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 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.tasks.core; >+ >+import org.eclipse.core.runtime.PlatformObject; >+import org.eclipse.mylyn.tasks.core.IRepositoryElement; >+ >+/** >+ * Represents kinds include Tasks, Bugs, Other... >+ * >+ * @author Robert Elves >+ */ >+public abstract class AbstractRepositoryKind extends PlatformObject implements IRepositoryElement { >+ >+ // TODO: Move to TaskRepository when public api >+ public static final String PROPERTY_REPOSITORY_KIND = "org.eclipse.mylyn.tasklist.repositories.kind"; //$NON-NLS-1$ >+ >+ private final String handle; >+ >+ public AbstractRepositoryKind(String handle) { >+ this.handle = handle; >+ } >+ >+ public String getHandleIdentifier() { >+ return handle; >+ } >+ >+ public String getUrl() { >+ return ""; //$NON-NLS-1$ >+ } >+ >+ public int compareTo(IRepositoryElement arg0) { >+ if (arg0 instanceof AbstractRepositoryKind) { >+ return this.getRank() - ((AbstractRepositoryKind) arg0).getRank(); >+ } >+ return 0; >+ } >+ >+ public int getRank() { >+ return 999; >+ } >+ >+} >Index: src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindTasks.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindTasks.java >diff -N src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindTasks.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindTasks.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 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.tasks.core; >+ >+/** >+ * @author Robert Elves >+ */ >+public class RepositoryKindTasks extends AbstractRepositoryKind { >+ >+ private static final String HANDLE = "org.eclipse.mylyn.repository.kind.tasks"; //$NON-NLS-1$ >+ >+ private static RepositoryKindTasks INSTANCE = new RepositoryKindTasks(); >+ >+ private RepositoryKindTasks() { >+ super(HANDLE); >+ } >+ >+ public String getSummary() { >+ return "Tasks"; //$NON-NLS-1$ >+ } >+ >+ public static RepositoryKindTasks getInstance() { >+ return INSTANCE; >+ } >+ >+ @Override >+ public int getRank() { >+ return 0; >+ } >+ >+} >Index: src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindBugs.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindBugs.java >diff -N src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindBugs.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindBugs.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,41 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 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.tasks.core; >+ >+ >+/** >+ * @author Robert Elves >+ */ >+public class RepositoryKindBugs extends AbstractRepositoryKind { >+ >+ private static final String HANDLE = "org.eclipse.mylyn.repository.kind.bugs"; //$NON-NLS-1$ >+ >+ private static RepositoryKindBugs INSTANCE = new RepositoryKindBugs(); >+ >+ private RepositoryKindBugs() { >+ super(HANDLE); >+ } >+ >+ public String getSummary() { >+ return "Bugs"; //$NON-NLS-1$ >+ } >+ >+ public static RepositoryKindBugs getInstance() { >+ return INSTANCE; >+ } >+ >+ @Override >+ public int getRank() { >+ return 100; >+ } >+ >+} >Index: src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindOther.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindOther.java >diff -N src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindOther.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/core/RepositoryKindOther.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,39 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 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.tasks.core; >+ >+/** >+ * @author Robert Elves >+ */ >+public class RepositoryKindOther extends AbstractRepositoryKind { >+ >+ private static final String HANDLE = "org.eclipse.mylyn.repository.kind.other"; //$NON-NLS-1$ >+ >+ private static RepositoryKindOther INSTANCE = new RepositoryKindOther(); >+ >+ private RepositoryKindOther() { >+ super(HANDLE); >+ } >+ >+ public String getSummary() { >+ return "Other"; //$NON-NLS-1$ >+ } >+ >+ public static RepositoryKindOther getInstance() { >+ return INSTANCE; >+ } >+ >+ @Override >+ public int getRank() { >+ return 200; >+ } >+} >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoryLabelProvider.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoryLabelProvider.java,v >retrieving revision 1.24 >diff -u -r1.24 TaskRepositoryLabelProvider.java >--- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoryLabelProvider.java 13 Jan 2009 07:07:36 -0000 1.24 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoryLabelProvider.java 18 Mar 2010 22:57:28 -0000 >@@ -14,6 +14,7 @@ > import org.eclipse.jface.viewers.ILabelProvider; > import org.eclipse.jface.viewers.ILabelProviderListener; > import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; >+import org.eclipse.mylyn.internal.tasks.core.AbstractRepositoryKind; > import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; > import org.eclipse.mylyn.internal.tasks.ui.actions.DisconnectRepositoryAction; > import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; >@@ -67,6 +68,8 @@ > return label.toString(); > } else if (object instanceof AbstractRepositoryConnector) { > return ((AbstractRepositoryConnector) object).getLabel(); >+ } else if (object instanceof AbstractRepositoryKind) { >+ return ((AbstractRepositoryKind) object).getSummary(); > } else { > return null; > } >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java,v >retrieving revision 1.44 >diff -u -r1.44 TaskRepositoriesView.java >--- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java 13 Oct 2009 01:11:06 -0000 1.44 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesView.java 18 Mar 2010 22:57:28 -0000 >@@ -11,6 +11,9 @@ > > package org.eclipse.mylyn.internal.tasks.ui.views; > >+import java.util.HashSet; >+import java.util.Set; >+ > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.Status; > import org.eclipse.jface.action.Action; >@@ -22,11 +25,15 @@ > import org.eclipse.jface.viewers.DecoratingLabelProvider; > import org.eclipse.jface.viewers.DoubleClickEvent; > import org.eclipse.jface.viewers.IDoubleClickListener; >-import org.eclipse.jface.viewers.IStructuredContentProvider; >-import org.eclipse.jface.viewers.TableViewer; >+import org.eclipse.jface.viewers.ITreeContentProvider; >+import org.eclipse.jface.viewers.TreeViewer; > import org.eclipse.jface.viewers.Viewer; > import org.eclipse.mylyn.commons.core.StatusHandler; >+import org.eclipse.mylyn.internal.tasks.core.AbstractRepositoryKind; > import org.eclipse.mylyn.internal.tasks.core.IRepositoryModelListener; >+import org.eclipse.mylyn.internal.tasks.core.RepositoryKindBugs; >+import org.eclipse.mylyn.internal.tasks.core.RepositoryKindOther; >+import org.eclipse.mylyn.internal.tasks.core.RepositoryKindTasks; > import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryAdapter; > import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; > import org.eclipse.mylyn.internal.tasks.ui.actions.AddRepositoryAction; >@@ -50,6 +57,7 @@ > import org.eclipse.ui.handlers.IHandlerService; > import org.eclipse.ui.part.ViewPart; > import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; >+import org.eclipse.ui.themes.IThemeManager; > > /** > * @author Mik Kersten >@@ -62,7 +70,7 @@ > @Deprecated > public static final String ID = ITasksUiConstants.ID_VIEW_REPOSITORIES; > >- private TableViewer viewer; >+ private TreeViewer viewer; > > private final Action addRepositoryAction = new AddRepositoryAction(); > >@@ -72,6 +80,9 @@ > > private DisconnectRepositoryAction offlineAction; > >+ private static final AbstractRepositoryKind[] repositoryKinds = { RepositoryKindTasks.getInstance(), >+ RepositoryKindBugs.getInstance(), RepositoryKindOther.getInstance() }; >+ > private void asyncExec(Runnable runnable) { > if (Display.getCurrent() != null) { > runnable.run(); >@@ -121,7 +132,7 @@ > } > }; > >- static class ViewContentProvider implements IStructuredContentProvider { >+ static class ViewContentProvider implements ITreeContentProvider { > public void inputChanged(Viewer v, Object oldInput, Object newInput) { > } > >@@ -129,7 +140,25 @@ > } > > public Object[] getElements(Object parent) { >- return TasksUi.getRepositoryManager().getAllRepositories().toArray(); >+ >+ Set<Object> objects = new HashSet<Object>(); >+ objects.addAll(TasksUi.getRepositoryManager().getAllRepositories()); >+ objects.add(RepositoryKindTasks.getInstance()); >+ objects.add(RepositoryKindBugs.getInstance()); >+ objects.add(RepositoryKindOther.getInstance()); >+ return objects.toArray(); >+ } >+ >+ public Object[] getChildren(Object parentElement) { >+ return null; >+ } >+ >+ public Object getParent(Object element) { >+ return null; >+ } >+ >+ public boolean hasChildren(Object element) { >+ return false; > } > } > >@@ -172,13 +201,13 @@ > > @Override > public void createPartControl(Composite parent) { >- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); >+ viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); > viewer.setContentProvider(new ViewContentProvider()); > viewer.setUseHashlookup(true); > viewer.setLabelProvider(new DecoratingLabelProvider(new TaskRepositoryLabelProvider(), > PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator())); > >- viewer.setSorter(new TaskRepositoriesSorter()); >+ viewer.setSorter(new TaskRepositoriesViewSorter()); > > // new ViewerSorter() { > // >@@ -202,12 +231,20 @@ > service.executeCommand(IWorkbenchActionDefinitionIds.PROPERTIES, null); > } catch (Exception e) { > StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, >- "Opening repository properties failed", e)); //$NON-NLS-1$ >+ "Opening repository properties failed", e)); > } > } > } > }); > >+ final IThemeManager themeManager = getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); >+ new GradientDrawer(themeManager, getViewer()) { >+ @Override >+ protected boolean shouldApplyGradient(org.eclipse.swt.widgets.Event event) { >+ return event.item.getData() instanceof AbstractRepositoryKind; >+ } >+ }; >+ > // FIXME remove listener when view is disposed > TasksUi.getRepositoryManager().addListener(new TaskRepositoryListener()); > >@@ -229,7 +266,7 @@ > viewer.addSelectionChangedListener(deleteRepositoryAction); > > resetConfigurationAction = new UpdateRepositoryConfigurationAction(); >- resetConfigurationAction.setActionDefinitionId("org.eclipse.ui.file.refresh"); //$NON-NLS-1$ >+ resetConfigurationAction.setActionDefinitionId("org.eclipse.ui.file.refresh"); > viewer.addSelectionChangedListener(resetConfigurationAction); > > offlineAction = new DisconnectRepositoryAction(); >@@ -260,17 +297,17 @@ > } > > private void fillContextMenu(IMenuManager manager) { >- manager.add(new Separator("new")); //$NON-NLS-1$ >+ manager.add(new Separator("new")); > manager.add(addRepositoryAction); >- manager.add(new Separator("edit")); //$NON-NLS-1$ >+ manager.add(new Separator("edit")); > manager.add(deleteRepositoryAction); > manager.add(resetConfigurationAction); >- manager.add(new Separator("operations")); //$NON-NLS-1$ >+ manager.add(new Separator("operations")); > manager.add(offlineAction); >- manager.add(new Separator("repository")); //$NON-NLS-1$ >+ manager.add(new Separator("repository")); > manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); > manager.add(new Separator()); >- manager.add(new Separator("properties")); //$NON-NLS-1$ >+ manager.add(new Separator("properties")); > } > > private void fillLocalToolBar(IToolBarManager manager) { >@@ -291,7 +328,7 @@ > } > } > >- public TableViewer getViewer() { >+ public TreeViewer getViewer() { > return viewer; > } > >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/GradientDrawer.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/GradientDrawer.java,v >retrieving revision 1.1 >diff -u -r1.1 GradientDrawer.java >--- src/org/eclipse/mylyn/internal/tasks/ui/views/GradientDrawer.java 1 Mar 2010 21:44:18 -0000 1.1 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/GradientDrawer.java 18 Mar 2010 22:57:28 -0000 >@@ -40,7 +40,7 @@ > > private final Listener CATEGORY_GRADIENT_DRAWER = new Listener() { > public void handleEvent(Event event) { >- if (event.item.getData() instanceof ITaskContainer && !(event.item.getData() instanceof ITask)) { >+ if (shouldApplyGradient(event)) { > Scrollable scrollable = (Scrollable) event.widget; > GC gc = event.gc; > >@@ -99,6 +99,10 @@ > } > }; > >+ protected boolean shouldApplyGradient(Event event) { >+ return event.item.getData() instanceof ITaskContainer && !(event.item.getData() instanceof ITask); >+ } >+ > private final IPropertyChangeListener THEME_CHANGE_LISTENER = new IPropertyChangeListener() { > public void propertyChange(PropertyChangeEvent event) { > if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME) >Index: plugin.properties >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/plugin.properties,v >retrieving revision 1.10 >diff -u -r1.10 plugin.properties >--- plugin.properties 21 Feb 2010 14:56:49 -0000 1.10 >+++ plugin.properties 18 Mar 2010 22:57:28 -0000 >@@ -25,7 +25,7 @@ > > views.category.name = Tasks > TaskListView.name = Task List >-TaskRepositoriesView.name = Task Repositories >+TaskRepositoriesView.name = Team Repositories > > newWizards.category.name = Tasks > NewLocalCategoryWizard.name = Category >@@ -49,8 +49,8 @@ > SynchronizeAllAction.label = Synchronize Changed > SynchronizeAllAction.tooltip = Synchronize Changed > RestoreTaskListAction.label = Restore Tasks from History... >-ShowTaskRepositoriesViewAction.label = Show Task Repositories View >-ShowTaskRepositoriesViewAction.tooltip = Show Task Repositories View >+ShowTaskRepositoriesViewAction.label = Show Team Repositories View >+ShowTaskRepositoriesViewAction.tooltip = Show Team Repositories View > OpenTaskSearchAction.label = Search Repository... > NewTaskAction.label = New Task > NewTaskAction.tooltip = New Task >@@ -144,10 +144,10 @@ > command.deactivateAllTasks.name = Deactivate Task > > TaskSearchPage.label = Task Search >-ProjectTaskRepositoryPage.name = Task Repository >+ProjectTaskRepositoryPage.name = Team Repository > >-commands.category.repositories.name = Task Repositories >-command.addTaskRepository.name = Add Task Repository... >+commands.category.repositories.name = Team Repositories >+command.addTaskRepository.name = Add Team Repository... > command.addTaskRepository.commandParameter.name = Repository Type > > TaskHyperlinkDetector.name = Tasks >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java >diff -N src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskRepositoriesViewSorter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,49 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 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.tasks.ui.views; >+ >+import org.eclipse.jface.viewers.Viewer; >+import org.eclipse.mylyn.internal.tasks.core.AbstractRepositoryKind; >+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; >+import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.mylyn.tasks.ui.TasksUi; >+ >+/** >+ * @author Robert Elves >+ */ >+public class TaskRepositoriesViewSorter extends TaskRepositoriesSorter { >+ @Override >+ public int compare(Viewer viewer, Object e1, Object e2) { >+ >+ if (e1 instanceof AbstractRepositoryKind && e2 instanceof AbstractRepositoryKind) { >+ return ((AbstractRepositoryKind) e1).compareTo((AbstractRepositoryKind) e2); >+ } >+ if (e1 instanceof AbstractRepositoryKind && e2 instanceof TaskRepository) { >+ >+ AbstractRepositoryKind kind1 = ((AbstractRepositoryKind) e1); >+ >+ String repokindhandle = ((TaskRepository) e2).getProperty(AbstractRepositoryKind.PROPERTY_REPOSITORY_KIND); >+ AbstractRepositoryKind kind2 = ((TaskRepositoryManager) TasksUi.getRepositoryManager()).getRepositoryKind(repokindhandle); >+ >+ return kind1.compareTo(kind2); >+ >+ } else if (e1 instanceof TaskRepository && e2 instanceof AbstractRepositoryKind) { >+ AbstractRepositoryKind kind1 = ((AbstractRepositoryKind) e2); >+ >+ String repoKindHandle = ((TaskRepository) e1).getProperty(AbstractRepositoryKind.PROPERTY_REPOSITORY_KIND); >+ AbstractRepositoryKind kind2 = ((TaskRepositoryManager) TasksUi.getRepositoryManager()).getRepositoryKind(repoKindHandle); >+ return kind2.compareTo(kind1); >+ >+ } >+ return super.compare(viewer, e1, e2); >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 302907
:
162480
|
162481
|
162482
|
162541
|
162542
|
164447
|
164448
|
167360
|
167361
|
168302
|
168303
|
168304
|
168305
|
169716
|
169717
|
169742
|
169748
|
169873