Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/IRepositoryChangeListener.java21
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryChangeEvent.java47
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryDelta.java47
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java12
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskRepositoryLocationUi.java5
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java13
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DisconnectRepositoryAction.java5
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java5
8 files changed, 146 insertions, 9 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/IRepositoryChangeListener.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/IRepositoryChangeListener.java
new file mode 100644
index 000000000..a1e27784b
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/IRepositoryChangeListener.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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 Steffen Pingel
+ */
+public interface IRepositoryChangeListener {
+
+ public abstract void repositoryChanged(TaskRepositoryChangeEvent event);
+
+}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryChangeEvent.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryChangeEvent.java
new file mode 100644
index 000000000..422e75e10
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryChangeEvent.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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 java.util.EventObject;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.mylyn.tasks.core.TaskRepository;
+
+/**
+ * @author Steffen Pingel
+ */
+public class TaskRepositoryChangeEvent extends EventObject {
+
+ private static final long serialVersionUID = -8177578930986469693L;
+
+ private final TaskRepository repository;
+
+ private final TaskRepositoryDelta delta;
+
+ TaskRepositoryChangeEvent(Object source, TaskRepository repository, TaskRepositoryDelta delta) {
+ super(source);
+ Assert.isNotNull(source);
+ Assert.isNotNull(repository);
+ Assert.isNotNull(delta);
+ this.repository = repository;
+ this.delta = delta;
+ }
+
+ public TaskRepository getRepository() {
+ return repository;
+ }
+
+ public TaskRepositoryDelta getDelta() {
+ return delta;
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryDelta.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryDelta.java
new file mode 100644
index 000000000..bf81cd653
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryDelta.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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.Assert;
+
+/**
+ * @author Steffen Pingel
+ */
+public class TaskRepositoryDelta {
+
+ public enum Type {
+ ALL, CREDENTIALS, PROPERTY, PROYX, OFFLINE
+ };
+
+ private final Type type;
+
+ private final Object key;
+
+ public TaskRepositoryDelta(Type type, Object key) {
+ Assert.isNotNull(type);
+ this.type = type;
+ this.key = key;
+ }
+
+ public TaskRepositoryDelta(Type type) {
+ this(type, null);
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public Object getKey() {
+ return key;
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java
index 19258768d..9daef6acf 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoryManager.java
@@ -31,6 +31,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.core.runtime.Status;
import org.eclipse.mylyn.commons.core.StatusHandler;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta.Type;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.IRepositoryListener;
import org.eclipse.mylyn.tasks.core.IRepositoryManager;
@@ -68,7 +69,8 @@ public class TaskRepositoryManager implements IRepositoryManager {
private final PropertyChangeListener PROPERTY_CHANGE_LISTENER = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
- TaskRepositoryManager.this.notifyRepositorySettingsChanged((TaskRepository) evt.getSource());
+ TaskRepositoryManager.this.notifyRepositorySettingsChanged((TaskRepository) evt.getSource(),
+ new TaskRepositoryDelta(Type.PROPERTY, evt.getPropertyName()));
}
};
@@ -361,6 +363,11 @@ public class TaskRepositoryManager implements IRepositoryManager {
}
public void notifyRepositorySettingsChanged(final TaskRepository repository) {
+ notifyRepositorySettingsChanged(repository, new TaskRepositoryDelta(Type.ALL));
+ }
+
+ public void notifyRepositorySettingsChanged(final TaskRepository repository, TaskRepositoryDelta delta) {
+ final TaskRepositoryChangeEvent event = new TaskRepositoryChangeEvent(this, repository, delta);
for (final IRepositoryListener listener : listeners) {
SafeRunner.run(new ISafeRunnable() {
public void handleException(Throwable e) {
@@ -369,6 +376,9 @@ public class TaskRepositoryManager implements IRepositoryManager {
}
public void run() throws Exception {
+ if (listener instanceof IRepositoryChangeListener) {
+ ((IRepositoryChangeListener) listener).repositoryChanged(event);
+ }
listener.repositorySettingsChanged(repository);
}
});
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskRepositoryLocationUi.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskRepositoryLocationUi.java
index e8f68b783..4632b6a54 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskRepositoryLocationUi.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskRepositoryLocationUi.java
@@ -20,7 +20,9 @@ import org.eclipse.mylyn.commons.net.AuthenticationType;
import org.eclipse.mylyn.commons.net.Policy;
import org.eclipse.mylyn.commons.net.UnsupportedRequestException;
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta;
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryLocation;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta.Type;
import org.eclipse.mylyn.internal.tasks.ui.dialogs.TaskRepositoryCredentialsDialog;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.swt.widgets.Shell;
@@ -152,7 +154,8 @@ public class TaskRepositoryLocationUi extends TaskRepositoryLocation {
AuthenticationCredentials credentials = new AuthenticationCredentials(dialog.getUserName(),
dialog.getPassword());
taskRepository.setCredentials(authType, credentials, dialog.getSavePassword());
- TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(taskRepository);
+ TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(taskRepository,
+ new TaskRepositoryDelta(Type.CREDENTIALS, authType));
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java
index e0a0782e7..89c7b35ad 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java
@@ -67,7 +67,9 @@ import org.eclipse.mylyn.internal.tasks.core.RepositoryTemplateManager;
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
import org.eclipse.mylyn.internal.tasks.core.TaskList;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta;
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta.Type;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataManager;
import org.eclipse.mylyn.internal.tasks.core.data.TaskDataStore;
import org.eclipse.mylyn.internal.tasks.core.externalization.ExternalizationManager;
@@ -476,7 +478,7 @@ public class TasksUiPlugin extends AbstractUIPlugin {
}
}
- @SuppressWarnings({ "restriction" })
+ @SuppressWarnings("restriction")
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
@@ -530,10 +532,11 @@ public class TasksUiPlugin extends AbstractUIPlugin {
if (proxyService != null) {
proxyChangeListener = new IProxyChangeListener() {
public void proxyInfoChanged(IProxyChangeEvent event) {
- List<TaskRepository> repos = repositoryManager.getAllRepositories();
- for (TaskRepository repo : repos) {
- if (repo.isDefaultProxyEnabled()) {
- repositoryManager.notifyRepositorySettingsChanged(repo);
+ List<TaskRepository> repositories = repositoryManager.getAllRepositories();
+ for (TaskRepository repository : repositories) {
+ if (repository.isDefaultProxyEnabled()) {
+ repositoryManager.notifyRepositorySettingsChanged(repository,
+ new TaskRepositoryDelta(Type.PROYX));
}
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DisconnectRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DisconnectRepositoryAction.java
index 642d6ac49..bc5ab6b76 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DisconnectRepositoryAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/DisconnectRepositoryAction.java
@@ -17,6 +17,8 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta.Type;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.views.Messages;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
@@ -43,7 +45,8 @@ public class DisconnectRepositoryAction extends Action implements ISelectionChan
@Override
public void run() {
repository.setOffline(isChecked());
- TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository);
+ TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository,
+ new TaskRepositoryDelta(Type.OFFLINE));
}
@Deprecated
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
index 04c17a240..c47a8343b 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/EditRepositoryWizard.java
@@ -19,6 +19,8 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta;
+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryDelta.Type;
import org.eclipse.mylyn.internal.tasks.ui.RefactorRepositoryUrlOperation;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.TaskRepository;
@@ -78,7 +80,8 @@ public class EditRepositoryWizard extends Wizard implements INewWizard {
if (oldUrl != null && newUrl != null && !oldUrl.equals(newUrl)) {
TasksUiPlugin.getRepositoryManager().notifyRepositoryUrlChanged(repository, oldUrl);
}
- TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository);
+ TasksUiPlugin.getRepositoryManager().notifyRepositorySettingsChanged(repository,
+ new TaskRepositoryDelta(Type.ALL));
TasksUiPlugin.getExternalizationManager().requestSave();
return true;
}

Back to the top