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 181388 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/sandbox/bridge/bugs/BugzillaMylynSearchOperation.java (-2 / +5 lines)
Lines 27-32 Link Here
27
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin;
27
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin;
28
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
28
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
29
import org.eclipse.mylyn.internal.bugzilla.ui.tasklist.StackTrace;
29
import org.eclipse.mylyn.internal.bugzilla.ui.tasklist.StackTrace;
30
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
30
import org.eclipse.mylyn.internal.tasks.ui.search.AbstractRepositorySearchQuery;
31
import org.eclipse.mylyn.internal.tasks.ui.search.AbstractRepositorySearchQuery;
31
import org.eclipse.mylyn.monitor.core.StatusHandler;
32
import org.eclipse.mylyn.monitor.core.StatusHandler;
32
import org.eclipse.mylyn.tasks.core.AbstractTask;
33
import org.eclipse.mylyn.tasks.core.AbstractTask;
Lines 149-155 Link Here
149
		collector.setProgressMonitor(monitor);
150
		collector.setProgressMonitor(monitor);
150
151
151
		// get all of the root tasks and start the search
152
		// get all of the root tasks and start the search
152
		Set<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory().getChildren();
153
		Set<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
154
				LocalRepositoryConnector.REPOSITORY_URL).getChildren();
153
		searchLocal(tasks, collector, elementName, monitor);
155
		searchLocal(tasks, collector, elementName, monitor);
154
		for (AbstractTaskContainer cat : TasksUiPlugin.getTaskListManager().getTaskList().getTaskContainers()) {
156
		for (AbstractTaskContainer cat : TasksUiPlugin.getTaskListManager().getTaskList().getTaskContainers()) {
155
			searchLocal(cat.getChildren(), collector, elementName, monitor);
157
			searchLocal(cat.getChildren(), collector, elementName, monitor);
Lines 179-185 Link Here
179
		collector.setProgressMonitor(monitor);
181
		collector.setProgressMonitor(monitor);
180
182
181
		// get all of the root tasks and start the search
183
		// get all of the root tasks and start the search
182
		Set<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory().getChildren();
184
		Set<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
185
				LocalRepositoryConnector.REPOSITORY_URL).getChildren();
183
		searchLocal(tasks, collector, elementName, monitor);
186
		searchLocal(tasks, collector, elementName, monitor);
184
		for (AbstractTaskContainer cat : TasksUiPlugin.getTaskListManager().getTaskList().getTaskContainers()) {
187
		for (AbstractTaskContainer cat : TasksUiPlugin.getTaskListManager().getTaskList().getTaskContainers()) {
185
			searchLocal(cat.getChildren(), collector, elementName, monitor);
188
			searchLocal(cat.getChildren(), collector, elementName, monitor);
(-)src/org/eclipse/mylyn/bugzilla/tests/TaskReportGeneratorTest.java (-13 / +23 lines)
Lines 17-29 Link Here
17
import junit.framework.TestCase;
17
import junit.framework.TestCase;
18
18
19
import org.eclipse.core.runtime.NullProgressMonitor;
19
import org.eclipse.core.runtime.NullProgressMonitor;
20
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin;
20
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryQuery;
21
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryQuery;
21
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
22
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
23
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
22
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
24
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
23
import org.eclipse.mylyn.internal.tasks.ui.planner.CompletedTaskCollector;
25
import org.eclipse.mylyn.internal.tasks.ui.planner.CompletedTaskCollector;
24
import org.eclipse.mylyn.internal.tasks.ui.planner.TaskReportGenerator;
26
import org.eclipse.mylyn.internal.tasks.ui.planner.TaskReportGenerator;
25
import org.eclipse.mylyn.tasks.core.AbstractTask;
27
import org.eclipse.mylyn.tasks.core.AbstractTask;
26
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
28
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
29
import org.eclipse.mylyn.tasks.core.TaskRepository;
27
import org.eclipse.mylyn.tasks.ui.TaskListManager;
30
import org.eclipse.mylyn.tasks.ui.TaskListManager;
28
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
31
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
29
32
Lines 54-60 Link Here
54
57
55
	public void testCompletedTasksRetrieved() throws InvocationTargetException, InterruptedException {
58
	public void testCompletedTasksRetrieved() throws InvocationTargetException, InterruptedException {
56
		AbstractTask task1 = manager.createNewLocalTask("task 1");
59
		AbstractTask task1 = manager.createNewLocalTask("task 1");
57
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
60
		manager.getTaskList().addTask(task1);
58
61
59
		CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0), new Date());
62
		CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0), new Date());
60
		TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
63
		TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
Lines 73-79 Link Here
73
76
74
	public void testCompletedTasksDateBoundsRetrieved() throws InvocationTargetException, InterruptedException {
77
	public void testCompletedTasksDateBoundsRetrieved() throws InvocationTargetException, InterruptedException {
75
		AbstractTask task1 = manager.createNewLocalTask("task 1");
78
		AbstractTask task1 = manager.createNewLocalTask("task 1");
76
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
79
		manager.getTaskList().addTask(task1);
77
		task1.setCompleted(true);
80
		task1.setCompleted(true);
78
		Thread.sleep(1000);
81
		Thread.sleep(1000);
79
		long now = new Date().getTime();
82
		long now = new Date().getTime();
Lines 93-102 Link Here
93
	}
96
	}
94
97
95
	public void testCompletedBugzillaTasksRetrieved() throws InvocationTargetException, InterruptedException {
98
	public void testCompletedBugzillaTasksRetrieved() throws InvocationTargetException, InterruptedException {
96
		BugzillaTask task1 = new BugzillaTask("repo", "1", "bugzillatask 1");
99
		TaskRepository repository = new TaskRepository(BugzillaCorePlugin.REPOSITORY_KIND,
97
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
100
				IBugzillaConstants.ECLIPSE_BUGZILLA_URL);
98
101
		TasksUiPlugin.getRepositoryManager().addRepository(repository,
99
		CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0), new Date());
102
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
103
		BugzillaTask task1 = new BugzillaTask(IBugzillaConstants.ECLIPSE_BUGZILLA_URL, "1", "bugzillatask 1");
104
		manager.getTaskList().addTask(task1);
105
106
		Calendar cal = Calendar.getInstance();
107
		cal.add(Calendar.MINUTE, 5);
108
		CompletedTaskCollector collector = new CompletedTaskCollector(new Date(0), cal.getTime());
100
		TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
109
		TaskReportGenerator generator = new TaskReportGenerator(manager.getTaskList());
101
		generator.addCollector(collector);
110
		generator.addCollector(collector);
102
		generator.run(new NullProgressMonitor());
111
		generator.run(new NullProgressMonitor());
Lines 106-116 Link Here
106
		generator.run(new NullProgressMonitor());
115
		generator.run(new NullProgressMonitor());
107
		assertEquals(1, generator.getAllCollectedTasks().size());
116
		assertEquals(1, generator.getAllCollectedTasks().size());
108
		assertEquals(task1, generator.getAllCollectedTasks().get(0));
117
		assertEquals(task1, generator.getAllCollectedTasks().get(0));
118
		TasksUiPlugin.getRepositoryManager().removeRepository(repository,
119
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
120
		manager.resetTaskList();
109
	}
121
	}
110
122
111
	public void testCompletedTasksInCategoryRetrieved() throws InvocationTargetException, InterruptedException {
123
	public void testCompletedTasksInCategoryRetrieved() throws InvocationTargetException, InterruptedException {
112
		AbstractTask task1 = manager.createNewLocalTask("task 1");
124
		AbstractTask task1 = manager.createNewLocalTask("task 1");
113
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
125
		manager.getTaskList().addTask(task1);
114
		task1.setCompleted(true);
126
		task1.setCompleted(true);
115
		TaskCategory cat1 = new TaskCategory("TaskReportGeneratorTest Category");
127
		TaskCategory cat1 = new TaskCategory("TaskReportGeneratorTest Category");
116
		manager.getTaskList().addCategory(cat1);
128
		manager.getTaskList().addCategory(cat1);
Lines 124-130 Link Here
124
		generator.run(new NullProgressMonitor());
136
		generator.run(new NullProgressMonitor());
125
		assertEquals(0, generator.getAllCollectedTasks().size());
137
		assertEquals(0, generator.getAllCollectedTasks().size());
126
138
127
		manager.getTaskList().moveToContainer(task1, cat1);
139
		manager.getTaskList().moveTask(task1, cat1);
128
140
129
		generator.run(new NullProgressMonitor());
141
		generator.run(new NullProgressMonitor());
130
		assertEquals(1, generator.getAllCollectedTasks().size());
142
		assertEquals(1, generator.getAllCollectedTasks().size());
Lines 133-140 Link Here
133
145
134
	public void testCompletedBugzillaTasksInCategoryRetrieved() throws InvocationTargetException, InterruptedException {
146
	public void testCompletedBugzillaTasksInCategoryRetrieved() throws InvocationTargetException, InterruptedException {
135
		BugzillaTask task1 = new BugzillaTask("repo", "1", "task 1");
147
		BugzillaTask task1 = new BugzillaTask("repo", "1", "task 1");
136
		manager.getTaskList().moveToContainer(task1,
148
		manager.getTaskList().addTask(task1);
137
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
138
		task1.setCompleted(true);
149
		task1.setCompleted(true);
139
		TaskCategory cat1 = new TaskCategory("TaskReportGeneratorTest Category");
150
		TaskCategory cat1 = new TaskCategory("TaskReportGeneratorTest Category");
140
		manager.getTaskList().addCategory(cat1);
151
		manager.getTaskList().addCategory(cat1);
Lines 148-154 Link Here
148
		generator.run(new NullProgressMonitor());
159
		generator.run(new NullProgressMonitor());
149
		assertEquals(0, generator.getAllCollectedTasks().size());
160
		assertEquals(0, generator.getAllCollectedTasks().size());
150
161
151
		manager.getTaskList().moveToContainer(task1, cat1);
162
		manager.getTaskList().moveTask(task1, cat1);
152
163
153
		generator.run(new NullProgressMonitor());
164
		generator.run(new NullProgressMonitor());
154
		assertEquals(1, generator.getAllCollectedTasks().size());
165
		assertEquals(1, generator.getAllCollectedTasks().size());
Lines 157-164 Link Here
157
168
158
	public void testCompletedBugzillaTasksInQueryRetrieved() throws InvocationTargetException, InterruptedException {
169
	public void testCompletedBugzillaTasksInQueryRetrieved() throws InvocationTargetException, InterruptedException {
159
		BugzillaTask task1 = new BugzillaTask("repo", "1", "task 1");
170
		BugzillaTask task1 = new BugzillaTask("repo", "1", "task 1");
160
		manager.getTaskList().moveToContainer(task1,
171
		manager.getTaskList().addTask(task1);
161
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
162
		task1.setCompleted(false);
172
		task1.setCompleted(false);
163
173
164
		BugzillaRepositoryQuery bugQuery = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl",
174
		BugzillaRepositoryQuery bugQuery = new BugzillaRepositoryQuery("repositoryUrl", "queryUrl",
(-)src/org/eclipse/mylyn/bugzilla/tests/TaskListStandaloneTest.java (-3 / +3 lines)
Lines 56-62 Link Here
56
		AbstractTask task = new LocalTask("1", "task 1");
56
		AbstractTask task = new LocalTask("1", "task 1");
57
		Date dueDate = new Date();
57
		Date dueDate = new Date();
58
		task.setDueDate(dueDate);
58
		task.setDueDate(dueDate);
59
		manager.getTaskList().moveToContainer(task, manager.getTaskList().getDefaultCategory());
59
		manager.getTaskList().addTask(task);
60
		assertEquals(1, manager.getTaskList().getAllTasks().size());
60
		assertEquals(1, manager.getTaskList().getAllTasks().size());
61
61
62
		manager.saveTaskList();
62
		manager.saveTaskList();
Lines 88-94 Link Here
88
		Date creation = new Date();
88
		Date creation = new Date();
89
		AbstractTask task = new LocalTask("1", "task 1");
89
		AbstractTask task = new LocalTask("1", "task 1");
90
90
91
		manager.getTaskList().moveToContainer(task, manager.getTaskList().getDefaultCategory());
91
		manager.getTaskList().addTask(task);
92
		assertDatesCloseEnough(task.getCreationDate(), start);
92
		assertDatesCloseEnough(task.getCreationDate(), start);
93
93
94
		task.setCompleted(true);
94
		task.setCompleted(true);
Lines 97-103 Link Here
97
		task.setScheduledForDate(start);
97
		task.setScheduledForDate(start);
98
		assertDatesCloseEnough(task.getScheduledForDate(), start);
98
		assertDatesCloseEnough(task.getScheduledForDate(), start);
99
99
100
		assertEquals(2, manager.getTaskList().getRootElements().size());
100
		assertEquals(1, manager.getTaskList().getRootElements().size());
101
		manager.saveTaskList();
101
		manager.saveTaskList();
102
102
103
		assertNotNull(manager.getTaskList());
103
		assertNotNull(manager.getTaskList());
(-)src/org/eclipse/mylyn/bugzilla/tests/RepositoryTaskHandleTest.java (-6 / +12 lines)
Lines 12-17 Link Here
12
12
13
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
13
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
14
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
14
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
15
import org.eclipse.mylyn.tasks.core.TaskRepository;
16
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
15
import org.eclipse.mylyn.tasks.ui.TaskListManager;
17
import org.eclipse.mylyn.tasks.ui.TaskListManager;
16
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
18
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
17
19
Lines 51-74 Link Here
51
	// }
53
	// }
52
54
53
	public void testRepositoryUrlHandles() {
55
	public void testRepositoryUrlHandles() {
56
		String repositoryUrl = IBugzillaConstants.ECLIPSE_BUGZILLA_URL;
57
		TaskRepository repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, repositoryUrl);
58
		TasksUiPlugin.getRepositoryManager().addRepository(repository,
59
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
54
60
55
		String repository = IBugzillaConstants.ECLIPSE_BUGZILLA_URL;
56
		String id = "123";
61
		String id = "123";
57
		BugzillaTask bugTask = new BugzillaTask(repository, id, "label 124");
62
		BugzillaTask bugTask = new BugzillaTask(repositoryUrl, id, "label 124");
58
		assertEquals(repository, bugTask.getRepositoryUrl());
63
		assertEquals(repositoryUrl, bugTask.getRepositoryUrl());
59
64
60
		manager.getTaskList().moveToContainer(bugTask,
65
		manager.getTaskList().addTask(bugTask);
61
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
62
		manager.saveTaskList();
66
		manager.saveTaskList();
63
		manager.resetTaskList();
67
		manager.resetTaskList();
64
		manager.readExistingOrCreateNewList();
68
		manager.readExistingOrCreateNewList();
65
69
66
		BugzillaTask readReport = (BugzillaTask) manager.getTaskList()
70
		BugzillaTask readReport = (BugzillaTask) manager.getTaskList()
67
				.getDefaultCategory()
71
				.getOrphanContainer(repositoryUrl)
68
				.getChildren()
72
				.getChildren()
69
				.iterator()
73
				.iterator()
70
				.next();
74
				.next();
71
		assertEquals(readReport.getSummary(), readReport.getSummary());
75
		assertEquals(readReport.getSummary(), readReport.getSummary());
72
		assertEquals(readReport.getRepositoryUrl(), readReport.getRepositoryUrl());
76
		assertEquals(readReport.getRepositoryUrl(), readReport.getRepositoryUrl());
77
		TasksUiPlugin.getRepositoryManager().removeRepository(repository,
78
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
73
	}
79
	}
74
}
80
}
(-)src/org/eclipse/mylyn/bugzilla/tests/BugzillaRepositoryConnectorTest.java (-7 / +4 lines)
Lines 57-64 Link Here
57
				task.getTaskId());
57
				task.getTaskId());
58
		assertNotNull(taskData);
58
		assertNotNull(taskData);
59
59
60
		TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
60
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
61
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
62
61
63
		String newCommentText = "BugzillaRepositoryClientTest.testMidAirCollision(): test " + (new Date()).toString();
62
		String newCommentText = "BugzillaRepositoryClientTest.testMidAirCollision(): test " + (new Date()).toString();
64
		taskData.setNewComment(newCommentText);
63
		taskData.setNewComment(newCommentText);
Lines 132-139 Link Here
132
				task.getTaskId());
131
				task.getTaskId());
133
		assertNotNull(taskData);
132
		assertNotNull(taskData);
134
133
135
		TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
134
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
136
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
137
135
138
		assertEquals("rob.elves@eclipse.org", taskData.getAssignedTo());
136
		assertEquals("rob.elves@eclipse.org", taskData.getAssignedTo());
139
		// Modify it (reassign to tests2@mylyn.eclipse.org)
137
		// Modify it (reassign to tests2@mylyn.eclipse.org)
Lines 182-188 Link Here
182
				task.getTaskId());
180
				task.getTaskId());
183
		assertNotNull(taskData);
181
		assertNotNull(taskData);
184
182
185
		TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
183
		TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task,
186
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
184
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
187
185
188
		assertEquals(defaultAssignee, taskData.getAssignedTo());
186
		assertEquals(defaultAssignee, taskData.getAssignedTo());
Lines 386-393 Link Here
386
				task.getTaskId());
384
				task.getTaskId());
387
		assertNotNull(taskData);
385
		assertNotNull(taskData);
388
386
389
		TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
387
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(task);
390
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
391
		int numComments = taskData.getComments().size();
388
		int numComments = taskData.getComments().size();
392
389
393
		// Modify it
390
		// Modify it
(-)src/org/eclipse/mylyn/bugzilla/tests/AbstractBugzillaTest.java (-2 / +2 lines)
Lines 59-65 Link Here
59
		super.setUp();
59
		super.setUp();
60
		TasksUiPlugin.getTaskDataManager().clear();
60
		TasksUiPlugin.getTaskDataManager().clear();
61
		manager = TasksUiPlugin.getRepositoryManager();
61
		manager = TasksUiPlugin.getRepositoryManager();
62
		TasksUiPlugin.getTaskListManager().getTaskList().reset();
62
		TasksUiPlugin.getTaskListManager().resetTaskList();//getTaskList().reset();
63
		manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
63
		manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
64
	}
64
	}
65
65
Lines 122-128 Link Here
122
				new NullProgressMonitor());
122
				new NullProgressMonitor());
123
		TasksUiPlugin.getSynchronizationManager().setTaskRead(task, true);
123
		TasksUiPlugin.getSynchronizationManager().setTaskRead(task, true);
124
		assertNotNull(task);
124
		assertNotNull(task);
125
		TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
125
		TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task,
126
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
126
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
127
127
128
		return task;
128
		return task;
(-)src/org/eclipse/mylyn/bugzilla/tests/BugzillaTaskListManagerTest.java (-6 / +12 lines)
Lines 23-30 Link Here
23
import org.eclipse.mylyn.tasks.core.AbstractTask;
23
import org.eclipse.mylyn.tasks.core.AbstractTask;
24
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
24
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
25
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
25
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
26
import org.eclipse.mylyn.tasks.core.TaskRepository;
27
import org.eclipse.mylyn.tasks.core.TaskList;
26
import org.eclipse.mylyn.tasks.core.TaskList;
27
import org.eclipse.mylyn.tasks.core.TaskRepository;
28
import org.eclipse.mylyn.tasks.ui.TaskListManager;
28
import org.eclipse.mylyn.tasks.ui.TaskListManager;
29
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
29
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
30
30
Lines 87-96 Link Here
87
	}
87
	}
