Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 178474 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/tasks/ui/OpenRepositoryTaskJob.java (-2 / +30 lines)
Lines 12-17 Link Here
12
package org.eclipse.mylyn.internal.tasks.ui;
12
package org.eclipse.mylyn.internal.tasks.ui;
13
13
14
import java.text.MessageFormat;
14
import java.text.MessageFormat;
15
import java.util.Date;
16
import java.util.List;
15
17
16
import org.eclipse.core.runtime.CoreException;
18
import org.eclipse.core.runtime.CoreException;
17
import org.eclipse.core.runtime.IProgressMonitor;
19
import org.eclipse.core.runtime.IProgressMonitor;
Lines 25-33 Link Here
25
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
27
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
26
import org.eclipse.mylyn.tasks.core.ITask;
28
import org.eclipse.mylyn.tasks.core.ITask;
27
import org.eclipse.mylyn.tasks.core.TaskRepository;
29
import org.eclipse.mylyn.tasks.core.TaskRepository;
30
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
28
import org.eclipse.mylyn.tasks.core.data.TaskData;
31
import org.eclipse.mylyn.tasks.core.data.TaskData;
29
import org.eclipse.mylyn.tasks.ui.TasksUi;
32
import org.eclipse.mylyn.tasks.ui.TasksUi;
30
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
33
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
34
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
31
import org.eclipse.ui.IWorkbenchPage;
35
import org.eclipse.ui.IWorkbenchPage;
32
import org.eclipse.ui.PlatformUI;
36
import org.eclipse.ui.PlatformUI;
33
37
Lines 49-62 Link Here
49
53
50
	private TaskOpenListener listener;
54
	private TaskOpenListener listener;
51
55
56
	private final long timestamp;
57
52
	public OpenRepositoryTaskJob(String repositoryKind, String repositoryUrl, String taskId, String taskUrl,
58
	public OpenRepositoryTaskJob(String repositoryKind, String repositoryUrl, String taskId, String taskUrl,
53
			IWorkbenchPage page) {
59
			long timestamp, IWorkbenchPage page) {
54
		super(MessageFormat.format(Messages.OpenRepositoryTaskJob_Opening_repository_task_X, taskId));
60
		super(MessageFormat.format(Messages.OpenRepositoryTaskJob_Opening_repository_task_X, taskId));
55
61
56
		this.repositoryKind = repositoryKind;
62
		this.repositoryKind = repositoryKind;
57
		this.taskId = taskId;
63
		this.taskId = taskId;
58
		this.repositoryUrl = repositoryUrl;
64
		this.repositoryUrl = repositoryUrl;
59
		this.taskUrl = taskUrl;
65
		this.taskUrl = taskUrl;
66
		this.timestamp = timestamp;
60
	}
67
	}
