diff options
author | relves | 2007-09-25 21:57:07 +0000 |
---|---|---|
committer | relves | 2007-09-25 21:57:07 +0000 |
commit | 108b9d1ce80a66bd4a92bf20e4739f4271f6af55 (patch) | |
tree | 729a0949347e8d3ae36a4fc67bc20260f713a0f5 /org.eclipse.mylyn.tasks.ui | |
parent | fcd5bb15a292b0c6841ef352554251d1ee7ace5e (diff) | |
download | org.eclipse.mylyn.tasks-108b9d1ce80a66bd4a92bf20e4739f4271f6af55.tar.gz org.eclipse.mylyn.tasks-108b9d1ce80a66bd4a92bf20e4739f4271f6af55.tar.xz org.eclipse.mylyn.tasks-108b9d1ce80a66bd4a92bf20e4739f4271f6af55.zip |
NEW - bug 195470: impossible to delete eclipse.org repository
https://bugs.eclipse.org/bugs/show_bug.cgi?id=195470
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
3 files changed, 59 insertions, 11 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPreferenceConstants.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPreferenceConstants.java index 30703bf27..9fc62a144 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPreferenceConstants.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPreferenceConstants.java @@ -38,7 +38,7 @@ public final class TasksUiPreferenceConstants { */ @Deprecated public static final String FILTER_SUBTASKS = "org.eclipse.mylyn.tasks.ui.filters.subtasks"; - + public static final String OVERLAYS_INCOMING_TIGHT = "org.eclipse.mylyn.tasks.ui.overlays.incoming.tight"; public static final String NOTIFICATIONS_ENABLED = "org.eclipse.mylyn.tasks.ui.notifications.enabled"; @@ -59,4 +59,8 @@ public final class TasksUiPreferenceConstants { public static final String REPOSITORY_SYNCH_SCHEDULE_MILISECONDS = "org.eclipse.mylyn.tasks.ui.repositories.synch.schedule.miliseconds"; + public static final String TEMPLATES_DELETED = "org.eclipse.mylyn.tasks.ui.templates.deleted"; + + public static final String TEMPLATES_DELETED_DELIM = "|"; + } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java index c2addf283..bf04e9f8a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java @@ -73,6 +73,8 @@ public class DeleteTaskRepositoryAction extends AbstractTaskRepositoryAction { for (TaskRepository taskRepository : repositoriesToDelete) { TasksUiPlugin.getRepositoryManager().removeRepository(taskRepository, TasksUiPlugin.getDefault().getRepositoriesFilePath()); + // if repository is contributed via template, ensure it isn't added again + TasksUiPlugin.getDefault().deleteTemplate(taskRepository.getUrl()); } if (repositoriesInUse.size() > 0) { diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java index 1f932f64c..03c19befb 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java @@ -461,7 +461,8 @@ public class TasksUiPlugin extends AbstractUIPlugin implements IStartup { connector.setTaskDataManager(taskDataManager); for (RepositoryTemplate template : connector.getTemplates()) { - if (template.addAutomatically) { + + if (template.addAutomatically && !isTemplateDeleted(template.repositoryUrl)) { try { TaskRepository taskRepository = taskRepositoryManager.getRepository( connector.getConnectorKind(), template.repositoryUrl); @@ -480,6 +481,47 @@ public class TasksUiPlugin extends AbstractUIPlugin implements IStartup { } } + /** + * @since 2.1 + */ + public boolean isTemplateDeleted(String repositoryUrl) { + String deletedTemplates = getPreferenceStore().getString(TasksUiPreferenceConstants.TEMPLATES_DELETED); + String[] templateUrls = deletedTemplates.split("\\" + TasksUiPreferenceConstants.TEMPLATES_DELETED_DELIM); + for (String deletedUrl : templateUrls) { + if (deletedUrl.equalsIgnoreCase(repositoryUrl)) { + return true; + } + } + return false; + } + + /** + * @since 2.1 + */ + public void deleteTemplate(String repositoryUrl) { + if (!isTemplateDeleted(repositoryUrl) && templateExists(repositoryUrl)) { + String deletedTemplates = getPreferenceStore().getString(TasksUiPreferenceConstants.TEMPLATES_DELETED); + deletedTemplates += TasksUiPreferenceConstants.TEMPLATES_DELETED_DELIM + repositoryUrl; + getPreferenceStore().setValue(TasksUiPreferenceConstants.TEMPLATES_DELETED, deletedTemplates); + savePluginPreferences(); + } + } + + /** + * Template exists and is auto add enabled + */ + private boolean templateExists(String repositoryUrl) { + for (AbstractRepositoryConnector connector : taskRepositoryManager.getRepositoryConnectors()) { + for (RepositoryTemplate template : connector.getTemplates()) { + if (template.repositoryUrl != null && template.repositoryUrl.equalsIgnoreCase(repositoryUrl) + && template.addAutomatically) { + return true; + } + } + } + return false; + } + private void checkForCredentials() { for (TaskRepository repository : taskRepositoryManager.getAllRepositories()) { AbstractRepositoryConnector connector = getRepositoryManager().getRepositoryConnector( @@ -659,29 +701,29 @@ public class TasksUiPlugin extends AbstractUIPlugin implements IStartup { public static TasksUiPlugin getDefault() { return INSTANCE; } - - public boolean groupSubtasks(AbstractTaskContainer container){ + + public boolean groupSubtasks(AbstractTaskContainer container) { boolean groupSubtasks = TasksUiPlugin.getDefault().getPreferenceStore().getBoolean( TasksUiPreferenceConstants.GROUP_SUBTASKS); - - if(container instanceof AbstractTask){ - AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(((AbstractTask)container).getConnectorKind()); + + if (container instanceof AbstractTask) { + AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(((AbstractTask) container).getConnectorKind()); if (connectorUi != null) { if (connectorUi.forceSubtaskHierarchy()) { groupSubtasks = true; } } } - - if(container instanceof AbstractRepositoryQuery){ - AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(((AbstractRepositoryQuery)container).getRepositoryKind()); + + if (container instanceof AbstractRepositoryQuery) { + AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(((AbstractRepositoryQuery) container).getRepositoryKind()); if (connectorUi != null) { if (connectorUi.forceSubtaskHierarchy()) { groupSubtasks = true; } } } - + return groupSubtasks; } |