### 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 repositoryConnectors = new HashMap(); - private final Map> repositoryMap = new HashMap>(); + // connector kinds to corresponding repositories + private final Map> connectorKindsMap = new HashMap>(); + + // repository kind to corresponding repositories + //private final Map> repositoryKindsMap = new HashMap>(); private final Set listeners = new CopyOnWriteArraySet(); @@ -67,6 +71,8 @@ public static final String PREFIX_LOCAL = "local-"; //$NON-NLS-1$ + private static final Map repositoryKinds = new HashMap(); + 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 getRepositoryConnectors() { @@ -109,15 +118,18 @@ public void addRepository(final TaskRepository repository) { synchronized (this) { Set repositories; - repositories = repositoryMap.get(repository.getConnectorKind()); + repositories = connectorKindsMap.get(repository.getConnectorKind()); if (repositories == null) { repositories = new HashSet(); - 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 repositories = repositoryMap.get(repository.getConnectorKind()); + Set 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 getRepositories(String kind) { - Assert.isNotNull(kind); + public Set getRepositories(String connectorKind) { + Assert.isNotNull(connectorKind); Set result; synchronized (this) { - result = repositoryMap.get(kind); + result = connectorKindsMap.get(connectorKind); } if (result == null) { return Collections.emptySet(); @@ -245,12 +268,24 @@ return new HashSet(result); } +// public Set getRepositories(AbstractRepositoryKind repositoryKind) { +// Assert.isNotNull(repositoryKind); +// Set result; +// synchronized (this) { +// result = repositoryKindsMap.get(repositoryKind); +// } +// if (result == null) { +// return Collections.emptySet(); +// } +// return new HashSet(result); +// } + public List getAllRepositories() { List repositories = new ArrayList(); 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> values = repositoryMap.values(); + Collection> values = connectorKindsMap.values(); if (!values.isEmpty()) { Set repoistorySet = values.iterator().next(); return repoistorySet.iterator().next(); @@ -276,7 +311,7 @@ Map> 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()); + connectorKindsMap.put(repositoryConnector.getConnectorKind(), new HashSet()); } if (repositoriesFile.exists()) { Set 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 repositories = repositoryKindsMap.get(repositoryKind); +// if (repositories == null) { +// repositories = new HashSet(); +// 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 objects = new HashSet(); + 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); + } +}