61
68
62
	/**
69
	/**
Lines 95-101 Link Here
95
102
96
		AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(repositoryKind);
103
		AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(repositoryKind);
97
		try {
104
		try {
98
			TaskData taskData = connector.getTaskData(repository, taskId, monitor);
105
			final TaskData taskData = connector.getTaskData(repository, taskId, monitor);
99
			if (taskData != null) {
106
			if (taskData != null) {
100
				task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId());
107
				task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId());
101
				TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true);
108
				TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true);
Lines 105-110 Link Here
105
						if (listener != null && event != null) {
112
						if (listener != null && event != null) {
106
							listener.taskOpened(event);
113
							listener.taskOpened(event);
107
						}
114
						}
115
						if (timestamp != 0 && event != null) {
116
							List<TaskAttribute> commentAttributes = taskData.getAttributeMapper().getAttributesByType(
117
									taskData, TaskAttribute.TYPE_COMMENT);
118
							if (commentAttributes.size() > 0) {
119
								for (TaskAttribute commentAttribute : commentAttributes) {
120
									TaskAttribute commentCreateDate = commentAttribute.getMappedAttribute(TaskAttribute.COMMENT_DATE);
121
									if (commentCreateDate != null) {
122
										Date dateValue = taskData.getAttributeMapper().getDateValue(commentCreateDate);
123
										if (dateValue.getTime() < timestamp) {
124
											continue;
125
										}
126
										TaskAttribute dn = commentAttribute.getMappedAttribute(TaskAttribute.COMMENT_NUMBER);
127
										TaskEditor editor = (TaskEditor) event.getEditor();
128
										if (dn != null) {
129
											editor.selectReveal(TaskAttribute.PREFIX_COMMENT + dn.getValue());
130
										}
131
										break;
132
									}
133
								}
134
							}
135
						}
108
					}
136
					}
109
				});
137
				});
110
			} else {
138
			} else {
(-)src/org/eclipse/mylyn/internal/tasks/ui/search/OpenSearchResultAction.java (-1 / +1 lines)
Lines 55-61 Link Here
55
			for (Iterator<AbstractTask> it = selection.iterator(); it.hasNext();) {
55
			for (Iterator<AbstractTask> it = selection.iterator(); it.hasNext();) {
56
				AbstractTask repositoryHit = it.next();
56
				AbstractTask repositoryHit = it.next();
57
				TasksUiUtil.openTask(repositoryHit.getRepositoryUrl(), repositoryHit.getTaskId(),
57
				TasksUiUtil.openTask(repositoryHit.getRepositoryUrl(), repositoryHit.getTaskId(),
58
						repositoryHit.getUrl());
58
						repositoryHit.getUrl(), 0);
59
			}
59
			}
60
60
61
		}
61
		}
(-)src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java (-7 / +8 lines)
Lines 88-98 Link Here
88
import org.eclipse.mylyn.tasks.core.IRepositoryManager;
88
import org.eclipse.mylyn.tasks.core.IRepositoryManager;
89
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
89
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
90
import org.eclipse.mylyn.tasks.core.ITask;
90
import org.eclipse.mylyn.tasks.core.ITask;
91
import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
92
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
91
import org.eclipse.mylyn.tasks.core.ITaskMapping;
93
import org.eclipse.mylyn.tasks.core.ITaskMapping;
92
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
94
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
93
import org.eclipse.mylyn.tasks.core.TaskRepository;
95
import org.eclipse.mylyn.tasks.core.TaskRepository;
94
import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
95
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
96
import org.eclipse.mylyn.tasks.core.data.AbstractTaskAttachmentSource;
96
import org.eclipse.mylyn.tasks.core.data.AbstractTaskAttachmentSource;
97
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
97
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
98
import org.eclipse.mylyn.tasks.core.data.ITaskDataWorkingCopy;
98
import org.eclipse.mylyn.tasks.core.data.ITaskDataWorkingCopy;
Lines 839-845 Link Here
839
			if (connectorUi != null) {
839
			if (connectorUi != null) {
840
				try {
840
				try {
841
					return TasksUiInternal.openRepositoryTask(connectorUi.getConnectorKind(),
841
					return TasksUiInternal.openRepositoryTask(connectorUi.getConnectorKind(),
842
							repository.getRepositoryUrl(), taskId, listener);
842
							repository.getRepositoryUrl(), taskId, listener, 0);
843
				} catch (Exception e) {
843
				} catch (Exception e) {
844
					StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
844
					StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
845
							"Internal error while opening repository task", e)); //$NON-NLS-1$
845
							"Internal error while opening repository task", e)); //$NON-NLS-1$
Lines 926-933 Link Here
926
		}
926
		}
927
	}
927
	}
928
928
929
	public static boolean openRepositoryTask(String connectorKind, String repositoryUrl, String id) {
929
	public static boolean openRepositoryTask(String connectorKind, String repositoryUrl, String id, long timestamp) {
930
		return openRepositoryTask(connectorKind, repositoryUrl, id, null);
930
		return openRepositoryTask(connectorKind, repositoryUrl, id, null, timestamp);
931
	}
931
	}
932
932
933
	/**
933
	/**
Lines 937-943 Link Here
937
	 * @return true if the task was successfully opened
937
	 * @return true if the task was successfully opened
938
	 */
