Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrelves2007-09-25 21:57:07 +0000
committerrelves2007-09-25 21:57:07 +0000
commit108b9d1ce80a66bd4a92bf20e4739f4271f6af55 (patch)
tree729a0949347e8d3ae36a4fc67bc20260f713a0f5 /org.eclipse.mylyn.tasks.ui
parentfcd5bb15a292b0c6841ef352554251d1ee7ace5e (diff)
downloadorg.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')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPreferenceConstants.java6
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DeleteTaskRepositoryAction.java2
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java62
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;
}

Back to the top