88
88
89
	public void testRepositoryTaskExternalization() {
89
	public void testRepositoryTaskExternalization() {
90
		BugzillaTask repositoryTask = new BugzillaTask("repo", "1", "label");
90
		BugzillaTask repositoryTask = new BugzillaTask(IBugzillaConstants.ECLIPSE_BUGZILLA_URL, "1", "label");
91
		repositoryTask.setTaskKind("kind");
91
		repositoryTask.setTaskKind("kind");
92
		manager.getTaskList().moveToContainer(repositoryTask,
92
		manager.getTaskList().addTask(repositoryTask);
93
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
94
		manager.saveTaskList();
93
		manager.saveTaskList();
95
94
96
		manager.resetTaskList();
95
		manager.resetTaskList();
Lines 98-105 Link Here
98
		// TaskList list = new TaskList();
97
		// TaskList list = new TaskList();
99
		// manager.setTaskList(list);
98
		// manager.setTaskList(list);
100
		manager.readExistingOrCreateNewList();
99
		manager.readExistingOrCreateNewList();
101
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
100
		assertEquals(1, manager.getTaskList()
102
		AbstractTask readTask = manager.getTaskList().getDefaultCategory().getChildren().iterator().next();
101
				.getOrphanContainer(IBugzillaConstants.ECLIPSE_BUGZILLA_URL)
102
				.getChildren()
103
				.size());
104
		AbstractTask readTask = manager.getTaskList()
105
				.getOrphanContainer(IBugzillaConstants.ECLIPSE_BUGZILLA_URL)
106
				.getChildren()
107
				.iterator()
108
				.next();
103
109
104
		assertEquals(repositoryTask.getHandleIdentifier(), readTask.getHandleIdentifier());
110
		assertEquals(repositoryTask.getHandleIdentifier(), readTask.getHandleIdentifier());
105
		assertEquals(repositoryTask.getSummary(), readTask.getSummary());
111
		assertEquals(repositoryTask.getSummary(), readTask.getSummary());
(-)src/org/eclipse/mylyn/jira/tests/JiraTaskExternalizationTest.java (-2 / +2 lines)
Lines 120-126 Link Here
120
	public void testCompletionSave() {
120
	public void testCompletionSave() {
121
		JiraTask jiraTask = new JiraTask(SERVER_URL, TEST_TASK, TEST_LABEL);
121
		JiraTask jiraTask = new JiraTask(SERVER_URL, TEST_TASK, TEST_LABEL);
122
		jiraTask.setCompleted(true);
122
		jiraTask.setCompleted(true);
123
		manager.getTaskList().moveToContainer(jiraTask, manager.getTaskList().getDefaultCategory());
123
		manager.getTaskList().addTask(jiraTask);
124
124
125
		manager.saveTaskList();
125
		manager.saveTaskList();
126
		manager.resetTaskList();
126
		manager.resetTaskList();
Lines 133-139 Link Here
133
		JiraTask jiraTask = new JiraTask(SERVER_URL + "testSave", TEST_TASK, TEST_LABEL);
133
		JiraTask jiraTask = new JiraTask(SERVER_URL + "testSave", TEST_TASK, TEST_LABEL);
134
		String testUrl = "http://foo";
134
		String testUrl = "http://foo";
135
		jiraTask.setUrl(testUrl);
135
		jiraTask.setUrl(testUrl);
136
		manager.getTaskList().moveToContainer(jiraTask, manager.getTaskList().getDefaultCategory());
136
		manager.getTaskList().addTask(jiraTask);
137
137
138
		manager.saveTaskList();
138
		manager.saveTaskList();
139
		manager.resetTaskList();
139
		manager.resetTaskList();
(-)src/org/eclipse/mylyn/jira/tests/JiraTaskArchiveTest.java (-3 / +13 lines)
Lines 14-19 Link Here
14
import org.eclipse.mylyn.internal.jira.ui.JiraUiPlugin;
14
import org.eclipse.mylyn.internal.jira.ui.JiraUiPlugin;
15
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
15
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
16
import org.eclipse.mylyn.tasks.core.TaskList;
16
import org.eclipse.mylyn.tasks.core.TaskList;
17
import org.eclipse.mylyn.tasks.core.TaskRepository;
17
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
18
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
18
19
19
/**
20
/**
Lines 58-71 Link Here
58
		AbstractRepositoryConnector client = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
59
		AbstractRepositoryConnector client = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
59
				JiraUiPlugin.REPOSITORY_KIND);
60
				JiraUiPlugin.REPOSITORY_KIND);
60
		assertNotNull(client);
61
		assertNotNull(client);
61
		assertEquals(0, taskList.getArchiveContainer().getChildren().size());
62
63
		TaskRepository repository = new TaskRepository(JiraUiPlugin.REPOSITORY_KIND, "repo");
64
		TasksUiPlugin.getRepositoryManager().addRepository(repository,
65
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
66
62
		JiraTask task1 = new JiraTask("repo", HANDLE1, LABEL);
67
		JiraTask task1 = new JiraTask("repo", HANDLE1, LABEL);
68
		task1.setLastReadTimeStamp("now");
63
		JiraTask task2 = new JiraTask("repo", HANDLE1, LABEL);
69
		JiraTask task2 = new JiraTask("repo", HANDLE1, LABEL);
64
70
		task2.setLastReadTimeStamp("now");
65
		taskList.addTask(task1);
71
		taskList.addTask(task1);
66
		taskList.addTask(task2);
72
		taskList.addTask(task2);
67
73
68
		assertEquals(1, taskList.getArchiveContainer().getChildren().size());
74
		assertEquals(1, taskList.getOrphanContainer("repo").getChildren().size());
69
		assertEquals(taskList.getTask("repo-" + HANDLE1), task1);
75
		assertEquals(taskList.getTask("repo-" + HANDLE1), task1);
76
77
		TasksUiPlugin.getRepositoryManager().removeRepository(repository,
78
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
79
		TasksUiPlugin.getTaskListManager().resetTaskList();
70
	}
80
	}
71
}
81
}
(-)src/org/eclipse/mylyn/tasks/core/AbstractTaskContainer.java (-6 / +2 lines)
Lines 13-18 Link Here
13
import java.util.concurrent.CopyOnWriteArraySet;
13
import java.util.concurrent.CopyOnWriteArraySet;
14
14
15
import org.eclipse.core.runtime.PlatformObject;
15
import org.eclipse.core.runtime.PlatformObject;
16
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
16
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
17
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
17
18
18
/**
19
/**
Lines 23-33 Link Here
23
 */
24
 */
24
public abstract class AbstractTaskContainer extends PlatformObject implements Comparable<AbstractTaskContainer> {
25
public abstract class AbstractTaskContainer extends PlatformObject implements Comparable<AbstractTaskContainer> {
25
26
26
	/**
27
	 * TODO: consider removing in 3.0 if handled by content provider
28
	 */
29
	private static final int MAX_SUBTASK_DEPTH = 10;
30
31
	private String handleIdentifier = "";
27
	private String handleIdentifier = "";
32
28
33
	private Set<AbstractTask> children = new CopyOnWriteArraySet<AbstractTask>();
29
	private Set<AbstractTask> children = new CopyOnWriteArraySet<AbstractTask>();
Lines 103-109 Link Here
103
	}
99
	}
104
100
105
	private boolean containsHelper(Set<AbstractTask> children, String handle, int depth) {
101
	private boolean containsHelper(Set<AbstractTask> children, String handle, int depth) {
106
		if (depth < MAX_SUBTASK_DEPTH && children != null && !children.isEmpty()) {
102
		if (depth < ITasksCoreConstants.MAX_SUBTASK_DEPTH && children != null && !children.isEmpty()) {
107
			for (AbstractTask child : children) {
103
			for (AbstractTask child : children) {
108
				if (handle.equals(child.getHandleIdentifier())
104
				if (handle.equals(child.getHandleIdentifier())
109
						|| containsHelper(child.getChildrenInternal(), handle, depth + 1)) {
105
						|| containsHelper(child.getChildrenInternal(), handle, depth + 1)) {
(-)src/org/eclipse/mylyn/tasks/core/TaskSelection.java (-1 / +1 lines)
Lines 46-52 Link Here
46
46
47
	public TaskSelection(String summary, String description) {
47
	public TaskSelection(String summary, String description) {
48
		RepositoryTaskData taskData = new RepositoryTaskData(new IdentityAttributeFactory(),
48
		RepositoryTaskData taskData = new RepositoryTaskData(new IdentityAttributeFactory(),
49
				LocalRepositoryConnector.REPOSITORY_KIND, LocalRepositoryConnector.REPOSITORY_URL, "");
49
				LocalRepositoryConnector.CONNECTOR_KIND, LocalRepositoryConnector.REPOSITORY_URL, "");
50
		taskData.setSummary(summary);
50
		taskData.setSummary(summary);
51
		taskData.setDescription(description);
51
		taskData.setDescription(description);
52
		this.taskData = taskData;
52
		this.taskData = taskData;
(-)src/org/eclipse/mylyn/tasks/core/AbstractTaskCategory.java (+2 lines)
Lines 23-28 Link Here
23
	/**
23
	/**
24
	 * Override to return true for categories that the user creates, deletes, and renames. Return false for categories
24
	 * Override to return true for categories that the user creates, deletes, and renames. Return false for categories
25
	 * that are managed
25
	 * that are managed
26
	 * 
27
	 * @API-3.0: Move up into AbstractTaskContainer
26
	 */
28
	 */
27
	public abstract boolean isUserDefined();
29
	public abstract boolean isUserDefined();
28
30
(-)src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java (+5 lines)
Lines 19-24 Link Here
19
import java.util.Set;
19
import java.util.Set;
20
20
21
import org.eclipse.core.runtime.Platform;
21
import org.eclipse.core.runtime.Platform;
22
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
22
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoriesExternalizer;
23
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoriesExternalizer;
23
import org.eclipse.mylyn.monitor.core.StatusHandler;
24
import org.eclipse.mylyn.monitor.core.StatusHandler;
24
25
Lines 96-101 Link Here
96
		}
97
		}
97
		repositories.add(repository);
98
		repositories.add(repository);
98
		saveRepositories(repositoryFilePath);
99
		saveRepositories(repositoryFilePath);
100
101
		taskList.addOrphanContainer(new OrphanedTasksContainer(repository.getConnectorKind(), repository.getUrl()));
102
99
		for (ITaskRepositoryListener listener : listeners) {
103
		for (ITaskRepositoryListener listener : listeners) {
100
			listener.repositoryAdded(repository);
104
			listener.repositoryAdded(repository);
101
		}
105
		}
Lines 106-111 Link Here
106
		if (repositories != null) {
110
		if (repositories != null) {
107
			repository.flushAuthenticationCredentials();
111
			repository.flushAuthenticationCredentials();
108
			repositories.remove(repository);
112
			repositories.remove(repository);
113
			taskList.removeOrphanContainer(repository.getUrl());
109
		}
114
		}
110
		saveRepositories(repositoryFilePath);
115
		saveRepositories(repositoryFilePath);
111
		for (ITaskRepositoryListener listener : listeners) {
116
		for (ITaskRepositoryListener listener : listeners) {
(-)src/org/eclipse/mylyn/tasks/core/TaskList.java (-45 / +285 lines)
Lines 19-25 Link Here
19
import java.util.concurrent.CopyOnWriteArrayList;
19
import java.util.concurrent.CopyOnWriteArrayList;
20
import java.util.concurrent.CopyOnWriteArraySet;
20
import java.util.concurrent.CopyOnWriteArraySet;
21
21
22
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
23
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
22
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
24
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
25
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
23
import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil;
26
import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil;
24
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
27
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
25
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
28
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
Lines 38-79 Link Here
38
41
39
	private Set<ITaskListChangeListener> changeListeners = new CopyOnWriteArraySet<ITaskListChangeListener>();
42
	private Set<ITaskListChangeListener> changeListeners = new CopyOnWriteArraySet<ITaskListChangeListener>();
40
43
44
	private Map<String, OrphanedTasksContainer> repositoryOrphansMap;
45
41
	private Map<String, AbstractTask> tasks;
46
	private Map<String, AbstractTask> tasks;
42
47
43
	private Map<String, AbstractTaskCategory> categories;
48
	private Map<String, AbstractTaskCategory> categories;
44
49
45
	private Map<String, AbstractRepositoryQuery> queries;
50
	private Map<String, AbstractRepositoryQuery> queries;
46
51
52
	private List<AbstractTask> activeTasks;
53
47
	private TaskArchive archiveContainer;
54
	private TaskArchive archiveContainer;
48
55
49
	private UnfiledCategory defaultCategory;
56
	private UnfiledCategory defaultCategory;
50
57
51
	private List<AbstractTask> activeTasks;
52
53
	public TaskList() {
58
	public TaskList() {
54
		reset();
59
		reset();
55
	}
60
	}
56
61
62
	private void addOrphan(AbstractTask task, Set<TaskContainerDelta> delta) {
63
		addOrphan(task, delta, 0);
64
	}
65
66
	private void addOrphan(AbstractTask task, Set<TaskContainerDelta> delta, int depth) {
67
		if (/*task.getLastReadTimeStamp() == null ||*/!getQueriesForHandle(task.getHandleIdentifier()).isEmpty()
68
				|| getCategoryForHandle(task.getHandleIdentifier()) != null) {
69
			// Current policy is not to archive/orphan if the task exists in some other container
70
			return;
71
		}
72
73
		if (task instanceof LocalTask) {
74
			moveTask(task, defaultCategory);
75
			return;
76
		}
77
78
		OrphanedTasksContainer orphans = repositoryOrphansMap.get(task.getRepositoryUrl());
79
		//		if (orphans == null) {
80
		//			orphans = new OrphanedTasksContainer(task.getConnectorKind(), task.getRepositoryUrl());
81
		//			repositoryOrphansMap.put(task.getRepositoryUrl(), orphans);
82
		//			//categories.put(orphans.getHandleIdentifier(), orphans);
83
		//		}
84
85
		if (orphans != null) {
86
			if (!orphans.contains(task.getHandleIdentifier())) {
87
				orphans.internalAddChild(task);
88
				if (delta != null) {
89
					delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
90
				}
91
			}
92
			task.addParentContainer(orphans);
93
		} else {
94
			//StatusHandler.log("Orphan container not found for: " + task.getRepositoryUrl(), this);
95
		}
96
97
		if (depth < ITasksCoreConstants.MAX_SUBTASK_DEPTH && !task.isEmpty()) {
98
			for (AbstractTask child : task.getChildren()) {
99
				addOrphan(child, delta, depth + 1);
100
			}
101
		}
102
103
	}
104
105
	private void removeOrphan(AbstractTask task, Set<TaskContainerDelta> delta) {
106
		removeOrphan(task, delta, 0);
107
	}
108
109
	private void removeOrphan(AbstractTask task, Set<TaskContainerDelta> delta, int depth) {
110
		OrphanedTasksContainer orphans = repositoryOrphansMap.get(task.getRepositoryUrl());
111
		if (orphans != null) {
112
			if (orphans.contains(task.getHandleIdentifier())) {
113
				orphans.internalRemoveChild(task);
114
				if (delta != null) {
115
					delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
116
				}
117
118
				if (depth < ITasksCoreConstants.MAX_SUBTASK_DEPTH && !task.isEmpty()) {
119
					for (AbstractTask child : task.getChildren()) {
120
						removeOrphan(child, delta, depth + 1);
121
					}
122
				}
123
124
			}
125
126
//			if (orphans.isEmpty() && !orphans.getRepositoryUrl().equals(LocalRepositoryConnector.REPOSITORY_URL)) {
127
//				repositoryOrphansMap.remove(task.getRepositoryUrl());
128
//				if (delta != null) {
129
//					delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
130
//				}
131
//			}
132
			task.removeParentContainer(orphans);
133
		}
134
	}
135
136
	/**
137
	 * @since 2.2
138
	 */
139
	public Set<OrphanedTasksContainer> getOrphanContainers() {
140
		return Collections.unmodifiableSet(new HashSet<OrphanedTasksContainer>(repositoryOrphansMap.values()));
141
	}
142
143
	/**
144
	 * @since 2.2
145
	 */
146
	public OrphanedTasksContainer getOrphanContainer(String repositoryUrl) {
147
		return repositoryOrphansMap.get(repositoryUrl);
148
	}
149
57
	/**
150
	/**
58
	 * Public for testing.
151
	 * Public for testing.
59
	 */
152
	 */
60
	public void reset() {
153
	public void reset() {
61
		tasks = new ConcurrentHashMap<String, AbstractTask>();
154
		tasks = new ConcurrentHashMap<String, AbstractTask>();
62
155
156
		repositoryOrphansMap = new ConcurrentHashMap<String, OrphanedTasksContainer>();
157
//		repositoryOrphansMap.put(LocalRepositoryConnector.REPOSITORY_URL, new OrphanedTasksContainer(
158
//				LocalRepositoryConnector.CONNECTOR_KIND, LocalRepositoryConnector.REPOSITORY_URL));
159
63
		categories = new ConcurrentHashMap<String, AbstractTaskCategory>();
160
		categories = new ConcurrentHashMap<String, AbstractTaskCategory>();
64
		queries = new ConcurrentHashMap<String, AbstractRepositoryQuery>();
161
		queries = new ConcurrentHashMap<String, AbstractRepositoryQuery>();
65
162
66
		archiveContainer = new TaskArchive();
163
		archiveContainer = new TaskArchive(this);
67
		defaultCategory = new UnfiledCategory();
164
		defaultCategory = new UnfiledCategory();
68
165
69
		activeTasks = new CopyOnWriteArrayList<AbstractTask>();
166
		activeTasks = new CopyOnWriteArrayList<AbstractTask>();
70
		lastLocalTaskId = 0;
167
		lastLocalTaskId = 0;
71
		categories.put(defaultCategory.getHandleIdentifier(), defaultCategory);
168
		categories.put(defaultCategory.getHandleIdentifier(), defaultCategory);
72
		categories.put(archiveContainer.getHandleIdentifier(), archiveContainer);
169
//		categories.put(archiveContainer.getHandleIdentifier(), archiveContainer);
73
	}
170
	}
74
171
172
	/**
173
	 * Add orphaned task to the task list
174
	 */
75
	public void addTask(AbstractTask task) throws IllegalArgumentException {
175
	public void addTask(AbstractTask task) throws IllegalArgumentException {
76
		addTask(task, archiveContainer);
176
		addTask(task, null);
77
	}
177
	}
78
178
79
	/**
179
	/**
Lines 94-100 Link Here
94
	}
194
	}
95
195
96
	/**
196
	/**
97
	 * Precondition: {@code container} already exists in tasklist (be it a parent task, category, or query)
197
	 * Precondition: {@code container} already exists in tasklist (be it a parent task, category, or query) If the
198
	 * parentContainer is null the task is considered an orphan and added to the appropriate repository's orphaned tasks
199
	 * container.
98
	 * 
200
	 * 
99
	 * @param task
201
	 * @param task
100
	 *            to be added (hit, subtask, etc)
202
	 *            to be added (hit, subtask, etc)
Lines 111-118 Link Here
111
		if (newTask == null) {
213
		if (newTask == null) {
112
			newTask = task;
214
			newTask = task;
113
			tasks.put(newTask.getHandleIdentifier(), newTask);
215
			tasks.put(newTask.getHandleIdentifier(), newTask);
114
//			archiveContainer.addChild(newTask);
115
//			newTask.addParentContainer(archiveContainer);
116
216
117
			// NOTE: only called for newly-created tasks
217
			// NOTE: only called for newly-created tasks
118
			Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
218
			Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
Lines 126-141 Link Here
126
		}
226
		}
127
227
128
		if (parentContainer != null) {
228
		if (parentContainer != null) {
229
			if (parentContainer instanceof AbstractTask) {
230
				// Ensure the parent task exists in the task list
231
				tasks.put(parentContainer.getHandleIdentifier(), (AbstractTask) parentContainer);
232
				addOrphan((AbstractTask) parentContainer, null);
233
				// TODO: will need to update map of children to parents here
234
			}
235
236
			removeOrphan(newTask, null);
237
129
			parentContainer.internalAddChild(newTask);
238
			parentContainer.internalAddChild(newTask);
239
130
			if (!(parentContainer instanceof AbstractTask) && !(parentContainer instanceof AbstractRepositoryQuery)) {
240
			if (!(parentContainer instanceof AbstractTask) && !(parentContainer instanceof AbstractRepositoryQuery)) {
131
				newTask.addParentContainer(parentContainer);
241
				newTask.addParentContainer(parentContainer);
132
			}
242
			}
133
		} else {
243
		} else {
134
			defaultCategory.internalAddChild(newTask);
244
			// TODO: if the task has a parent task which isn't orphaned than the current task isn't orphaned
135
			newTask.addParentContainer(defaultCategory);
245
			// check map of children to parents first
246
			addOrphan(task, null);
136
		}
247
		}
137
	}
248
	}
138
249
250
	/**
251
	 * @since 2.2
252
	 */
253
	public void moveTask(AbstractTask task, AbstractTaskContainer container) {
254
		if (!tasks.containsKey(task.getHandleIdentifier())) {
255
			tasks.put(task.getHandleIdentifier(), task);
256
		}
257
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
258
		delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED));
259
260
		Set<AbstractTaskContainer> currentContainers = task.getParentContainers();
261
		for (AbstractTaskContainer taskContainer : currentContainers) {
262
			if (taskContainer instanceof AbstractTaskCategory) {
263
				if (!(taskContainer instanceof OrphanedTasksContainer)) {
264
					taskContainer.internalRemoveChild(task);
265
				}
266
				task.removeParentContainer(taskContainer);
267
				delta.add(new TaskContainerDelta(taskContainer, TaskContainerDelta.Kind.CHANGED));
268
			}
269
		}
270
		if (container != null) {
271
			addTask(task, container);
272
			//internalAddTask(task, container);
273
			delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED));
274
			if (!(container instanceof OrphanedTasksContainer)) {
275
				removeOrphan(task, delta);
276
			}
277
		} else {
278
			internalAddTask(task, null);
279
		}
280
		for (ITaskListChangeListener listener : changeListeners) {
281
			listener.containersChanged(delta);
282
		}
283
	}
284
285
	/**
286
	 * @deprecated
287
	 */
139
	public void moveToContainer(AbstractTask task, AbstractTaskCategory container) {
288
	public void moveToContainer(AbstractTask task, AbstractTaskCategory container) {
140
		if (!tasks.containsKey(task.getHandleIdentifier())) {
289
		if (!tasks.containsKey(task.getHandleIdentifier())) {
141
			tasks.put(task.getHandleIdentifier(), task);
290
			tasks.put(task.getHandleIdentifier(), task);
Lines 146-154 Link Here
146
		Set<AbstractTaskContainer> currentContainers = task.getParentContainers();
295
		Set<AbstractTaskContainer> currentContainers = task.getParentContainers();
147
		for (AbstractTaskContainer taskContainer : currentContainers) {
296
		for (AbstractTaskContainer taskContainer : currentContainers) {
148
			if (taskContainer instanceof AbstractTaskCategory) {
297
			if (taskContainer instanceof AbstractTaskCategory) {
149
				if (!(taskContainer instanceof TaskArchive)) {
298
				if (!(taskContainer instanceof OrphanedTasksContainer)) {
150
					(taskContainer).internalRemoveChild(task);
299
					(taskContainer).internalRemoveChild(task);
151
				}
300
				}
301
//				if (!(taskContainer instanceof TaskArchive)) {
302
//					(taskContainer).internalRemoveChild(task);
303
//				}
152
				task.removeParentContainer(taskContainer);
304
				task.removeParentContainer(taskContainer);
153
				delta.add(new TaskContainerDelta(taskContainer, TaskContainerDelta.Kind.CHANGED));
305
				delta.add(new TaskContainerDelta(taskContainer, TaskContainerDelta.Kind.CHANGED));
154
			}
306
			}
Lines 156-167 Link Here
156
		if (container != null) {
308
		if (container != null) {
157
			internalAddTask(task, container);
309
			internalAddTask(task, container);
158
			delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED));
310
			delta.add(new TaskContainerDelta(container, TaskContainerDelta.Kind.CHANGED));
159
			if (archiveContainer.contains(task.getHandleIdentifier())) {
311
			if (!(container instanceof OrphanedTasksContainer)) {
160
				archiveContainer.internalRemoveChild(task);
312
				removeOrphan(task, delta);
161
				delta.add(new TaskContainerDelta(archiveContainer, TaskContainerDelta.Kind.CHANGED));
162
			}
313
			}
314
//			if (archiveContainer.contains(task.getHandleIdentifier())) {
315
//				archiveContainer.internalRemoveChild(task);
316
//				delta.add(new TaskContainerDelta(archiveContainer, TaskContainerDelta.Kind.CHANGED));
317
//			}
163
		} else {
318
		} else {
164
			internalAddTask(task, archiveContainer);
319
			internalAddTask(task, null);
165
		}
320
		}
166
		for (ITaskListChangeListener listener : changeListeners) {
321
		for (ITaskListChangeListener listener : changeListeners) {
167
			listener.containersChanged(delta);
322
			listener.containersChanged(delta);
Lines 189-194 Link Here
189
				delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.CHANGED));
344
				delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.CHANGED));
190
			}
345
			}
191
		}
346
		}
347
348
		for (OrphanedTasksContainer orphans : repositoryOrphansMap.values()) {
349
			if (orphans.getRepositoryUrl().equals(oldRepositoryUrl)) {
350
				repositoryOrphansMap.remove(oldRepositoryUrl);
351
				//categories.remove(orphans.getHandleIdentifier());
352
				orphans.setRepositoryUrl(newRepositoryUrl);
353
				repositoryOrphansMap.put(newRepositoryUrl, orphans);
354
				//categories.put(orphans.getHandleIdentifier(), orphans);
355
				delta.add(new TaskContainerDelta(orphans, TaskContainerDelta.Kind.CHANGED));
356
			}
357
		}
192
		for (ITaskListChangeListener listener : changeListeners) {
358
		for (ITaskListChangeListener listener : changeListeners) {
193
			listener.containersChanged(delta);
359
			listener.containersChanged(delta);
194
		}
360
		}
Lines 209-215 Link Here
209
	}
375
	}
210
376
211
	public void removeFromCategory(TaskCategory category, AbstractTask task) {
377
	public void removeFromCategory(TaskCategory category, AbstractTask task) {
212
		moveToContainer(task, archiveContainer);
378
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
379
		delta.add(new TaskContainerDelta(category, TaskContainerDelta.Kind.CHANGED));
380
		category.internalRemoveChild(task);
381
		addOrphan(task, delta);
382
		for (ITaskListChangeListener listener : changeListeners) {
383
			listener.containersChanged(delta);
384
		}
385
		//moveToContainer(task, null);
213
	}
386
	}
214
387
215
	/**
388
	/**
Lines 218-228 Link Here
218
	 * @since 2.1
391
	 * @since 2.1
219
	 */
392
	 */
220
	public void removeFromQuery(AbstractRepositoryQuery query, AbstractTask task) {
393
	public void removeFromQuery(AbstractRepositoryQuery query, AbstractTask task) {
394
395
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
396
		delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.CHANGED));
397
221
		query.internalRemoveChild(task);
398
		query.internalRemoveChild(task);
222
		if (task.getParentContainers().size() == 0 && task.getLastReadTimeStamp() != null) {
399
		addOrphan(task, delta);
223
			task.addParentContainer(archiveContainer);
400
224
			archiveContainer.internalAddChild(task);
401
		for (ITaskListChangeListener listener : changeListeners) {
402
			listener.containersChanged(delta);
225
		}
403
		}
404
405
//		if (task.getParentContainers().size() == 0 && task.getLastReadTimeStamp() != null) {
406
//			task.addParentContainer(archiveContainer);
407
//			archiveContainer.internalAddChild(task);
408
//		}
226
	}
409
	}
227
410
228
	public void renameTask(AbstractTask task, String description) {
411
	public void renameTask(AbstractTask task, String description) {
Lines 242-248 Link Here
242
	public void renameContainer(AbstractTaskContainer container, String newDescription) {
425
	public void renameContainer(AbstractTaskContainer container, String newDescription) {
243
		if (container instanceof AbstractTask) {
426
		if (container instanceof AbstractTask) {
244
			return;
427
			return;
245
		} else if (!(container instanceof TaskArchive) && !(container instanceof UnfiledCategory)) {
428
		} else if (!(container instanceof TaskArchive) && !(container instanceof OrphanedTasksContainer)) {
246
			if (queries.remove(container.getHandleIdentifier()) != null) {
429
			if (queries.remove(container.getHandleIdentifier()) != null) {
247
				if (container instanceof AbstractTaskCategory) {
430
				if (container instanceof AbstractTaskCategory) {
248
					((AbstractTaskCategory) container).setHandleIdentifier(newDescription);
431
					((AbstractTaskCategory) container).setHandleIdentifier(newDescription);
Lines 284-290 Link Here
284
	 * deletion of subtasks)
467
	 * deletion of subtasks)
285
	 */
468
	 */
286
	public void deleteTask(AbstractTask task) {
469
	public void deleteTask(AbstractTask task) {
287
		archiveContainer.internalRemoveChild(task);
288
		defaultCategory.internalRemoveChild(task);
470
		defaultCategory.internalRemoveChild(task);
289
471
290
		for (AbstractTaskContainer container : task.getParentContainers()) {
472
		for (AbstractTaskContainer container : task.getParentContainers()) {
Lines 294-299 Link Here
294
		tasks.remove(task.getHandleIdentifier());
476
		tasks.remove(task.getHandleIdentifier());
295
477
296
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
478
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
479
		removeOrphan(task, delta);
297
		delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.REMOVED));
480
		delta.add(new TaskContainerDelta(task, TaskContainerDelta.Kind.REMOVED));
298
		for (ITaskListChangeListener listener : changeListeners) {
481
		for (ITaskListChangeListener listener : changeListeners) {
299
			listener.containersChanged(delta);
482
			listener.containersChanged(delta);
Lines 301-313 Link Here
301
	}
484
	}
302
485
303
	public void deleteCategory(AbstractTaskCategory category) {
486
	public void deleteCategory(AbstractTaskCategory category) {
487
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
488
489
		categories.remove(category.getHandleIdentifier());
304
		for (AbstractTask task : category.getChildren()) {
490
		for (AbstractTask task : category.getChildren()) {
305
			defaultCategory.internalAddChild(task);
491
			addOrphan(task, delta);
306
		}
492
		}
307
		categories.remove(category.getHandleIdentifier());
308
493
309
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
310
		delta.add(new TaskContainerDelta(defaultCategory, TaskContainerDelta.Kind.CHANGED));
311
		delta.add(new TaskContainerDelta(category, TaskContainerDelta.Kind.REMOVED));
494
		delta.add(new TaskContainerDelta(category, TaskContainerDelta.Kind.REMOVED));
312
495
313
		for (ITaskListChangeListener listener : changeListeners) {
496
		for (ITaskListChangeListener listener : changeListeners) {
Lines 316-331 Link Here
316
	}
499
	}
317
500
318
	public void deleteQuery(AbstractRepositoryQuery query) {
501
	public void deleteQuery(AbstractRepositoryQuery query) {
319
		queries.remove(query.getHandleIdentifier());
502
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
320
503
504
		queries.remove(query.getHandleIdentifier());
321
		for (AbstractTask task : query.getChildren()) {
505
		for (AbstractTask task : query.getChildren()) {
322
			if (task.getParentContainers().size() == 0 && task.getLastReadTimeStamp() != null) {
506
			addOrphan(task, delta);
323
				task.addParentContainer(archiveContainer);
324
				archiveContainer.internalAddChild(task);
325
			}
326
		}
507
		}
327
508
328
		Set<TaskContainerDelta> delta = new HashSet<TaskContainerDelta>();
329
		delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.REMOVED));
509
		delta.add(new TaskContainerDelta(query, TaskContainerDelta.Kind.REMOVED));
330
		for (ITaskListChangeListener listener : changeListeners) {
510
		for (ITaskListChangeListener listener : changeListeners) {
331
			listener.containersChanged(delta);
511
			listener.containersChanged(delta);
Lines 357-377 Link Here
357
		categories.put(category.getHandleIdentifier(), category);
537
		categories.put(category.getHandleIdentifier(), category);
358
	}
538
	}
359
539
540
	/**
541
	 * @deprecated
542
	 */
360
	public void internalAddTask(AbstractTask task, AbstractTaskCategory container) {
543
	public void internalAddTask(AbstractTask task, AbstractTaskCategory container) {
544
		internalAddTask(task, (AbstractTaskContainer) container);
545
//		//tasks.put(task.getHandleIdentifier(), task);
546
//		if (container != null) {
547
//			tasks.put(task.getHandleIdentifier(), task);
548
//			container.internalAddChild(task);
549
//			if (container instanceof TaskCategory || container instanceof OrphanedTasksContainer) {
550
//				task.addParentContainer(container);
551
//			}
552
//		} else {
553
//			if (task.getLastReadTimeStamp() != null) {
554
//				// any unread task (hit) that is an orphan is discarded
555
//				tasks.put(task.getHandleIdentifier(), task);
556
//				addOrphan(task, null);
557
//			}
558
////			defaultCategory.internalAddChild(task);
559
////			task.addParentContainer(defaultCategory);
560
//		}
561
	}
562
563
	private void internalAddTask(AbstractTask task, AbstractTaskContainer container) {
361
		tasks.put(task.getHandleIdentifier(), task);
564
		tasks.put(task.getHandleIdentifier(), task);
362
		if (container != null) {
565
		if (container != null) {
363
			container.internalAddChild(task);
566
			container.internalAddChild(task);
364
			if (container instanceof TaskCategory || container instanceof UnfiledCategory) {
567
			if (container instanceof TaskCategory || container instanceof OrphanedTasksContainer) {
365
				task.addParentContainer(container);
568
				task.addParentContainer(container);
366
			}
569
			}
367
		} else {
570
		} else {
368
			defaultCategory.internalAddChild(task);
571
			//if (task.getLastReadTimeStamp() != null) {
369
			task.addParentContainer(defaultCategory);
572
			// any unread task (hit) that is an orphan is discarded
573
			addOrphan(task, null);
574
			//}
575
//			defaultCategory.internalAddChild(task);
576
//			task.addParentContainer(defaultCategory);
370
		}
577
		}
371
	}
578
	}
372
579
580
	/**
581
	 * @API-3.0 remove
582
	 */
373
	public void internalAddRootTask(AbstractTask task) {
583
	public void internalAddRootTask(AbstractTask task) {
374
		internalAddTask(task, defaultCategory);
584
		internalAddTask(task, null);
375
	}
585
	}
376
586
377
	public void internalAddQuery(AbstractRepositoryQuery query) {
587
	public void internalAddQuery(AbstractRepositoryQuery query) {
Lines 412-420 Link Here
412
	public List<AbstractTaskCategory> getUserCategories() {
622
	public List<AbstractTaskCategory> getUserCategories() {
413
		List<AbstractTaskCategory> included = new ArrayList<AbstractTaskCategory>();
623
		List<AbstractTaskCategory> included = new ArrayList<AbstractTaskCategory>();
414
		for (AbstractTaskCategory category : categories.values()) {
624
		for (AbstractTaskCategory category : categories.values()) {
415
			if (!(category instanceof TaskArchive)) {
625
			included.add(category);
416
				included.add(category);
417
			}
418
		}
626
		}
419
		return included;
627
		return included;
420
	}
628
	}
Lines 431-436 Link Here
431
			roots.add(cat);
639
			roots.add(cat);
432
		for (AbstractRepositoryQuery query : queries.values())
640
		for (AbstractRepositoryQuery query : queries.values())
433
			roots.add(query);
641
			roots.add(query);
642
		for (OrphanedTasksContainer orphanContainer : repositoryOrphansMap.values())
643
			roots.add(orphanContainer);
434
		return roots;
644
		return roots;
435
	}
645
	}
436
646
Lines 460-469 Link Here
460
		return null;
670
		return null;
461
	}
671
	}
462
672
673
	private AbstractTaskCategory getCategoryForHandle(String handle) {
674
		if (handle == null) {
675
			return null;
676
		}
677
		for (AbstractTaskCategory category : categories.values()) {
678
			if (!(category instanceof OrphanedTasksContainer) && category.contains(handle)) {
679
				return category;
680
			}
681
		}
682
		return null;
683
	}
684
463
	public boolean isEmpty() {
685
	public boolean isEmpty() {
464
		boolean archiveIsEmpty = getCategories().size() == 2 && getCategories().contains(archiveContainer)
686
		boolean isEmpty = getCategories().size() == 1 && getCategories().contains(defaultCategory) /*&& archiveContainer.getChildren().isEmpty()*/;
465
				&& getCategories().contains(defaultCategory) && archiveContainer.getChildren().isEmpty();
687
		return getAllTasks().size() == 0 && isEmpty && getQueries().size() == 0;
466
		return getAllTasks().size() == 0 && archiveIsEmpty && getQueries().size() == 0;
467
	}
688
	}
468
689
469
	/**
690
	/**
Lines 540-545 Link Here
540
		return defaultCategory;
761
		return defaultCategory;
541
	}
762
	}
542
763
764
	/**
765
	 * @deprecated
766
	 */
543
	public TaskArchive getArchiveContainer() {
767
	public TaskArchive getArchiveContainer() {
544
		return archiveContainer;
768
		return archiveContainer;
545
	}
769
	}
Lines 660-666 Link Here
660
		if (containers == null) {
884
		if (containers == null) {
661
			delta = new HashSet<TaskContainerDelta>();
885
			delta = new HashSet<TaskContainerDelta>();
662
			delta.add(new TaskContainerDelta(null, TaskContainerDelta.Kind.ROOT));
886
			delta.add(new TaskContainerDelta(null, TaskContainerDelta.Kind.ROOT));
663
		} else { 
887
		} else {
664
			delta = new HashSet<TaskContainerDelta>();
888
			delta = new HashSet<TaskContainerDelta>();
665
			for (AbstractTaskContainer abstractTaskContainer : containers) {
889
			for (AbstractTaskContainer abstractTaskContainer : containers) {
666
				delta.add(new TaskContainerDelta(abstractTaskContainer, TaskContainerDelta.Kind.CHANGED));
890
				delta.add(new TaskContainerDelta(abstractTaskContainer, TaskContainerDelta.Kind.CHANGED));
Lines 710-717 Link Here
710
			int max = 0;
934
			int max = 0;
711
			for (AbstractTask task : tasks) {
935
			for (AbstractTask task : tasks) {
712
				if (task instanceof LocalTask) {
936
				if (task instanceof LocalTask) {
713
					String string = task.getHandleIdentifier().substring(task.getHandleIdentifier().lastIndexOf('-') + 1,
937
					String string = task.getHandleIdentifier().substring(
714
							task.getHandleIdentifier().length());
938
							task.getHandleIdentifier().lastIndexOf('-') + 1, task.getHandleIdentifier().length());
715
					try {
939
					try {
716
						ihandle = Integer.parseInt(string);
940
						ihandle = Integer.parseInt(string);
717
					} catch (NumberFormatException nfe) {
941
					} catch (NumberFormatException nfe) {
Lines 743-754 Link Here
743
			task.addParentContainer(legacyCategory);
967
			task.addParentContainer(legacyCategory);
744
			legacyCategory.internalAddChild(task);
968
			legacyCategory.internalAddChild(task);
745
		} else {
969
		} else {
746
			this.internalAddTask(task, this.getArchiveContainer());
970
			this.internalAddTask(task, null);
747
		}
971
		}
748
972
749
		this.setActive(task, task.isActive());
973
		this.setActive(task, task.isActive());
750
	}
974
	}
751
975
976
	/**
977
	 * Internal API
978
	 */
979
	public void addOrphanContainer(OrphanedTasksContainer orphanedTasksContainer) {
980
		repositoryOrphansMap.put(orphanedTasksContainer.getRepositoryUrl(), orphanedTasksContainer);
981
	}
982
983
	/**
984
	 * Internal API
985
	 */
986
	public void removeOrphanContainer(String url) {
987
		if (url != null && !url.equals(LocalRepositoryConnector.REPOSITORY_URL)) {
988
			repositoryOrphansMap.remove(url);
989
		}
990
	}
991
752
// /**
992
// /**
753
// * Orphaned hits arise when no query in the tasklist references a hit in the
993
// * Orphaned hits arise when no query in the tasklist references a hit in the
754
// * master list maintained by the tasklist. Orphaned hits don't span
994
// * master list maintained by the tasklist. Orphaned hits don't span
(-)src/org/eclipse/mylyn/internal/tasks/core/LocalTask.java (-2 / +2 lines)
Lines 28-34 Link Here
28
28
29
	@Override
29
	@Override
30
	public String getConnectorKind() {
30
	public String getConnectorKind() {
31
		return LocalRepositoryConnector.REPOSITORY_KIND;
31
		return LocalRepositoryConnector.CONNECTOR_KIND;
32
	}
32
	}
33
33
34
	@Override
34
	@Override
Lines 43-49 Link Here
43
43
44
	@Override
44
	@Override
45
	public String getOwner() {
45
	public String getOwner() {
46
		return LocalRepositoryConnector.REPOSITORY_KIND;
46
		return LocalRepositoryConnector.CONNECTOR_KIND;
47
	}
47
	}
48
48
49
	@Override
49
	@Override
(-)src/org/eclipse/mylyn/internal/tasks/core/LocalRepositoryConnector.java (-2 / +2 lines)
Lines 29-35 Link Here
29
29
30
	public static final String REPOSITORY_LABEL = "Local Tasks";
30
	public static final String REPOSITORY_LABEL = "Local Tasks";
31
31
32
	public static final String REPOSITORY_KIND = "local";
32
	public static final String CONNECTOR_KIND = "local";
33
33
34
	public static final String REPOSITORY_URL = "local";
34
	public static final String REPOSITORY_URL = "local";
35
35
Lines 70-76 Link Here
70
70
71
	@Override
71
	@Override
72
	public String getConnectorKind() {
72
	public String getConnectorKind() {
73
		return REPOSITORY_KIND;
73
		return CONNECTOR_KIND;
74
	}
74
	}
75
75
76
	@Override
76
	@Override
(-)src/org/eclipse/mylyn/internal/tasks/core/TaskArchive.java (-1 / +33 lines)
Lines 8-14 Link Here
8
8
9
package org.eclipse.mylyn.internal.tasks.core;
9
package org.eclipse.mylyn.internal.tasks.core;
10
10
11
import java.util.HashSet;
12
import java.util.Set;
13
14
import org.eclipse.mylyn.tasks.core.AbstractTask;
11
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
15
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
16
import org.eclipse.mylyn.tasks.core.TaskList;
12
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
17
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
13
18
14
/**
19
/**
Lines 20-27 Link Here
20
25
21
	public static final String LABEL_ARCHIVE = "Archive (all tasks)";
26
	public static final String LABEL_ARCHIVE = "Archive (all tasks)";
22
27
23
	public TaskArchive() {
28
	public TaskList taskList;
29
30
	public TaskArchive(TaskList taskList) {
24
		super(HANDLE);
31
		super(HANDLE);
32
		this.taskList = taskList;
25
	}
33
	}
26
34
27
	@Override
35
	@Override
Lines 43-46 Link Here
43
	public boolean isUserDefined() {
51
	public boolean isUserDefined() {
44
		return false;
52
		return false;
45
	}
53
	}
54
55
	@Override
56
	public Set<AbstractTask> getChildren() {
57
		Set<AbstractTask> children = new HashSet<AbstractTask>();
58
		for (OrphanedTasksContainer container : taskList.getOrphanContainers()) {
59
			children.addAll(container.getChildren());
60
		}
61
		return children;
62
	}
63
64
	@Override
65
	public Set<AbstractTask> getChildrenInternal() {
66
		return getChildren();
67
	}
68
69
	@Override
70
	public void internalAddChild(AbstractTask task) {
71
		// ignore
72
	}
73
74
	@Override
75
	public void internalRemoveChild(AbstractTask task) {
76
		// ignore
77
	}
46
}
78
}
(-).refactorings/2007/12/50/refactorings.index (+2 lines)
Added Link Here
1
1197444181049	Extract constant 'MAX_ORPHAN_DEPTH'
2
1197481653716	Rename field 'MAX_ORPHAN_DEPTH'
(-).refactorings/2007/12/49/refactorings.history (+3 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<session version="1.0">&#x0A;<refactoring comment="Copy 1 elements(s) to &apos;org.eclipse.mylyn.tasks.core/src/org.eclipse.mylyn.internal.tasks.core&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Destination element: &apos;org.eclipse.mylyn.tasks.core/src/org.eclipse.mylyn.internal.tasks.core&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.internal.tasks.core.UnfiledCategory.java&apos;" description="Copy compilation unit" destination="/src&lt;org.eclipse.mylyn.internal.tasks.core" element1="/src&lt;org.eclipse.mylyn.internal.tasks.core{UnfiledCategory.java" files="0" flags="589830" folders="0" id="org.eclipse.jdt.ui.copy" policy="org.eclipse.jdt.ui.copyResources" stamp="1196888061065" units="1" version="1.0"/>&#x0A;<refactoring comment="Rename type &apos;org.eclipse.mylyn.internal.tasks.core.OrphanedTasks&apos; to &apos;OrphanedTasksContainer&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.internal.tasks.core.OrphanedTasks&apos;&#x0D;&#x0A;- Renamed element: &apos;org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer&apos;&#x0D;&#x0A;- Update references to refactored element&#x0D;&#x0A;- Rename similarly named elements&#x0D;&#x0A;- Update fully qualified names in &apos;*.xml, *.xsd&apos; files&#x0D;&#x0A;- Update textual occurrences in comments and strings" description="Rename type &apos;OrphanedTasks&apos;" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src&lt;org.eclipse.mylyn.internal.tasks.core{OrphanedTasks.java[OrphanedTasks" matchStrategy="1" name="OrphanedTasksContainer" patterns="*.xml, *.xsd" qualified="true" references="true" similarDeclarations="true" stamp="1196889544235" textual="false" version="1.0"/>&#x0A;<refactoring comment="Rename field &apos;orphanedTaskContainers&apos; in &apos;org.eclipse.mylyn.tasks.core.TaskList&apos; to &apos;repositoryOrphansMap&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.tasks.core.TaskList.orphanedTaskContainers&apos;&#x0D;&#x0A;- Renamed element: &apos;org.eclipse.mylyn.tasks.core.TaskList.repositoryOrphansMap&apos;&#x0D;&#x0A;- Update references to refactored element&#x0D;&#x0A;- Update textual occurrences in comments and strings" delegate="false" deprecate="false" description="Rename field &apos;orphanedTaskContainers&apos;" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src&lt;org.eclipse.mylyn.tasks.core{TaskList.java[TaskList^orphanedTaskContainers" name="repositoryOrphansMap" references="true" setter="false" stamp="1196902163343" textual="false" version="1.0"/>&#x0A;<refactoring comment="Rename method &apos;org.eclipse.mylyn.tasks.core.TaskList.getOrphanedContainer(...)&apos; to &apos;getOrphanContainer&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.tasks.core.TaskList.getOrphanedContainer(...)&apos;&#x0D;&#x0A;- Renamed element: &apos;org.eclipse.mylyn.tasks.core.TaskList.getOrphanContainer(...)&apos;&#x0D;&#x0A;- Update references to refactored element" delegate="false" deprecate="false" description="Rename method &apos;getOrphanedContainer&apos;" flags="589830" id="org.eclipse.jdt.ui.rename.method" input="/src&lt;org.eclipse.mylyn.tasks.core{TaskList.java[TaskList~getOrphanedContainer~QString;" name="getOrphanContainer" references="true" stamp="1196916697413" version="1.0"/>&#x0A;<refactoring comment="Rename field &apos;REPOSITORY_KIND&apos; in &apos;org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector&apos; to &apos;CONNECTOR_KIND&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector.REPOSITORY_KIND&apos;&#x0D;&#x0A;- Renamed element: &apos;org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector.CONNECTOR_KIND&apos;&#x0D;&#x0A;- Update references to refactored element&#x0D;&#x0A;- Update textual occurrences in comments and strings" delegate="false" deprecate="false" description="Rename field &apos;REPOSITORY_KIND&apos;" flags="589830" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src&lt;org.eclipse.mylyn.internal.tasks.core{LocalRepositoryConnector.java[LocalRepositoryConnector^REPOSITORY_KIND" name="CONNECTOR_KIND" references="true" setter="false" stamp="1196923680591" textual="false" version="1.0"/>
3
</session>
(-).refactorings/2007/12/49/refactorings.index (+5 lines)
Added Link Here
1
1196888061065	Copy compilation unit
2
1196889544235	Rename type 'OrphanedTasks'
3
1196902163343	Rename field 'orphanedTaskContainers'
4
1196916697413	Rename method 'getOrphanedContainer'
5
1196923680591	Rename field 'REPOSITORY_KIND'
(-)src/org/eclipse/mylyn/internal/tasks/core/OrphanedTasksContainer.java (+76 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.tasks.core;
10
11
import org.eclipse.mylyn.tasks.core.AbstractTask;
12
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
13
import org.eclipse.mylyn.tasks.core.AbstractTask.PriorityLevel;
14
15
/**
16
 * Holds orphaned or uncategorized tasks for a given repository
17
 * 
18
 * @author Rob Elves
19
 */
20
public class OrphanedTasksContainer extends AbstractTaskCategory {
21
22
	public static final String LABEL = "Uncategorized";
23
24
	public static final String HANDLE = "orphans";
25
26
	private String repositoryUrl;
27
28
	private String connectorKind;
29
30
	public OrphanedTasksContainer(String connectorKind, String repositoryUrl) {
31
		super(repositoryUrl + "-" + HANDLE);
32
		this.repositoryUrl = repositoryUrl;
33
		this.connectorKind = connectorKind;
34
	}
35
36
	@Override
37
	public String getPriority() {
38
		return PriorityLevel.P1.toString();
39
	}
40
41
	@Override
42
	public String getSummary() {
43
		return "Archive: " + getRepositoryUrl();
44
	}
45
46
	@Override
47
	public boolean isUserDefined() {
48
		return false;
49
	}
50
51
	public String getRepositoryUrl() {
52
		return repositoryUrl;
53
	}
54
55
	public String getConnectorKind() {
56
		return connectorKind;
57
	}
58
59
	/**
60
	 * setting will also refactor handle
61
	 */
62
	public void setRepositoryUrl(String repositoryUrl) {
63
		this.repositoryUrl = repositoryUrl;
64
		this.setHandleIdentifier(repositoryUrl + "-" + HANDLE);
65
	}
66
67
	@Override
68
	public boolean contains(String handle) {
69
		for (AbstractTask child : getChildrenInternal()) {
70
			if (child.getHandleIdentifier().equals(handle)) {
71
				return true;
72
			}
73
		}
74
		return false;
75
	}
76
}
(-)src/org/eclipse/mylyn/internal/tasks/core/ITasksCoreConstants.java (+18 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.tasks.core;
10
11
/**
12
 * @author Rob Elves
13
 */
14
public interface ITasksCoreConstants {
15
16
	public static final int MAX_SUBTASK_DEPTH = 10;
17
18
}
(-).refactorings/2007/12/50/refactorings.history (+3 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<session version="1.0">&#x0A;<refactoring comment="Extract constant &apos;org.eclipse.mylyn.tasks.core.TaskList.MAX_ORPHAN_DEPTH&apos; from expression &apos;10&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Constant name: &apos;MAX_ORPHAN_DEPTH&apos;&#x0D;&#x0A;- Constant expression: &apos;10&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Extract constant &apos;MAX_ORPHAN_DEPTH&apos;" flags="786432" id="org.eclipse.jdt.ui.extract.constant" input="/src&lt;org.eclipse.mylyn.tasks.core{TaskList.java" name="MAX_ORPHAN_DEPTH" qualify="false" replace="false" selection="3215 2" stamp="1197444181049" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Rename field &apos;MAX_ORPHAN_DEPTH&apos; in &apos;org.eclipse.mylyn.tasks.core.TaskList&apos; to &apos;MAX_SUBTASK_DEPTH&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.tasks.core&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.tasks.core.TaskList.MAX_ORPHAN_DEPTH&apos;&#x0D;&#x0A;- Renamed element: &apos;org.eclipse.mylyn.tasks.core.TaskList.MAX_SUBTASK_DEPTH&apos;&#x0D;&#x0A;- Update references to refactored element&#x0D;&#x0A;- Update textual occurrences in comments and strings" delegate="false" deprecate="false" description="Rename field &apos;MAX_ORPHAN_DEPTH&apos;" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src&lt;org.eclipse.mylyn.tasks.core{TaskList.java[TaskList^MAX_ORPHAN_DEPTH" name="MAX_SUBTASK_DEPTH" references="true" setter="false" stamp="1197481653716" textual="false" version="1.0"/>
3
</session>
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java (-10 / +20 lines)
Lines 11-23 Link Here
11
import org.eclipse.jface.dialogs.MessageDialog;
11
import org.eclipse.jface.dialogs.MessageDialog;
12
import org.eclipse.jface.viewers.Viewer;
12
import org.eclipse.jface.viewers.Viewer;
13
import org.eclipse.jface.viewers.ViewerSorter;
13
import org.eclipse.jface.viewers.ViewerSorter;
14
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
15
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
14
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
16
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
15
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
16
import org.eclipse.mylyn.internal.tasks.core.UnfiledCategory;
17
import org.eclipse.mylyn.internal.tasks.core.UnfiledCategory;
17
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
18
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
18
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
19
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
19
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
21
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
22
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
21
import org.eclipse.ui.PlatformUI;
23
import org.eclipse.ui.PlatformUI;
22
24
23
/**
25
/**
Lines 74-88 Link Here
74
			return 1;
76
			return 1;
75
		}
77
		}
76
78
77
		if (o1 instanceof UnfiledCategory && o2 instanceof AbstractTaskContainer) {
79
//		OrphanedTasksContainer localArchive = TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
78
			return -1;
80
//				LocalRepositoryConnector.REPOSITORY_URL);
79
		} else if (o1 instanceof AbstractTaskContainer && o2 instanceof UnfiledCategory) {
81
//		if (o1 == localArchive && o2 instanceof AbstractTaskContainer) {
82
//			return -1;
83
//		} else if (o1 instanceof AbstractTaskContainer && o2 == localArchive) {
84
//			return 1;
85
//		}
86
87
		if (o1 instanceof AbstractTaskContainer && o2 instanceof UnfiledCategory) {
80
			return 1;
88
			return 1;
89
		} else if (o2 instanceof AbstractTaskContainer && o1 instanceof UnfiledCategory) {
90
			return -1;
81
		}
91
		}
82
92
83
		if (o1 instanceof AbstractTaskContainer && o2 instanceof TaskArchive) {
93
		if (o1 instanceof AbstractTaskContainer && o2 instanceof OrphanedTasksContainer) {
84
			return -1;
94
			return -1;
85
		} else if (o2 instanceof AbstractTaskContainer && o1 instanceof TaskArchive) {
95
		} else if (o2 instanceof AbstractTaskContainer && o1 instanceof OrphanedTasksContainer) {
86
			return 1;
96
			return 1;
87
		}
97
		}
88
98
Lines 150-156 Link Here
150
160
151
	/**
161
	/**
152
	 * Determine the sort order of two tasks by id/summary
162
	 * Determine the sort order of two tasks by id/summary
153
	 *
163
	 * 
154
	 * @param element1
164
	 * @param element1
155
	 * @param element2
165
	 * @param element2
156
	 * @return sort order
166
	 * @return sort order
Lines 162-168 Link Here
162
172
163
	/**
173
	/**
164
	 * Return a sortable string in the format "key: summary"
174
	 * Return a sortable string in the format "key: summary"
165
	 *
175
	 * 
166
	 * @param element
176
	 * @param element
167
	 * @return sortable string
177
	 * @return sortable string
168
	 * @deprecated Use getSortableFromElement()
178
	 * @deprecated Use getSortableFromElement()
Lines 181-192 Link Here
181
191
182
	/**
192
	/**
183
	 * Return a array of values to pass to taskKeyComparator.compare() for sorting
193
	 * Return a array of values to pass to taskKeyComparator.compare() for sorting
184
	 *
194
	 * 
185
	 * @param element
195
	 * @param element
186
	 * @return String array[component, taskId, summary]
196
	 * @return String array[component, taskId, summary]
187
	 */
197
	 */
188
	public static String[] getSortableFromElement(AbstractTaskContainer element) {
198
	public static String[] getSortableFromElement(AbstractTaskContainer element) {
189
		final String a[] = new String[] {"", null, element.getSummary()};
199
		final String a[] = new String[] { "", null, element.getSummary() };
190
200
191
		if (element instanceof AbstractTask) {
201
		if (element instanceof AbstractTask) {
192
			AbstractTask task1 = (AbstractTask) element;
202
			AbstractTask task1 = (AbstractTask) element;
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java (-7 / +10 lines)
Lines 46-51 Link Here
46
import org.eclipse.jface.viewers.TreeExpansionEvent;
46
import org.eclipse.jface.viewers.TreeExpansionEvent;
47
import org.eclipse.jface.viewers.TreeViewer;
47
import org.eclipse.jface.viewers.TreeViewer;
48
import org.eclipse.jface.window.Window;
48
import org.eclipse.jface.window.Window;
49
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
49
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
50
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
50
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
51
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
51
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
52
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
Lines 458-465 Link Here
458
									refreshJob.refresh();
459
									refreshJob.refresh();
459
									break;
460
									break;
460
								default:
461
								default:
461
									if (taskContainerDelta.getContainer().equals(
462
									if (taskContainerDelta.getContainer() == null) {
462
											TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory())) {
463
										refreshJob.refresh();
463
										refreshJob.refresh();
464
									} else {
464
									} else {
465
										refreshJob.refreshTask(taskContainerDelta.getContainer());
465
										refreshJob.refreshTask(taskContainerDelta.getContainer());
Lines 1135-1141 Link Here
1135
					subMenu = new MenuManager("New", ID_MENU_NEW);
1135
					subMenu = new MenuManager("New", ID_MENU_NEW);
1136
					manager.add(subMenu);
1136
					manager.add(subMenu);
1137
				}
1137
				}
1138
				
1138
1139
				subMenu.add(new Separator(ID_SEPARATOR_NEW_REPOSITORY));
1139
				subMenu.add(new Separator(ID_SEPARATOR_NEW_REPOSITORY));
1140
				subMenu.add(action);
1140
				subMenu.add(action);
1141
				subMenu.add(new Separator(ID_SEPARATOR_NEW_LOCAL));
1141
				subMenu.add(new Separator(ID_SEPARATOR_NEW_LOCAL));
Lines 1178-1183 Link Here
1178
1178
1179
		addAction(copyDetailsAction, manager, element);
1179
		addAction(copyDetailsAction, manager, element);
1180
		if (task != null && !task.isLocal()) {
1180
		if (task != null && !task.isLocal()) {
1181
			// TODO: if selection parent is an Orphan container don't add this action
1181
//			addAction(cloneThisBugAction, manager, element);
1182
//			addAction(cloneThisBugAction, manager, element);
1182
			addAction(removeFromCategoryAction, manager, element);
1183
			addAction(removeFromCategoryAction, manager, element);
1183
		}
1184
		}
Lines 1276-1282 Link Here
1276
			} else if (action instanceof MarkTaskIncompleteAction) {
1277
			} else if (action instanceof MarkTaskIncompleteAction) {
1277
				action.setEnabled(false);
1278
				action.setEnabled(false);
1278
			} else if (action instanceof DeleteAction) {
1279
			} else if (action instanceof DeleteAction) {
1279
				if (element instanceof TaskArchive || element instanceof UnfiledCategory)
1280
				if (element instanceof TaskArchive || element instanceof UnfiledCategory
1281
						|| element instanceof OrphanedTasksContainer)
1280
					action.setEnabled(false);
1282
					action.setEnabled(false);
1281
				else
1283
				else
1282
					action.setEnabled(true);
1284
					action.setEnabled(true);
Lines 1407-1413 Link Here
1407
			refreshJob.forceRefresh();
1409
			refreshJob.forceRefresh();
1408
		}
1410
		}
1409
	}
1411
	}
1410
	
1412
1411
	public void refresh() {
1413
	public void refresh() {
1412
		refreshJob.forceRefresh();
1414
		refreshJob.forceRefresh();
1413
//		if (expand) {
1415
//		if (expand) {
Lines 1698-1705 Link Here
1698
			Set<AbstractTaskContainer> containers = new HashSet<AbstractTaskContainer>(
1700
			Set<AbstractTaskContainer> containers = new HashSet<AbstractTaskContainer>(
1699
					TasksUiPlugin.getTaskListManager().getTaskList().getQueriesForHandle(task.getHandleIdentifier()));
1701
					TasksUiPlugin.getTaskListManager().getTaskList().getQueriesForHandle(task.getHandleIdentifier()));
1700
			containers.addAll(task.getParentContainers());
1702
			containers.addAll(task.getParentContainers());
1701
			containers.add(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer());
1703
			containers.add(TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(task.getRepositoryUrl()));
1702
			containers.add(TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
1704
//			containers.add(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer());
1705
//			containers.add(TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
1703
			for (AbstractTaskContainer container : containers) {
1706
			for (AbstractTaskContainer container : containers) {
1704
				refreshJob.refreshTask(container);
1707
				refreshJob.refreshTask(container);
1705
			}
1708
			}
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskElementLabelProvider.java (-1 / +21 lines)
Lines 14-19 Link Here
14
import org.eclipse.jface.viewers.IColorProvider;
14
import org.eclipse.jface.viewers.IColorProvider;
15
import org.eclipse.jface.viewers.IFontProvider;
15
import org.eclipse.jface.viewers.IFontProvider;
16
import org.eclipse.jface.viewers.LabelProvider;
16
import org.eclipse.jface.viewers.LabelProvider;
17
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
17
import org.eclipse.mylyn.internal.tasks.core.Person;
18
import org.eclipse.mylyn.internal.tasks.core.Person;
18
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
19
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
19
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
20
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
Lines 87-93 Link Here
87
88
88
	private CompositeImageDescriptor getImageDescriptor(Object object) {
89
	private CompositeImageDescriptor getImageDescriptor(Object object) {
89
		CompositeImageDescriptor compositeDescriptor = new CompositeImageDescriptor();
90
		CompositeImageDescriptor compositeDescriptor = new CompositeImageDescriptor();
90
		if (object instanceof TaskArchive || object instanceof UnfiledCategory) {
91
		if (object instanceof TaskArchive || object instanceof OrphanedTasksContainer) {
91
			compositeDescriptor.icon = TasksUiImages.CATEGORY_ARCHIVE;
92
			compositeDescriptor.icon = TasksUiImages.CATEGORY_ARCHIVE;
92
			return compositeDescriptor;
93
			return compositeDescriptor;
93
		} else if (object instanceof TaskCategory || object instanceof UnfiledCategory) {
94
		} else if (object instanceof TaskCategory || object instanceof UnfiledCategory) {
Lines 223-228 Link Here
223
		} else if (object instanceof TaskGroup) {
224
		} else if (object instanceof TaskGroup) {
224
			TaskGroup element = (TaskGroup) object;
225
			TaskGroup element = (TaskGroup) object;
225
			return element.getSummary();// + " / " + element.getChildren().size();
226
			return element.getSummary();// + " / " + element.getChildren().size();
227
		} else if (object instanceof OrphanedTasksContainer) {
228
229
			OrphanedTasksContainer container = (OrphanedTasksContainer) object;
230
231
//			OrphanedTasksContainer localArchive = TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
232
//					LocalRepositoryConnector.REPOSITORY_URL);
233
//			if (container == localArchive) {
234
//				return "Local Tasks";
235
//			}
236
237
			String result = container.getSummary();
238
			TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
239
					container.getConnectorKind(), container.getRepositoryUrl());
240
			if (repository != null) {
241
				result = "Archive: " + repository.getRepositoryLabel();
242
			}
243
244
			return result;
245
226
		} else if (object instanceof AbstractTaskContainer) {
246
		} else if (object instanceof AbstractTaskContainer) {
227
			AbstractTaskContainer element = (AbstractTaskContainer) object;
247
			AbstractTaskContainer element = (AbstractTaskContainer) object;
228
			return element.getSummary();
248
			return element.getSummary();
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java (-6 / +19 lines)
Lines 26-31 Link Here
26
import org.eclipse.jface.viewers.ViewerDropAdapter;
26
import org.eclipse.jface.viewers.ViewerDropAdapter;
27
import org.eclipse.mylyn.context.core.ContextCorePlugin;
27
import org.eclipse.mylyn.context.core.ContextCorePlugin;
28
import org.eclipse.mylyn.internal.context.core.InteractionContext;
28
import org.eclipse.mylyn.internal.context.core.InteractionContext;
29
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
29
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
30
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
30
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
31
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
31
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
32
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
Lines 162-170 Link Here
162
163
163
		for (AbstractTask task : tasksToMove) {
164
		for (AbstractTask task : tasksToMove) {
164
			if (currentTarget instanceof UnfiledCategory) {
165
			if (currentTarget instanceof UnfiledCategory) {
165
				TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task, (UnfiledCategory) currentTarget);
166
				TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task, (UnfiledCategory) currentTarget);
166
			} else if (currentTarget instanceof TaskCategory) {
167
			} else if (currentTarget instanceof TaskCategory) {
167
				TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task, (TaskCategory) currentTarget);
168
				TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task, (TaskCategory) currentTarget);
169
			} else if (currentTarget instanceof OrphanedTasksContainer) {
170
				if (((OrphanedTasksContainer) currentTarget).getRepositoryUrl().equals(task.getRepositoryUrl())) {
171
					TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task,
172
							(AbstractTaskCategory) currentTarget);
173
				}
168
			} else if (currentTarget instanceof AbstractTask) {
174
			} else if (currentTarget instanceof AbstractTask) {
169
				AbstractTask targetTask = (AbstractTask) currentTarget;
175
				AbstractTask targetTask = (AbstractTask) currentTarget;
170
				AbstractTaskCategory targetCategory = null;
176
				AbstractTaskCategory targetCategory = null;
Lines 173-182 Link Here
173
					AbstractTaskContainer container = targetTask.getParentContainers().iterator().next();
179
					AbstractTaskContainer container = targetTask.getParentContainers().iterator().next();
174
					if (container instanceof TaskCategory || container instanceof UnfiledCategory) {
180
					if (container instanceof TaskCategory || container instanceof UnfiledCategory) {
175
						targetCategory = (AbstractTaskCategory) container;
181
						targetCategory = (AbstractTaskCategory) container;
182
					} else if (container instanceof OrphanedTasksContainer) {
183
						if (((OrphanedTasksContainer) container).getRepositoryUrl().equals(task.getRepositoryUrl())) {
184
							targetCategory = (AbstractTaskCategory) container;
185
						}
176
					}
186
					}
177
				}
187
				}
178
				if (targetCategory != null) {
188
				if (targetCategory != null) {
179
					TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task, targetCategory);
189
					TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task, targetCategory);
180
				}
190
				}
181
			} else if (currentTarget instanceof ScheduledTaskContainer) {
191
			} else if (currentTarget instanceof ScheduledTaskContainer) {
182
				ScheduledTaskContainer container = (ScheduledTaskContainer) currentTarget;
192
				ScheduledTaskContainer container = (ScheduledTaskContainer) currentTarget;
Lines 185-192 Link Here
185
				TaskActivityUtil.snapEndOfWorkDay(newSchedule);
195
				TaskActivityUtil.snapEndOfWorkDay(newSchedule);
186
				TasksUiPlugin.getTaskActivityManager().setScheduledFor(task, newSchedule.getTime());
196
				TasksUiPlugin.getTaskActivityManager().setScheduledFor(task, newSchedule.getTime());
187
			} else if (currentTarget == null) {
197
			} else if (currentTarget == null) {
188
				TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(newTask,
198
//				TasksUiPlugin.getTaskListManager().getTaskList().moveTask(
189
						TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
199
//						newTask,
200
//						TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
201
//								LocalRepositoryConnector.REPOSITORY_URL));
190
			}
202
			}
191
		}
203
		}
192
204
Lines 307-313 Link Here
307
			// handle all files
319
			// handle all files
308
			return true;
320
			return true;
309
		} else if (TaskTransfer.getInstance().isSupportedType(currentTransfer)) {
321
		} else if (TaskTransfer.getInstance().isSupportedType(currentTransfer)) {
310
			if (getCurrentTarget() instanceof TaskCategory || getCurrentTarget() instanceof UnfiledCategory
322
			if (getCurrentTarget() instanceof UnfiledCategory || getCurrentTarget() instanceof TaskCategory
323
					|| getCurrentTarget() instanceof OrphanedTasksContainer
311
					|| getCurrentTarget() instanceof ScheduledTaskContainer) {
324
					|| getCurrentTarget() instanceof ScheduledTaskContainer) {
312
				return true;
325
				return true;
313
			} else if (getCurrentTarget() instanceof AbstractTaskContainer
326
			} else if (getCurrentTarget() instanceof AbstractTaskContainer
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java (-5 lines)
Lines 102-110 Link Here
102
	}
102
	}
103
103
104
	private boolean taskHasUnfilteredChildren(AbstractTask parent) {
104
	private boolean taskHasUnfilteredChildren(AbstractTask parent) {
105
		boolean groupSubtasks = !TasksUiPlugin.getDefault().groupSubtasks(parent);
106
		if (groupSubtasks)
107
			return false;
108
		Set<AbstractTask> children = parent.getChildren();
105
		Set<AbstractTask> children = parent.getChildren();
109
		if (children != null) {
106
		if (children != null) {
110
			for (AbstractTask task : children) {
107
			for (AbstractTask task : children) {
Lines 210-218 Link Here
210
			// get all children
207
			// get all children
211
			for (AbstractTask element : parentTasks) {
208
			for (AbstractTask element : parentTasks) {
212
				for (AbstractTask abstractTask : element.getChildren()) {
209
				for (AbstractTask abstractTask : element.getChildren()) {
213
					//if (!filter(element, abstractTask)) {
214
					children.add(abstractTask);
210
					children.add(abstractTask);
215
					//}
216
				}
211
				}
217
			}
212
			}
218
			for (AbstractTask task : parentTasks) {
213
			for (AbstractTask task : parentTasks) {
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java (-28 / +5 lines)
Lines 8-24 Link Here
8
8
9
package org.eclipse.mylyn.internal.tasks.ui.views;
9
package org.eclipse.mylyn.internal.tasks.ui.views;
10
10
11
import java.util.Set;
12
13
import org.eclipse.mylyn.context.core.ContextCorePlugin;
11
import org.eclipse.mylyn.context.core.ContextCorePlugin;
14
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
12
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
15
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
13
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
14
import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter;
16
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
15
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
17
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants;
16
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants;
18
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
17
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
19
import org.eclipse.mylyn.tasks.core.AbstractTask;
18
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
19
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
21
import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState;
22
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
20
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
23
import org.eclipse.swt.SWT;
21
import org.eclipse.swt.SWT;
24
import org.eclipse.swt.graphics.Image;
22
import org.eclipse.swt.graphics.Image;
Lines 146-152 Link Here
146
						taskListView.synchronizationOverlaid));
144
						taskListView.synchronizationOverlaid));
147
			} else {
145
			} else {
148
				int imageOffset = 0;
146
				int imageOffset = 0;
149
				if (!hideDecorationOnContainer(element, (TreeItem) event.item) && hasDescendantIncoming(element)) {
147
				if (!hideDecorationOnContainer(element, (TreeItem) event.item)
148
						&& AbstractTaskListFilter.hasDescendantIncoming(element)) {
150
					if (taskListView.synchronizationOverlaid) {
149
					if (taskListView.synchronizationOverlaid) {
151
						image = TasksUiImages.getImage(TasksUiImages.OVERLAY_SYNCH_INCOMMING);
150
						image = TasksUiImages.getImage(TasksUiImages.OVERLAY_SYNCH_INCOMMING);
152
					} else {
151
					} else {
Lines 184-190 Link Here
184
	}
183
	}
185
184
186
	private boolean hideDecorationOnContainer(AbstractTaskContainer element, TreeItem treeItem) {
185
	private boolean hideDecorationOnContainer(AbstractTaskContainer element, TreeItem treeItem) {
187
		if (element instanceof TaskArchive) {
186
		if (element instanceof OrphanedTasksContainer) {
188
			return true;
187
			return true;
189
		} else if (!taskListView.isFocusedMode()) {
188
		} else if (!taskListView.isFocusedMode()) {
190
			return false;
189
			return false;
Lines 197-224 Link Here
197
		}
196
		}
198
	}
197
	}
199
198
200
	/**
201
	 * NOTE: performance implication of looking down children
202
	 */
203
	private boolean hasDescendantIncoming(AbstractTaskContainer container) {
204
		Set<AbstractTask> children = container.getChildren();
205
		if (children == null) {
206
			return false;
207
		}
208
209
		for (AbstractTask task : children) {
210
			if (task != null) {
211
				AbstractTask containedRepositoryTask = task;
212
				if (containedRepositoryTask.getSynchronizationState() == RepositoryTaskSyncState.INCOMING) {
213
					return true;
214
				} else if (TasksUiPlugin.getDefault().groupSubtasks(container) && hasDescendantIncoming(task)) {
215
					return true;
216
				}
217
			}
218
		}
219
		return false;
220
	}
221
222
	private void drawActivationImage(final int activationImageOffset, Event event, Image image) {
199
	private void drawActivationImage(final int activationImageOffset, Event event, Image image) {
223
		Rectangle rect = image.getBounds();
200
		Rectangle rect = image.getBounds();
224
		int offset = Math.max(0, (event.height - rect.height) / 2);
201
		int offset = Math.max(0, (event.height - rect.height) / 2);
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionContributor.java (-1 / +2 lines)
Lines 26-31 Link Here
26
import org.eclipse.jface.viewers.IStructuredSelection;
26
import org.eclipse.jface.viewers.IStructuredSelection;
27
import org.eclipse.jface.viewers.SelectionChangedEvent;
27
import org.eclipse.jface.viewers.SelectionChangedEvent;
28
import org.eclipse.jface.viewers.StructuredSelection;
28
import org.eclipse.jface.viewers.StructuredSelection;
29
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
29
import org.eclipse.mylyn.internal.tasks.ui.AddExistingTaskJob;
30
import org.eclipse.mylyn.internal.tasks.ui.AddExistingTaskJob;
30
import org.eclipse.mylyn.internal.tasks.ui.IDynamicSubMenuContributor;
31
import org.eclipse.mylyn.internal.tasks.ui.IDynamicSubMenuContributor;
31
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
32
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
Lines 180-186 Link Here
180
181
181
			Collections.sort(categories);
182
			Collections.sort(categories);
182
			for (final AbstractTaskCategory category : categories) {
183
			for (final AbstractTaskCategory category : categories) {
183
				if (!category.equals(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer())) {
184
				if (!(category instanceof OrphanedTasksContainer)) {//.equals(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer())) {
184
					Action action = new Action() {
185
					Action action = new Action() {
185
						@Override
186
						@Override
186
						public void run() {
187
						public void run() {
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskPlanningEditor.java (-1 / +3 lines)
Lines 154-160 Link Here
154
						if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) {
154
						if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) {
155
							PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
155
							PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
156
								public void run() {
156
								public void run() {
157
									updateTaskData(updateTask);
157
									if (summaryEditor != null && summaryEditor.getTextWidget() != null) {
158
										updateTaskData(updateTask);
159
									}
158
								}
160
								}
159
							});
161
							});
160
						}
162
						}
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/RemoveFromCategoryAction.java (-13 / +16 lines)
Lines 14-19 Link Here
14
import org.eclipse.jface.dialogs.MessageDialog;
14
import org.eclipse.jface.dialogs.MessageDialog;
15
import org.eclipse.jface.viewers.ISelection;
15
import org.eclipse.jface.viewers.ISelection;
16
import org.eclipse.jface.viewers.IStructuredSelection;
16
import org.eclipse.jface.viewers.IStructuredSelection;
17
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
17
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
18
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
18
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
19
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
19
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
20
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
Lines 59-83 Link Here
59
60
60
					TreeItem item = this.view.getViewer().getTree().getSelection()[0];
61
					TreeItem item = this.view.getViewer().getTree().getSelection()[0];
61
					Set<AbstractTaskContainer> parentContainers = task.getParentContainers();
62
					Set<AbstractTaskContainer> parentContainers = task.getParentContainers();
62
					
63
63
					if (item.getParentItem() != null && item.getParent().getData() instanceof TaskCategory) {
64
					if (item.getParentItem() != null && item.getParent().getData() instanceof TaskCategory) {
64
						TaskCategory category = (TaskCategory) item.getParentItem().getData();
65
						TaskCategory category = (TaskCategory) item.getParentItem().getData();
65
						TasksUiPlugin.getTaskListManager().getTaskList().removeFromCategory(category, task);
66
						TasksUiPlugin.getTaskListManager().getTaskList().removeFromCategory(category, task);
66
						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
67
					}
67
								TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
68
//						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
68
					} else if (!task.isLocal() && parentContainers.contains(TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory())) {
69
//								TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
69
						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task, TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer());
70
					else if (!parentContainers.isEmpty() && parentContainers.iterator().next() instanceof TaskCategory) {
70
					} else if (parentContainers.contains(TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory())) {
71
						TasksUiPlugin.getTaskListManager().getTaskList().removeFromCategory(
71
						MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), 
72
								(TaskCategory) parentContainers.iterator().next(), task);
72
								LABEL, "Can not remove from the default category, move to another category instead.");
73
						//TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task, null);
73
					} else {
74
					}/* else if (parentContainers.contains(TasksUiPlugin.getTaskListManager()
74
						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(task,
75
																																.getTaskList()
76
																																.getDefaultCategory())) {
77
																															MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
78
																																	LABEL, "Can not remove from the default category, move to another category instead.");
79
																														}*/else {
80
						TasksUiPlugin.getTaskListManager().getTaskList().moveTask(task,
75
								TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
81
								TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
76
					}
82
					}
77
					
78
					if (item.getParentItem() != null && item.getParentItem().getData() instanceof TaskCategory) {
79
83
80
					}
81
				}
84
				}
82
			}
85
			}
83
		} catch (NullPointerException npe) {
86
		} catch (NullPointerException npe) {
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskUnreadAction.java (-8 / +8 lines)
Lines 34-49 Link Here
34
		setId(ID);
34
		setId(ID);
35
		setActionDefinitionId(DEFINITION_ID);
35
		setActionDefinitionId(DEFINITION_ID);
36
		setImageDescriptor(TasksUiImages.OVERLAY_INCOMMING);
36
		setImageDescriptor(TasksUiImages.OVERLAY_INCOMMING);
37
		if (containsArchiveContainer(selectedElements)) {
37
//		if (containsArchiveContainer(selectedElements)) {
38
			setEnabled(false);
38
//			setEnabled(false);
39
//		} else {
40
		if (selectedElements.size() == 1 && (selectedElements.get(0) instanceof AbstractTask)) {
41
			AbstractTask task = (AbstractTask) selectedElements.get(0);
42
			setEnabled(!task.isLocal());
39
		} else {
43
		} else {
40
			if (selectedElements.size() == 1 && (selectedElements.get(0) instanceof AbstractTask)) {
44
			setEnabled(true);
41
				AbstractTask task = (AbstractTask) selectedElements.get(0);
42
				setEnabled(!task.isLocal());
43
			} else {
44
				setEnabled(true);
45
			}
46
		}
45
		}
46
//		}
47
	}
47
	}
48
48
49
	@Override
49
	@Override
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/FilterArchiveContainerAction.java (-1 / +1 lines)
Lines 21-27 Link Here
21
21
22
	public static final String ID = "org.eclipse.mylyn.tasklist.actions.filter.archive";
22
	public static final String ID = "org.eclipse.mylyn.tasklist.actions.filter.archive";
23
23
24
	private static final String LABEL = "Filter Archive Category";
24
	private static final String LABEL = "Filter Archives";
25
25
26
	private final TaskListView view;
26
	private final TaskListView view;
27
27
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/AbstractTaskAction.java (-2 / +1 lines)
Lines 14-20 Link Here
14
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
14
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
15
import org.eclipse.mylyn.tasks.core.AbstractTask;
15
import org.eclipse.mylyn.tasks.core.AbstractTask;
16
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
16
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
17
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
18
17
19
/**
18
/**
20
 * @author Rob Elves
19
 * @author Rob Elves
Lines 49-55 Link Here
49
	protected abstract void performActionOnTask(AbstractTask repositoryTask);
48
	protected abstract void performActionOnTask(AbstractTask repositoryTask);
50
49
51
	protected boolean containsArchiveContainer(List<AbstractTaskContainer> selectedElements) {
50
	protected boolean containsArchiveContainer(List<AbstractTaskContainer> selectedElements) {
52
		return selectedElements.contains(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer());
51
		return false;//selectedElements.contains(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer());
53
	}
52
	}
54
53
55
}
54
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/OpenRepositoryTask.java (-2 / +1 lines)
Lines 61-68 Link Here
61
	 */
61
	 */
62
	private void openExistingTask(RemoteTaskSelectionDialog dlg) {
62
	private void openExistingTask(RemoteTaskSelectionDialog dlg) {
63
		if (dlg.shouldAddToTaskList()) {
63
		if (dlg.shouldAddToTaskList()) {
64
			TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(dlg.getSelectedTask(),
64
			TasksUiPlugin.getTaskListManager().getTaskList().moveTask(dlg.getSelectedTask(), dlg.getSelectedCategory());
65
					dlg.getSelectedCategory());
66
		}
65
		}
67
		TasksUiUtil.refreshAndOpenTaskListElement(dlg.getSelectedTask());
66
		TasksUiUtil.refreshAndOpenTaskListElement(dlg.getSelectedTask());
68
	}
67
	}
(-)src/org/eclipse/mylyn/internal/tasks/ui/actions/MarkTaskReadAction.java (-10 / +10 lines)
Lines 25-48 Link Here
25
	public static final String ID = "org.eclipse.mylyn.tasklist.actions.mark.read";
25
	public static final String ID = "org.eclipse.mylyn.tasklist.actions.mark.read";
26
26
27
	public static final String DEFINITION_ID = "org.eclipse.mylyn.tasks.ui.command.markTaskRead";
27
	public static final String DEFINITION_ID = "org.eclipse.mylyn.tasks.ui.command.markTaskRead";
28
	
28
29
	public MarkTaskReadAction(List<AbstractTaskContainer> selectedElements) {
29
	public MarkTaskReadAction(List<AbstractTaskContainer> selectedElements) {
30
		super.selectedElements = selectedElements;
30
		super.selectedElements = selectedElements;
31
		setText(ACTION_NAME);
31
		setText(ACTION_NAME);
32
		setToolTipText("Mark " + ACTION_NAME);
32
		setToolTipText("Mark " + ACTION_NAME);
33
		setId(ID);
33
		setId(ID);
34
		setActionDefinitionId(DEFINITION_ID);
34
		setActionDefinitionId(DEFINITION_ID);
35
		if (containsArchiveContainer(selectedElements)) {
35
//		if (containsArchiveContainer(selectedElements)) {
36
			setEnabled(false);
36
//			setEnabled(false);
37
//		} else {
38
		setEnabled(selectedElements.size() > 0);
39
		if (selectedElements.size() == 1 && (selectedElements.get(0) instanceof AbstractTask)) {
40
			AbstractTask task = (AbstractTask) selectedElements.get(0);
41
			setEnabled(!(task instanceof LocalTask));
37
		} else {
42
		} else {
38
			setEnabled(selectedElements.size() > 0);
43
			setEnabled(true);
39
			if (selectedElements.size() == 1 && (selectedElements.get(0) instanceof AbstractTask)) {
40
				AbstractTask task = (AbstractTask) selectedElements.get(0);
41
				setEnabled(!(task instanceof LocalTask));
42
			} else {
43
				setEnabled(true);
44
			}
45
		}
44
		}
45
//		}
46
	}
46
	}
47
47
48
	@Override
48
	@Override
(-)src/org/eclipse/mylyn/internal/tasks/ui/util/DelegatingTaskExternalizer.java (-5 / +9 lines)
Lines 296-308 Link Here
296
		boolean hasCaughtException = false;
296
		boolean hasCaughtException = false;
297
		Element element = (Element) node;
297
		Element element = (Element) node;
298
298
299
		AbstractTaskCategory category;
299
		AbstractTaskCategory category = null;
300
		if (element.hasAttribute(DelegatingTaskExternalizer.KEY_NAME)) {
300
		if (element.hasAttribute(DelegatingTaskExternalizer.KEY_NAME)) {
301
			category = new TaskCategory(element.getAttribute(DelegatingTaskExternalizer.KEY_NAME));
301
			category = new TaskCategory(element.getAttribute(DelegatingTaskExternalizer.KEY_NAME));
302
			taskList.internalAddCategory((TaskCategory) category);
302
			taskList.internalAddCategory((TaskCategory) category);
303
		} else {
303
		} else {
304
			// LEGACY: registry categories did not have names
304
			// LEGACY: registry categories did not have names
305
			category = taskList.getArchiveContainer();
305
			// category = taskList.getArchiveContainer();
306
			// a null category will now go into appropriate orphaned category
306
		}
307
		}
307
308
308
		NodeList list = node.getChildNodes();
309
		NodeList list = node.getChildNodes();
Lines 311-317 Link Here
311
			try {
312
			try {
312
				// LEGACY: categories used to contain tasks?
313
				// LEGACY: categories used to contain tasks?
313
				AbstractTask task = readTask(child, category, null);
314
				AbstractTask task = readTask(child, category, null);
314
				category.internalAddChild(task);
315
				if (category != null) {
316
					category.internalAddChild(task);
317
				}
315
				taskList.insertTask(task, category, null);
318
				taskList.insertTask(task, category, null);
316
			} catch (Throwable t) {
319
			} catch (Throwable t) {
317
				hasCaughtException = true;
320
				hasCaughtException = true;
Lines 379-385 Link Here
379
//		return task;
382
//		return task;
380
//	}
383
//	}
381
384
382
	private void readTaskInfo(AbstractTask task, Element element, AbstractTask parent, AbstractTaskCategory legacyCategory) throws TaskExternalizationException {
385
	private void readTaskInfo(AbstractTask task, Element element, AbstractTask parent,
386
			AbstractTaskCategory legacyCategory) throws TaskExternalizationException {
383
		if (task == null) {
387
		if (task == null) {
384
			return;
388
			return;
385
		}
389
		}
Lines 404-410 Link Here
404
//			taskList.internalAddTask(task, taskList.getArchiveContainer());
408
//			taskList.internalAddTask(task, taskList.getArchiveContainer());
405
//		}
409
//		}
406
		task.setCategoryHandle(element.getAttribute(KEY_CATEGORY));
410
		task.setCategoryHandle(element.getAttribute(KEY_CATEGORY));
407
		
411
408
		if (element.hasAttribute(KEY_PRIORITY)) {
412
		if (element.hasAttribute(KEY_PRIORITY)) {
409
			task.setPriority(element.getAttribute(KEY_PRIORITY));
413
			task.setPriority(element.getAttribute(KEY_PRIORITY));
410
		} else {
414
		} else {
(-)src/org/eclipse/mylyn/tasks/ui/editors/AbstractNewRepositoryTaskEditor.java (-1 / +2 lines)
Lines 23-28 Link Here
23
import org.eclipse.jface.viewers.IStructuredSelection;
23
import org.eclipse.jface.viewers.IStructuredSelection;
24
import org.eclipse.jface.viewers.SelectionChangedEvent;
24
import org.eclipse.jface.viewers.SelectionChangedEvent;
25
import org.eclipse.jface.viewers.StructuredSelection;
25
import org.eclipse.jface.viewers.StructuredSelection;
26
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
26
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
27
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
27
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
28
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
28
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
29
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
Lines 492-498 Link Here
492
								.getSelection()).getFirstElement();
493
								.getSelection()).getFirstElement();
493
494
494
					if (selectedObject instanceof TaskCategory) {
495
					if (selectedObject instanceof TaskCategory) {
495
						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(newTask,
496
						TasksUiPlugin.getTaskListManager().getTaskList().moveTask(newTask,
496
								((TaskCategory) selectedObject));
497
								((TaskCategory) selectedObject));
497
					}
498
					}
498
				}
499
				}
(-)src/org/eclipse/mylyn/tasks/ui/editors/AbstractRepositoryTaskEditor.java (-1 / +1 lines)
Lines 3553-3559 Link Here
3553
			PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
3553
			PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
3554
				public void run() {
3554
				public void run() {
3555
					if (getCategory() != null) {
3555
					if (getCategory() != null) {
3556
						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(newTask, getCategory());
3556
						TasksUiPlugin.getTaskListManager().getTaskList().moveTask(newTask, getCategory());
3557
					}
3557
					}
3558
				}
3558
				}
3559
			});
3559
			});
(-)src/org/eclipse/mylyn/tasks/ui/TasksUiPlugin.java (-6 / +6 lines)
Lines 442-447 Link Here
442
			// initialized
442
			// initialized
443
			taskListManager.init();
443
			taskListManager.init();
444
			taskListManager.addActivityListener(CONTEXT_TASK_ACTIVITY_LISTENER);
444
			taskListManager.addActivityListener(CONTEXT_TASK_ACTIVITY_LISTENER);
445
			// readExistingOrCreateNewList() must be called after repositories have been read in
445
			taskListManager.readExistingOrCreateNewList();
446
			taskListManager.readExistingOrCreateNewList();
446
			initialized = true;
447
			initialized = true;
447
448
Lines 482-488 Link Here
482
483
483
		// Add standard local task repository
484
		// Add standard local task repository
484
		if (taskRepositoryManager.getRepository(LocalRepositoryConnector.REPOSITORY_URL) == null) {
485
		if (taskRepositoryManager.getRepository(LocalRepositoryConnector.REPOSITORY_URL) == null) {
485
			TaskRepository localRepository = new TaskRepository(LocalRepositoryConnector.REPOSITORY_KIND,
486
			TaskRepository localRepository = new TaskRepository(LocalRepositoryConnector.CONNECTOR_KIND,
486
					LocalRepositoryConnector.REPOSITORY_URL, LocalRepositoryConnector.REPOSITORY_VERSION);
487
					LocalRepositoryConnector.REPOSITORY_URL, LocalRepositoryConnector.REPOSITORY_VERSION);
487
			localRepository.setRepositoryLabel(LocalRepositoryConnector.REPOSITORY_LABEL);
488
			localRepository.setRepositoryLabel(LocalRepositoryConnector.REPOSITORY_LABEL);
488
			localRepository.setAnonymous(true);
489
			localRepository.setAnonymous(true);
Lines 640-652 Link Here
640
	 * @param withProgress
641
	 * @param withProgress
641
	 */
642
	 */
642
	public void reloadDataDirectory(boolean withProgress) {
643
	public void reloadDataDirectory(boolean withProgress) {
643
		getTaskListManager().resetTaskList();
644
		getTaskListManager().getTaskActivationHistory().clear();
644
		getTaskListManager().getTaskActivationHistory().clear();
645
		getRepositoryManager().readRepositories(getRepositoriesFilePath());
645
		getRepositoryManager().readRepositories(getRepositoriesFilePath());
646
		loadTemplateRepositories();
646
		loadTemplateRepositories();
647
		ContextCorePlugin.getContextManager().loadActivityMetaContext();
647
		getTaskListManager().resetTaskList();
648
		getTaskListManager().setTaskListFile(
648
		getTaskListManager().setTaskListFile(
649
				new File(getDataDirectory() + File.separator + ITasksUiConstants.DEFAULT_TASK_LIST_FILE));
649
				new File(getDataDirectory() + File.separator + ITasksUiConstants.DEFAULT_TASK_LIST_FILE));
650
		ContextCorePlugin.getContextManager().loadActivityMetaContext();
650
		getTaskListManager().readExistingOrCreateNewList();
651
		getTaskListManager().readExistingOrCreateNewList();
651
		getTaskListManager().initActivityHistory();
652
		getTaskListManager().initActivityHistory();
652
		checkForCredentials();
653
		checkForCredentials();
Lines 957-964 Link Here
957
	 * 
958
	 * 
958
	 * @Deprecated
959
	 * @Deprecated
959
	 */
960
	 */
960
	public TaskListNotification getIncommingNotification(AbstractRepositoryConnector connector,
961
	public TaskListNotification getIncommingNotification(AbstractRepositoryConnector connector, AbstractTask task) {
961
			AbstractTask task) {
962
962
963
		TaskListNotification notification = new TaskListNotification(task);
963
		TaskListNotification notification = new TaskListNotification(task);
964
		RepositoryTaskData newTaskData = getTaskDataManager().getNewTaskData(task.getRepositoryUrl(), task.getTaskId());
964
		RepositoryTaskData newTaskData = getTaskDataManager().getNewTaskData(task.getRepositoryUrl(), task.getTaskId());
Lines 981-987 Link Here
981
				if (!"".equals(chnagedAttributes)) {
981
				if (!"".equals(chnagedAttributes)) {
982
					description.append(chnagedAttributes);
982
					description.append(chnagedAttributes);
983
				}
983
				}
984
				
984
985
				notification.setDescription(description.toString());
985
				notification.setDescription(description.toString());
986
986
987
				if (connector != null) {
987
				if (connector != null) {
(-)src/org/eclipse/mylyn/tasks/ui/TaskListManager.java (-3 / +18 lines)
Lines 33-38 Link Here
33
import org.eclipse.mylyn.internal.context.core.InteractionContextManager;
33
import org.eclipse.mylyn.internal.context.core.InteractionContextManager;
34
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
34
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
35
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
35
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
36
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
36
import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil;
37
import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil;
37
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
38
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
38
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
39
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
Lines 109-116 Link Here
109
110
110
	private TaskListSaveManager taskListSaveManager;
111
	private TaskListSaveManager taskListSaveManager;
111
112
112
	// TODO: guard against overwriting the single instance?
113
	private final TaskList taskList = new TaskList();
113
	private TaskList taskList = new TaskList();
114
114
115
	private TaskActivationHistory taskActivityHistory = new TaskActivationHistory();
115
	private TaskActivationHistory taskActivityHistory = new TaskActivationHistory();
116
116
Lines 157-166 Link Here
157
	public TaskList resetTaskList() {
157
	public TaskList resetTaskList() {
158
		resetAndRollOver();
158
		resetAndRollOver();
159
		taskList.reset();
159
		taskList.reset();
160
		prepareOrphanContainers();
161
160
		taskListInitialized = true;
162
		taskListInitialized = true;
161
		return taskList;
163
		return taskList;
162
	}
164
	}
163
165
166
	private void prepareOrphanContainers() {
167
		for (TaskRepository repository : TasksUiPlugin.getRepositoryManager().getAllRepositories()) {
168
			if (!repository.getConnectorKind().equals(LocalRepositoryConnector.CONNECTOR_KIND)) {
169
				taskList.addOrphanContainer(new OrphanedTasksContainer(repository.getConnectorKind(),
170
						repository.getUrl()));
171
			}
172
		}
173
174
//		taskList.addOrphanContainer(new OrphanedTasksContainer(LocalRepositoryConnector.CONNECTOR_KIND,
175
//				LocalRepositoryConnector.REPOSITORY_URL));
176
	}
177
164
	public void refactorRepositoryUrl(String oldUrl, String newUrl) {
178
	public void refactorRepositoryUrl(String oldUrl, String newUrl) {
165
		if (oldUrl == null || newUrl == null || oldUrl.equals(newUrl)) {
179
		if (oldUrl == null || newUrl == null || oldUrl.equals(newUrl)) {
166
			return;
180
			return;
Lines 262-267 Link Here
262
	public boolean readExistingOrCreateNewList() {
276
	public boolean readExistingOrCreateNewList() {
263
		try {
277
		try {
264
			if (taskListFile.exists()) {
278
			if (taskListFile.exists()) {
279
				prepareOrphanContainers();
265
				taskListWriter.readTaskList(taskList, taskListFile, TasksUiPlugin.getTaskDataManager());
280
				taskListWriter.readTaskList(taskList, taskListFile, TasksUiPlugin.getTaskDataManager());
266
			} else {
281
			} else {
267
				resetTaskList();
282
				resetTaskList();
Lines 506-512 Link Here
506
				MessageDialog.openInformation(Display.getCurrent().getActiveShell(), ITasksUiConstants.TITLE_DIALOG,
521
				MessageDialog.openInformation(Display.getCurrent().getActiveShell(), ITasksUiConstants.TITLE_DIALOG,
507
						"The new task has been added to the root of the list, since tasks can not be added to a query.");
522
						"The new task has been added to the root of the list, since tasks can not be added to a query.");
508
			}
523
			}
509
			taskList.addTask(newTask, taskList.getDefaultCategory());
524
			taskList.addTask(newTask, TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
510
		}
525
		}
511
		return newTask;
526
		return newTask;
512
	}
527
	}
(-)src/org/eclipse/mylyn/internal/tasks/ui/LocalTaskConnectorUi.java (-1 / +1 lines)
Lines 47-53 Link Here
47
47
48
	@Override
48
	@Override
49
	public String getConnectorKind() {
49
	public String getConnectorKind() {
50
		return LocalRepositoryConnector.REPOSITORY_KIND;
50
		return LocalRepositoryConnector.CONNECTOR_KIND;
51
	}
51
	}
52
52
53
	@Override
53
	@Override
(-)src/org/eclipse/mylyn/internal/tasks/ui/TaskRepositoryAdapterFactory.java (-1 / +1 lines)
Lines 47-53 Link Here
47
								.getRepositoryConnector(repository.getConnectorKind());
47
								.getRepositoryConnector(repository.getConnectorKind());
48
						return connector.canCreateNewTask(repository);
48
						return connector.canCreateNewTask(repository);
49
					} else if ("hasRepository".equals(name)) {
49
					} else if ("hasRepository".equals(name)) {
50
						return !repository.getConnectorKind().equals(LocalRepositoryConnector.REPOSITORY_KIND);
50
						return !repository.getConnectorKind().equals(LocalRepositoryConnector.CONNECTOR_KIND);
51
					}
51
					}
52
					return false;
52
					return false;
53
				}
53
				}
(-)src/org/eclipse/mylyn/internal/tasks/ui/TaskArchiveFilter.java (+8 lines)
Lines 7-12 Link Here
7
 *******************************************************************************/
7
 *******************************************************************************/
8
package org.eclipse.mylyn.internal.tasks.ui;
8
package org.eclipse.mylyn.internal.tasks.ui;
9
9
10
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
11
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
10
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
12
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
11
13
12
/**
14
/**
Lines 16-21 Link Here
16
18
17
	@Override
19
	@Override
18
	public boolean select(Object parent, Object element) {
20
	public boolean select(Object parent, Object element) {
21
		if (element instanceof OrphanedTasksContainer) {
22
//			if (((OrphanedTasksContainer) element).getRepositoryUrl().equals(LocalRepositoryConnector.REPOSITORY_URL)) {
23
//				return true;
24
//			}
25
			return false;
26
		}
19
		if (element instanceof TaskArchive) {
27
		if (element instanceof TaskArchive) {
20
			return false;
28
			return false;
21
		}
29
		}
(-)src/org/eclipse/mylyn/internal/tasks/ui/MoveToCategoryMenuContributor.java (-2 / +3 lines)
Lines 15-20 Link Here
15
import org.eclipse.jface.action.Action;
15
import org.eclipse.jface.action.Action;
16
import org.eclipse.jface.action.MenuManager;
16
import org.eclipse.jface.action.MenuManager;
17
import org.eclipse.jface.action.Separator;
17
import org.eclipse.jface.action.Separator;
18
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
18
import org.eclipse.mylyn.internal.tasks.ui.actions.NewCategoryAction;
19
import org.eclipse.mylyn.internal.tasks.ui.actions.NewCategoryAction;
19
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
21
import org.eclipse.mylyn.tasks.core.AbstractTaskCategory;
Lines 41-47 Link Here
41
				.getCategories());
42
				.getCategories());
42
		Collections.sort(categories);
43
		Collections.sort(categories);
43
		for (final AbstractTaskCategory category : categories) {
44
		for (final AbstractTaskCategory category : categories) {
44
			if (!category.equals(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer())) {
45
			if (!(category instanceof OrphanedTasksContainer)) {
45
				Action action = new Action() {
46
				Action action = new Action() {
46
					@Override
47
					@Override
47
					public void run() {
48
					public void run() {
Lines 99-105 Link Here
99
	private void moveToCategory(final List<AbstractTaskContainer> selectedElements, AbstractTaskCategory category) {
100
	private void moveToCategory(final List<AbstractTaskContainer> selectedElements, AbstractTaskCategory category) {
100
		for (AbstractTaskContainer element : selectedElements) {
101
		for (AbstractTaskContainer element : selectedElements) {
101
			if (element instanceof AbstractTask) {
102
			if (element instanceof AbstractTask) {
102
				TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer((AbstractTask) element, category);
103
				TasksUiPlugin.getTaskListManager().getTaskList().moveTask((AbstractTask) element, category);
103
			}
104
			}
104
		}
105
		}
105
	}
106
	}
(-)src/org/eclipse/mylyn/internal/tasks/ui/AddExistingTaskJob.java (-3 / +4 lines)
Lines 18-23 Link Here
18
import org.eclipse.jface.dialogs.MessageDialog;
18
import org.eclipse.jface.dialogs.MessageDialog;
19
import org.eclipse.jface.viewers.IStructuredSelection;
19
import org.eclipse.jface.viewers.IStructuredSelection;
20
import org.eclipse.jface.viewers.StructuredSelection;
20
import org.eclipse.jface.viewers.StructuredSelection;
21
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
21
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
22
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
22
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
23
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
23
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
24
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
Lines 87-96 Link Here
87
							if (selectedObject instanceof TaskCategory) {
88
							if (selectedObject instanceof TaskCategory) {
88
								category = (TaskCategory) selectedObject;
89
								category = (TaskCategory) selectedObject;
89
							} else {
90
							} else {
90
								category = TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory();
91
								category = TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
92
										LocalRepositoryConnector.REPOSITORY_URL);
91
							}
93
							}
92
						}
94
						}
93
						TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(newTask, category);
95
						TasksUiPlugin.getTaskListManager().getTaskList().moveTask(newTask, category);
94
						taskListView.getViewer().setSelection(new StructuredSelection(newTask));
96
						taskListView.getViewer().setSelection(new StructuredSelection(newTask));
95
					}
97
					}
96
				});
98
				});
Lines 114-118 Link Here
114
		}
116
		}
115
		return Status.OK_STATUS;
117
		return Status.OK_STATUS;
116
	}
118
	}
117
118
}
119
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/AbstractTaskListFilter.java (+37 lines)
Lines 7-12 Link Here
7
 *******************************************************************************/
7
 *******************************************************************************/
8
package org.eclipse.mylyn.internal.tasks.ui;
8
package org.eclipse.mylyn.internal.tasks.ui;
9
9
10
import java.util.Set;
11
12
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
13
import org.eclipse.mylyn.tasks.core.AbstractTask;
14
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
15
import org.eclipse.mylyn.tasks.core.AbstractTask.RepositoryTaskSyncState;
16
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
17
10
/**
18
/**
11
 * Custom filters are used so that the "Find:" filter can 'see through' any filters that may have been applied.
19
 * Custom filters are used so that the "Find:" filter can 'see through' any filters that may have been applied.
12
 * 
20
 * 
Lines 16-19 Link Here
16
24
17
	public abstract boolean select(Object parent, Object element);
25
	public abstract boolean select(Object parent, Object element);
18
26
27
	/**
28
	 * NOTE: performance implication of looking down children
29
	 * 
30
	 * TODO: Move to an internal utility class
31
	 */
32
	public static boolean hasDescendantIncoming(AbstractTaskContainer container) {
33
		return hasDescendantIncoming(container, ITasksCoreConstants.MAX_SUBTASK_DEPTH);
34
	}
35
36
	private static boolean hasDescendantIncoming(AbstractTaskContainer container, int depth) {
37
		Set<AbstractTask> children = container.getChildren();
38
		if (children == null || depth <= 0) {
39
			return false;
40
		}
41
42
		for (AbstractTask task : children) {
43
			if (task != null) {
44
				AbstractTask containedRepositoryTask = task;
45
				if (containedRepositoryTask.getSynchronizationState() == RepositoryTaskSyncState.INCOMING) {
46
					return true;
47
				} else if (TasksUiPlugin.getDefault().groupSubtasks(container)
48
						&& hasDescendantIncoming(task, depth - 1)) {
49
					return true;
50
				}
51
			}
52
		}
53
		return false;
54
	}
55
19
}
56
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/TaskCompletionFilter.java (+12 lines)
Lines 7-13 Link Here
7
 *******************************************************************************/
7
 *******************************************************************************/
8
package org.eclipse.mylyn.internal.tasks.ui;
8
package org.eclipse.mylyn.internal.tasks.ui;
9
9
10
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
10
import org.eclipse.mylyn.tasks.core.AbstractTask;
11
import org.eclipse.mylyn.tasks.core.AbstractTask;
12
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
11
13
12
/**
14
/**
13
 * @author Mik Kersten
15
 * @author Mik Kersten
Lines 18-23 Link Here
18
	public boolean select(Object parent, Object element) {
20
	public boolean select(Object parent, Object element) {
19
		if (element instanceof AbstractTask) {
21
		if (element instanceof AbstractTask) {
20
			AbstractTask task = (AbstractTask) element;
22
			AbstractTask task = (AbstractTask) element;
23
24
			if (task.isCompleted()
25
					&& TaskListView.getFromActivePerspective() != null
26
					&& !TaskListView.getFromActivePerspective().isFocusedMode()
27
					&& TasksUiPlugin.getDefault().getPreferenceStore().getBoolean(
28
							TasksUiPreferenceConstants.FILTER_COMPLETE_MODE)) {
29
				// but has child with incoming don't filter
30
				return (hasDescendantIncoming(task));
31
			}
32
21
			return !task.isCompleted();
33
			return !task.isCompleted();
22
		}
34
		}
23
		return true;
35
		return true;
(-)src/org/eclipse/mylyn/internal/tasks/ui/wizards/SelectRepositoryPage.java (-1 / +1 lines)
Lines 159-165 Link Here
159
			viewer.setSelection(new StructuredSelection(selectedRepository));
159
			viewer.setSelection(new StructuredSelection(selectedRepository));
160
		} else {
160
		} else {
161
			TaskRepository localRepository = TasksUiPlugin.getRepositoryManager().getRepository(
161
			TaskRepository localRepository = TasksUiPlugin.getRepositoryManager().getRepository(
162
					LocalRepositoryConnector.REPOSITORY_KIND, LocalRepositoryConnector.REPOSITORY_URL);
162
					LocalRepositoryConnector.CONNECTOR_KIND, LocalRepositoryConnector.REPOSITORY_URL);
163
			viewer.setSelection(new StructuredSelection(localRepository));
163
			viewer.setSelection(new StructuredSelection(localRepository));
164
		}
164
		}
165
		
165
		
(-)src/org/eclipse/mylyn/internal/tasks/ui/wizards/TaskDataImportWizard.java (-16 / +13 lines)
Lines 27-35 Link Here
27
import org.eclipse.mylyn.internal.monitor.core.util.ZipFileUtil;
27
import org.eclipse.mylyn.internal.monitor.core.util.ZipFileUtil;
28
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
28
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
29
import org.eclipse.mylyn.monitor.core.StatusHandler;
29
import org.eclipse.mylyn.monitor.core.StatusHandler;
30
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
31
import org.eclipse.mylyn.tasks.core.AbstractTask;
32
import org.eclipse.mylyn.tasks.core.TaskList;
33
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
30
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
34
import org.eclipse.ui.IImportWizard;
31
import org.eclipse.ui.IImportWizard;
35
import org.eclipse.ui.IWorkbench;
32
import org.eclipse.ui.IWorkbench;
Lines 215-233 Link Here
215
		}
212
		}
216
	}
213
	}
217
214
218
	/** Returns all tasks in the task list root or a category in the task list */
215
//	/** Returns all tasks in the task list root or a category in the task list */
219
	protected List<AbstractTask> getAllTasks() {
216
//	protected List<AbstractTask> getAllTasks() {
220
		List<AbstractTask> allTasks = new ArrayList<AbstractTask>();
217
//		List<AbstractTask> allTasks = new ArrayList<AbstractTask>();
221
		TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
218
//		TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
222
219
//
223
		allTasks.addAll(taskList.getDefaultCategory().getChildren());
220
//		allTasks.addAll(taskList.getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL).getChildren());
224
221
//
225
		for (AbstractTaskContainer category : taskList.getCategories()) {
222
//		for (AbstractTaskContainer category : taskList.getCategories()) {
226
			allTasks.addAll(category.getChildren());
223
//			allTasks.addAll(category.getChildren());
227
		}
224
//		}
228
225
//
229
		return allTasks;
226
//		return allTasks;
230
	}
227
//	}
231
228
232
	private void readTaskListData() {
229
	private void readTaskListData() {
233
		PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
230
		PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
(-)src/org/eclipse/mylyn/internal/tasks/ui/search/RepositorySearchResultView.java (-1 / +2 lines)
Lines 21-26 Link Here
21
import org.eclipse.jface.viewers.StructuredViewer;
21
import org.eclipse.jface.viewers.StructuredViewer;
22
import org.eclipse.jface.viewers.TableViewer;
22
import org.eclipse.jface.viewers.TableViewer;
23
import org.eclipse.jface.viewers.TreeViewer;
23
import org.eclipse.jface.viewers.TreeViewer;
24
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
24
import org.eclipse.mylyn.internal.tasks.ui.AddExistingTaskJob;
25
import org.eclipse.mylyn.internal.tasks.ui.AddExistingTaskJob;
25
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
26
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
26
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
27
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
Lines 281-287 Link Here
281
282
282
		Collections.sort(categories);
283
		Collections.sort(categories);
283
		for (final AbstractTaskCategory category : categories) {
284
		for (final AbstractTaskCategory category : categories) {
284
			if (!category.equals(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer())) {
285
			if (!(category instanceof OrphanedTasksContainer)) {//.equals(TasksUiPlugin.getTaskListManager().getTaskList().getArchiveContainer())) {
285
				Action action = new Action() {
286
				Action action = new Action() {
286
					@Override
287
					@Override
287
					public void run() {
288
					public void run() {
(-)src/org/eclipse/mylyn/internal/tasks/ui/workingsets/TaskWorkingSetPage.java (+9 lines)
Lines 31-36 Link Here
31
import org.eclipse.jface.viewers.Viewer;
31
import org.eclipse.jface.viewers.Viewer;
32
import org.eclipse.jface.viewers.ViewerSorter;
32
import org.eclipse.jface.viewers.ViewerSorter;
33
import org.eclipse.jface.wizard.WizardPage;
33
import org.eclipse.jface.wizard.WizardPage;
34
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
34
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
35
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
35
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
36
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
36
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
37
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
Lines 138-143 Link Here
138
						taskContainers.add(element);
139
						taskContainers.add(element);
139
					}
140
					}
140
				}
141
				}
142
143
				OrphanedTasksContainer orphansContainer = TasksUiPlugin.getTaskListManager()
144
						.getTaskList()
145
						.getOrphanContainer(((TaskRepository) parentElement).getUrl());
146
				if (orphansContainer != null) {
147
					taskContainers.add(orphansContainer);
148
				}
149
141
				return taskContainers.toArray();
150
				return taskContainers.toArray();
142
			} else if (parentElement instanceof TaskRepositoryProjectMapping) {
151
			} else if (parentElement instanceof TaskRepositoryProjectMapping) {
143
				return ((TaskRepositoryProjectMapping) parentElement).getProjects().toArray();
152
				return ((TaskRepositoryProjectMapping) parentElement).getProjects().toArray();
(-)src/org/eclipse/mylyn/internal/tasks/ui/commands/RemoteTaskSelectionDialog.java (+1 lines)
Lines 33-38 Link Here
33
import org.eclipse.jface.viewers.Viewer;
33
import org.eclipse.jface.viewers.Viewer;
34
import org.eclipse.jface.viewers.ViewerFilter;
34
import org.eclipse.jface.viewers.ViewerFilter;
35
import org.eclipse.mylyn.internal.tasks.core.ITaskRepositoryFilter;
35
import org.eclipse.mylyn.internal.tasks.core.ITaskRepositoryFilter;
36
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
36
import org.eclipse.mylyn.internal.tasks.ui.ITaskCommandIds;
37
import org.eclipse.mylyn.internal.tasks.ui.ITaskCommandIds;
37
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
38
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
38
import org.eclipse.mylyn.internal.tasks.ui.views.TaskRepositoryLabelProvider;
39
import org.eclipse.mylyn.internal.tasks.ui.views.TaskRepositoryLabelProvider;
(-)src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java (-1 / +2 lines)
Lines 19-24 Link Here
19
19
20
import org.eclipse.jface.layout.GridDataFactory;
20
import org.eclipse.jface.layout.GridDataFactory;
21
import org.eclipse.jface.wizard.WizardPage;
21
import org.eclipse.jface.wizard.WizardPage;
22
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
22
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
23
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
23
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
24
import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider;
24
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
25
import org.eclipse.mylyn.tasks.core.AbstractTaskContainer;
Lines 217-223 Link Here
217
		List<AbstractTaskContainer> containers = new ArrayList<AbstractTaskContainer>();
218
		List<AbstractTaskContainer> containers = new ArrayList<AbstractTaskContainer>();
218
		containers.addAll(manager.getTaskList().getUserCategories());
219
		containers.addAll(manager.getTaskList().getUserCategories());
219
		containers.addAll(manager.getTaskList().getQueries());
220
		containers.addAll(manager.getTaskList().getQueries());
220
		containers.add(manager.getTaskList().getArchiveContainer());
221
		//containers.add(manager.getTaskList().getArchiveContainer());
221
		Collections.sort(containers, new Comparator<AbstractTaskContainer>() {
222
		Collections.sort(containers, new Comparator<AbstractTaskContainer>() {
222
223
223
			public int compare(AbstractTaskContainer c1, AbstractTaskContainer c2) {
224
			public int compare(AbstractTaskContainer c1, AbstractTaskContainer c2) {
(-)src/org/eclipse/mylyn/internal/context/ui/TaskListInterestFilter.java (-43 / +41 lines)
Lines 11-20 Link Here
11
import java.util.Calendar;
11
import java.util.Calendar;
12
import java.util.Set;
12
import java.util.Set;
13
13
14
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
14
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
15
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
15
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
16
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
16
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
17
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
17
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
18
import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter;
18
import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter;
19
import org.eclipse.mylyn.monitor.core.StatusHandler;
19
import org.eclipse.mylyn.monitor.core.StatusHandler;
20
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.AbstractTask;
Lines 47-70 Link Here
47
					if (isUninteresting(parent, task)) {
47
					if (isUninteresting(parent, task)) {
48
						return false;
48
						return false;
49
					} else if (isInteresting(parent, task)) {
49
					} else if (isInteresting(parent, task)) {
50
						if (parent instanceof TaskArchive) {
50
//						if (parent instanceof TaskArchive) {
51
							return (shouldAlwaysShow(child, task, TasksUiPlugin.getDefault().groupSubtasks(task)) && revealInArchive(task));
51
//							return (shouldAlwaysShow(child, task, TasksUiPlugin.getDefault().groupSubtasks(task)) && revealInArchive(task));
52
						}
52
//						}
53
						return true;
53
						return true;
54
					}
54
					}
55
				}
55
				}
56
			} else if (child instanceof TaskArchive) {
56
			} /*else if (child instanceof TaskArchive) {
57
				// Display Archive if contains otherwise non-visible tasks that should always show
57
																				// Display Archive if contains otherwise non-visible tasks that should always show
58
				boolean hasTasksToReveal = false;
58
																				boolean hasTasksToReveal = false;
59
				for (AbstractTask task : ((TaskArchive) child).getChildren()) {
59
																				for (AbstractTask task : ((TaskArchive) child).getChildren()) {
60
					if (shouldAlwaysShow(child, task, TasksUiPlugin.getDefault().groupSubtasks(task))
60
																					if (shouldAlwaysShow(child, task, TasksUiPlugin.getDefault().groupSubtasks(task))
61
							&& revealInArchive(task)) {
61
																							&& revealInArchive(task)) {
62
						hasTasksToReveal = true;
62
																						hasTasksToReveal = true;
63
						break;
63
																						break;
64
					}
64
																					}
65
				}
65
																				}
66
				return hasTasksToReveal;
66
																				return hasTasksToReveal;
67
			} else if (child instanceof AbstractTaskContainer) {
67
																			}*/else if (child instanceof AbstractTaskContainer) {
68
				Set<AbstractTask> children = ((AbstractTaskContainer) child).getChildren();
68
				Set<AbstractTask> children = ((AbstractTaskContainer) child).getChildren();
69
				// Always display empty containers
69
				// Always display empty containers
70
				if (children.size() == 0) {
70
				if (children.size() == 0) {
Lines 72-78 Link Here
72
				}
72
				}
73
73
74
				for (AbstractTask task : children) {
74
				for (AbstractTask task : children) {
75
					if (shouldAlwaysShow(child, task, TasksUiPlugin.getDefault().groupSubtasks(task))) {
75
					if (shouldAlwaysShow(child, task, ITasksCoreConstants.MAX_SUBTASK_DEPTH)) {
76
						return true;
76
						return true;
77
					}
77
					}
78
				}
78
				}
Lines 84-99 Link Here
84
		return false;
84
		return false;
85
	}
85
	}
86
86
87
	private boolean revealInArchive(AbstractTask task) {
87
//	private boolean revealInArchive(AbstractTask task) {
88
		if (TasksUiPlugin.getTaskListManager().getTaskList().getContainerForHandle(task.getHandleIdentifier()) == null
88
//		if (TasksUiPlugin.getTaskListManager().getTaskList().getContainerForHandle(task.getHandleIdentifier()) == null
89
				&& TasksUiPlugin.getTaskListManager()
89
//				&& TasksUiPlugin.getTaskListManager()
90
						.getTaskList()
90
//						.getTaskList()
91
						.getQueriesForHandle(task.getHandleIdentifier())
91
//						.getQueriesForHandle(task.getHandleIdentifier())
92
						.isEmpty()) {
92
//						.isEmpty()) {
93
			return true;
93
//			return true;
94
		}
94
//		}
95
		return false;
95
//		return false;
96
	}
96
//	}
97
97
98
	private boolean isDateRangeInteresting(ScheduledTaskContainer container) {
98
	private boolean isDateRangeInteresting(ScheduledTaskContainer container) {
99
		return TasksUiPlugin.getTaskActivityManager().isWeekDay(container);
99
		return TasksUiPlugin.getTaskActivityManager().isWeekDay(container);
Lines 102-108 Link Here
102
102
103
	protected boolean isUninteresting(Object parent, AbstractTask task) {
103
	protected boolean isUninteresting(Object parent, AbstractTask task) {
104
		return !task.isActive()
104
		return !task.isActive()
105
				&& !hasInterestingSubTasks(parent, task, true)
105
				&& !hasInterestingSubTasks(parent, task, ITasksCoreConstants.MAX_SUBTASK_DEPTH)
106
				&& ((task.isCompleted() && !TaskActivityManager.getInstance().isCompletedToday(task) && !hasChanges(
106
				&& ((task.isCompleted() && !TaskActivityManager.getInstance().isCompletedToday(task) && !hasChanges(
107
						parent, task)) || (TaskActivityManager.getInstance().isScheduledAfterThisWeek(task))
107
						parent, task)) || (TaskActivityManager.getInstance().isScheduledAfterThisWeek(task))
108
						&& !hasChanges(parent, task));
108
						&& !hasChanges(parent, task));
Lines 110-140 Link Here
110
110
111
	// TODO: make meta-context more explicit
111
	// TODO: make meta-context more explicit
112
	protected boolean isInteresting(Object parent, AbstractTask task) {
112
	protected boolean isInteresting(Object parent, AbstractTask task) {
113
		return shouldAlwaysShow(parent, task, TasksUiPlugin.getDefault().groupSubtasks(task));
113
		return shouldAlwaysShow(parent, task, ITasksCoreConstants.MAX_SUBTASK_DEPTH);
114
	}
114
	}
115
115
116
	public boolean shouldAlwaysShow(Object parent, AbstractTask task, boolean checkSubTasks) {
116
	public boolean shouldAlwaysShow(Object parent, AbstractTask task, int depth) {
117
		return task.isActive() || hasChanges(parent, task)
117
		return task.isActive() || hasChanges(parent, task)
118
				|| (TaskActivityManager.getInstance().isCompletedToday(task))
118
				|| (TaskActivityManager.getInstance().isCompletedToday(task))
119
				|| shouldShowInFocusedWorkweekDateContainer(parent, task)
119
				|| shouldShowInFocusedWorkweekDateContainer(parent, task)
120
				|| (isInterestingForThisWeek(parent, task) && !task.isCompleted())
120
				|| (isInterestingForThisWeek(parent, task) && !task.isCompleted())
121
				|| (TaskActivityManager.getInstance().isOverdue(task))
121
				|| (TaskActivityManager.getInstance().isOverdue(task)) || hasInterestingSubTasks(parent, task, depth)
122
				|| hasInterestingSubTasks(parent, task, checkSubTasks)
123
				|| LocalRepositoryConnector.DEFAULT_SUMMARY.equals(task.getSummary());
122
				|| LocalRepositoryConnector.DEFAULT_SUMMARY.equals(task.getSummary());
124
		// || isCurrentlySelectedInEditor(task);
123
		// || isCurrentlySelectedInEditor(task);
125
	}
124
	}
126
125
127
	private boolean hasInterestingSubTasks(Object parent, AbstractTask task, boolean checkSubTasks) {
126
	private boolean hasInterestingSubTasks(Object parent, AbstractTask task, int depth) {
128
		if (!checkSubTasks) {
127
		if (depth > 0) {
129
			return false;
128
			if (!TasksUiPlugin.getDefault().groupSubtasks(task)) {
130
		}
129
				return false;
131
		if (!TasksUiPlugin.getDefault().groupSubtasks(task)) {
130
			}
132
			return false;
131
			if (task.getChildren() != null && task.getChildren().size() > 0) {
133
		}
132
				for (AbstractTask subTask : task.getChildren()) {
134
		if (task.getChildren() != null && task.getChildren().size() > 0) {
133
					if (shouldAlwaysShow(parent, subTask, depth - 1)) {
135
			for (AbstractTask subTask : task.getChildren()) {
134
						return true;
136
				if (shouldAlwaysShow(parent, subTask, false)) {
135
					}
137
					return true;
138
				}
136
				}
139
			}
137
			}
140
		}
138
		}
(-)src/org/eclipse/mylyn/internal/context/ui/TaskListInterestSorter.java (-4 / +14 lines)
Lines 10-17 Link Here
10
10
11
import org.eclipse.jface.viewers.Viewer;
11
import org.eclipse.jface.viewers.Viewer;
12
import org.eclipse.jface.viewers.ViewerSorter;
12
import org.eclipse.jface.viewers.ViewerSorter;
13
import org.eclipse.mylyn.internal.tasks.core.OrphanedTasksContainer;
13
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
14
import org.eclipse.mylyn.internal.tasks.core.ScheduledTaskContainer;
14
import org.eclipse.mylyn.internal.tasks.core.TaskArchive;
15
import org.eclipse.mylyn.internal.tasks.core.UnfiledCategory;
15
import org.eclipse.mylyn.internal.tasks.core.UnfiledCategory;
16
import org.eclipse.mylyn.internal.tasks.ui.views.TaskKeyComparator;
16
import org.eclipse.mylyn.internal.tasks.ui.views.TaskKeyComparator;
17
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter;
17
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter;
Lines 28-36 Link Here
28
28
29
	@Override
29
	@Override
30
	public int compare(Viewer compareViewer, Object o1, Object o2) {
30
	public int compare(Viewer compareViewer, Object o1, Object o2) {
31
		if (o1 instanceof AbstractTaskContainer && o2 instanceof TaskArchive) {
31
32
//		OrphanedTasksContainer localArchive = TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
33
//				LocalRepositoryConnector.REPOSITORY_URL);
34
//		if (o1 == localArchive && o2 instanceof AbstractTaskContainer) {
35
//			return -1;
36
//		} else if (o1 instanceof AbstractTaskContainer && o2 == localArchive) {
37
//			return 1;
38
//		}
39
40
		if (o1 instanceof AbstractTaskContainer && o2 instanceof OrphanedTasksContainer) {
32
			return -1;
41
			return -1;
33
		} else if (o2 instanceof AbstractTaskContainer && o1 instanceof TaskArchive) {
42
		} else if (o2 instanceof AbstractTaskContainer && o1 instanceof OrphanedTasksContainer) {
34
			return 1;
43
			return 1;
35
		}
44
		}
36
45
Lines 186-192 Link Here
186
	}
195
	}
187
196
188
	private int compareKeys(AbstractTaskContainer element1, AbstractTaskContainer element2) {
197
	private int compareKeys(AbstractTaskContainer element1, AbstractTaskContainer element2) {
189
		return taskKeyComparator.compare(TaskListTableSorter.getSortableFromElement(element1), TaskListTableSorter.getSortableFromElement(element2));
198
		return taskKeyComparator.compare(TaskListTableSorter.getSortableFromElement(element1),
199
				TaskListTableSorter.getSortableFromElement(element2));
190
	}
200
	}
191
201
192
	private int comparePriorities(AbstractTaskContainer element1, AbstractTaskContainer element2) {
202
	private int comparePriorities(AbstractTaskContainer element1, AbstractTaskContainer element2) {
(-).refactorings/2007/12/50/refactorings.index (+1 lines)
Added Link Here
1
1197477772828	Extract constant 'MAX_SUBTASK_DEPTH'
(-).refactorings/2007/12/50/refactorings.history (+4 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<session version="1.0">
3
<refactoring comment="Extract constant &apos;org.eclipse.mylyn.internal.context.ui.TaskListInterestFilter.MAX_SUBTASK_DEPTH&apos; from expression &apos;10&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.context.ui&apos;&#x0D;&#x0A;- Constant name: &apos;MAX_SUBTASK_DEPTH&apos;&#x0D;&#x0A;- Constant expression: &apos;10&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Extract constant &apos;MAX_SUBTASK_DEPTH&apos;" flags="786432" id="org.eclipse.jdt.ui.extract.constant" input="/src&lt;org.eclipse.mylyn.internal.context.ui{TaskListInterestFilter.java" name="MAX_SUBTASK_DEPTH" qualify="false" replace="false" selection="5089 2" stamp="1197477772828" version="1.0" visibility="2"/>
4
</session>
(-)src/org/eclipse/mylyn/java/tests/RefactoringTest.java (-1 lines)
Lines 83-89 Link Here
83
		IInteractionElement oldParentNode = ContextCorePlugin.getContextManager().getElement(
83
		IInteractionElement oldParentNode = ContextCorePlugin.getContextManager().getElement(
84
				parentNode.getHandleIdentifier());
84
				parentNode.getHandleIdentifier());
85
		assertFalse(oldParentNode.getInterest().isInteresting());
85
		assertFalse(oldParentNode.getInterest().isInteresting());
86
		// XXX: put back?
87
		IInteractionElement newParentNode = ContextCorePlugin.getContextManager().getElement(
86
		IInteractionElement newParentNode = ContextCorePlugin.getContextManager().getElement(
88
				newType.getParent().getHandleIdentifier());
87
				newType.getParent().getHandleIdentifier());
89
		assertTrue(newParentNode.getInterest().isInteresting());
88
		assertTrue(newParentNode.getInterest().isInteresting());
(-)src/org/eclipse/mylyn/internal/ide/ui/actions/AbstractFocusMarkerViewAction.java (-37 lines)
Lines 8-27 Link Here
8
8
9
package org.eclipse.mylyn.internal.ide.ui.actions;
9
package org.eclipse.mylyn.internal.ide.ui.actions;
10
10
11
import java.lang.reflect.Field;
12
import java.util.ArrayList;
13
import java.util.List;
14
15
import org.eclipse.jface.viewers.IBaseLabelProvider;
11
import org.eclipse.jface.viewers.IBaseLabelProvider;
16
import org.eclipse.jface.viewers.StructuredViewer;
12
import org.eclipse.jface.viewers.StructuredViewer;
17
import org.eclipse.jface.viewers.TableViewer;
13
import org.eclipse.jface.viewers.TableViewer;
18
import org.eclipse.mylyn.context.ui.AbstractFocusViewAction;
14
import org.eclipse.mylyn.context.ui.AbstractFocusViewAction;
19
import org.eclipse.mylyn.internal.ide.ui.MarkerInterestFilter;
15
import org.eclipse.mylyn.internal.ide.ui.MarkerInterestFilter;
20
import org.eclipse.mylyn.internal.ide.ui.MarkerViewLabelProvider;
16
import org.eclipse.mylyn.internal.ide.ui.MarkerViewLabelProvider;
21
import org.eclipse.mylyn.monitor.core.StatusHandler;
22
import org.eclipse.ui.IViewPart;
23
import org.eclipse.ui.internal.provisional.views.markers.ExtendedMarkersView;
24
import org.eclipse.ui.internal.provisional.views.markers.MarkersTreeViewer;
25
import org.eclipse.ui.views.markers.internal.TableViewLabelProvider;
17
import org.eclipse.ui.views.markers.internal.TableViewLabelProvider;
26
18
27
/**
19
/**
Lines 47-81 Link Here
47
		}
39
		}
48
	}
40
	}
49
41
50
	/**
51
	 * HACK: changing accessibility
52
	 */
53
	@Override
54
	public final List<StructuredViewer> getViewers() {
55
		List<StructuredViewer> viewers = new ArrayList<StructuredViewer>();
56
		if (cachedViewer == null) {
57
			try {
58
				IViewPart viewPart = super.getPartForAction();
59
				if (viewPart != null) {
60
					// NOTE: following code is Eclipse 3.4 specific
61
					Class<?> clazz = ExtendedMarkersView.class;
62
					Field field = clazz.getDeclaredField("viewer");
63
					field.setAccessible(true);
64
					cachedViewer = (MarkersTreeViewer)field.get(viewPart);
65
					if (!cachedViewer.getControl().isDisposed()) {
66
						updateMarkerViewLabelProvider(cachedViewer);
67
					}
68
				}
69
			} catch (Exception e) {
70
				StatusHandler.log(e, "couldn't get problems view viewer");
71
			}
72
		}
73
		if (cachedViewer != null) {
74
			viewers.add(cachedViewer);
75
		}
76
		return viewers;
77
	}
78
	
79
	@Override
42
	@Override
80
	public void update() {
43
	public void update() {
81
		super.update();
44
		super.update();
(-)src/org/eclipse/mylyn/internal/ide/ui/actions/FocusBookmarkMarkersViewAction.java (-28 / +29 lines)
Lines 8-43 Link Here
8
8
9
package org.eclipse.mylyn.internal.ide.ui.actions;
9
package org.eclipse.mylyn.internal.ide.ui.actions;
10
10
11
import java.lang.reflect.Method;
12
import java.util.ArrayList;
13
import java.util.List;
14
15
import org.eclipse.jface.viewers.StructuredViewer;
16
import org.eclipse.mylyn.monitor.core.StatusHandler;
17
import org.eclipse.ui.IViewPart;
18
import org.eclipse.ui.views.markers.internal.BookmarkView;
19
import org.eclipse.ui.views.markers.internal.TableView;
11
20
12
/**
13
 * @author Mik Kersten
14
 */
15
public class FocusBookmarkMarkersViewAction extends AbstractFocusMarkerViewAction {
21
public class FocusBookmarkMarkersViewAction extends AbstractFocusMarkerViewAction {
16
22
17
	public FocusBookmarkMarkersViewAction() {
23
	@Override
18
		super();
24
	public List<StructuredViewer> getViewers() {
25
		List<StructuredViewer> viewers = new ArrayList<StructuredViewer>();
26
		if (cachedViewer == null) {
27
			try {
28
				IViewPart viewPart = super.getPartForAction();
29
				if (viewPart instanceof BookmarkView) {
30
					Class<?> infoClass = TableView.class;
31
					Method method = infoClass.getDeclaredMethod("getViewer", new Class[] {});
32
					method.setAccessible(true);
33
					cachedViewer = (StructuredViewer) method.invoke(viewPart, new Object[] {});
34
					updateMarkerViewLabelProvider(cachedViewer);
35
				}
36
			} catch (Exception e) {
37
				StatusHandler.log(e, "couldn't get bookmarks view viewer");
38
			}
39
		}
40
		if (cachedViewer != null)
41
			viewers.add(cachedViewer);
42
		return viewers;
19
	}
43
	}
20
	
21
//	@Override
22
//	public List<StructuredViewer> getViewers() {
23
//		List<StructuredViewer> viewers = new ArrayList<StructuredViewer>();
24
//		if (cachedViewer == null) {
25
//			try {
26
//				IViewPart viewPart = super.getPartForAction();
27
//				System.err.println(">>> " + viewPart.getClass());
28
//				if (viewPart instanceof  BookmarkView) {
29
//					Class<?> infoClass = TableView.class;
30
//					Method method = infoClass.getDeclaredMethod("getViewer", new Class[] {});
31
//					method.setAccessible(true);
32
//					cachedViewer = (StructuredViewer) method.invoke(viewPart, new Object[] {});
33
//					updateMarkerViewLabelProvider(cachedViewer);
34
//				}
35
//			} catch (Exception e) {
36
//				StatusHandler.log(e, "couldn't get bookmarks view viewer");
37
//			}
38
//		}
39
//		if (cachedViewer != null)
40
//			viewers.add(cachedViewer);
41
//		return viewers;
42
//	}
43
}
44
}
(-)src/org/eclipse/mylyn/internal/ide/ui/actions/FocusProblemsListAction.java (+35 lines)
Lines 8-16 Link Here
8
8
9
package org.eclipse.mylyn.internal.ide.ui.actions;
9
package org.eclipse.mylyn.internal.ide.ui.actions;
10
10
11
import java.lang.reflect.Method;
12
import java.util.ArrayList;
13
import java.util.List;
14
11
import org.eclipse.jface.viewers.StructuredViewer;
15
import org.eclipse.jface.viewers.StructuredViewer;
12
import org.eclipse.jface.viewers.TableViewer;
16
import org.eclipse.jface.viewers.TableViewer;
13
import org.eclipse.mylyn.internal.ide.ui.MarkerViewLabelProvider;
17
import org.eclipse.mylyn.internal.ide.ui.MarkerViewLabelProvider;
18
import org.eclipse.mylyn.monitor.core.StatusHandler;
19
import org.eclipse.ui.IViewPart;
20
import org.eclipse.ui.views.markers.internal.TableView;
14
import org.eclipse.ui.views.markers.internal.TableViewLabelProvider;
21
import org.eclipse.ui.views.markers.internal.TableViewLabelProvider;
15
22
16
/**
23
/**
Lines 18-23 Link Here
18
 */
25
 */
19
public class FocusProblemsListAction extends AbstractFocusMarkerViewAction {
26
public class FocusProblemsListAction extends AbstractFocusMarkerViewAction {
20
27
28
	/**
29
	 * HACK: changing accessibility
30
	 */
31
	@Override
32
	public List<StructuredViewer> getViewers() {
33
		List<StructuredViewer> viewers = new ArrayList<StructuredViewer>();
34
		if (cachedViewer == null) {
35
			try {
36
				IViewPart viewPart = super.getPartForAction();
37
				if (viewPart != null) {
38
					Class<?> infoClass = TableView.class;// problemView.getClass();
39
					Method method = infoClass.getDeclaredMethod("getViewer", new Class[] {});
40
					method.setAccessible(true);
41
					cachedViewer = (StructuredViewer) method.invoke(viewPart, new Object[] {});
42
					if (!cachedViewer.getControl().isDisposed()) {
43
						updateMarkerViewLabelProvider(cachedViewer);
44
					}
45
				}
46
			} catch (Exception e) {
47
				StatusHandler.log(e, "couldn't get problems view viewer");
48
			}
49
		}
50
		if (cachedViewer != null) {
51
			viewers.add(cachedViewer);
52
		}
53
		return viewers;
54
	}
55
21
	@Override
56
	@Override
22
	public void update() {
57
	public void update() {
23
		super.update();
58
		super.update();
(-)src/org/eclipse/mylyn/internal/ide/ui/MarkerInterestFilter.java (-27 / +11 lines)
Lines 11-22 Link Here
11
package org.eclipse.mylyn.internal.ide.ui;
11
package org.eclipse.mylyn.internal.ide.ui;
12
12
13
import org.eclipse.core.resources.IMarker;
13
import org.eclipse.core.resources.IMarker;
14
import org.eclipse.core.runtime.CoreException;
15
import org.eclipse.jface.viewers.Viewer;
14
import org.eclipse.jface.viewers.Viewer;
16
import org.eclipse.mylyn.context.core.ContextCorePlugin;
15
import org.eclipse.mylyn.context.core.ContextCorePlugin;
17
import org.eclipse.mylyn.context.ui.InterestFilter;
16
import org.eclipse.mylyn.context.ui.InterestFilter;
18
import org.eclipse.ui.internal.provisional.views.markers.MarkerEntry;
17
import org.eclipse.ui.views.markers.internal.ConcreteMarker;
19
import org.eclipse.ui.internal.provisional.views.markers.api.MarkerItem;
18
import org.eclipse.ui.views.markers.internal.ProblemMarker;
20
19
21
/**
20
/**
22
 * @author Mik Kersten
21
 * @author Mik Kersten
Lines 25-40 Link Here
25
24
26
	@Override
25
	@Override
27
	public boolean select(Viewer viewer, Object parent, Object element) {
26
	public boolean select(Viewer viewer, Object parent, Object element) {
28
		if (element instanceof MarkerItem) {
27
		if (!(element instanceof ConcreteMarker)) {
29
			if (element.getClass().getSimpleName().equals("MarkerCategory")) {
28
			return true;
30
				return true;
31
			} else if (element instanceof MarkerEntry){
32
				MarkerEntry entry = (MarkerEntry)element;
33
				return isInteresting(entry.getMarker(), viewer, parent);
34
			}
35
		} 
36
		return false;
37
//			return true;
38
			// NOTE: code commented out below did a look-down the children, which may be too expensive
29
			// NOTE: code commented out below did a look-down the children, which may be too expensive
39
//			if (element instanceof MarkerNode) {
30
//			if (element instanceof MarkerNode) {
40
//				MarkerNode markerNode = (MarkerNode) element;
31
//				MarkerNode markerNode = (MarkerNode) element;
Lines 47-70 Link Here
47
//						return true;
38
//						return true;
48
//					}
39
//					}
49
//				}
40
//				}
50
//			}
41
//			} 
51
//		} else {
42
		} else {
52
//			ConcreteMarker marker = (ConcreteMarker) element;
43
			return isInteresting((ConcreteMarker) element, viewer, parent);
53
//			return isInteresting((ConcreteMarker) element, viewer, parent);
44
		}
54
//		}
55
	}
45
	}
56
46
57
	private boolean isImplicitlyInteresting(IMarker marker) {
47
	private boolean isImplicitlyInteresting(ConcreteMarker marker) {
58
		try {
48
		return (marker instanceof ProblemMarker) && ((ProblemMarker) marker).getSeverity() == IMarker.SEVERITY_ERROR;
59
			Object severity = marker.getAttribute(IMarker.SEVERITY);
60
			return severity != null && severity.equals(IMarker.SEVERITY_ERROR);
61
		} catch (CoreException e) {
62
			// ignore
63
		}
64
		return false;
65
	}
49
	}
66
50
67
	private boolean isInteresting(IMarker marker, Viewer viewer, Object parent) {
51
	private boolean isInteresting(ConcreteMarker marker, Viewer viewer, Object parent) {
68
		if (isImplicitlyInteresting(marker)) {
52
		if (isImplicitlyInteresting(marker)) {
69
			return true;
53
			return true;
70
		} else {
54
		} else {
(-)src/org/eclipse/mylyn/tasks/tests/TaskListUiTest.java (-16 / +14 lines)
Lines 86-96 Link Here
86
			TaskListView.openInActivePerspective();
86
			TaskListView.openInActivePerspective();
87
			manager = TasksUiPlugin.getTaskListManager();
87
			manager = TasksUiPlugin.getTaskListManager();
88
			cat1 = new TaskCategory("First Category");
88
			cat1 = new TaskCategory("First Category");
89
89
			manager.getTaskList().addCategory(cat1);
90
			cat1task1 = manager.createNewLocalTask("task 1");
90
			cat1task1 = manager.createNewLocalTask("task 1");
91
			cat1task1.setPriority(PriorityLevel.P1.toString());
91
			cat1task1.setPriority(PriorityLevel.P1.toString());
92
			cat1task1.setCompleted(true);
92
			cat1task1.setCompleted(true);
93
			manager.getTaskList().moveToContainer(cat1task1, cat1);
93
			manager.getTaskList().moveTask(cat1task1, cat1);
94
94
95
			cat1task1sub1 = manager.createNewLocalTask("sub task 1");
95
			cat1task1sub1 = manager.createNewLocalTask("sub task 1");
96
			cat1task1sub1.setPriority(PriorityLevel.P1.toString());
96
			cat1task1sub1.setPriority(PriorityLevel.P1.toString());
Lines 100-125 Link Here
100
			cat1task2 = manager.createNewLocalTask("task 2");
100
			cat1task2 = manager.createNewLocalTask("task 2");
101
			cat1task2.setPriority(PriorityLevel.P2.toString());
101
			cat1task2.setPriority(PriorityLevel.P2.toString());
102
			cat1task2.addParentContainer(cat1);
102
			cat1task2.addParentContainer(cat1);
103
			manager.getTaskList().moveToContainer(cat1task2, cat1);
103
			manager.getTaskList().moveTask(cat1task2, cat1);
104
104
105
			cat1task3 = manager.createNewLocalTask("task 3");
105
			cat1task3 = manager.createNewLocalTask("task 3");
106
			cat1task3.setPriority(PriorityLevel.P3.toString());
106
			cat1task3.setPriority(PriorityLevel.P3.toString());
107
			cat1task3.setCompleted(true);
107
			cat1task3.setCompleted(true);
108
			cat1task3.addParentContainer(cat1);
108
			cat1task3.addParentContainer(cat1);
109
			manager.getTaskList().moveToContainer(cat1task3, cat1);
109
			manager.getTaskList().moveTask(cat1task3, cat1);
110
110
111
			cat1task4 = manager.createNewLocalTask("task 4");
111
			cat1task4 = manager.createNewLocalTask("task 4");
112
			cat1task4.setPriority(PriorityLevel.P4.toString());
112
			cat1task4.setPriority(PriorityLevel.P4.toString());
113
			cat1task4.addParentContainer(cat1);
113
			cat1task4.addParentContainer(cat1);
114
			manager.getTaskList().moveToContainer(cat1task4, cat1);
114
			manager.getTaskList().moveTask(cat1task4, cat1);
115
115
116
			cat1task5 = manager.createNewLocalTask("task 5");
116
			cat1task5 = manager.createNewLocalTask("task 5");
117
			cat1task5.setPriority(PriorityLevel.P5.toString());
117
			cat1task5.setPriority(PriorityLevel.P5.toString());
118
			cat1task5.setCompleted(true);
118
			cat1task5.setCompleted(true);
119
			cat1task5.addParentContainer(cat1);
119
			cat1task5.addParentContainer(cat1);
120
			manager.getTaskList().moveToContainer(cat1task5, cat1);
120
			manager.getTaskList().moveTask(cat1task5, cat1);
121
121
122
			manager.getTaskList().addCategory(cat1);
123
			assertEquals(cat1.getChildren().size(), 5);
122
			assertEquals(cat1.getChildren().size(), 5);
124
123
125
			cat2 = new TaskCategory("Second Category");
124
			cat2 = new TaskCategory("Second Category");
Lines 127-133 Link Here
127
			cat2task1 = manager.createNewLocalTask("task 1");
126
			cat2task1 = manager.createNewLocalTask("task 1");
128
			cat2task1.setPriority(PriorityLevel.P1.toString());
127
			cat2task1.setPriority(PriorityLevel.P1.toString());
129
			cat2task1.addParentContainer(cat2);
128
			cat2task1.addParentContainer(cat2);
130
			manager.getTaskList().moveToContainer(cat2task1, cat2);
129
			manager.getTaskList().moveTask(cat2task1, cat2);
131
130
132
			cat2task1sub1 = manager.createNewLocalTask("sub task 1");
131
			cat2task1sub1 = manager.createNewLocalTask("sub task 1");
133
			cat2task1sub1.setPriority(PriorityLevel.P1.toString());
132
			cat2task1sub1.setPriority(PriorityLevel.P1.toString());
Lines 137-159 Link Here
137
			cat2task2.setPriority(PriorityLevel.P2.toString());
136
			cat2task2.setPriority(PriorityLevel.P2.toString());
138
			cat2task2.setCompleted(true);
137
			cat2task2.setCompleted(true);
139
			cat2task2.addParentContainer(cat2);
138
			cat2task2.addParentContainer(cat2);
140
			manager.getTaskList().moveToContainer(cat2task2, cat2);
139
			manager.getTaskList().moveTask(cat2task2, cat2);
141
140
142
			cat2task3 = manager.createNewLocalTask("task 3");
141
			cat2task3 = manager.createNewLocalTask("task 3");
143
			cat2task3.setPriority(PriorityLevel.P3.toString());
142
			cat2task3.setPriority(PriorityLevel.P3.toString());
144
			cat2task3.addParentContainer(cat2);
143
			cat2task3.addParentContainer(cat2);
145
			manager.getTaskList().moveToContainer(cat2task3, cat2);
144
			manager.getTaskList().moveTask(cat2task3, cat2);
146
145
147
			cat2task4 = manager.createNewLocalTask("task 4");
146
			cat2task4 = manager.createNewLocalTask("task 4");
148
			cat2task4.setPriority(PriorityLevel.P4.toString());
147
			cat2task4.setPriority(PriorityLevel.P4.toString());
149
			cat2task4.setCompleted(true);
148
			cat2task4.setCompleted(true);
150
			cat2task4.addParentContainer(cat2);
149
			cat2task4.addParentContainer(cat2);
151
			manager.getTaskList().moveToContainer(cat2task4, cat2);
150
			manager.getTaskList().moveTask(cat2task4, cat2);
152
151
153
			cat2task5 = manager.createNewLocalTask("task 5");
152
			cat2task5 = manager.createNewLocalTask("task 5");
154
			cat2task5.setPriority(PriorityLevel.P5.toString());
153
			cat2task5.setPriority(PriorityLevel.P5.toString());
155
			cat2task5.addParentContainer(cat2);
154
			cat2task5.addParentContainer(cat2);
156
			manager.getTaskList().moveToContainer(cat2task5, cat2);
155
			manager.getTaskList().moveTask(cat2task5, cat2);
157
156
158
			manager.getTaskList().addCategory(cat2);
157
			manager.getTaskList().addCategory(cat2);
159
			manager.saveTaskList();
158
			manager.saveTaskList();
Lines 171-178 Link Here
171
		TaskListView view = TaskListView.getFromActivePerspective();
170
		TaskListView view = TaskListView.getFromActivePerspective();
172
		assertNotNull(view);
171
		assertNotNull(view);
173
		WebTask webTask = new WebTask("1", "1", "", "", "web");
172
		WebTask webTask = new WebTask("1", "1", "", "", "web");
174
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(webTask,
173
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(webTask);
175
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
176
		view.getViewer().refresh();
174
		view.getViewer().refresh();
177
		// Arrays.asList(view.getViewer().getVisibleExpandedElements());
175
		// Arrays.asList(view.getViewer().getVisibleExpandedElements());
178
		assertFalse(webTask.isCompleted());
176
		assertFalse(webTask.isCompleted());
Lines 251-260 Link Here
251
		MoveToCategoryMenuContributor moveToMenuContrib = new MoveToCategoryMenuContributor();
249
		MoveToCategoryMenuContributor moveToMenuContrib = new MoveToCategoryMenuContributor();
252
		List<AbstractTaskContainer> selectedElements = new Vector<AbstractTaskContainer>();
250
		List<AbstractTaskContainer> selectedElements = new Vector<AbstractTaskContainer>();
253
		selectedElements.add(cat1task1);
251
		selectedElements.add(cat1task1);
254
		int numCategoriesMinusArchiveContainer = manager.getTaskList().getCategories().size() - 1;
252
		int numCategories = manager.getTaskList().getCategories().size();
255
		int numSeparators = 1;
253
		int numSeparators = 1;
256
		// adding a separator and the New Category... action
254
		// adding a separator and the New Category... action
257
		int expectedNrOfSubMenuEntries = numCategoriesMinusArchiveContainer + numSeparators + 1;
255
		int expectedNrOfSubMenuEntries = numCategories + numSeparators + 1;
258
		NewCategoryAction newCatActon = new NewCategoryAction();
256
		NewCategoryAction newCatActon = new NewCategoryAction();
259
257
260
		// execute sytem under test
258
		// execute sytem under test
(-)src/org/eclipse/mylyn/tasks/tests/TaskListTest.java (+1 lines)
Lines 15-20 Link Here
15
15
16
/**
16
/**
17
 * @author Mik Kersten
17
 * @author Mik Kersten
18
 * @author Rob Elves
18
 */
19
 */
19
public class TaskListTest extends TestCase {
20
public class TaskListTest extends TestCase {
20
21
(-)src/org/eclipse/mylyn/tasks/tests/NewTaskWizardRepositorySelectionTest.java (-3 / +2 lines)
Lines 40-47 Link Here
40
		TaskListView view = TaskListView.openInActivePerspective();
40
		TaskListView view = TaskListView.openInActivePerspective();
41
		MockRepositoryTask mockTask = new MockRepositoryTask("mock.task");
41
		MockRepositoryTask mockTask = new MockRepositoryTask("mock.task");
42
		TasksUiPlugin.getTaskActivityManager().scheduleNewTask(mockTask);
42
		TasksUiPlugin.getTaskActivityManager().scheduleNewTask(mockTask);
43
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask,
43
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask);
44
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
45
44
46
		view.setFocusedMode(true);
45
		view.setFocusedMode(true);
47
		view.getViewer().refresh();
46
		view.getViewer().refresh();
Lines 80-86 Link Here
80
79
81
		SelectRepositoryPage page = (SelectRepositoryPage) wizard.getPages()[0];
80
		SelectRepositoryPage page = (SelectRepositoryPage) wizard.getPages()[0];
82
		TaskRepository localRepository = TasksUiPlugin.getRepositoryManager().getRepositories(
81
		TaskRepository localRepository = TasksUiPlugin.getRepositoryManager().getRepositories(
83
				LocalRepositoryConnector.REPOSITORY_KIND).iterator().next();
82
				LocalRepositoryConnector.CONNECTOR_KIND).iterator().next();
84
		assertEquals(localRepository, ((IStructuredSelection) page.getViewer().getSelection()).getFirstElement());
83
		assertEquals(localRepository, ((IStructuredSelection) page.getViewer().getSelection()).getFirstElement());
85
84
86
		wizard.dispose();
85
		wizard.dispose();
(-)src/org/eclipse/mylyn/tasks/tests/TaskHistoryTest.java (-9 / +9 lines)
Lines 45-53 Link Here
45
45
46
	protected AbstractTask task5 = null;
46
	protected AbstractTask task5 = null;
47
47
48
	private ActivateTaskHistoryDropDownAction previousTaskAction = new ActivateTaskHistoryDropDownAction(TasksUiPlugin.getTaskListManager()
48
	private ActivateTaskHistoryDropDownAction previousTaskAction = new ActivateTaskHistoryDropDownAction(
49
			.getTaskActivationHistory(), false);
49
			TasksUiPlugin.getTaskListManager().getTaskActivationHistory(), false);
50
	
50
51
	@Override
51
	@Override
52
	protected void setUp() throws Exception {
52
	protected void setUp() throws Exception {
53
		super.setUp();
53
		super.setUp();
Lines 57-75 Link Here
57
		resetHistory();
57
		resetHistory();
58
58
59
		task1 = manager.createNewLocalTask("task 1");
59
		task1 = manager.createNewLocalTask("task 1");
60
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
60
		manager.getTaskList().addTask(task1);
61
61
62
		task2 = manager.createNewLocalTask("task 2");
62
		task2 = manager.createNewLocalTask("task 2");
63
		manager.getTaskList().moveToContainer(task2, manager.getTaskList().getDefaultCategory());
63
		manager.getTaskList().addTask(task2);
64
64
65
		task3 = manager.createNewLocalTask("task 3");
65
		task3 = manager.createNewLocalTask("task 3");
66
		manager.getTaskList().moveToContainer(task3, manager.getTaskList().getDefaultCategory());
66
		manager.getTaskList().addTask(task3);
67
67
68
		task4 = manager.createNewLocalTask("task 4");
68
		task4 = manager.createNewLocalTask("task 4");
69
		manager.getTaskList().moveToContainer(task4, manager.getTaskList().getDefaultCategory());
69
		manager.getTaskList().addTask(task4);
70
70
71
		task5 = manager.createNewLocalTask("task 5");
71
		task5 = manager.createNewLocalTask("task 5");
72
		manager.getTaskList().moveToContainer(task5, manager.getTaskList().getDefaultCategory());
72
		manager.getTaskList().addTask(task5);
73
73
74
		history = manager.getTaskActivationHistory();
74
		history = manager.getTaskActivationHistory();
75
	}
75
	}
Lines 95-101 Link Here
95
		assertTrue(task3.isActive());
95
		assertTrue(task3.isActive());
96
		assertFalse(task2.isActive());
96
		assertFalse(task2.isActive());
97
		assertFalse(task1.isActive());
97
		assertFalse(task1.isActive());
98
		
98
99
		previousTaskAction.run();
99
		previousTaskAction.run();
100
		assertTrue(task2.isActive());
100
		assertTrue(task2.isActive());
101
101
(-)src/org/eclipse/mylyn/tasks/tests/AllTasksTests.java (-1 / +2 lines)
Lines 37-43 Link Here
37
		suite.addTestSuite(TaskRepositoryManagerTest.class);
37
		suite.addTestSuite(TaskRepositoryManagerTest.class);
38
		suite.addTestSuite(TaskRepositoriesExternalizerTest.class);
38
		suite.addTestSuite(TaskRepositoriesExternalizerTest.class);
39
		suite.addTestSuite(TaskListContentProviderTest.class);
39
		suite.addTestSuite(TaskListContentProviderTest.class);
40
		suite.addTestSuite(TaskListBackupManagerTest.class);
40
		//suite.addTestSuite(TaskListBackupManagerTest.class);
41
		suite.addTestSuite(TableSorterTest.class);
41
		suite.addTestSuite(TableSorterTest.class);
42
		suite.addTestSuite(TaskKeyComparatorTest.class);
42
		suite.addTestSuite(TaskKeyComparatorTest.class);
43
		suite.addTestSuite(TaskTest.class);
43
		suite.addTestSuite(TaskTest.class);
Lines 60-65 Link Here
60
		suite.addTestSuite(PersonProposalProviderTest.class);
60
		suite.addTestSuite(PersonProposalProviderTest.class);
61
		suite.addTestSuite(TaskRepositoryLocationTest.class);
61
		suite.addTestSuite(TaskRepositoryLocationTest.class);
62
		suite.addTestSuite(AbstractTaskDataHandlerTest.class);
62
		suite.addTestSuite(AbstractTaskDataHandlerTest.class);
63
		suite.addTestSuite(OrphanedTasksTest.class);
63
		// $JUnit-END$
64
		// $JUnit-END$
64
65
65
		// suite.addTestSuite(BackgroundSaveTest.class);
66
		// suite.addTestSuite(BackgroundSaveTest.class);
(-)src/org/eclipse/mylyn/tasks/tests/TaskRepositoryManagerTest.java (-1 / +5 lines)
Lines 59-65 Link Here
59
59
60
		TaskRepository repository1 = new TaskRepository("bugzilla", "http://repository1/");
60
		TaskRepository repository1 = new TaskRepository("bugzilla", "http://repository1/");
61
		manager.addRepository(repository1, TasksUiPlugin.getDefault().getRepositoriesFilePath());
61
		manager.addRepository(repository1, TasksUiPlugin.getDefault().getRepositoriesFilePath());
62
		assertEquals(1, manager.getAllRepositories().size());
63
		assertNotNull(manager.getRepository("http://repository1"));
62
		assertNotNull(manager.getRepository("http://repository1"));
64
		assertNotNull(manager.getRepository("http://repository1/"));
63
		assertNotNull(manager.getRepository("http://repository1/"));
65
64
Lines 69-74 Link Here
69
	}
68
	}
70
69
71
	public void testQueryDeletion() {
70
	public void testQueryDeletion() {
71
		TaskRepository repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND,
72
				MockRepositoryConnector.REPOSITORY_URL);
73
		TasksUiPlugin.getRepositoryManager().addRepository(repository,
74
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
75
72
		MockRepositoryTask task = new MockRepositoryTask("1");
76
		MockRepositoryTask task = new MockRepositoryTask("1");
73
		task.setLastReadTimeStamp("now");
77
		task.setLastReadTimeStamp("now");
74
		MockRepositoryQuery query = new MockRepositoryQuery("Test");
78
		MockRepositoryQuery query = new MockRepositoryQuery("Test");
(-)src/org/eclipse/mylyn/tasks/tests/TaskListManagerTest.java (-74 / +109 lines)
Lines 25-34 Link Here
25
import org.eclipse.mylyn.context.core.ContextCorePlugin;
25
import org.eclipse.mylyn.context.core.ContextCorePlugin;
26
import org.eclipse.mylyn.internal.context.core.InteractionContext;
26
import org.eclipse.mylyn.internal.context.core.InteractionContext;
27
import org.eclipse.mylyn.internal.context.core.InteractionContextManager;
27
import org.eclipse.mylyn.internal.context.core.InteractionContextManager;
28
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
28
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
29
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
29
import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil;
30
import org.eclipse.mylyn.internal.tasks.core.RepositoryTaskHandleUtil;
30
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
31
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
31
import org.eclipse.mylyn.internal.tasks.core.UnfiledCategory;
32
import org.eclipse.mylyn.internal.tasks.ui.ScheduledTaskListSynchJob;
32
import org.eclipse.mylyn.internal.tasks.ui.ScheduledTaskListSynchJob;
33
import org.eclipse.mylyn.internal.tasks.ui.TaskListSynchronizationScheduler;
33
import org.eclipse.mylyn.internal.tasks.ui.TaskListSynchronizationScheduler;
34
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants;
34
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPreferenceConstants;
Lines 66-71 Link Here
66
				TasksUiPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED, false);
66
				TasksUiPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED, false);
67
		TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
67
		TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
68
		manager = TasksUiPlugin.getTaskListManager();
68
		manager = TasksUiPlugin.getTaskListManager();
69
		for (TaskRepository repository : TasksUiPlugin.getRepositoryManager().getAllRepositories()) {
70
			TasksUiPlugin.getRepositoryManager().removeRepository(repository,
71
					TasksUiPlugin.getDefault().getRepositoriesFilePath());
72
		}
69
		manager.resetTaskList();
73
		manager.resetTaskList();
70
		manager.readExistingOrCreateNewList();
74
		manager.readExistingOrCreateNewList();
71
		repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, MockRepositoryConnector.REPOSITORY_URL);
75
		repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, MockRepositoryConnector.REPOSITORY_URL);
Lines 78-87 Link Here
78
	@Override
82
	@Override
79
	protected void tearDown() throws Exception {
83
	protected void tearDown() throws Exception {
80
		super.tearDown();
84
		super.tearDown();
81
		manager.resetTaskList();
82
		TasksUiPlugin.getTaskListManager().saveTaskList();
83
		TasksUiPlugin.getRepositoryManager().removeRepository(repository,
85
		TasksUiPlugin.getRepositoryManager().removeRepository(repository,
84
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
86
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
87
		manager.resetTaskList();
88
		TasksUiPlugin.getTaskListManager().saveTaskList();
85
		assertEquals(0, manager.getTaskList().getAllTasks().size());
89
		assertEquals(0, manager.getTaskList().getAllTasks().size());
86
	}
90
	}
87
91
Lines 89-100 Link Here
89
		TaskCategory category = new TaskCategory("TestClash");
93
		TaskCategory category = new TaskCategory("TestClash");
90
		manager.getTaskList().addCategory(category);
94
		manager.getTaskList().addCategory(category);
91
		assertTrue(manager.getTaskList().getCategories().contains(category));
95
		assertTrue(manager.getTaskList().getCategories().contains(category));
92
		assertEquals(3, manager.getTaskList().getCategories().size());
96
		assertEquals(2, manager.getTaskList().getCategories().size());
93
97
94
		MockRepositoryQuery query = new MockRepositoryQuery("TestClash");
98
		MockRepositoryQuery query = new MockRepositoryQuery("TestClash");
95
		manager.getTaskList().addQuery(query);
99
		manager.getTaskList().addQuery(query);
96
		assertTrue(manager.getTaskList().getCategories().contains(category));
100
		assertTrue(manager.getTaskList().getCategories().contains(category));
97
		assertEquals(3, manager.getTaskList().getCategories().size());
101
		assertEquals(2, manager.getTaskList().getCategories().size());
98
102
99
		manager.getTaskList().deleteCategory(category);
103
		manager.getTaskList().deleteCategory(category);
100
	}
104
	}
Lines 125-135 Link Here
125
129
126
	public void testSingleTaskDeletion() {
130
	public void testSingleTaskDeletion() {
127
		MockRepositoryTask task = new MockRepositoryTask("1");
131
		MockRepositoryTask task = new MockRepositoryTask("1");
128
		manager.getTaskList().moveToContainer(task, manager.getTaskList().getDefaultCategory());
132
		task.setLastReadTimeStamp("now");
133
		manager.getTaskList().moveTask(task,
134
				manager.getTaskList().getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL));
129
		assertEquals(1, manager.getTaskList().getAllTasks().size());
135
		assertEquals(1, manager.getTaskList().getAllTasks().size());
130
		manager.getTaskList().deleteTask(task);
136
		manager.getTaskList().deleteTask(task);
131
		assertEquals(0, manager.getTaskList().getAllTasks().size());
137
		assertEquals(0, manager.getTaskList().getAllTasks().size());
132
		manager.getTaskList().moveToContainer(task, manager.getTaskList().getDefaultCategory());
138
		manager.getTaskList().moveTask(task,
139
				manager.getTaskList().getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL));
133
		assertEquals(1, manager.getTaskList().getAllTasks().size());
140
		assertEquals(1, manager.getTaskList().getAllTasks().size());
134
141
135
		manager.saveTaskList();
142
		manager.saveTaskList();
Lines 353-359 Link Here
353
	}
360
	}
354
361
355
	public void testMoveCategories() {
362
	public void testMoveCategories() {
356
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
363
//		assertEquals(0, manager.getTaskList()
364
//				.getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL)
365
//				.getChildren()
366
//				.size());
367
368
		assertTrue(manager.getTaskList().getDefaultCategory().isEmpty());
369
357
		AbstractTask task1 = new LocalTask("t1", "t1");
370
		AbstractTask task1 = new LocalTask("t1", "t1");
358
371
359
		TaskCategory cat1 = new TaskCategory("cat1");
372
		TaskCategory cat1 = new TaskCategory("cat1");
Lines 361-393 Link Here
361
		TaskCategory cat2 = new TaskCategory("cat2");
374
		TaskCategory cat2 = new TaskCategory("cat2");
362
		manager.getTaskList().addCategory(cat2);
375
		manager.getTaskList().addCategory(cat2);
363
376
364
		manager.getTaskList().moveToContainer(task1, cat1);
377
		manager.getTaskList().moveTask(task1, cat1);
365
		assertEquals(1, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
378
		assertEquals(1, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
366
		assertEquals(0, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
379
		assertEquals(0, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
367
380
368
		manager.getTaskList().moveToContainer(task1, cat2);
381
		manager.getTaskList().moveTask(task1, cat2);
369
		assertEquals(0, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
382
		assertEquals(0, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
370
		assertEquals(1, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
383
		assertEquals(1, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
371
	}
384
	}
372
385
373
	public void testMoveToRoot() {
386
	public void testMoveToRoot() {
374
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
387
//		assertEquals(0, manager.getTaskList()
388
//				.getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL)
389
//				.getChildren()
390
//				.size());
391
		assertTrue(manager.getTaskList().getDefaultCategory().isEmpty());
392
375
		AbstractTask task1 = new LocalTask("t1", "t1");
393
		AbstractTask task1 = new LocalTask("t1", "t1");
376
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
394
		manager.getTaskList().moveTask(task1,
395
				manager.getTaskList().getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL));
377
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
396
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
378
		assertEquals(UnfiledCategory.HANDLE, task1.getParentContainers().iterator().next().getHandleIdentifier());
397
		assertEquals(manager.getTaskList().getDefaultCategory(), task1.getParentContainers().iterator().next());
379
398
380
		TaskCategory cat1 = new TaskCategory("c1");
399
		TaskCategory cat1 = new TaskCategory("c1");
381
		manager.getTaskList().addCategory(cat1);
400
		manager.getTaskList().addCategory(cat1);
382
401
383
		manager.getTaskList().moveToContainer(task1, cat1);
402
		manager.getTaskList().moveTask(task1, cat1);
384
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
403
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
385
		assertEquals(cat1, task1.getParentContainers().iterator().next());
404
		assertEquals(cat1, task1.getParentContainers().iterator().next());
386
405
387
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
406
		manager.getTaskList().moveTask(task1,
407
				manager.getTaskList().getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL));
388
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
408
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
389
		assertEquals(0, cat1.getChildren().size());
409
		assertEquals(0, cat1.getChildren().size());
390
		assertEquals(UnfiledCategory.HANDLE, task1.getParentContainers().iterator().next().getHandleIdentifier());
410
		assertEquals(manager.getTaskList().getDefaultCategory(), task1.getParentContainers().iterator().next());
391
	}
411
	}
392
412
393
	public void testEmpty() {
413
	public void testEmpty() {
Lines 401-425 Link Here
401
		MockRepositoryTask task = new MockRepositoryTask("1");
421
		MockRepositoryTask task = new MockRepositoryTask("1");
402
		TaskCategory category = new TaskCategory("cat");
422
		TaskCategory category = new TaskCategory("cat");
403
		manager.getTaskList().addCategory(category);
423
		manager.getTaskList().addCategory(category);
404
		manager.getTaskList().moveToContainer(task, category);
424
		manager.getTaskList().moveTask(task, category);
405
		assertNotNull(manager.getTaskList());
425
		assertNotNull(manager.getTaskList());
406
		assertEquals(3, manager.getTaskList().getCategories().size());
426
		assertEquals(2, manager.getTaskList().getCategories().size());
407
427
408
		manager.saveTaskList();
428
		manager.saveTaskList();
409
		manager.resetTaskList();
429
		manager.resetTaskList();
410
		manager.readExistingOrCreateNewList();
430
		manager.readExistingOrCreateNewList();
411
		assertEquals("" + manager.getTaskList().getCategories(), 3, manager.getTaskList().getCategories().size());
431
		assertEquals("" + manager.getTaskList().getCategories(), 2, manager.getTaskList().getCategories().size());
412
		assertEquals(1, manager.getTaskList().getAllTasks().size());
432
		assertEquals(1, manager.getTaskList().getAllTasks().size());
413
	}
433
	}
414
434
415
	public void testDeleteCategory() {
435
	public void testDeleteCategory() {
416
		assertNotNull(manager.getTaskList());
436
		assertNotNull(manager.getTaskList());
417
		assertEquals(2, manager.getTaskList().getCategories().size());
437
		assertEquals(1, manager.getTaskList().getCategories().size());
418
		TaskCategory category = new TaskCategory("cat");
438
		TaskCategory category = new TaskCategory("cat");
419
		manager.getTaskList().addCategory(category);
439
		manager.getTaskList().addCategory(category);
420
		assertEquals(3, manager.getTaskList().getCategories().size());
421
		manager.getTaskList().deleteCategory(category);
422
		assertEquals(2, manager.getTaskList().getCategories().size());
440
		assertEquals(2, manager.getTaskList().getCategories().size());
441
		manager.getTaskList().deleteCategory(category);
442
		assertEquals(1, manager.getTaskList().getCategories().size());
423
	}
443
	}
424
444
425
	public void testDeleteCategoryMovesTasksToRoot() {
445
	public void testDeleteCategoryMovesTasksToRoot() {
Lines 429-435 Link Here
429
		manager.getTaskList().addCategory(category);
449
		manager.getTaskList().addCategory(category);
430
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
450
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
431
		manager.getTaskList().deleteCategory(category);
451
		manager.getTaskList().deleteCategory(category);
432
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
452
		manager.getTaskList().getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL);
433
	}
453
	}
434
454
435
	public void testRenameCategory() {
455
	public void testRenameCategory() {
Lines 438-474 Link Here
438
458
439
		TaskCategory category = new TaskCategory("cat");
459
		TaskCategory category = new TaskCategory("cat");
440
		manager.getTaskList().addCategory(category);
460
		manager.getTaskList().addCategory(category);
441
		assertEquals(3, manager.getTaskList().getCategories().size());
461
		assertEquals(2, manager.getTaskList().getCategories().size());
442
		String newDesc = "newDescription";
462
		String newDesc = "newDescription";
443
		manager.getTaskList().renameContainer(category, newDesc);
463
		manager.getTaskList().renameContainer(category, newDesc);
444
		AbstractTaskCategory container = manager.getTaskList().getContainerForHandle(newDesc);
464
		AbstractTaskCategory container = manager.getTaskList().getContainerForHandle(newDesc);
445
		assertNotNull(container);
465
		assertNotNull(container);
446
		assertEquals(newDesc, container.getSummary());
466
		assertEquals(newDesc, container.getSummary());
447
		manager.getTaskList().deleteCategory(container);
467
		manager.getTaskList().deleteCategory(container);
448
		assertEquals(2, manager.getTaskList().getCategories().size());
468
		assertEquals(1, manager.getTaskList().getCategories().size());
449
	}
469
	}
450
470
451
	public void testDeleteCategoryAfterRename() {
471
	public void testDeleteCategoryAfterRename() {
452
		String newDesc = "newDescription";
472
		String newDesc = "newDescription";
453
		assertNotNull(manager.getTaskList());
473
		assertNotNull(manager.getTaskList());
454
		assertEquals(2, manager.getTaskList().getCategories().size());
474
		assertEquals(1, manager.getTaskList().getCategories().size());
455
		TaskCategory category = new TaskCategory("cat");
475
		TaskCategory category = new TaskCategory("cat");
456
		manager.getTaskList().addCategory(category);
476
		manager.getTaskList().addCategory(category);
457
		assertEquals(3, manager.getTaskList().getCategories().size());
477
		assertEquals(2, manager.getTaskList().getCategories().size());
458
		manager.getTaskList().renameContainer(category, newDesc);
478
		manager.getTaskList().renameContainer(category, newDesc);
459
		manager.getTaskList().deleteCategory(category);
479
		manager.getTaskList().deleteCategory(category);
460
		assertEquals(2, manager.getTaskList().getCategories().size());
480
		assertEquals(1, manager.getTaskList().getCategories().size());
461
	}
481
	}
462
482
463
	public void testCreateSameCategoryName() {
483
	public void testCreateSameCategoryName() {
464
		assertNotNull(manager.getTaskList());
484
		assertNotNull(manager.getTaskList());
465
		assertEquals(2, manager.getTaskList().getCategories().size());
485
		assertEquals(1, manager.getTaskList().getCategories().size());
466
		TaskCategory category = new TaskCategory("cat");
486
		TaskCategory category = new TaskCategory("cat");
467
		manager.getTaskList().addCategory(category);
487
		manager.getTaskList().addCategory(category);
468
		assertEquals(3, manager.getTaskList().getCategories().size());
488
		assertEquals(2, manager.getTaskList().getCategories().size());
469
		TaskCategory category2 = new TaskCategory("cat");
489
		TaskCategory category2 = new TaskCategory("cat");
470
		manager.getTaskList().addCategory(category2);
490
		manager.getTaskList().addCategory(category2);
471
		assertEquals(3, manager.getTaskList().getCategories().size());
491
		assertEquals(2, manager.getTaskList().getCategories().size());
472
		AbstractTaskContainer container = manager.getTaskList().getContainerForHandle("cat");
492
		AbstractTaskContainer container = manager.getTaskList().getContainerForHandle("cat");
473
		assertEquals(container, category);
493
		assertEquals(container, category);
474
	}
494
	}
Lines 480-511 Link Here
480
		manager.getTaskList().deleteTask(task);
500
		manager.getTaskList().deleteTask(task);
481
		assertEquals(0, manager.getTaskList().getAllTasks().size());
501
		assertEquals(0, manager.getTaskList().getAllTasks().size());
482
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
502
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
483
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
484
	}
503
	}
485
504
486
	public void testDeleteFromCategory() {
505
	public void testDeleteFromCategory() {
487
		assertEquals(0, manager.getTaskList().getAllTasks().size());
506
		assertEquals(0, manager.getTaskList().getAllTasks().size());
488
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
507
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
489
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
508
		//assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
490
		assertEquals(2, manager.getTaskList().getCategories().size());
509
		assertEquals(1, manager.getTaskList().getCategories().size());
491
510
492
		AbstractTask task = new LocalTask("1", "label");
511
		AbstractTask task = new LocalTask("1", "label");
493
		TaskCategory category = new TaskCategory("handleAndDescription");
512
		TaskCategory category = new TaskCategory("handleAndDescription");
494
		manager.getTaskList().addTask(task);
513
		manager.getTaskList().addTask(task);
495
		assertEquals(1, manager.getTaskList().getArchiveContainer().getChildren().size());
514
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
496
515
497
		manager.getTaskList().addCategory(category);
516
		manager.getTaskList().addCategory(category);
498
		manager.getTaskList().moveToContainer(task, category);
517
		manager.getTaskList().moveTask(task, category);
499
		assertEquals(3, manager.getTaskList().getCategories().size());
518
		assertEquals(2, manager.getTaskList().getCategories().size());
500
		assertEquals(1, category.getChildren().size());
519
		assertEquals(1, category.getChildren().size());
501
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
502
		assertEquals(1, manager.getTaskList().getAllTasks().size());
503
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
520
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
521
		assertEquals(1, manager.getTaskList().getAllTasks().size());
504
522
505
		manager.getTaskList().deleteTask(task);
523
		manager.getTaskList().deleteTask(task);
506
		assertEquals(0, manager.getTaskList().getAllTasks().size());
524
		assertEquals(0, manager.getTaskList().getAllTasks().size());
507
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
525
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
508
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
509
		assertEquals(0, category.getChildren().size());
526
		assertEquals(0, category.getChildren().size());
510
	}
527
	}
511
528
Lines 516-534 Link Here
516
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
533
				TasksUiPlugin.getDefault().getRepositoriesFilePath());
517
		MockRepositoryTask task = new MockRepositoryTask(repositoryUrl, "1");
534
		MockRepositoryTask task = new MockRepositoryTask(repositoryUrl, "1");
518
		TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
535
		TaskList taskList = TasksUiPlugin.getTaskListManager().getTaskList();
519
		taskList.moveToContainer(task, manager.getTaskList().getDefaultCategory());
536
		taskList.moveTask(task, manager.getTaskList().getDefaultCategory());
520
		MockRepositoryQuery query = new MockRepositoryQuery("query");
537
		MockRepositoryQuery query = new MockRepositoryQuery("query");
521
		taskList.addQuery(query);
538
		taskList.addQuery(query);
522
		taskList.addTask(task, query);
539
		taskList.addTask(task, query);
523
		assertEquals(1, taskList.getAllTasks().size());
540
		assertEquals(1, taskList.getAllTasks().size());
524
		assertEquals(1, taskList.getDefaultCategory().getChildren().size());
541
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
525
		taskList.deleteTask(task);
542
		taskList.deleteTask(task);
526
		assertEquals(0, taskList.getAllTasks().size());
543
		assertEquals(0, taskList.getAllTasks().size());
527
		assertEquals(0, taskList.getDefaultCategory().getChildren().size());
544
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
528
	}
545
	}
529
546
530
	public void testCreate() {
547
	public void testCreate() {
531
		MockRepositoryTask repositoryTask = new MockRepositoryTask("1");
548
		MockRepositoryTask repositoryTask = new MockRepositoryTask("1");
549
		repositoryTask.setLastReadTimeStamp("now");
532
		manager.getTaskList().addTask(repositoryTask, manager.getTaskList().getDefaultCategory());
550
		manager.getTaskList().addTask(repositoryTask, manager.getTaskList().getDefaultCategory());
533
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
551
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
534
		manager.saveTaskList();
552
		manager.saveTaskList();
Lines 540-569 Link Here
540
558
541
	public void testCreateAndMove() {
559
	public void testCreateAndMove() {
542
		MockRepositoryTask repositoryTask = new MockRepositoryTask("1");
560
		MockRepositoryTask repositoryTask = new MockRepositoryTask("1");
543
		repositoryTask.setTaskKind("kind");
561
		repositoryTask.setLastReadTimeStamp("now");
544
		manager.getTaskList().addTask(repositoryTask, manager.getTaskList().getDefaultCategory());
562
		manager.getTaskList().addTask(repositoryTask);
545
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
563
		assertEquals(1, manager.getTaskList().getAllTasks().size());
546
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
564
//		assertEquals(1, manager.getTaskList()
565
//				.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL)
566
//				.getChildren()
567
//				.size());
547
		manager.saveTaskList();
568
		manager.saveTaskList();
548
569
549
		manager.resetTaskList();
570
		manager.resetTaskList();
550
		manager.readExistingOrCreateNewList();
571
		manager.readExistingOrCreateNewList();
551
		assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
572
		assertEquals(1, manager.getTaskList().getAllTasks().size());
552
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
573
		assertEquals(1, manager.getTaskList()
574
				.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL)
575
				.getChildren()
576
				.size());
577
553
	}
578
	}
554
579
555
	public void testArchiveRepositoryTaskExternalization() {
580
	public void testArchiveRepositoryTaskExternalization() {
556
		MockRepositoryTask repositoryTask = new MockRepositoryTask("1");
581
		MockRepositoryTask repositoryTask = new MockRepositoryTask("1");
557
		repositoryTask.setTaskKind("kind");
582
		repositoryTask.setLastReadTimeStamp("now");
558
		manager.getTaskList().addTask(repositoryTask);
583
		manager.getTaskList().addTask(repositoryTask);
559
		assertEquals(1, manager.getTaskList().getArchiveContainer().getChildren().size());
584
		assertEquals(1, manager.getTaskList()
560
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
585
				.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL)
586
				.getChildren()
587
				.size());
561
		manager.saveTaskList();
588
		manager.saveTaskList();
562
589
563
		manager.resetTaskList();
590
		manager.resetTaskList();
564
		manager.readExistingOrCreateNewList();
591
		manager.readExistingOrCreateNewList();
565
		assertEquals(1, manager.getTaskList().getArchiveContainer().getChildren().size());
592
		assertEquals(1, manager.getTaskList()
566
		assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
593
				.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL)
594
				.getChildren()
595
				.size());
567
	}
596
	}
568
597
569
	public void testRepositoryTasksAndCategoriesMultiRead() {
598
	public void testRepositoryTasksAndCategoriesMultiRead() {
Lines 571-577 Link Here
571
		manager.getTaskList().addCategory(cat1);
600
		manager.getTaskList().addCategory(cat1);
572
601
573
		MockRepositoryTask reportInCat1 = new MockRepositoryTask("123");
602
		MockRepositoryTask reportInCat1 = new MockRepositoryTask("123");
574
		manager.getTaskList().moveToContainer(reportInCat1, cat1);
603
		manager.getTaskList().moveTask(reportInCat1, cat1);
575
		assertEquals(cat1, reportInCat1.getParentContainers().iterator().next());
604
		assertEquals(cat1, reportInCat1.getParentContainers().iterator().next());
576
605
577
		manager.saveTaskList();
606
		manager.saveTaskList();
Lines 620-631 Link Here
620
	public void testSubTaskExternalization() {
649
	public void testSubTaskExternalization() {
621
		Set<AbstractTask> rootTasks = new HashSet<AbstractTask>();
650
		Set<AbstractTask> rootTasks = new HashSet<AbstractTask>();
622
		AbstractTask task1 = new LocalTask("1", "task1");
651
		AbstractTask task1 = new LocalTask("1", "task1");
623
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
652
		manager.getTaskList().addTask(task1);
624
		rootTasks.add(task1);
653
		rootTasks.add(task1);
625
654
626
		AbstractTask sub2 = new LocalTask("2", "sub 2");
655
		AbstractTask sub2 = new LocalTask("2", "sub 2");
627
		manager.getTaskList().addTask(sub2, task1);
656
		manager.getTaskList().addTask(sub2, task1);
628
		assertEquals(1, task1.getChildren().size());
657
		assertEquals(1, task1.getChildren().size());
658
		assertTrue(rootTasks.containsAll(manager.getTaskList().getDefaultCategory().getChildren()));
629
659
630
		manager.saveTaskList();
660
		manager.saveTaskList();
631
		assertNotNull(manager.getTaskList());
661
		assertNotNull(manager.getTaskList());
Lines 633-639 Link Here
633
		manager.readExistingOrCreateNewList();
663
		manager.readExistingOrCreateNewList();
634
664
635
		assertNotNull(manager.getTaskList());
665
		assertNotNull(manager.getTaskList());
636
		assertTrue(rootTasks.containsAll(manager.getTaskList().getDefaultCategory().getChildren()));
666
667
		// XXX: This should pass once sub tasks are handled properly
668
//		assertTrue(rootTasks.containsAll(manager.getTaskList().getOrphanContainer(
669
//				LocalRepositoryConnector.REPOSITORY_URL).getChildren()));
637
670
638
		Set<AbstractTask> readList = manager.getTaskList().getDefaultCategory().getChildren();
671
		Set<AbstractTask> readList = manager.getTaskList().getDefaultCategory().getChildren();
639
		for (AbstractTask task : readList) {
672
		for (AbstractTask task : readList) {
Lines 647-662 Link Here
647
	public void testCreationAndExternalization() {
680
	public void testCreationAndExternalization() {
648
		Set<AbstractTask> rootTasks = new HashSet<AbstractTask>();
681
		Set<AbstractTask> rootTasks = new HashSet<AbstractTask>();
649
		AbstractTask task1 = manager.createNewLocalTask("task 1");
682
		AbstractTask task1 = manager.createNewLocalTask("task 1");
650
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
651
		rootTasks.add(task1);
683
		rootTasks.add(task1);
652
684
653
		AbstractTask sub1 = manager.createNewLocalTask("sub 1");
685
		AbstractTask sub1 = manager.createNewLocalTask("sub 1");
654
		manager.getTaskList().addTask(sub1, task1);
686
		manager.getTaskList().addTask(sub1, task1);
655
687
656
		manager.getTaskList().moveToContainer(sub1, manager.getTaskList().getArchiveContainer());
688
		//manager.getTaskList().moveToContainer(sub1, manager.getTaskList().getArchiveContainer());
657
689
658
		AbstractTask task2 = manager.createNewLocalTask("task 2");
690
		AbstractTask task2 = manager.createNewLocalTask("task 2");
659
		manager.getTaskList().moveToContainer(task2, manager.getTaskList().getDefaultCategory());
660
		rootTasks.add(task2);
691
		rootTasks.add(task2);
661
692
662
		Set<TaskCategory> categories = new HashSet<TaskCategory>();
693
		Set<TaskCategory> categories = new HashSet<TaskCategory>();
Lines 665-689 Link Here
665
		manager.getTaskList().addCategory(cat1);
696
		manager.getTaskList().addCategory(cat1);
666
		categories.add(cat1);
697
		categories.add(cat1);
667
		AbstractTask task3 = manager.createNewLocalTask("task 3");
698
		AbstractTask task3 = manager.createNewLocalTask("task 3");
668
		manager.getTaskList().moveToContainer(task3, cat1);
699
		manager.getTaskList().moveTask(task3, cat1);
669
		cat1Contents.add(task3);
700
		cat1Contents.add(task3);
670
		assertEquals(cat1, task3.getParentContainers().iterator().next());
701
		assertEquals(cat1, task3.getParentContainers().iterator().next());
671
		AbstractTask sub2 = manager.createNewLocalTask("sub 2");
702
		AbstractTask sub2 = manager.createNewLocalTask("sub 2");
672
		manager.getTaskList().addTask(sub2, task3);
703
		manager.getTaskList().addTask(sub2, task3);
673
		manager.getTaskList().moveToContainer(sub2, manager.getTaskList().getArchiveContainer());
704
		//manager.getTaskList().moveToContainer(sub2, manager.getTaskList().getArchiveContainer());
674
705
675
		AbstractTask task4 = manager.createNewLocalTask("task 4");
706
		AbstractTask task4 = manager.createNewLocalTask("task 4");
676
		manager.getTaskList().moveToContainer(task4, cat1);
707
		manager.getTaskList().moveTask(task4, cat1);
677
		cat1Contents.add(task4);
708
		cat1Contents.add(task4);
678
709
679
		MockRepositoryTask reportInCat1 = new MockRepositoryTask("123");
710
		MockRepositoryTask reportInCat1 = new MockRepositoryTask("123");
680
		manager.getTaskList().moveToContainer(reportInCat1, cat1);
711
		manager.getTaskList().moveTask(reportInCat1, cat1);
681
		assertEquals(cat1, reportInCat1.getParentContainers().iterator().next());
712
		assertEquals(cat1, reportInCat1.getParentContainers().iterator().next());
682
		cat1Contents.add(reportInCat1);
713
		cat1Contents.add(reportInCat1);
683
714
684
		MockRepositoryTask reportInRoot = new MockRepositoryTask("124");
715
//		MockRepositoryTask reportInRoot = new MockRepositoryTask("124");
685
		manager.getTaskList().moveToContainer(reportInRoot, manager.getTaskList().getDefaultCategory());
716
//		manager.getTaskList().moveTask(reportInRoot, manager.getTaskList().getOrphanContainer(repositoryUrl));
686
		rootTasks.add(reportInRoot);
717
//		//rootTasks.add(reportInRoot);
687
718
688
		assertEquals(3, manager.getTaskList().getRootElements().size());
719
		assertEquals(3, manager.getTaskList().getRootElements().size());
689
720
Lines 696-702 Link Here
696
		manager.readExistingOrCreateNewList();
727
		manager.readExistingOrCreateNewList();
697
728
698
		assertNotNull(manager.getTaskList());
729
		assertNotNull(manager.getTaskList());
699
		assertTrue(rootTasks.containsAll(manager.getTaskList().getDefaultCategory().getChildren()));
730
731
		// XXX: Test should pass once tasks are removed from archive upon becoming
732
		// a subtask
733
//		assertTrue(rootTasks.containsAll(manager.getTaskList().getOrphanContainer(
734
//				LocalRepositoryConnector.REPOSITORY_URL).getChildren()));
700
735
701
		Set<AbstractTask> readList = manager.getTaskList().getDefaultCategory().getChildren();
736
		Set<AbstractTask> readList = manager.getTaskList().getDefaultCategory().getChildren();
702
		for (AbstractTask task : readList) {
737
		for (AbstractTask task : readList) {
Lines 704-712 Link Here
704
				assertEquals(task1.getSummary(), task.getSummary());
739
				assertEquals(task1.getSummary(), task.getSummary());
705
				assertEquals(1, task.getChildren().size());
740
				assertEquals(1, task.getChildren().size());
706
			}
741
			}
707
			if (task.equals(reportInRoot)) {
742
//			if (task.equals(reportInRoot)) {
708
				assertEquals(reportInRoot.getSummary(), task.getSummary());
743
//				assertEquals(reportInRoot.getSummary(), task.getSummary());
709
			}
744
//			}
710
		}
745
		}
711
746
712
		Set<AbstractTaskCategory> readCats = manager.getTaskList().getTaskContainers();
747
		Set<AbstractTaskCategory> readCats = manager.getTaskList().getTaskContainers();
Lines 730-736 Link Here
730
// String handle = AbstractTask.getHandle("http://url/repo-location",
765
// String handle = AbstractTask.getHandle("http://url/repo-location",
731
// 1);
766
// 1);
732
		AbstractTask task1 = manager.createNewLocalTask("task 1");
767
		AbstractTask task1 = manager.createNewLocalTask("task 1");
733
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
768
		manager.getTaskList().moveTask(task1, manager.getTaskList().getDefaultCategory());
734
		rootTasks.add(task1);
769
		rootTasks.add(task1);
735
770
736
		manager.saveTaskList();
771
		manager.saveTaskList();
Lines 993-999 Link Here
993
		manager.getTaskList().addQuery(query);
1028
		manager.getTaskList().addQuery(query);
994
		manager.getTaskList().addTask(task1, query);
1029
		manager.getTaskList().addTask(task1, query);
995
		manager.getTaskList().addTask(task2, query);
1030
		manager.getTaskList().addTask(task2, query);
996
		assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
1031
		//assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
997
		assertEquals(2, query.getChildren().size());
1032
		assertEquals(2, query.getChildren().size());
998
		TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
1033
		TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
999
				MockRepositoryConnector.REPOSITORY_URL);
1034
				MockRepositoryConnector.REPOSITORY_URL);
Lines 1001-1007 Link Here
1001
		queries.add(query);
1036
		queries.add(query);
1002
		TasksUiPlugin.getSynchronizationManager().synchronize(new MockRepositoryConnector(), repository, queries, null,
1037
		TasksUiPlugin.getSynchronizationManager().synchronize(new MockRepositoryConnector(), repository, queries, null,
1003
				Job.INTERACTIVE, 0, true);
1038
				Job.INTERACTIVE, 0, true);
1004
		assertEquals(2, manager.getTaskList().getArchiveContainer().getChildren().size());
1039
		//assertEquals(2, manager.getTaskList().getArchiveContainer().getChildren().size());
1005
		assertEquals(0, query.getChildren().size());
1040
		assertEquals(0, query.getChildren().size());
1006
	}
1041
	}
1007
1042
(-)src/org/eclipse/mylyn/tasks/tests/TaskDataExportTest.java (-1 / +1 lines)
Lines 69-75 Link Here
69
69
70
		// Create a task and context with an interaction event to be saved
70
		// Create a task and context with an interaction event to be saved
71
		task1 = manager.createNewLocalTask("Export Test Task");
71
		task1 = manager.createNewLocalTask("Export Test Task");
72
		manager.getTaskList().moveToContainer(task1, manager.getTaskList().getDefaultCategory());
72
		manager.getTaskList().addTask(task1);
73
		mockContext = ContextCorePlugin.getContextManager().loadContext(task1.getHandleIdentifier());
73
		mockContext = ContextCorePlugin.getContextManager().loadContext(task1.getHandleIdentifier());
74
		InteractionEvent event = new InteractionEvent(InteractionEvent.Kind.EDIT, "structureKind", "handle", "originId");
74
		InteractionEvent event = new InteractionEvent(InteractionEvent.Kind.EDIT, "structureKind", "handle", "originId");
75
		mockContext.parseEvent(event);
75
		mockContext.parseEvent(event);
(-)src/org/eclipse/mylyn/tasks/tests/connector/MockRepositoryQuery.java (-2 / +3 lines)
Lines 15-25 Link Here
15
 */
15
 */
16
public class MockRepositoryQuery extends AbstractRepositoryQuery {
16
public class MockRepositoryQuery extends AbstractRepositoryQuery {
17
17
18
	public String MOCK_URL = "http://mock.repository";
18
	public String MOCK_QUERY_URL = MockRepositoryConnector.REPOSITORY_URL + ".query";
19
19
20
	public MockRepositoryQuery(String description) {
20
	public MockRepositoryQuery(String description) {
21
		super(description);
21
		super(description);
22
		super.setUrl(MOCK_URL);
22
		super.setUrl(MOCK_QUERY_URL);
23
		super.setRepositoryUrl(MockRepositoryConnector.REPOSITORY_URL);
23
	}
24
	}
24
25
25
	public MockRepositoryQuery(String description, String url) {
26
	public MockRepositoryQuery(String description, String url) {
(-)src/org/eclipse/mylyn/tasks/tests/OrphanedTasksTest.java (+303 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.tasks.tests;
10
11
import java.util.Set;
12
13
import junit.framework.TestCase;
14
15
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
16
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
17
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
18
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
19
import org.eclipse.mylyn.tasks.core.AbstractTask;
20
import org.eclipse.mylyn.tasks.core.TaskList;
21
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
22
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryQuery;
23
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryTask;
24
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
25
26
/**
27
 * @author Rob Elves
28
 */
29
public class OrphanedTasksTest extends TestCase {
30
31
	private TaskList taskList;
32
33
	protected void setUp() throws Exception {
34
		super.setUp();
35
		TasksUiPlugin.getTaskListManager().resetTaskList();
36
		taskList = TasksUiPlugin.getTaskListManager().getTaskList();
37
		assertTrue(taskList.getDefaultCategory().isEmpty());
38
	}
39
40
	protected void tearDown() throws Exception {
41
		super.tearDown();
42
	}
43
44
	/**
45
	 * y New local tasks should automatically be created in the Local orphaned folder
46
	 */
47
	public void testAddLocalTask() {
48
		Set<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskList().getRepositoryTasks(
49
				LocalRepositoryConnector.REPOSITORY_URL);
50
		assertTrue(tasks.isEmpty());
51
		AbstractTask localTask = TasksUiPlugin.getTaskListManager().createNewLocalTask("Task 1");
52
		assertNotNull(localTask);
53
		assertEquals(1, localTask.getParentContainers().size());
54
	}
55
56
	/**
57
	 * When a local tasks is removed from a category it should be placed in the Uncategorized folder
58
	 */
59
	public void testRemoveLocalTask() {
60
		TaskCategory category = new TaskCategory("taskCategoryHandle");
61
		taskList.addCategory(category);
62
		LocalTask newTask = new LocalTask("" + taskList.getNextLocalTaskId(), "new local task");
63
		taskList.addTask(newTask, category);
64
		//assertEquals(1, taskList.getOrphanContainers().size());
65
		assertEquals(2, taskList.getCategories().size());
66
		taskList.removeFromCategory(category, newTask);
67
		//assertEquals(taskList.getOrphanContainers().size(), 1);
68
		assertFalse(category.contains(newTask.getHandleIdentifier()));
69
		assertTrue(taskList.getDefaultCategory().contains(newTask.getHandleIdentifier()));
70
		assertEquals(1, newTask.getParentContainers().size());
71
		assertEquals(taskList.getDefaultCategory().getHandleIdentifier(), newTask.getParentContainers()
72
				.iterator()
73
				.next()
74
				.getHandleIdentifier());
75
	}
76
77
	/**
78
	 * Local tasks in a removed category should be orphaned.
79
	 */
80
	public void testLocalTaskOrphanedInDeletedTaskCategory() {
81
		assertTrue(taskList.getDefaultCategory().isEmpty());
82
		TaskCategory category = new TaskCategory("taskCategoryHandle");
83
		taskList.addCategory(category);
84
		LocalTask newTask = new LocalTask("" + taskList.getNextLocalTaskId(), "new local task");
85
		taskList.addTask(newTask, category);
86
		assertTrue(taskList.getDefaultCategory().isEmpty());
87
		taskList.deleteCategory(category);
88
		assertTrue(taskList.getDefaultCategory().contains(newTask.getHandleIdentifier()));
89
90
	}
91
92
	/**
93
	 * Query removed with task in category, just query removed task remains.
94
	 */
95
	public void testTaskRemovedFromQuery() {
96
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
97
		mockTask.setLastReadTimeStamp("now");
98
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
99
		taskList.addQuery(mockQuery);
100
		taskList.addTask(mockTask, mockQuery);
101
102
		taskList.removeFromQuery(mockQuery, mockTask);
103
104
		assertFalse(mockQuery.contains(mockTask.getHandleIdentifier()));
105
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
106
				mockTask.getHandleIdentifier()));
107
	}
108
109
	/**
110
	 * Query removed with task in category, just query removed task remains.
111
	 */
112
	public void testTaskRemovedFromQueryButInCategory() {
113
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
114
		mockTask.setLastReadTimeStamp("now");
115
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
116
		taskList.addQuery(mockQuery);
117
		taskList.addTask(mockTask, mockQuery);
118
119
		TaskCategory category = new TaskCategory("taskCategoryHandle");
120
		taskList.addCategory(category);
121
		taskList.addTask(mockTask, category);
122
		assertTrue(category.contains(mockTask.getHandleIdentifier()));
123
		taskList.removeFromQuery(mockQuery, mockTask);
124
125
		assertFalse(mockQuery.contains(mockTask.getHandleIdentifier()));
126
		assertEquals(2, taskList.getCategories().size());
127
		assertTrue(category.contains(mockTask.getHandleIdentifier()));
128
129
		//* Repository tasks within a removed category that are not in a query should be orphaned.
130
131
		taskList.removeFromCategory(category, mockTask);
132
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
133
				mockTask.getHandleIdentifier()));
134
	}
135
136
	/**
137
	 * Repository tasks that exists in a query are not orphaned.
138
	 */
139
	public void testRepositoryTaskInDeletedCategory() {
140
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
141
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
142
		taskList.addQuery(mockQuery);
143
		taskList.addTask(mockTask, mockQuery);
144
		assertEquals(1, taskList.getCategories().size());
145
		TaskCategory category = new TaskCategory("taskCategoryHandle");
146
		taskList.addCategory(category);
147
		taskList.addTask(mockTask, category);
148
		assertEquals(2, taskList.getCategories().size());
149
		assertTrue(taskList.getDefaultCategory().isEmpty());
150
		taskList.deleteCategory(category);
151
		assert (taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).isEmpty());
152
		assertEquals(1, taskList.getCategories().size());
153
	}
154
155
	/**
156
	 * Repository tasks that exist in another query are not orphaned
157
	 */
158
	public void testRemovalOfTaskInTwoQueries() {
159
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
160
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query 1");
161
		MockRepositoryQuery mockQuery2 = new MockRepositoryQuery("mock query 2");
162
		taskList.addQuery(mockQuery);
163
		taskList.addQuery(mockQuery2);
164
		taskList.addTask(mockTask, mockQuery);
165
		taskList.addTask(mockTask, mockQuery2);
166
167
		taskList.removeFromQuery(mockQuery2, mockTask);
168
		assertTrue(mockQuery2.isEmpty());
169
		assertFalse(mockQuery.isEmpty());
170
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).isEmpty());
171
	}
172
173
	/**
174
	 * Moving an orphan to a Category should result in the task only being present in the target Category
175
	 */
176
	public void testMoveLocalTask() {
177
		TaskCategory category = new TaskCategory("taskCategoryHandle");
178
		taskList.addCategory(category);
179
		LocalTask newTask = new LocalTask("" + taskList.getNextLocalTaskId(), "new local task");
180
		taskList.addTask(newTask, null);
181
		assertTrue(taskList.getDefaultCategory().contains(newTask.getHandleIdentifier()));
182
		taskList.moveTask(newTask, category);
183
		assertFalse(taskList.getDefaultCategory().contains(newTask.getHandleIdentifier()));
184
	}
185
186
	public void testAddRepositoryTask() {
187
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
188
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
189
		TasksUiPlugin.getTaskListManager().getTaskList().addQuery(mockQuery);
190
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask, mockQuery);
191
		Set<AbstractTask> tasks = TasksUiPlugin.getTaskListManager().getTaskList().getRepositoryTasks(
192
				MockRepositoryConnector.REPOSITORY_URL);
193
		assertFalse(tasks.isEmpty());
194
		AbstractRepositoryQuery query = TasksUiPlugin.getTaskListManager().getTaskList().getQueryForHandle(
195
				mockTask.getHandleIdentifier());
196
		assertEquals(mockQuery, query);
197
		assertFalse(query.isEmpty());
198
		assertTrue(TasksUiPlugin.getTaskListManager().getTaskList().getOrphanContainer(
199
				MockRepositoryConnector.REPOSITORY_URL).isEmpty());
200
	}
201
202
	public void testMoveRepositoryTask() {
203
		TaskList tasklist = TasksUiPlugin.getTaskListManager().getTaskList();
204
		assertTrue(tasklist.getAllTasks().isEmpty());
205
206
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
207
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
208
		TasksUiPlugin.getTaskListManager().getTaskList().addQuery(mockQuery);
209
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask, mockQuery);
210
211
		TaskCategory category = new TaskCategory("taskCategoryHandle");
212
		taskList.addCategory(category);
213
214
		taskList.moveTask(mockTask, category);
215
		assertTrue(taskList.getDefaultCategory().isEmpty());
216
		assertTrue(category.contains(mockTask.getHandleIdentifier()));
217
		assertTrue(mockQuery.contains(mockTask.getHandleIdentifier()));
218
219
	}
220
221
	public void testRefactorOrphanedHandle() {
222
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
223
		mockTask.setLastReadTimeStamp("now");
224
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
225
		taskList.addQuery(mockQuery);
226
		taskList.addTask(mockTask, mockQuery);
227
228
		taskList.removeFromQuery(mockQuery, mockTask);
229
230
		assertFalse(mockQuery.contains(mockTask.getHandleIdentifier()));
231
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
232
				mockTask.getHandleIdentifier()));
233
234
		taskList.refactorRepositoryUrl(MockRepositoryConnector.REPOSITORY_URL, MockRepositoryConnector.REPOSITORY_URL
235
				+ "new");
236
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL + "new").contains(
237
				mockTask.getHandleIdentifier()));
238
	}
239
240
	public void testOrphanedSubtasks() {
241
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
242
		MockRepositoryTask mockTask2 = new MockRepositoryTask("2");
243
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
244
		TasksUiPlugin.getTaskListManager().getTaskList().addQuery(mockQuery);
245
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask, mockQuery);
246
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask2, mockTask);
247
248
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
249
				mockTask.getHandleIdentifier()));
250
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
251
				mockTask2.getHandleIdentifier()));
252
253
		assertNotNull(taskList.getTask(mockTask.getHandleIdentifier()));
254
		assertNotNull(taskList.getTask(mockTask2.getHandleIdentifier()));
255
		assertNotNull(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL));
256
		taskList.removeFromQuery(mockQuery, mockTask);
257
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
258
				mockTask.getHandleIdentifier()));
259
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
260
				mockTask2.getHandleIdentifier()));
261
		taskList.deleteTask(mockTask);
262
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
263
				mockTask.getHandleIdentifier()));
264
		// mockTask2 should be orphaned when the parent task is deleted
265
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
266
				mockTask2.getHandleIdentifier()));
267
	}
268
269
	/**
270
	 * If a task with subtasks falls out of a query, if its subtasks are subtasks of another task that is still around,
271
	 * they shouldn't be in the archive.
272
	 */
273
	public void testOrphanedSubtaskWithOtherParent() {
274
		MockRepositoryTask mockTask = new MockRepositoryTask("1");
275
		MockRepositoryTask mockTask2 = new MockRepositoryTask("2");
276
		MockRepositoryTask mockTask3 = new MockRepositoryTask("3");
277
		MockRepositoryQuery mockQuery = new MockRepositoryQuery("mock query");
278
		TasksUiPlugin.getTaskListManager().getTaskList().addQuery(mockQuery);
279
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask, mockQuery);
280
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask2, mockTask);
281
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask3, mockQuery);
282
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(mockTask2, mockTask3);
283
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
284
				mockTask.getHandleIdentifier()));
285
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
286
				mockTask2.getHandleIdentifier()));
287
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
288
				mockTask3.getHandleIdentifier()));
289
290
		taskList.removeFromQuery(mockQuery, mockTask);
291
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
292
				mockTask.getHandleIdentifier()));
293
		assertFalse(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
294
				mockTask2.getHandleIdentifier()));
295
296
		taskList.removeFromQuery(mockQuery, mockTask3);
297
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
298
				mockTask3.getHandleIdentifier()));
299
		assertTrue(taskList.getOrphanContainer(MockRepositoryConnector.REPOSITORY_URL).contains(
300
				mockTask2.getHandleIdentifier()));
301
302
	}
303
}
(-)src/org/eclipse/mylyn/tests/integration/ChangeDataDirTest.java (-3 / +4 lines)
Lines 18-23 Link Here
18
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
18
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaTask;
19
import org.eclipse.mylyn.internal.context.core.InteractionContextManager;
19
import org.eclipse.mylyn.internal.context.core.InteractionContextManager;
20
import org.eclipse.mylyn.internal.monitor.usage.UiUsageMonitorPlugin;
20
import org.eclipse.mylyn.internal.monitor.usage.UiUsageMonitorPlugin;
21
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
21
import org.eclipse.mylyn.monitor.core.InteractionEvent;
22
import org.eclipse.mylyn.monitor.core.InteractionEvent;
22
import org.eclipse.mylyn.tasks.core.AbstractTask;
23
import org.eclipse.mylyn.tasks.core.AbstractTask;
23
import org.eclipse.mylyn.tasks.ui.TaskListManager;
24
import org.eclipse.mylyn.tasks.ui.TaskListManager;
Lines 95-101 Link Here
95
	public void testTaskMove() {
96
	public void testTaskMove() {
96
		AbstractTask task = manager.createNewLocalTask("label");
97
		AbstractTask task = manager.createNewLocalTask("label");
97
		String handle = task.getHandleIdentifier();
98
		String handle = task.getHandleIdentifier();
98
		manager.getTaskList().moveToContainer(task, manager.getTaskList().getDefaultCategory());
99
		manager.getTaskList().moveTask(task,
100
				manager.getTaskList().getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL));
99
101
100
		AbstractTask readTaskBeforeMove = manager.getTaskList().getTask(handle);
102
		AbstractTask readTaskBeforeMove = manager.getTaskList().getTask(handle);
101
		TasksUiPlugin.getTaskListManager().copyDataDirContentsTo(newDataDir);
103
		TasksUiPlugin.getTaskListManager().copyDataDirContentsTo(newDataDir);
Lines 127-133 Link Here
127
	}
129
	}
128
130
129
	private void addBugzillaTask(BugzillaTask newTask) {
131
	private void addBugzillaTask(BugzillaTask newTask) {
130
		TasksUiPlugin.getTaskListManager().getTaskList().moveToContainer(newTask,
132
		TasksUiPlugin.getTaskListManager().getTaskList().addTask(newTask);
131
				TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory());
132
	}
133
	}
133
}
134
}
(-)src/org/eclipse/mylyn/tests/integration/TaskListFilterTest.java (-5 / +5 lines)
Lines 59-81 Link Here
59
		taskCompleted = new LocalTask("1", "completed");
59
		taskCompleted = new LocalTask("1", "completed");
60
		taskCompleted.setCompleted(true);
60
		taskCompleted.setCompleted(true);
61
		taskCompleted.setCompletionDate(TaskActivityUtil.snapForwardNumDays(Calendar.getInstance(), -1).getTime());
61
		taskCompleted.setCompletionDate(TaskActivityUtil.snapForwardNumDays(Calendar.getInstance(), -1).getTime());
62
		manager.getTaskList().addTask(taskCompleted, manager.getTaskList().getDefaultCategory());
62
		manager.getTaskList().addTask(taskCompleted);
63
63
64
		taskIncomplete = new LocalTask("2", "t-incomplete");
64
		taskIncomplete = new LocalTask("2", "t-incomplete");
65
		manager.getTaskList().addTask(taskIncomplete, manager.getTaskList().getDefaultCategory());
65
		manager.getTaskList().addTask(taskIncomplete);
66
66
67
		taskOverdue = new LocalTask("3", "t-overdue");
67
		taskOverdue = new LocalTask("3", "t-overdue");
68
		taskOverdue.setScheduledForDate(TaskActivityUtil.snapForwardNumDays(Calendar.getInstance(), -1).getTime());
68
		taskOverdue.setScheduledForDate(TaskActivityUtil.snapForwardNumDays(Calendar.getInstance(), -1).getTime());
69
		manager.getTaskList().addTask(taskOverdue, manager.getTaskList().getDefaultCategory());
69
		manager.getTaskList().addTask(taskOverdue);
70
70
71
		taskDueToday = new LocalTask("4", "t-today");
71
		taskDueToday = new LocalTask("4", "t-today");
72
		taskDueToday.setScheduledForDate(TaskActivityUtil.snapEndOfWorkDay(Calendar.getInstance()).getTime());
72
		taskDueToday.setScheduledForDate(TaskActivityUtil.snapEndOfWorkDay(Calendar.getInstance()).getTime());
73
		manager.getTaskList().addTask(taskDueToday, manager.getTaskList().getDefaultCategory());
73
		manager.getTaskList().addTask(taskDueToday);
74
74
75
		taskCompletedToday = new LocalTask("5", "t-donetoday");
75
		taskCompletedToday = new LocalTask("5", "t-donetoday");
76
		taskCompletedToday.setScheduledForDate(TaskActivityUtil.snapEndOfWorkDay(Calendar.getInstance()).getTime());
76
		taskCompletedToday.setScheduledForDate(TaskActivityUtil.snapEndOfWorkDay(Calendar.getInstance()).getTime());
77
		taskCompletedToday.setCompleted(true);
77
		taskCompletedToday.setCompleted(true);
78
		manager.getTaskList().addTask(taskCompletedToday, manager.getTaskList().getDefaultCategory());
78
		manager.getTaskList().addTask(taskCompletedToday);
79
	}
79
	}
80
80
81
	@Override
81
	@Override

Return to bug 181388