938
	 */
939
	public static boolean openRepositoryTask(String connectorKind, String repositoryUrl, String id,
939
	public static boolean openRepositoryTask(String connectorKind, String repositoryUrl, String id,
940
			TaskOpenListener listener) {
940
			TaskOpenListener listener, long timestamp) {
941
		IRepositoryManager repositoryManager = TasksUi.getRepositoryManager();
941
		IRepositoryManager repositoryManager = TasksUi.getRepositoryManager();
942
		AbstractRepositoryConnector connector = repositoryManager.getRepositoryConnector(connectorKind);
942
		AbstractRepositoryConnector connector = repositoryManager.getRepositoryConnector(connectorKind);
943
		String taskUrl = connector.getTaskUrl(repositoryUrl, id);
943
		String taskUrl = connector.getTaskUrl(repositoryUrl, id);
Lines 957-963 Link Here
957
		}
957
		}
958
		IWorkbenchPage page = window.getActivePage();
958
		IWorkbenchPage page = window.getActivePage();
959
959
960
		OpenRepositoryTaskJob job = new OpenRepositoryTaskJob(connectorKind, repositoryUrl, id, taskUrl, page);
960
		OpenRepositoryTaskJob job = new OpenRepositoryTaskJob(connectorKind, repositoryUrl, id, taskUrl, timestamp,
961
				page);
961
		job.setListener(listener);
962
		job.setListener(listener);
962
		job.schedule();
963
		job.schedule();
963
964
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java (-1 / +1 lines)
Lines 208-214 Link Here
208
				if (repositoryUrl != null && taskId != null) {
208
				if (repositoryUrl != null && taskId != null) {
209
					// attempt to open task in background
209
					// attempt to open task in background
210
					// TODO: consider attaching a listener to OpenRepsitoryTaskJob to move task to drop target
210
					// TODO: consider attaching a listener to OpenRepsitoryTaskJob to move task to drop target
211
					TasksUiInternal.openRepositoryTask(connector.getConnectorKind(), repositoryUrl, taskId);
211
					TasksUiInternal.openRepositoryTask(connector.getConnectorKind(), repositoryUrl, taskId, 0);
212
				}
212
				}
213
			} else {
213
			} else {
214
				// create local task, using title of web page as a summary
214
				// create local task, using title of web page as a summary
(-)src/org/eclipse/mylyn/tasks/ui/TasksUiUtil.java (-5 / +7 lines)
Lines 39-47 Link Here
39
import org.eclipse.mylyn.tasks.core.IRepositoryManager;
39
import org.eclipse.mylyn.tasks.core.IRepositoryManager;
40
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
40
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
41
import org.eclipse.mylyn.tasks.core.ITask;
41
import org.eclipse.mylyn.tasks.core.ITask;
42
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
42
import org.eclipse.mylyn.tasks.core.ITaskMapping;
43
import org.eclipse.mylyn.tasks.core.ITaskMapping;
43
import org.eclipse.mylyn.tasks.core.TaskRepository;
44
import org.eclipse.mylyn.tasks.core.TaskRepository;
44
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
45
import org.eclipse.mylyn.tasks.ui.wizards.TaskRepositoryWizardDialog;
45
import org.eclipse.mylyn.tasks.ui.wizards.TaskRepositoryWizardDialog;
46
import org.eclipse.swt.widgets.Shell;
46
import org.eclipse.swt.widgets.Shell;
47
import org.eclipse.ui.IEditorInput;
47
import org.eclipse.ui.IEditorInput;
Lines 262-268 Link Here
262
	 */
262
	 */
263
	@Deprecated
263
	@Deprecated
264
	public static boolean openRepositoryTask(String repositoryUrl, String taskId, String fullUrl) {
264
	public static boolean openRepositoryTask(String repositoryUrl, String taskId, String fullUrl) {
265
		return openTask(repositoryUrl, taskId, fullUrl);
265
		return openTask(repositoryUrl, taskId, fullUrl, 0);
266
	}
266
	}
267
267
268
	/**
268
	/**
Lines 319-325 Link Here
319
	 * 
319
	 * 
320
	 * @since 3.0
320
	 * @since 3.0
321
	 */
321
	 */
322
	public static boolean openTask(String repositoryUrl, String taskId, String fullUrl) {
322
	public static boolean openTask(String repositoryUrl, String taskId, String fullUrl, long timestamp) {
323
		AbstractTask task = TasksUiInternal.getTask(repositoryUrl, taskId, fullUrl);
323
		AbstractTask task = TasksUiInternal.getTask(repositoryUrl, taskId, fullUrl);
324
324
325
		if (task != null) {
325
		if (task != null) {
Lines 332-343 Link Here
332
				fullUrl);
332
				fullUrl);
333
		if (connector != null) {
333
		if (connector != null) {
334
			if (repositoryUrl != null && taskId != null) {
334
			if (repositoryUrl != null && taskId != null) {
335
				opened = TasksUiInternal.openRepositoryTask(connector.getConnectorKind(), repositoryUrl, taskId);
335
				opened = TasksUiInternal.openRepositoryTask(connector.getConnectorKind(), repositoryUrl, taskId,
336
						timestamp);
336
			} else {
337
			} else {
337
				repositoryUrl = connector.getRepositoryUrlFromTaskUrl(fullUrl);
338
				repositoryUrl = connector.getRepositoryUrlFromTaskUrl(fullUrl);
338
				taskId = connector.getTaskIdFromTaskUrl(fullUrl);
339
				taskId = connector.getTaskIdFromTaskUrl(fullUrl);
339
				if (repositoryUrl != null && taskId != null) {
340
				if (repositoryUrl != null && taskId != null) {
340
					opened = TasksUiInternal.openRepositoryTask(connector.getConnectorKind(), repositoryUrl, taskId);
341
					opened = TasksUiInternal.openRepositoryTask(connector.getConnectorKind(), repositoryUrl, taskId,
342
							timestamp);
341
				}
343
				}
342
			}
344
			}
343
		}
345
		}
(-)plugin.xml (+5 lines)
Lines 23-28 Link Here
23
             class="org.eclipse.mylyn.internal.team.ccvs.CvsLinkedTaskInfoAdapterFactory">
23
             class="org.eclipse.mylyn.internal.team.ccvs.CvsLinkedTaskInfoAdapterFactory">
24
       <adapter type="org.eclipse.mylyn.team.ui.AbstractTaskReference"/>
24
       <adapter type="org.eclipse.mylyn.team.ui.AbstractTaskReference"/>
25
    </factory>
25
    </factory>
26
27
    <factory adaptableType="org.eclipse.team.internal.ccvs.core.filehistory.CVSFileRevision"
28
             class="org.eclipse.mylyn.internal.team.ccvs.CvsLinkedTaskInfoAdapterFactory">
29
       <adapter type="org.eclipse.mylyn.team.ui.AbstractTaskReference"/>
30
    </factory>
26
    
31
    
27
	<!--
32
	<!--
28
	<factory adaptableType="org.eclipse.mylyn.internal.team.ui.ContextChangeSet"
33
	<factory adaptableType="org.eclipse.mylyn.internal.team.ui.ContextChangeSet"
(-)src/org/eclipse/mylyn/internal/team/ccvs/CvsLinkedTaskInfoAdapterFactory.java (-4 / +17 lines)
Lines 17-28 Link Here
17
import org.eclipse.mylyn.internal.team.ui.LinkedTaskInfo;
17
import org.eclipse.mylyn.internal.team.ui.LinkedTaskInfo;
18
import org.eclipse.mylyn.tasks.core.TaskRepository;
18
import org.eclipse.mylyn.tasks.core.TaskRepository;
19
import org.eclipse.mylyn.team.ui.AbstractTaskReference;
19
import org.eclipse.mylyn.team.ui.AbstractTaskReference;
20
import org.eclipse.mylyn.team.ui.IContextChangeSet;
21
import org.eclipse.team.core.history.IFileRevision;
20
import org.eclipse.team.core.variants.IResourceVariant;
22
import org.eclipse.team.core.variants.IResourceVariant;
21
import org.eclipse.team.internal.ccvs.core.CVSException;
23
import org.eclipse.team.internal.ccvs.core.CVSException;
22
import org.eclipse.team.internal.ccvs.core.ICVSResource;
24
import org.eclipse.team.internal.ccvs.core.ICVSResource;
23
import org.eclipse.team.internal.ccvs.core.client.listeners.LogEntry;
25
import org.eclipse.team.internal.ccvs.core.client.listeners.LogEntry;
26
import org.eclipse.team.internal.ccvs.core.filehistory.CVSFileRevision;
24
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
27
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
25
import org.eclipse.team.internal.ccvs.core.resources.RemoteResource;
28
import org.eclipse.team.internal.ccvs.core.resources.RemoteResource;
29
import org.eclipse.team.internal.core.subscribers.DiffChangeSet;
26
30
27
/**
31
/**
28
 * @author Eugene Kuleshov
32
 * @author Eugene Kuleshov
Lines 50-70 Link Here
50
		if (comment == null) {
54
		if (comment == null) {
51
			return null;
55
			return null;
52
		}
56
		}
53
57
		long timestamp = 0;
58
		if (object instanceof CVSFileRevision) {
59
			timestamp = ((CVSFileRevision) object).getTimestamp();
60
		}
54
		IResource resource = getResourceForElement(object);
61
		IResource resource = getResourceForElement(object);
55
		if (resource != null) {
62
		if (resource != null) {
56
			TaskRepository repository = TasksUiPlugin.getDefault().getRepositoryForResource(resource);
63
			TaskRepository repository = TasksUiPlugin.getDefault().getRepositoryForResource(resource);
57
			if (repository != null) {
64
			if (repository != null) {
58
				return new LinkedTaskInfo(repository.getRepositoryUrl(), null, null, comment);
65
				return new LinkedTaskInfo(repository.getRepositoryUrl(), null, null, comment, timestamp);
59
			}
66
			}
60
		}
67
		}
61
68
62
		return new LinkedTaskInfo(null, null, null, comment);
69
		return new LinkedTaskInfo(null, null, null, comment, timestamp);
63
	}
70
	}
64
71
65
	private static String getCommentForElement(Object element) {
72
	private static String getCommentForElement(Object element) {
66
		if (element instanceof LogEntry) {
73
		if (element instanceof IContextChangeSet) {
74
			return ((IContextChangeSet) element).getComment(false);
75
		} else if (element instanceof DiffChangeSet) {
76
			return ((DiffChangeSet) element).getComment();
77
		} else if (element instanceof LogEntry) {
67
			return ((LogEntry) element).getComment();
78
			return ((LogEntry) element).getComment();
79
		} else if (element instanceof IFileRevision) {
80
			return ((IFileRevision) element).getComment();
68
		}
81
		}
69
		return null;
82
		return null;
70
	}
83
	}
(-)src/org/eclipse/mylyn/internal/team/ui/LinkedTaskInfo.java (+14 lines)
Lines 35-40 Link Here
35
35
36
	private ChangeSet changeSet = null;
36
	private ChangeSet changeSet = null;
37
37
38
	private long timestamp = 0;
39
38
	public LinkedTaskInfo(ITask task, ChangeSet changeSet) {
40
	public LinkedTaskInfo(ITask task, ChangeSet changeSet) {
39
		this.task = task;
41
		this.task = task;
40
		this.changeSet = changeSet;
42
		this.changeSet = changeSet;
Lines 51-56 Link Here
51
		this.comment = comment;
53
		this.comment = comment;
52
	}
54
	}
53
55
56
	public LinkedTaskInfo(String repositoryUrl, String taskId, String taskFullUrl, String comment, long timestamp) {
57
		this.repositoryUrl = repositoryUrl;
58
		this.taskId = taskId;
59
		this.taskFullUrl = taskFullUrl;
60
		this.comment = comment;
61
		this.timestamp = timestamp;
62
	}
63
54
	@Override
64
	@Override
55
	public String getRepositoryUrl() {
65
	public String getRepositoryUrl() {
56
		return repositoryUrl;
66
		return repositoryUrl;
Lines 79-82 Link Here
79
		return changeSet;
89
		return changeSet;
80
	}
90
	}
81
91
92
	public long getTimestamp() {
93
		return timestamp;
94
	}
95
82
}
96
}
(-)src/org/eclipse/mylyn/internal/team/ui/actions/OpenCorrespondingTaskAction.java (-2 / +10 lines)
Lines 112-121 Link Here
112
	 */
112
	 */
113
	private static AbstractTaskReference reconcile(AbstractTaskReference info) {
113
	private static AbstractTaskReference reconcile(AbstractTaskReference info) {
114
		ITask task;
114
		ITask task;
115
		long timestamp;
116
115
		if (info instanceof LinkedTaskInfo) {
117
		if (info instanceof LinkedTaskInfo) {
116
			task = ((LinkedTaskInfo) info).getTask();
118
			task = ((LinkedTaskInfo) info).getTask();
119
			timestamp = ((LinkedTaskInfo) info).getTimestamp();
117
		} else {
120
		} else {
118
			task = null;
121
			task = null;
122
			timestamp = 0;
119
		}
123
		}
120
124
121
		if (task != null) {
125
		if (task != null) {
Lines 212-218 Link Here
212
			return new LinkedTaskInfo(task, null);
216
			return new LinkedTaskInfo(task, null);
213
		}
217
		}
214
218
215
		return new LinkedTaskInfo(repositoryUrl, taskId, taskFullUrl, comment);
219
		return new LinkedTaskInfo(repositoryUrl, taskId, taskFullUrl, comment, timestamp);
216
	}
220
	}
217
221
218
	public static String getUrlFromComment(String comment) {
222
	public static String getUrlFromComment(String comment) {
Lines 284-293 Link Here
284
			if (info != null) {
288
			if (info != null) {
285
				info = reconcile(info);
289
				info = reconcile(info);
286
				final ITask task;
290
				final ITask task;
291
				final long timestamp;
292
287
				if (info instanceof LinkedTaskInfo) {
293
				if (info instanceof LinkedTaskInfo) {
288
					task = ((LinkedTaskInfo) info).getTask();
294
					task = ((LinkedTaskInfo) info).getTask();
295
					timestamp = ((LinkedTaskInfo) info).getTimestamp();
289
				} else {
296
				} else {
290
					task = null;
297
					task = null;
298
					timestamp = 0;
291
				}
299
				}
292
				if (task != null) {
300
				if (task != null) {
293
					PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
301
					PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
Lines 305-311 Link Here
305
						AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(repository.getConnectorKind());
313
						AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(repository.getConnectorKind());
306
						if (connectorUi != null) {
314
						if (connectorUi != null) {
307
							TasksUiInternal.openRepositoryTask(connectorUi.getConnectorKind(),
315
							TasksUiInternal.openRepositoryTask(connectorUi.getConnectorKind(),
308
									repository.getRepositoryUrl(), taskId);
316
									repository.getRepositoryUrl(), taskId, timestamp);
309
							return Status.OK_STATUS;
317
							return Status.OK_STATUS;
310
						}
318
						}
311
					}
319
					}

Return to bug 178474