From 0d11bd44261c1cc06a7a9e516b2338f2dcc82e49 Mon Sep 17 00:00:00 2001
From: mkersten
Date: Wed, 26 Oct 2005 15:52:52 +0000
Subject: Fixed Bugzilla Bug 111945: Read-only activations of tasks
---
org.eclipse.mylyn.bugzilla.ui/plugin.xml | 56 +--
.../mylyn/tasklist/tests/TaskHistoryTest.java | 20 +-
.../mylyn/tasklist/tests/TaskListManagerTest.java | 23 +-
org.eclipse.mylyn.tasks.ui/plugin.xml | 14 +-
.../src/org/eclipse/mylyn/tasklist/ITask.java | 6 +-
.../mylyn/tasklist/MylarTasklistPlugin.java | 8 +-
.../src/org/eclipse/mylyn/tasklist/Task.java | 9 +
.../eclipse/mylyn/tasklist/TaskListManager.java | 3 +-
.../internal/DefaultTaskListExternalizer.java | 14 +-
.../planner/internal/CompletedTaskCollector.java | 47 ++
.../tasklist/planner/internal/ITasksCollector.java | 26 ++
.../internal/ReminderRequiredCollector.java | 43 ++
.../planner/internal/TaskReportGenerator.java | 73 ++++
.../planner/ui/CompletedTasksContentProvider.java | 39 ++
.../planner/ui/CompletedTasksEditorInput.java | 86 ++++
.../planner/ui/CompletedTasksLabelProvider.java | 57 +++
.../tasklist/planner/ui/CompletedTasksSorter.java | 91 ++++
.../planner/ui/MylarTaskPlannerEditorPart.java | 473 +++++++++++++++++++++
.../planner/ui/MylarTaskPlannerWizard.java | 64 +++
.../planner/ui/MylarTaskPlannerWizardPage.java | 70 +++
.../planner/ui/PlannedTasksContentProvider.java | 49 +++
.../planner/ui/PlannedTasksLabelProvider.java | 55 +++
.../tasklist/planner/ui/PlannedTasksSorter.java | 75 ++++
.../tasklist/planner/ui/ReminderCellEditor.java | 73 ++++
.../report/internal/CompletedTaskCollector.java | 47 --
.../tasklist/report/internal/ITasksCollector.java | 26 --
.../report/internal/ReminderRequiredCollector.java | 43 --
.../report/internal/TaskReportGenerator.java | 73 ----
.../report/ui/CompletedTasksContentProvider.java | 39 --
.../report/ui/CompletedTasksEditorInput.java | 86 ----
.../report/ui/CompletedTasksLabelProvider.java | 57 ---
.../tasklist/report/ui/CompletedTasksSorter.java | 91 ----
.../report/ui/PlannedTasksContentProvider.java | 49 ---
.../report/ui/PlannedTasksLabelProvider.java | 55 ---
.../tasklist/report/ui/PlannedTasksSorter.java | 75 ----
.../tasklist/report/ui/PlanningGameEditorPart.java | 472 --------------------
.../tasklist/report/ui/PlanningGameWizard.java | 64 ---
.../tasklist/report/ui/PlanningGameWizardPage.java | 64 ---
.../tasklist/report/ui/ReminderCellEditor.java | 73 ----
.../mylyn/tasklist/ui/actions/AutoCloseAction.java | 2 +-
.../ui/actions/DropDownTaskNavigateAction.java | 2 +-
.../ui/actions/NextTaskDropDownAction.java | 2 +-
.../ui/actions/PreviousTaskDropDownAction.java | 2 +-
.../tasklist/ui/actions/TaskActivateAction.java | 37 +-
.../tasklist/ui/actions/TaskDeactivateAction.java | 33 +-
.../mylyn/tasklist/ui/views/TaskListView.java | 386 +++--------------
46 files changed, 1524 insertions(+), 1728 deletions(-)
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/CompletedTaskCollector.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ITasksCollector.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ReminderRequiredCollector.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/TaskReportGenerator.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksContentProvider.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksEditorInput.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksLabelProvider.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksSorter.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerEditorPart.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizard.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizardPage.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksContentProvider.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksLabelProvider.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksSorter.java
create mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/ReminderCellEditor.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/CompletedTaskCollector.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ITasksCollector.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ReminderRequiredCollector.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/TaskReportGenerator.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksContentProvider.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksEditorInput.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksLabelProvider.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksSorter.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksContentProvider.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksLabelProvider.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksSorter.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameEditorPart.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizard.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizardPage.java
delete mode 100644 org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/ReminderCellEditor.java
diff --git a/org.eclipse.mylyn.bugzilla.ui/plugin.xml b/org.eclipse.mylyn.bugzilla.ui/plugin.xml
index 09fe646c2..e4275632e 100644
--- a/org.eclipse.mylyn.bugzilla.ui/plugin.xml
+++ b/org.eclipse.mylyn.bugzilla.ui/plugin.xml
@@ -120,16 +120,27 @@
-
+
+
+
+
+ tooltip="Add Bugzilla Query">
-
-
+
+ tooltip="Add Existing Bugzilla Report">
-
-
-
-
+-->
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java
index fdc0ca874..f9d348353 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskHistoryTest.java
@@ -83,11 +83,11 @@ public class TaskHistoryTest extends TestCase {
* Tests the next task and previous task navigation.
*/
public void testBasicHistoryNavigation(){
- (new TaskActivateAction(task1)).run();
+ (new TaskActivateAction()).run(task1);
taskView.addTaskToHistory(task1);
- (new TaskActivateAction(task2)).run();
+ (new TaskActivateAction()).run(task2);
taskView.addTaskToHistory(task2);
- (new TaskActivateAction(task3)).run();
+ (new TaskActivateAction()).run(task3);
taskView.addTaskToHistory(task3);
assertTrue(task3.isActive());
@@ -117,7 +117,7 @@ public class TaskHistoryTest extends TestCase {
taskView.getNextTaskAction().run();
assertTrue(task3.isActive());
- (new TaskActivateAction(task4)).run();
+ (new TaskActivateAction()).run(task4);
taskView.addTaskToHistory(task4); //Simulate clicking on it rather than navigating next or previous
assertTrue(task4.isActive());
@@ -143,13 +143,13 @@ public class TaskHistoryTest extends TestCase {
//Simulate activating the tasks by clicking rather than
//navigating previous/next
- (new TaskActivateAction(task1)).run();
+ (new TaskActivateAction()).run(task1);
taskView.addTaskToHistory(task1);
- (new TaskActivateAction(task2)).run();
+ (new TaskActivateAction()).run(task2);
taskView.addTaskToHistory(task2);
- (new TaskActivateAction(task3)).run();
+ (new TaskActivateAction()).run(task3);
taskView.addTaskToHistory(task3);
- (new TaskActivateAction(task4)).run();
+ (new TaskActivateAction()).run(task4);
taskView.addTaskToHistory(task4);
assertTrue(task4.isActive());
@@ -194,8 +194,8 @@ public class TaskHistoryTest extends TestCase {
assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task1);
//Check that a deactivated task appears first on the history list
- (new TaskActivateAction(task5)).run();
- (new TaskDeactivateAction(task5, taskView)).run();
+ (new TaskActivateAction()).run(task5);
+ (new TaskDeactivateAction()).run(task5);
taskView.addTaskToHistory(task5);
prevHistoryList = taskHistory.getPreviousTasks();
assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task5);
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java
index 102c965eb..76105ebd2 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskListManagerTest.java
@@ -32,12 +32,33 @@ import org.eclipse.mylar.tasklist.internal.TaskList;
*/
public class TaskListManagerTest extends TestCase {
+ public void testPlans() {
+ File file = new File("foo" + MylarTasklistPlugin.FILE_EXTENSION);
+ file.deleteOnExit();
+ TaskListManager manager = new TaskListManager(file);
+
+ Task task1 = new Task(MylarTasklistPlugin.getTaskListManager().genUniqueTaskId(), "task 1", true);
+ task1.addPlan("default");
+ manager.addRootTask(task1);
+
+ manager.saveTaskList();
+ assertNotNull(manager.getTaskList());
+ TaskList list = new TaskList();
+ manager.setTaskList(list);
+ manager.readTaskList();
+ assertNotNull(manager.getTaskList());
+
+ List readList = manager.getTaskList().getRootTasks();
+ ITask task = readList.get(0);
+ assertEquals(1, task.getPlans().size());
+ assertTrue(task.getPlans().get(0).equals("default"));
+ }
+
public void testCreationAndExternalization() {
File file = new File("foo" + MylarTasklistPlugin.FILE_EXTENSION);
file.deleteOnExit();
TaskListManager manager = new TaskListManager(file);
-// TaskList tlist = manager.getTaskList();
Task task1 = new Task(MylarTasklistPlugin.getTaskListManager().genUniqueTaskId(), "task 1", true);
manager.addRootTask(task1);
Task sub1 = new Task(MylarTasklistPlugin.getTaskListManager().genUniqueTaskId(), "sub 1", true);
diff --git a/org.eclipse.mylyn.tasks.ui/plugin.xml b/org.eclipse.mylyn.tasks.ui/plugin.xml
index 683085587..a798129e9 100644
--- a/org.eclipse.mylyn.tasks.ui/plugin.xml
+++ b/org.eclipse.mylyn.tasks.ui/plugin.xml
@@ -37,7 +37,7 @@
@@ -71,16 +71,16 @@
class="org.eclipse.mylar.tasklist.ui.TaskEditor"
name="Task Viewer"
id="org.eclipse.mylar.tasklist.ui.taskEditor"/>
-
+ id="org.eclipse.mylar.tasklist.ui.catEditor"/>
+
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ITask.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ITask.java
index 401daf3d9..e06ef0d89 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ITask.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ITask.java
@@ -22,7 +22,7 @@ import org.eclipse.mylar.tasklist.internal.TaskCategory;
/**
* @author Mik Kersten
*
- * TODO: make IDs be handles
+ * TODO: make IDs be handles, clean up
*/
public interface ITask extends Serializable, ITaskListElement {
@@ -37,6 +37,10 @@ public interface ITask extends Serializable, ITaskListElement {
public abstract boolean isActive();
public abstract void setActive(boolean active, boolean isStalled);
+
+ public abstract void addPlan(String plan);
+
+ public List getPlans();
public abstract void setCompleted(boolean completed);
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/MylarTasklistPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/MylarTasklistPlugin.java
index bb39071b1..6592848a3 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/MylarTasklistPlugin.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/MylarTasklistPlugin.java
@@ -27,8 +27,8 @@ import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.mylar.core.MylarPlugin;
import org.eclipse.mylar.tasklist.internal.TaskListExternalizer;
-import org.eclipse.mylar.tasklist.report.internal.ReminderRequiredCollector;
-import org.eclipse.mylar.tasklist.report.internal.TaskReportGenerator;
+import org.eclipse.mylar.tasklist.planner.internal.ReminderRequiredCollector;
+import org.eclipse.mylar.tasklist.planner.internal.TaskReportGenerator;
import org.eclipse.mylar.tasklist.ui.TasksReminderDialog;
import org.eclipse.mylar.tasklist.ui.views.TaskListView;
import org.eclipse.swt.events.DisposeEvent;
@@ -55,8 +55,8 @@ public class MylarTasklistPlugin extends AbstractUIPlugin implements IStartup {
private List taskHandlers = new ArrayList(); // TODO: use extension points
private List contextEditors = new ArrayList();
- public static final String PLANNING_GAME_WIZARD_ID = "org.eclipse.mylar.tasklist.report.ui.planningGameWizard";
- public static final String PLANNING_GAME_EDITOR_ID = "org.eclipse.mylar.tasklist.report.ui.planning";
+ public static final String PLANNING_GAME_WIZARD_ID = "org.eclipse.mylar.tasklist.ui.planner.wizard";
+ public static final String PLANNING_GAME_EDITOR_ID = "org.eclipse.mylar.tasklist.ui.planner.editor";
public static final String REPORT_OPEN_EDITOR = "org.eclipse.mylar.tasklist.report.open.editor";
public static final String REPORT_OPEN_INTERNAL = "org.eclipse.mylar.tasklist.report.open.internal";
public static final String REPORT_OPEN_EXTERNAL = "org.eclipse.mylar.tasklist.report.open.external";
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/Task.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/Task.java
index 0884bca43..c8cb860dd 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/Task.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/Task.java
@@ -55,6 +55,7 @@ public class Task implements ITask {
private int estimatedTime = 0;
private boolean completed;
private List links = new ArrayList();
+ private List plans = new ArrayList();
private String issueReportURL = "";
private ITaskListCategory parentCategory = null;
@@ -549,4 +550,12 @@ public class Task implements ITask {
public String getEstimateTimeForDisplay() {
return estimatedTime / 10 + " Hours";
}
+
+ public void addPlan(String plan) {
+ if (plan != null && !plans.contains(plan)) plans.add(plan);
+ }
+
+ public List getPlans() {
+ return plans;
+ }
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java
index b13930248..2cda5683f 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/TaskListManager.java
@@ -149,8 +149,7 @@ public class TaskListManager {
public void deactivateTask(ITask task) {
TaskActiveTimerListener activeListener = listenerMap.remove(task);
- if(activeListener != null)
- activeListener.stopTimer();
+ if(activeListener != null) activeListener.stopTimer();
taskList.setActive(task, false, false);
for (ITaskActivityListener listener : listeners) listener.taskDeactivated(task);
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DefaultTaskListExternalizer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DefaultTaskListExternalizer.java
index ab2981bf0..e6a7c26d1 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DefaultTaskListExternalizer.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DefaultTaskListExternalizer.java
@@ -44,6 +44,7 @@ public class DefaultTaskListExternalizer implements ITaskListExternalizer {
public static final String TAG_TASK_CATEGORY = "Task" + TAG_CATEGORY;
public static final String LINK = "Link";
+ public static final String PLAN = "Plan";
public static final String ESTIMATED = "Estimated";
public static final String ELAPSED = "Elapsed";
public static final String ISSUEURL = "IssueURL";
@@ -134,6 +135,12 @@ public class DefaultTaskListExternalizer implements ITaskListExternalizer {
node.setAttribute(LINK+i, link);
i++;
}
+ List plans = task.getPlans();
+ int currPlan = 0;
+ for (String plan : plans) {
+ node.setAttribute(PLAN+currPlan, plan);
+ currPlan++;
+ }
for (ITask t : task.getChildren()) {
createTaskElement(t, doc, node);
@@ -211,7 +218,7 @@ public class DefaultTaskListExternalizer implements ITaskListExternalizer {
if (element.getAttribute(ACTIVE).compareTo(TRUE) == 0) {
task.setActive(true, false);
tlist.setActive(task, true, false);
- new TaskActivateAction(task).run();
+ new TaskActivateAction().run(task);
} else {
task.setActive(false, false);
}
@@ -272,6 +279,11 @@ public class DefaultTaskListExternalizer implements ITaskListExternalizer {
task.getRelatedLinks().add(element.getAttribute(LINK+i));
i++;
}
+ int ii = 0;
+ while (element.hasAttribute(PLAN+ii)) {
+ task.getPlans().add(element.getAttribute(PLAN+i));
+ ii++;
+ }
if (category != null) {
task.internalSetCategory((TaskCategory) category);
} else {
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/CompletedTaskCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/CompletedTaskCollector.java
new file mode 100644
index 000000000..41421a970
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/CompletedTaskCollector.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.internal;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public class CompletedTaskCollector implements ITasksCollector {
+
+ private Map completedTasks = new HashMap();
+ private Date cutOffDate = null;
+ private long DAY = 24*3600*1000;
+
+ public CompletedTaskCollector(int prevDays) {
+ cutOffDate = new Date(new Date().getTime() - prevDays * DAY);
+ }
+
+ public String getLabel() {
+ return "Completed Tasks";
+ }
+
+ public void consumeTask(ITask task) {
+ if (task.isCompleted() && task.getEndDate() != null && task.getEndDate().compareTo(cutOffDate) > 0 && !completedTasks.containsKey(task.getHandle())) {
+ completedTasks.put(task.getHandle(), task);
+ }
+ }
+
+ public Collection getTasks() {
+ return completedTasks.values();
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ITasksCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ITasksCollector.java
new file mode 100644
index 000000000..663588735
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ITasksCollector.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.internal;
+
+import java.util.Collection;
+
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public interface ITasksCollector {
+
+ public abstract void consumeTask(ITask task);
+
+ public abstract Collection getTasks();
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ReminderRequiredCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ReminderRequiredCollector.java
new file mode 100644
index 000000000..ce8697522
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/ReminderRequiredCollector.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.internal;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public class ReminderRequiredCollector implements ITasksCollector {
+
+ private List tasks = new ArrayList();
+ private Date curr = null;
+
+ public ReminderRequiredCollector() {
+ curr = new Date();
+ }
+
+ public void consumeTask(ITask task) {
+ if (task.getReminderDate() != null && !task.hasBeenReminded() && task.getReminderDate().compareTo(curr) < 0) {
+ task.setReminded(true);
+ tasks.add(task);
+ }
+ }
+
+ public List getTasks() {
+ return tasks;
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/TaskReportGenerator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/TaskReportGenerator.java
new file mode 100644
index 000000000..449f72b7d
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/internal/TaskReportGenerator.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.internal;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.mylar.tasklist.ITask;
+import org.eclipse.mylar.tasklist.ITaskListElement;
+import org.eclipse.mylar.tasklist.internal.TaskCategory;
+import org.eclipse.mylar.tasklist.internal.TaskList;
+
+/**
+ * @author Ken Sueda
+ */
+public class TaskReportGenerator {
+ // NOTE: might want a map of tasks instead of a flattened list of tasks
+
+ private List collectors = new ArrayList();
+ private List tasks = new ArrayList();
+ private TaskList tasklist = null;
+
+ public TaskReportGenerator(TaskList tlist) {
+ tasklist = tlist;
+ }
+
+ public void addCollector(ITasksCollector collector) {
+ collectors.add(collector);
+ }
+
+ private void getTasksForReport() {
+ List roots = tasklist.getRootTasks();
+ for(int i = 0; i < roots.size(); i++) {
+ ITask t = (ITask) roots.get(i);
+ for (ITasksCollector collector : collectors) {
+ collector.consumeTask(t);
+ }
+ }
+ for (TaskCategory cat : tasklist.getTaskCategories()) {
+ List extends ITaskListElement> sub = cat.getChildren();
+ for (int j = 0; j < sub.size(); j++) {
+ if (sub.get(j) instanceof ITask) {
+ ITask element = (ITask) sub.get(j);
+ for (ITasksCollector collector : collectors) {
+ collector.consumeTask(element);
+ }
+ }
+ }
+ }
+
+ // TODO need to support handling things in the bugzilla registry
+ for (ITasksCollector collector : collectors) {
+ tasks.addAll(collector.getTasks());
+ }
+ }
+
+ public void checkTasks() {
+ getTasksForReport();
+ }
+
+ public List getTasks() {
+ return tasks;
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksContentProvider.java
new file mode 100644
index 000000000..181ce70ea
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksContentProvider.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public class CompletedTasksContentProvider implements IStructuredContentProvider {
+
+ private List tasks = null;
+
+ public CompletedTasksContentProvider(List tasks) {
+ this.tasks = tasks;
+ }
+ public Object[] getElements(Object inputElement) {
+ return tasks.toArray();
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksEditorInput.java
new file mode 100644
index 000000000..201480193
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksEditorInput.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import java.util.List;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.mylar.tasklist.ITask;
+import org.eclipse.mylar.tasklist.internal.TaskList;
+import org.eclipse.mylar.tasklist.planner.internal.CompletedTaskCollector;
+import org.eclipse.mylar.tasklist.planner.internal.TaskReportGenerator;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+/**
+ * @author Ken Sueda
+ */
+public class CompletedTasksEditorInput implements IEditorInput {
+ private List completedTasks = null;
+ private TaskReportGenerator parser = null;
+
+ public CompletedTasksEditorInput(int prevDays, TaskList tlist) {
+ parser = new TaskReportGenerator(tlist);
+ parser.addCollector(new CompletedTaskCollector(prevDays));
+ parser.checkTasks();
+ completedTasks = parser.getTasks();
+ }
+
+ /**
+ * IEditorInput interface methods
+ */
+ public boolean exists() {
+ return true;
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ public String getName() {
+ return "Task Planner";
+ }
+
+ public IPersistableElement getPersistable() {
+ return null;
+ }
+
+ public String getToolTipText() {
+ return "Planning Game Report";
+ }
+
+ public Object getAdapter(Class adapter) {
+ return null;
+ }
+
+ /**
+ * Methods
+ */
+ public List getTasks() {
+ return completedTasks;
+ }
+
+ public int getListSize() {
+ return completedTasks.size();
+ }
+ public long getTotalTimeSpent() {
+ long duration = 0;
+ for(ITask t : completedTasks) {
+ duration += t.getElapsedTimeLong();
+ }
+ return duration;
+ }
+
+ public TaskReportGenerator getReportGenerator() {
+ return parser;
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksLabelProvider.java
new file mode 100644
index 000000000..46e0a2496
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksLabelProvider.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.mylar.tasklist.ITask;
+import org.eclipse.mylar.tasklist.ITaskListElement;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Ken Sueda
+ */
+public class CompletedTasksLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+
+ //private String[] columnNames = new String[] { "Description", "Priority", "Date Completed", "Duration"};
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (! (element instanceof ITaskListElement)) {
+ return null;
+ }
+ if (columnIndex == 0) {
+ return ((ITaskListElement)element).getIcon();
+ } else {
+ return null;
+ }
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof ITask) {
+ ITask task = (ITask) element;
+ switch(columnIndex) {
+ case 1:
+ return task.getDescription(true);
+ case 2:
+ return task.getPriority();
+ case 3:
+ return task.getCreationDateString();
+ case 4:
+ return task.getEndDateString();
+ case 5:
+ return task.getElapsedTimeForDisplay();
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksSorter.java
new file mode 100644
index 000000000..66e756fd3
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/CompletedTasksSorter.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public class CompletedTasksSorter extends ViewerSorter {
+ /**
+ * Constructor argument values that indicate to sort items by
+ * different columns.
+ */
+ public final static int DESCRIPTION = 1;
+ public final static int PRIORITY = 2;
+ public final static int CREATION_DATE = 3;
+ public final static int COMPLETED_DATE = 4;
+ public final static int DURATION = 5;
+
+ // Criteria that the instance uses
+ private int criteria;
+
+ /**
+ * Creates a resource sorter that will use the given sort criteria.
+ *
+ * @param criteria the sort criterion to use: one of NAME
or
+ * TYPE
+ */
+ public CompletedTasksSorter(int criteria) {
+ super();
+ this.criteria = criteria;
+ }
+
+ @Override
+ public int compare(Viewer viewer, Object obj1, Object obj2) {
+ ITask t1 = (ITask) obj1;
+ ITask t2 = (ITask) obj2;
+
+ switch (criteria) {
+ case DESCRIPTION:
+ return compareDescription(t1, t2);
+ case PRIORITY:
+ return comparePriority(t1, t2);
+ case CREATION_DATE:
+ return compareCreationDate(t1, t2);
+ case COMPLETED_DATE:
+ return compareCompletedDate(t1, t2);
+ case DURATION:
+ return compareDuration(t1, t2);
+ default:
+ return 0;
+ }
+ }
+
+ private int compareDescription(ITask task1, ITask task2) {
+ return task1.getDescription(false).compareTo(task2.getDescription(false));
+ }
+
+ private int comparePriority(ITask task1, ITask task2) {
+ return task1.getPriority().compareTo(task2.getPriority());
+ }
+
+ private int compareCompletedDate(ITask task1, ITask task2) {
+ return task2.getEndDate().compareTo(task1.getEndDate());
+ }
+
+ private int compareCreationDate(ITask task1, ITask task2) {
+ if(task1.getCreationDate() == null)
+ return 1;
+ else if(task2.getCreationDate() == null)
+ return -1;
+ else
+ return task2.getCreationDate().compareTo(task1.getCreationDate());
+ }
+
+ private int compareDuration(ITask task1, ITask task2) {
+ return task1.getElapsedTimeLong() < task2.getElapsedTimeLong() ? 1 : -1;
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerEditorPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerEditorPart.java
new file mode 100644
index 000000000..e23d6c174
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerEditorPart.java
@@ -0,0 +1,473 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import java.util.Arrays;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.ICellEditorListener;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ViewerDropAdapter;
+import org.eclipse.mylar.core.util.DateUtil;
+import org.eclipse.mylar.dt.MylarWebRef;
+import org.eclipse.mylar.tasklist.ITask;
+import org.eclipse.mylar.tasklist.ITaskListElement;
+import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
+import org.eclipse.mylar.tasklist.Task;
+import org.eclipse.mylar.tasklist.ui.views.TaskListView;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.TransferData;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.forms.FormColors;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.ui.part.EditorPart;
+
+/**
+ * @author Mik Kersten
+ * @author Ken Sueda (original prototype)
+ */
+public class MylarTaskPlannerEditorPart extends EditorPart {
+
+ private CompletedTasksEditorInput editorInput = null;
+ private Table completedTable;
+ private TableViewer completedTableViewer;
+ private String[] completedColumnNames = new String[] {".", "Description", "Priority", "Date Created", "Date Completed", "Duration"};
+ private Table planTable;
+ private TableViewer planTableViewer;
+ private PlannedTasksContentProvider contentProvider = new PlannedTasksContentProvider();
+ private ReminderCellEditor reminderEditor = null;
+ private String[] planColumnNames = new String[] {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
+ private static final String[] ESTIMATE_TIMES = new String[] {"0 Hours", "1 Hours", "2 Hours", "3 Hours","4 Hours","5 Hours","6 Hours","7 Hours","8 Hours","9 Hours","10 Hours"};
+ private OpenTaskEditorAction doubleClickAction = new OpenTaskEditorAction();
+
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ }
+
+ @Override
+ public void doSaveAs() {
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public void init(IEditorSite site, IEditorInput input)
+ throws PartInitException {
+ setSite(site);
+ setInput(input);
+ editorInput = (CompletedTasksEditorInput)input;
+ setPartName(editorInput.getName());
+ setTitleToolTip(editorInput.getToolTipText());
+ }
+
+ @Override
+ public boolean isDirty() {
+ return false;
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ FormToolkit toolkit = new FormToolkit(parent.getDisplay());
+ ScrolledForm sform = toolkit.createScrolledForm(parent);
+ sform.getBody().setLayout(new TableWrapLayout());
+ Composite editorComposite = sform.getBody();
+
+ createSummarySection(editorComposite, toolkit);
+ createCompletedSection(editorComposite, toolkit);
+ createPlannedTasksSection(editorComposite, toolkit);
+ }
+
+ @Override
+ public void setFocus() {
+ }
+
+ private void createSummarySection(Composite parent, FormToolkit toolkit) {
+ Section summarySection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ summarySection.setText("Mylar Task Planner");
+ summarySection.setLayout(new TableWrapLayout());
+ summarySection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
+ Composite summaryContainer = toolkit.createComposite(summarySection);
+ summarySection.setClient(summaryContainer);
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.numColumns = 1;
+ summaryContainer.setLayout(layout);
+
+ int length = editorInput.getListSize();
+ String numComplete = "Number of completed tasks: " + editorInput.getListSize();
+ Label label = toolkit.createLabel(summaryContainer, numComplete, SWT.NULL);
+ label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
+ String avgTime = "Average time spent: ";
+ if (length > 0) {
+ avgTime = avgTime + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpent() / editorInput.getListSize());
+ } else {
+ avgTime = avgTime + 0;
+ }
+ label = toolkit.createLabel(summaryContainer, avgTime, SWT.NULL);
+ label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
+ String totalTime = "Total time spent: " + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpent());
+ label = toolkit.createLabel(summaryContainer, totalTime, SWT.NULL);
+ label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
+ }
+
+ private void createCompletedSection(Composite parent, FormToolkit toolkit) {
+ Section detailSection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ detailSection.setText("Completed Tasks Details");
+ detailSection.setLayout(new TableWrapLayout());
+ detailSection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
+ Composite detailContainer = toolkit.createComposite(detailSection);
+ detailSection.setClient(detailContainer);
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.numColumns = 2;
+ detailContainer.setLayout(layout);
+
+ createCompletedTable(detailContainer, toolkit);
+ createCompletedTableViewer();
+ }
+
+ private void createCompletedTable(Composite parent, FormToolkit toolkit) {
+ int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+ completedTable = toolkit.createTable(parent, style );
+ TableLayout tlayout = new TableLayout();
+ completedTable.setLayout(tlayout);
+ TableWrapData wd = new TableWrapData(TableWrapData.FILL_GRAB);
+ wd.heightHint = 300;
+ wd.grabVertical = true;
+ completedTable.setLayoutData(wd);
+
+ completedTable.setLinesVisible(true);
+ completedTable.setHeaderVisible(true);
+ completedTable.setEnabled(true);
+
+ TableColumn column = new TableColumn(completedTable, SWT.LEFT, 0);
+ column.setText(completedColumnNames[0]);
+ column.setWidth(30);
+
+ column = new TableColumn(completedTable, SWT.LEFT, 1);
+ column.setText(completedColumnNames[1]);
+ column.setWidth(300);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.DESCRIPTION));
+
+ }
+ });
+
+ column = new TableColumn(completedTable, SWT.LEFT, 2);
+ column.setText(completedColumnNames[2]);
+ column.setWidth(50);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.PRIORITY));
+ }
+ });
+
+ column = new TableColumn(completedTable, SWT.LEFT, 3);
+ column.setText(completedColumnNames[3]);
+ column.setWidth(170);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.CREATION_DATE));
+ }
+ });
+
+ column = new TableColumn(completedTable, SWT.LEFT, 4);
+ column.setText(completedColumnNames[4]);
+ column.setWidth(170);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.COMPLETED_DATE));
+ }
+ });
+
+
+ column = new TableColumn(completedTable, SWT.LEFT, 5);
+ column.setText(completedColumnNames[5]);
+ column.setWidth(100);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.DURATION));
+ }
+ });
+ }
+
+ private void createCompletedTableViewer() {
+ completedTableViewer = new TableViewer(completedTable);
+ completedTableViewer.setUseHashlookup(true);
+ completedTableViewer.setColumnProperties(completedColumnNames);
+
+ completedTableViewer.setContentProvider(new CompletedTasksContentProvider(editorInput.getTasks()));
+ completedTableViewer.setLabelProvider(new CompletedTasksLabelProvider());
+ completedTableViewer.setInput(editorInput);
+ }
+
+ private void createPlannedTasksSection(Composite parent, FormToolkit toolkit) {
+ Section planSection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
+ planSection.setText("Planned Tasks");
+ planSection.setLayout(new TableWrapLayout());
+ planSection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
+ Composite planContainer = toolkit.createComposite(planSection);
+ planSection.setClient(planContainer);
+ TableWrapLayout layout = new TableWrapLayout();
+ layout.numColumns = 1;
+ planContainer.setLayout(layout);
+
+ createPlanTable(planContainer, toolkit);
+ createPlanTableViewer();
+ createRemoveButton(planContainer, toolkit);
+ hookDoubleClickAction();
+ }
+
+ private void createPlanTable(Composite parent, FormToolkit toolkit) {
+ int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+ planTable = toolkit.createTable(parent, style );
+ TableLayout tlayout = new TableLayout();
+ planTable.setLayout(tlayout);
+ TableWrapData wd = new TableWrapData(TableWrapData.FILL_GRAB);
+ wd.heightHint = 300;
+ wd.grabVertical = true;
+ planTable.setLayoutData(wd);
+
+ planTable.setLinesVisible(true);
+ planTable.setHeaderVisible(true);
+ planTable.setEnabled(true);
+
+ TableColumn column = new TableColumn(planTable, SWT.LEFT, 0);
+ column.setText(planColumnNames[0]);
+ column.setWidth(30);
+
+ column = new TableColumn(planTable, SWT.LEFT, 1);
+ column.setText(planColumnNames[1]);
+ column.setWidth(300);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.DESCRIPTION));
+ }
+ });
+
+ column = new TableColumn(planTable, SWT.LEFT, 2);
+ column.setText(planColumnNames[2]);
+ column.setWidth(50);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.PRIORITY));
+ }
+ });
+
+ column = new TableColumn(planTable, SWT.LEFT, 3);
+ column.setText(planColumnNames[3]);
+ column.setWidth(170);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.ESTIMATE));
+ }
+ });
+
+
+ column = new TableColumn(planTable, SWT.LEFT, 4);
+ column.setText(planColumnNames[4]);
+ column.setWidth(170);
+ column.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.REMINDER));
+ }
+ });
+
+ }
+
+ private void createRemoveButton(Composite parent, FormToolkit toolkit) {
+// Composite composite = toolkit.createComposite(parent);
+ Button delete = toolkit.createButton(parent, "Remove Task", SWT.PUSH | SWT.CENTER);
+
+ delete.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ITask task = (ITask) ((IStructuredSelection) planTableViewer.getSelection()).getFirstElement();
+ if (task != null) {
+ contentProvider.removeTask(task);
+ planTableViewer.refresh();
+ }
+ }
+ });
+ }
+ private void createPlanTableViewer() {
+ CellEditor[] editors = new CellEditor[planColumnNames.length];
+
+ reminderEditor = new ReminderCellEditor(planTable);
+ editors[0] = reminderEditor; // not used
+ editors[1] = reminderEditor;// not used
+ editors[2] = reminderEditor;// not used
+ editors[3] = new ComboBoxCellEditor(planTable, ESTIMATE_TIMES,SWT.READ_ONLY);
+ editors[4] = reminderEditor;
+ reminderEditor.addListener(new ICellEditorListener() {
+ public void applyEditorValue() {
+ Object selection = ((IStructuredSelection)planTableViewer.getSelection()).getFirstElement();
+ if (selection instanceof ITask) {
+ ((ITask)selection).setReminderDate(reminderEditor.getReminderDate());
+ planTableViewer.refresh();
+ }
+ }
+
+ public void cancelEditor() {
+ }
+
+ public void editorValueChanged(boolean oldValidState, boolean newValidState) {
+ }
+
+ });
+ planTableViewer = new TableViewer(planTable);
+ planTableViewer.setCellEditors(editors);
+ planTableViewer.setUseHashlookup(true);
+ planTableViewer.setColumnProperties(planColumnNames);
+
+ planTableViewer.setContentProvider(contentProvider);
+ planTableViewer.setLabelProvider(new PlannedTasksLabelProvider());
+ planTableViewer.setCellModifier(new PlannedTasksCellModifier());
+ planTableViewer.setInput(editorInput);
+
+ initDrop();
+ }
+
+ @MylarWebRef(name="Drag and drop article", url="http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html")
+ private void initDrop() {
+ Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
+
+ planTableViewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(planTableViewer) {
+ {
+ setFeedbackEnabled(false);
+ }
+ @Override
+ public boolean performDrop(Object data) {
+ Object selectedObject = ((IStructuredSelection)TaskListView.getDefault().getViewer().getSelection()).getFirstElement();
+ if (selectedObject instanceof ITask) {
+ contentProvider.addTask((ITask)selectedObject);
+ planTableViewer.refresh();
+ return true;
+ } else if (selectedObject instanceof ITaskListElement) {
+ if (MylarTasklistPlugin.getDefault().getTaskHandlerForElement((ITaskListElement)selectedObject) != null) {
+ ITask t = MylarTasklistPlugin.getDefault().getTaskHandlerForElement((ITaskListElement)selectedObject).dropItemToPlan((ITaskListElement)selectedObject);
+ contentProvider.addTask(t);
+ planTableViewer.refresh();
+ return true;
+ }
+ return false;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean validateDrop(Object targetObject,int operation, TransferData transferType) {
+ Object selectedObject = ((IStructuredSelection)TaskListView.getDefault().getViewer().getSelection()).getFirstElement();
+ if (selectedObject instanceof ITaskListElement && ((ITaskListElement)selectedObject).isDragAndDropEnabled()) {
+ return true;
+ }
+ return TextTransfer.getInstance().isSupportedType(transferType);
+ }
+ });
+ }
+
+ private class PlannedTasksCellModifier implements ICellModifier {
+
+ public boolean canModify(Object element, String property) {
+ int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
+ if (columnIndex == 4 || columnIndex == 3) {
+ return true;
+ }
+ return false;
+ }
+
+ public Object getValue(Object element, String property) {
+ if (element instanceof ITask) {
+ int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
+ if (element instanceof ITask) {
+ if (columnIndex == 4) {
+ return ((ITask)element).getReminderDateString(true);
+ } else if (columnIndex == 3) {
+ return new Integer(Arrays.asList(ESTIMATE_TIMES).indexOf(((ITask)element).getEstimateTimeForDisplay()));
+ }
+
+ }
+ }
+ return null;
+ }
+
+ public void modify(Object element, String property, Object value) {
+ int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
+ if (element instanceof ITask) {
+ ITask task = (ITask) element;
+ if (columnIndex == 3) {
+ if (value instanceof Integer) {
+ task.setEstimatedTime(((Integer) value).intValue() * 10);
+ planTableViewer.refresh();
+ }
+ }
+ }
+ }
+ }
+
+ private void hookDoubleClickAction() {
+ planTableViewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+ public class OpenTaskEditorAction extends Action {
+ @Override
+ public void run() {
+ ISelection selection = planTableViewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if (obj instanceof Task) {
+ ((Task)obj).openTaskInEditor(false);
+ }
+ planTableViewer.refresh(obj);
+ }
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizard.java
new file mode 100644
index 000000000..27f16d2ec
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizard.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.mylar.core.MylarPlugin;
+import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * @author Ken Sueda
+ */
+public class MylarTaskPlannerWizard extends Wizard implements INewWizard {
+
+ private MylarTaskPlannerWizardPage planningGamePage = null;
+ public MylarTaskPlannerWizard() {
+ super();
+ init();
+ }
+
+ @Override
+ public boolean performFinish() {
+ try {
+ int numDays = planningGamePage.getNumDays();
+ IWorkbenchPage page = MylarTasklistPlugin.getDefault()
+ .getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ if (page == null)
+ return false;
+ IEditorInput input = new CompletedTasksEditorInput(numDays,
+ MylarTasklistPlugin.getTaskListManager().getTaskList());
+ page.openEditor(input, MylarTasklistPlugin.PLANNING_GAME_EDITOR_ID);
+ } catch (PartInitException ex) {
+ MylarPlugin.log(ex, "couldn't open summary editor");
+ }
+ return true;
+ }
+
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ }
+
+ private void init() {
+ planningGamePage = new MylarTaskPlannerWizardPage();
+ super.setForcePreviousAndNextButtons(true);
+ }
+
+ @Override
+ public void addPages() {
+ addPage(planningGamePage);
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizardPage.java
new file mode 100644
index 000000000..328984826
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/MylarTaskPlannerWizardPage.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author Mik Kersten
+ * @author Ken Sueda (original prototype)
+ */
+public class MylarTaskPlannerWizardPage extends WizardPage {
+
+ private static final String DEFAULT_DAYS = "7";
+ private static final String TITLE = "Mylar Task Planner";
+ private static final String DESCRIPTION =
+ "Summarizes task activity and assists planning future tasks.";
+
+ private Text numDays;
+ private int num = 0;
+
+ public MylarTaskPlannerWizardPage() {
+ super(TITLE);
+ setTitle(TITLE);
+ setDescription(DESCRIPTION);
+ }
+
+ public void createControl(Composite parent) {
+ Composite container = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ container.setLayout(layout);
+ layout.numColumns = 2;
+
+ Label l = new Label(container, SWT.NULL);
+ l.setText("Number of past days to report on: ");
+ numDays = new Text(container, SWT.BORDER);
+ numDays.setText(DEFAULT_DAYS);
+ numDays.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ try{
+ num = Integer.parseInt(numDays.getText());
+ setErrorMessage(null);
+ } catch (Exception ex) {
+ setErrorMessage("Must be integer");
+ num = 0;
+ }
+ }
+ });
+ setControl(container);
+ }
+
+ public int getNumDays() {
+ return num;
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksContentProvider.java
new file mode 100644
index 000000000..c12dd96ff
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksContentProvider.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public class PlannedTasksContentProvider implements IStructuredContentProvider {
+
+ private List tasks = new ArrayList();
+ public PlannedTasksContentProvider() {
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return tasks.toArray();
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ public void addTask(ITask t) {
+ if (!tasks.contains(t)) {
+ tasks.add(t);
+ }
+ }
+
+ public void removeTask(ITask t) {
+ tasks.remove(t);
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksLabelProvider.java
new file mode 100644
index 000000000..8008a9a7e
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksLabelProvider.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.mylar.tasklist.ITask;
+import org.eclipse.mylar.tasklist.ITaskListElement;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author Ken Sueda
+ */
+public class PlannedTasksLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+
+ // {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
+ public Image getColumnImage(Object element, int columnIndex) {
+ if (! (element instanceof ITaskListElement)) {
+ return null;
+ }
+ if (columnIndex == 0) {
+ return ((ITaskListElement)element).getIcon();
+ } else {
+ return null;
+ }
+
+ }
+
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof ITask) {
+ ITask task = (ITask) element;
+ switch(columnIndex) {
+ case 1:
+ return task.getDescription(true);
+ case 2:
+ return task.getPriority();
+ case 3:
+ return task.getEstimateTimeForDisplay();
+ case 4:
+ return task.getReminderDateString(true);
+ }
+ }
+ return null;
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksSorter.java
new file mode 100644
index 000000000..4d55c7eaa
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/PlannedTasksSorter.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.mylar.tasklist.ITask;
+
+/**
+ * @author Ken Sueda
+ */
+public class PlannedTasksSorter extends ViewerSorter {
+
+// {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
+ public final static int DESCRIPTION = 1;
+ public final static int PRIORITY = 2;
+ public final static int ESTIMATE = 3;
+ public final static int REMINDER = 4;
+
+ private int criteria;
+
+ public PlannedTasksSorter(int criteria) {
+ super();
+ this.criteria = criteria;
+ }
+
+ @Override
+ public int compare(Viewer viewer, Object obj1, Object obj2) {
+ ITask t1 = (ITask) obj1;
+ ITask t2 = (ITask) obj2;
+
+ switch (criteria) {
+ case DESCRIPTION:
+ return compareDescription(t1, t2);
+ case PRIORITY:
+ return comparePriority(t1, t2);
+ case ESTIMATE:
+ return compareEstimate(t1, t2);
+ case REMINDER:
+ return compareReminder(t1, t2);
+ default:
+ return 0;
+ }
+ }
+
+ private int compareDescription(ITask task1, ITask task2) {
+ return task1.getDescription(false).compareTo(task2.getDescription(false));
+ }
+
+ private int comparePriority(ITask task1, ITask task2) {
+ return task1.getPriority().compareTo(task2.getPriority());
+ }
+
+ private int compareReminder(ITask task1, ITask task2) {
+ return task2.getReminderDate().compareTo(task1.getReminderDate());
+ }
+
+ private int compareEstimate(ITask task1, ITask task2) {
+ if (task1.getEstimateTime() > task2.getEstimateTime()) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/ReminderCellEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/ReminderCellEditor.java
new file mode 100644
index 000000000..1a031c73b
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/planner/ui/ReminderCellEditor.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2005 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylar.tasklist.planner.ui;
+
+import java.util.Date;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.DialogCellEditor;
+import org.eclipse.jface.window.IShellProvider;
+import org.eclipse.mylar.tasklist.contribution.DatePicker;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+public class ReminderCellEditor extends DialogCellEditor {
+
+ private Date reminderDate;
+ public ReminderCellEditor(Composite parent) {
+ super(parent, SWT.NONE);
+ }
+ @Override
+ protected Object openDialogBox(Control cellEditorWindow) {
+ ReminderDialog dialog = new ReminderDialog(cellEditorWindow.getShell());
+ dialog.open();
+ reminderDate = dialog.getDate();
+ return reminderDate;
+ }
+
+ public Date getReminderDate() {
+ return reminderDate;
+ }
+ private class ReminderDialog extends Dialog {
+
+ private Date reminderDate = null;
+ protected ReminderDialog(Shell parentShell) {
+ super(parentShell);
+ }
+
+ protected ReminderDialog(IShellProvider parentShell) {
+ super(parentShell);
+ }
+
+ protected Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+ final DatePicker datePicker = new DatePicker(composite, SWT.NULL);
+ datePicker.setDateText("");
+ datePicker.addPickerSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent arg0) {
+ reminderDate = datePicker.getDate().getTime();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ // ignore
+ }
+ });
+ return composite;
+ }
+ public Date getDate() {
+ return reminderDate;
+ }
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/CompletedTaskCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/CompletedTaskCollector.java
deleted file mode 100644
index 0a422387b..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/CompletedTaskCollector.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.internal;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public class CompletedTaskCollector implements ITasksCollector {
-
- private Map completedTasks = new HashMap();
- private Date cutOffDate = null;
- private long DAY = 24*3600*1000;
-
- public CompletedTaskCollector(int prevDays) {
- cutOffDate = new Date(new Date().getTime() - prevDays * DAY);
- }
-
- public String getLabel() {
- return "Completed Tasks";
- }
-
- public void consumeTask(ITask task) {
- if (task.isCompleted() && task.getEndDate() != null && task.getEndDate().compareTo(cutOffDate) > 0 && !completedTasks.containsKey(task.getHandle())) {
- completedTasks.put(task.getHandle(), task);
- }
- }
-
- public Collection getTasks() {
- return completedTasks.values();
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ITasksCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ITasksCollector.java
deleted file mode 100644
index 86c0a5948..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ITasksCollector.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.internal;
-
-import java.util.Collection;
-
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public interface ITasksCollector {
-
- public abstract void consumeTask(ITask task);
-
- public abstract Collection getTasks();
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ReminderRequiredCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ReminderRequiredCollector.java
deleted file mode 100644
index 9898e06ff..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/ReminderRequiredCollector.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.internal;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public class ReminderRequiredCollector implements ITasksCollector {
-
- private List tasks = new ArrayList();
- private Date curr = null;
-
- public ReminderRequiredCollector() {
- curr = new Date();
- }
-
- public void consumeTask(ITask task) {
- if (task.getReminderDate() != null && !task.hasBeenReminded() && task.getReminderDate().compareTo(curr) < 0) {
- task.setReminded(true);
- tasks.add(task);
- }
- }
-
- public List getTasks() {
- return tasks;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/TaskReportGenerator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/TaskReportGenerator.java
deleted file mode 100644
index 8bc16042c..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/internal/TaskReportGenerator.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.mylar.tasklist.ITask;
-import org.eclipse.mylar.tasklist.ITaskListElement;
-import org.eclipse.mylar.tasklist.internal.TaskCategory;
-import org.eclipse.mylar.tasklist.internal.TaskList;
-
-/**
- * @author Ken Sueda
- */
-public class TaskReportGenerator {
- // NOTE: might want a map of tasks instead of a flattened list of tasks
-
- private List collectors = new ArrayList();
- private List tasks = new ArrayList();
- private TaskList tasklist = null;
-
- public TaskReportGenerator(TaskList tlist) {
- tasklist = tlist;
- }
-
- public void addCollector(ITasksCollector collector) {
- collectors.add(collector);
- }
-
- private void getTasksForReport() {
- List roots = tasklist.getRootTasks();
- for(int i = 0; i < roots.size(); i++) {
- ITask t = (ITask) roots.get(i);
- for (ITasksCollector collector : collectors) {
- collector.consumeTask(t);
- }
- }
- for (TaskCategory cat : tasklist.getTaskCategories()) {
- List extends ITaskListElement> sub = cat.getChildren();
- for (int j = 0; j < sub.size(); j++) {
- if (sub.get(j) instanceof ITask) {
- ITask element = (ITask) sub.get(j);
- for (ITasksCollector collector : collectors) {
- collector.consumeTask(element);
- }
- }
- }
- }
-
- // TODO need to support handling things in the bugzilla registry
- for (ITasksCollector collector : collectors) {
- tasks.addAll(collector.getTasks());
- }
- }
-
- public void checkTasks() {
- getTasksForReport();
- }
-
- public List getTasks() {
- return tasks;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksContentProvider.java
deleted file mode 100644
index d9aa92277..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksContentProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public class CompletedTasksContentProvider implements IStructuredContentProvider {
-
- private List tasks = null;
-
- public CompletedTasksContentProvider(List tasks) {
- this.tasks = tasks;
- }
- public Object[] getElements(Object inputElement) {
- return tasks.toArray();
- }
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksEditorInput.java
deleted file mode 100644
index aff4bd859..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksEditorInput.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.mylar.tasklist.ITask;
-import org.eclipse.mylar.tasklist.internal.TaskList;
-import org.eclipse.mylar.tasklist.report.internal.CompletedTaskCollector;
-import org.eclipse.mylar.tasklist.report.internal.TaskReportGenerator;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-
-/**
- * @author Ken Sueda
- */
-public class CompletedTasksEditorInput implements IEditorInput {
- private List completedTasks = null;
- private TaskReportGenerator parser = null;
-
- public CompletedTasksEditorInput(int prevDays, TaskList tlist) {
- parser = new TaskReportGenerator(tlist);
- parser.addCollector(new CompletedTaskCollector(prevDays));
- parser.checkTasks();
- completedTasks = parser.getTasks();
- }
-
- /**
- * IEditorInput interface methods
- */
- public boolean exists() {
- return true;
- }
-
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- public String getName() {
- return "Planning Game Report";
- }
-
- public IPersistableElement getPersistable() {
- return null;
- }
-
- public String getToolTipText() {
- return "Planning Game Report";
- }
-
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- /**
- * Methods
- */
- public List getTasks() {
- return completedTasks;
- }
-
- public int getListSize() {
- return completedTasks.size();
- }
- public long getTotalTimeSpent() {
- long duration = 0;
- for(ITask t : completedTasks) {
- duration += t.getElapsedTimeLong();
- }
- return duration;
- }
-
- public TaskReportGenerator getReportGenerator() {
- return parser;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksLabelProvider.java
deleted file mode 100644
index 1e76fb164..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksLabelProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.mylar.tasklist.ITask;
-import org.eclipse.mylar.tasklist.ITaskListElement;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Ken Sueda
- */
-public class CompletedTasksLabelProvider extends LabelProvider implements
- ITableLabelProvider {
-
- //private String[] columnNames = new String[] { "Description", "Priority", "Date Completed", "Duration"};
- public Image getColumnImage(Object element, int columnIndex) {
- if (! (element instanceof ITaskListElement)) {
- return null;
- }
- if (columnIndex == 0) {
- return ((ITaskListElement)element).getIcon();
- } else {
- return null;
- }
- }
-
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- switch(columnIndex) {
- case 1:
- return task.getDescription(true);
- case 2:
- return task.getPriority();
- case 3:
- return task.getCreationDateString();
- case 4:
- return task.getEndDateString();
- case 5:
- return task.getElapsedTimeForDisplay();
- }
- }
- return null;
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksSorter.java
deleted file mode 100644
index 357116aa5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/CompletedTasksSorter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public class CompletedTasksSorter extends ViewerSorter {
- /**
- * Constructor argument values that indicate to sort items by
- * different columns.
- */
- public final static int DESCRIPTION = 1;
- public final static int PRIORITY = 2;
- public final static int CREATION_DATE = 3;
- public final static int COMPLETED_DATE = 4;
- public final static int DURATION = 5;
-
- // Criteria that the instance uses
- private int criteria;
-
- /**
- * Creates a resource sorter that will use the given sort criteria.
- *
- * @param criteria the sort criterion to use: one of NAME
or
- * TYPE
- */
- public CompletedTasksSorter(int criteria) {
- super();
- this.criteria = criteria;
- }
-
- @Override
- public int compare(Viewer viewer, Object obj1, Object obj2) {
- ITask t1 = (ITask) obj1;
- ITask t2 = (ITask) obj2;
-
- switch (criteria) {
- case DESCRIPTION:
- return compareDescription(t1, t2);
- case PRIORITY:
- return comparePriority(t1, t2);
- case CREATION_DATE:
- return compareCreationDate(t1, t2);
- case COMPLETED_DATE:
- return compareCompletedDate(t1, t2);
- case DURATION:
- return compareDuration(t1, t2);
- default:
- return 0;
- }
- }
-
- private int compareDescription(ITask task1, ITask task2) {
- return task1.getDescription(false).compareTo(task2.getDescription(false));
- }
-
- private int comparePriority(ITask task1, ITask task2) {
- return task1.getPriority().compareTo(task2.getPriority());
- }
-
- private int compareCompletedDate(ITask task1, ITask task2) {
- return task2.getEndDate().compareTo(task1.getEndDate());
- }
-
- private int compareCreationDate(ITask task1, ITask task2) {
- if(task1.getCreationDate() == null)
- return 1;
- else if(task2.getCreationDate() == null)
- return -1;
- else
- return task2.getCreationDate().compareTo(task1.getCreationDate());
- }
-
- private int compareDuration(ITask task1, ITask task2) {
- return task1.getElapsedTimeLong() < task2.getElapsedTimeLong() ? 1 : -1;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksContentProvider.java
deleted file mode 100644
index 235926765..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksContentProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public class PlannedTasksContentProvider implements IStructuredContentProvider {
-
- private List tasks = new ArrayList();
- public PlannedTasksContentProvider() {
- }
-
- public Object[] getElements(Object inputElement) {
- return tasks.toArray();
- }
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
- public void addTask(ITask t) {
- if (!tasks.contains(t)) {
- tasks.add(t);
- }
- }
-
- public void removeTask(ITask t) {
- tasks.remove(t);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksLabelProvider.java
deleted file mode 100644
index f91eb57de..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksLabelProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.mylar.tasklist.ITask;
-import org.eclipse.mylar.tasklist.ITaskListElement;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * @author Ken Sueda
- */
-public class PlannedTasksLabelProvider extends LabelProvider implements
- ITableLabelProvider {
-
- // {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
- public Image getColumnImage(Object element, int columnIndex) {
- if (! (element instanceof ITaskListElement)) {
- return null;
- }
- if (columnIndex == 0) {
- return ((ITaskListElement)element).getIcon();
- } else {
- return null;
- }
-
- }
-
- public String getColumnText(Object element, int columnIndex) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- switch(columnIndex) {
- case 1:
- return task.getDescription(true);
- case 2:
- return task.getPriority();
- case 3:
- return task.getEstimateTimeForDisplay();
- case 4:
- return task.getReminderDateString(true);
- }
- }
- return null;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksSorter.java
deleted file mode 100644
index 1fbb049b2..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlannedTasksSorter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.mylar.tasklist.ITask;
-
-/**
- * @author Ken Sueda
- */
-public class PlannedTasksSorter extends ViewerSorter {
-
-// {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
- public final static int DESCRIPTION = 1;
- public final static int PRIORITY = 2;
- public final static int ESTIMATE = 3;
- public final static int REMINDER = 4;
-
- private int criteria;
-
- public PlannedTasksSorter(int criteria) {
- super();
- this.criteria = criteria;
- }
-
- @Override
- public int compare(Viewer viewer, Object obj1, Object obj2) {
- ITask t1 = (ITask) obj1;
- ITask t2 = (ITask) obj2;
-
- switch (criteria) {
- case DESCRIPTION:
- return compareDescription(t1, t2);
- case PRIORITY:
- return comparePriority(t1, t2);
- case ESTIMATE:
- return compareEstimate(t1, t2);
- case REMINDER:
- return compareReminder(t1, t2);
- default:
- return 0;
- }
- }
-
- private int compareDescription(ITask task1, ITask task2) {
- return task1.getDescription(false).compareTo(task2.getDescription(false));
- }
-
- private int comparePriority(ITask task1, ITask task2) {
- return task1.getPriority().compareTo(task2.getPriority());
- }
-
- private int compareReminder(ITask task1, ITask task2) {
- return task2.getReminderDate().compareTo(task1.getReminderDate());
- }
-
- private int compareEstimate(ITask task1, ITask task2) {
- if (task1.getEstimateTime() > task2.getEstimateTime()) {
- return 1;
- } else {
- return -1;
- }
- }
-
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameEditorPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameEditorPart.java
deleted file mode 100644
index 5da135081..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameEditorPart.java
+++ /dev/null
@@ -1,472 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.mylar.core.util.DateUtil;
-import org.eclipse.mylar.dt.MylarWebRef;
-import org.eclipse.mylar.tasklist.ITask;
-import org.eclipse.mylar.tasklist.ITaskListElement;
-import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
-import org.eclipse.mylar.tasklist.Task;
-import org.eclipse.mylar.tasklist.ui.views.TaskListView;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.forms.FormColors;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
-import org.eclipse.ui.part.EditorPart;
-
-/**
- * @author Ken Sueda
- */
-public class PlanningGameEditorPart extends EditorPart {
-
- private CompletedTasksEditorInput editorInput = null;
- private Table completedTable;
- private TableViewer completedTableViewer;
- private String[] completedColumnNames = new String[] {".", "Description", "Priority", "Date Created", "Date Completed", "Duration"};
- private Table planTable;
- private TableViewer planTableViewer;
- private PlannedTasksContentProvider contentProvider = new PlannedTasksContentProvider();
- private ReminderCellEditor reminderEditor = null;
- private String[] planColumnNames = new String[] {".", "Description", "Priority", "Estimated Time", "Reminder Date"};
- private static final String[] ESTIMATE_TIMES = new String[] {"0 Hours", "1 Hours", "2 Hours", "3 Hours","4 Hours","5 Hours","6 Hours","7 Hours","8 Hours","9 Hours","10 Hours"};
- private OpenTaskEditorAction doubleClickAction = new OpenTaskEditorAction();
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- }
-
- @Override
- public void doSaveAs() {
- }
-
- @SuppressWarnings("deprecation")
- @Override
- public void init(IEditorSite site, IEditorInput input)
- throws PartInitException {
- setSite(site);
- setInput(input);
- editorInput = (CompletedTasksEditorInput)input;
- setPartName(editorInput.getName());
- setTitleToolTip(editorInput.getToolTipText());
- }
-
- @Override
- public boolean isDirty() {
- return false;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public void createPartControl(Composite parent) {
- FormToolkit toolkit = new FormToolkit(parent.getDisplay());
- ScrolledForm sform = toolkit.createScrolledForm(parent);
- sform.getBody().setLayout(new TableWrapLayout());
- Composite editorComposite = sform.getBody();
-
- createSummarySection(editorComposite, toolkit);
- createCompletedSection(editorComposite, toolkit);
- createPlannedTasksSection(editorComposite, toolkit);
- }
-
- @Override
- public void setFocus() {
- }
-
- private void createSummarySection(Composite parent, FormToolkit toolkit) {
- Section summarySection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- summarySection.setText("Mylar Task Planner");
- summarySection.setLayout(new TableWrapLayout());
- summarySection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
- Composite summaryContainer = toolkit.createComposite(summarySection);
- summarySection.setClient(summaryContainer);
- TableWrapLayout layout = new TableWrapLayout();
- layout.numColumns = 1;
- summaryContainer.setLayout(layout);
-
- int length = editorInput.getListSize();
- String numComplete = "Number of completed tasks: " + editorInput.getListSize();
- Label label = toolkit.createLabel(summaryContainer, numComplete, SWT.NULL);
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- String avgTime = "Average time spent: ";
- if (length > 0) {
- avgTime = avgTime + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpent() / editorInput.getListSize());
- } else {
- avgTime = avgTime + 0;
- }
- label = toolkit.createLabel(summaryContainer, avgTime, SWT.NULL);
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- String totalTime = "Total time spent: " + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpent());
- label = toolkit.createLabel(summaryContainer, totalTime, SWT.NULL);
- label.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
- }
-
- private void createCompletedSection(Composite parent, FormToolkit toolkit) {
- Section detailSection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- detailSection.setText("Completed Tasks Details");
- detailSection.setLayout(new TableWrapLayout());
- detailSection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
- Composite detailContainer = toolkit.createComposite(detailSection);
- detailSection.setClient(detailContainer);
- TableWrapLayout layout = new TableWrapLayout();
- layout.numColumns = 2;
- detailContainer.setLayout(layout);
-
- createCompletedTable(detailContainer, toolkit);
- createCompletedTableViewer();
- }
-
- private void createCompletedTable(Composite parent, FormToolkit toolkit) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
- completedTable = toolkit.createTable(parent, style );
- TableLayout tlayout = new TableLayout();
- completedTable.setLayout(tlayout);
- TableWrapData wd = new TableWrapData(TableWrapData.FILL_GRAB);
- wd.heightHint = 300;
- wd.grabVertical = true;
- completedTable.setLayoutData(wd);
-
- completedTable.setLinesVisible(true);
- completedTable.setHeaderVisible(true);
- completedTable.setEnabled(true);
-
- TableColumn column = new TableColumn(completedTable, SWT.LEFT, 0);
- column.setText(completedColumnNames[0]);
- column.setWidth(30);
-
- column = new TableColumn(completedTable, SWT.LEFT, 1);
- column.setText(completedColumnNames[1]);
- column.setWidth(300);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.DESCRIPTION));
-
- }
- });
-
- column = new TableColumn(completedTable, SWT.LEFT, 2);
- column.setText(completedColumnNames[2]);
- column.setWidth(50);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.PRIORITY));
- }
- });
-
- column = new TableColumn(completedTable, SWT.LEFT, 3);
- column.setText(completedColumnNames[3]);
- column.setWidth(170);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.CREATION_DATE));
- }
- });
-
- column = new TableColumn(completedTable, SWT.LEFT, 4);
- column.setText(completedColumnNames[4]);
- column.setWidth(170);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.COMPLETED_DATE));
- }
- });
-
-
- column = new TableColumn(completedTable, SWT.LEFT, 5);
- column.setText(completedColumnNames[5]);
- column.setWidth(100);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- completedTableViewer.setSorter(new CompletedTasksSorter(CompletedTasksSorter.DURATION));
- }
- });
- }
-
- private void createCompletedTableViewer() {
- completedTableViewer = new TableViewer(completedTable);
- completedTableViewer.setUseHashlookup(true);
- completedTableViewer.setColumnProperties(completedColumnNames);
-
- completedTableViewer.setContentProvider(new CompletedTasksContentProvider(editorInput.getTasks()));
- completedTableViewer.setLabelProvider(new CompletedTasksLabelProvider());
- completedTableViewer.setInput(editorInput);
- }
-
- private void createPlannedTasksSection(Composite parent, FormToolkit toolkit) {
- Section planSection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR);
- planSection.setText("Planned Tasks");
- planSection.setLayout(new TableWrapLayout());
- planSection.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
- Composite planContainer = toolkit.createComposite(planSection);
- planSection.setClient(planContainer);
- TableWrapLayout layout = new TableWrapLayout();
- layout.numColumns = 1;
- planContainer.setLayout(layout);
-
- createPlanTable(planContainer, toolkit);
- createPlanTableViewer();
- createRemoveButton(planContainer, toolkit);
- hookDoubleClickAction();
- }
-
- private void createPlanTable(Composite parent, FormToolkit toolkit) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
- planTable = toolkit.createTable(parent, style );
- TableLayout tlayout = new TableLayout();
- planTable.setLayout(tlayout);
- TableWrapData wd = new TableWrapData(TableWrapData.FILL_GRAB);
- wd.heightHint = 300;
- wd.grabVertical = true;
- planTable.setLayoutData(wd);
-
- planTable.setLinesVisible(true);
- planTable.setHeaderVisible(true);
- planTable.setEnabled(true);
-
- TableColumn column = new TableColumn(planTable, SWT.LEFT, 0);
- column.setText(planColumnNames[0]);
- column.setWidth(30);
-
- column = new TableColumn(planTable, SWT.LEFT, 1);
- column.setText(planColumnNames[1]);
- column.setWidth(300);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.DESCRIPTION));
- }
- });
-
- column = new TableColumn(planTable, SWT.LEFT, 2);
- column.setText(planColumnNames[2]);
- column.setWidth(50);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.PRIORITY));
- }
- });
-
- column = new TableColumn(planTable, SWT.LEFT, 3);
- column.setText(planColumnNames[3]);
- column.setWidth(170);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.ESTIMATE));
- }
- });
-
-
- column = new TableColumn(planTable, SWT.LEFT, 4);
- column.setText(planColumnNames[4]);
- column.setWidth(170);
- column.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- planTableViewer.setSorter(new CompletedTasksSorter(PlannedTasksSorter.REMINDER));
- }
- });
-
- }
-
- private void createRemoveButton(Composite parent, FormToolkit toolkit) {
-// Composite composite = toolkit.createComposite(parent);
- Button delete = toolkit.createButton(parent, "Remove Task", SWT.PUSH | SWT.CENTER);
-
- delete.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- ITask task = (ITask) ((IStructuredSelection) planTableViewer.getSelection()).getFirstElement();
- if (task != null) {
- contentProvider.removeTask(task);
- planTableViewer.refresh();
- }
- }
- });
- }
- private void createPlanTableViewer() {
- CellEditor[] editors = new CellEditor[planColumnNames.length];
-
- reminderEditor = new ReminderCellEditor(planTable);
- editors[0] = reminderEditor; // not used
- editors[1] = reminderEditor;// not used
- editors[2] = reminderEditor;// not used
- editors[3] = new ComboBoxCellEditor(planTable, ESTIMATE_TIMES,SWT.READ_ONLY);
- editors[4] = reminderEditor;
- reminderEditor.addListener(new ICellEditorListener() {
- public void applyEditorValue() {
- Object selection = ((IStructuredSelection)planTableViewer.getSelection()).getFirstElement();
- if (selection instanceof ITask) {
- ((ITask)selection).setReminderDate(reminderEditor.getReminderDate());
- planTableViewer.refresh();
- }
- }
-
- public void cancelEditor() {
- }
-
- public void editorValueChanged(boolean oldValidState, boolean newValidState) {
- }
-
- });
- planTableViewer = new TableViewer(planTable);
- planTableViewer.setCellEditors(editors);
- planTableViewer.setUseHashlookup(true);
- planTableViewer.setColumnProperties(planColumnNames);
-
- planTableViewer.setContentProvider(contentProvider);
- planTableViewer.setLabelProvider(new PlannedTasksLabelProvider());
- planTableViewer.setCellModifier(new PlannedTasksCellModifier());
- planTableViewer.setInput(editorInput);
-
- initDrop();
- }
-
- @MylarWebRef(name="Drag and drop article", url="http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html")
- private void initDrop() {
- Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
-
- planTableViewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(planTableViewer) {
- {
- setFeedbackEnabled(false);
- }
- @Override
- public boolean performDrop(Object data) {
- Object selectedObject = ((IStructuredSelection)TaskListView.getDefault().getViewer().getSelection()).getFirstElement();
- if (selectedObject instanceof ITask) {
- contentProvider.addTask((ITask)selectedObject);
- planTableViewer.refresh();
- return true;
- } else if (selectedObject instanceof ITaskListElement) {
- if (MylarTasklistPlugin.getDefault().getTaskHandlerForElement((ITaskListElement)selectedObject) != null) {
- ITask t = MylarTasklistPlugin.getDefault().getTaskHandlerForElement((ITaskListElement)selectedObject).dropItemToPlan((ITaskListElement)selectedObject);
- contentProvider.addTask(t);
- planTableViewer.refresh();
- return true;
- }
- return false;
- }
- return false;
- }
-
- @Override
- public boolean validateDrop(Object targetObject,int operation, TransferData transferType) {
- Object selectedObject = ((IStructuredSelection)TaskListView.getDefault().getViewer().getSelection()).getFirstElement();
- if (selectedObject instanceof ITaskListElement && ((ITaskListElement)selectedObject).isDragAndDropEnabled()) {
- return true;
- }
- return TextTransfer.getInstance().isSupportedType(transferType);
- }
- });
- }
-
- private class PlannedTasksCellModifier implements ICellModifier {
-
- public boolean canModify(Object element, String property) {
- int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- if (columnIndex == 4 || columnIndex == 3) {
- return true;
- }
- return false;
- }
-
- public Object getValue(Object element, String property) {
- if (element instanceof ITask) {
- int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- if (element instanceof ITask) {
- if (columnIndex == 4) {
- return ((ITask)element).getReminderDateString(true);
- } else if (columnIndex == 3) {
- return new Integer(Arrays.asList(ESTIMATE_TIMES).indexOf(((ITask)element).getEstimateTimeForDisplay()));
- }
-
- }
- }
- return null;
- }
-
- public void modify(Object element, String property, Object value) {
- int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- if (columnIndex == 3) {
- if (value instanceof Integer) {
- task.setEstimatedTime(((Integer) value).intValue() * 10);
- planTableViewer.refresh();
- }
- }
- }
- }
- }
-
- private void hookDoubleClickAction() {
- planTableViewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- doubleClickAction.run();
- }
- });
- }
- public class OpenTaskEditorAction extends Action {
- @Override
- public void run() {
- ISelection selection = planTableViewer.getSelection();
- Object obj = ((IStructuredSelection)selection).getFirstElement();
- if (obj instanceof Task) {
- ((Task)obj).openTaskInEditor(false);
- }
- planTableViewer.refresh(obj);
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizard.java
deleted file mode 100644
index cfc0e19c5..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizard.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.mylar.core.MylarPlugin;
-import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-
-/**
- * @author Ken Sueda
- */
-public class PlanningGameWizard extends Wizard implements INewWizard {
-
- private PlanningGameWizardPage planningGamePage = null;
- public PlanningGameWizard() {
- super();
- init();
- }
-
- @Override
- public boolean performFinish() {
- try {
- int numDays = planningGamePage.getNumDays();
- IWorkbenchPage page = MylarTasklistPlugin.getDefault()
- .getWorkbench().getActiveWorkbenchWindow().getActivePage();
- if (page == null)
- return false;
- IEditorInput input = new CompletedTasksEditorInput(numDays,
- MylarTasklistPlugin.getTaskListManager().getTaskList());
- page.openEditor(input, MylarTasklistPlugin.PLANNING_GAME_EDITOR_ID);
- } catch (PartInitException ex) {
- MylarPlugin.log(ex, "coudln't open summary editor");
- }
- return true;
- }
-
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- }
-
- private void init() {
- planningGamePage = new PlanningGameWizardPage();
- super.setForcePreviousAndNextButtons(true);
- }
-
- @Override
- public void addPages() {
- addPage(planningGamePage);
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizardPage.java
deleted file mode 100644
index 810616396..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/PlanningGameWizardPage.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylar.tasklist.report.ui;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Ken Sueda
- */
-public class PlanningGameWizardPage extends WizardPage {
-
- private Text numDays;
- private int num = 0;
-
- public PlanningGameWizardPage() {
- super("Planning Game Wizard");
- setTitle("Planning Game Report");
- setDescription("All tasks completed with the last selected date will be summarized into a report");
- }
-
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- layout.numColumns = 2;
-
-
- Label l = new Label(container, SWT.NULL);
- l.setText("Number of days to compile reports over: ");
- numDays = new Text(container, SWT.BORDER);
- numDays.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- try{
- num = Integer.parseInt(numDays.getText());
- setErrorMessage(null);
- } catch (Exception ex) {
- setErrorMessage("Must be integer");
- num = 0;
- }
- }
- });
- setControl(container);
- }
-
- public int getNumDays() {
- return num;
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/ReminderCellEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/ReminderCellEditor.java
deleted file mode 100644
index 2f51614a8..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/report/ui/ReminderCellEditor.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.mylar.tasklist.report.ui;
-
-import java.util.Date;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.IShellProvider;
-import org.eclipse.mylar.tasklist.contribution.DatePicker;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-
-public class ReminderCellEditor extends DialogCellEditor {
-
- private Date reminderDate;
- public ReminderCellEditor(Composite parent) {
- super(parent, SWT.NONE);
- }
- @Override
- protected Object openDialogBox(Control cellEditorWindow) {
- ReminderDialog dialog = new ReminderDialog(cellEditorWindow.getShell());
- dialog.open();
- reminderDate = dialog.getDate();
- return reminderDate;
- }
-
- public Date getReminderDate() {
- return reminderDate;
- }
- private class ReminderDialog extends Dialog {
-
- private Date reminderDate = null;
- protected ReminderDialog(Shell parentShell) {
- super(parentShell);
- }
-
- protected ReminderDialog(IShellProvider parentShell) {
- super(parentShell);
- }
-
- protected Control createDialogArea(Composite parent) {
- Composite composite = (Composite) super.createDialogArea(parent);
- final DatePicker datePicker = new DatePicker(composite, SWT.NULL);
- datePicker.setDateText("");
- datePicker.addPickerSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent arg0) {
- reminderDate = datePicker.getDate().getTime();
- }
-
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // ignore
- }
- });
- return composite;
- }
- public Date getDate() {
- return reminderDate;
- }
- }
-}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/AutoCloseAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/AutoCloseAction.java
index 0cd95401c..ed5936211 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/AutoCloseAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/AutoCloseAction.java
@@ -21,7 +21,7 @@ import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
public class AutoCloseAction extends Action {
public static final String ID = "org.eclipse.mylar.tasklist.actions.auto.close";
- private static final String LABEL = "Close Editors On Context Switch";
+ private static final String LABEL = "Auto Close Editors";
public AutoCloseAction() {
setText(LABEL);
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java
index 23d66aad7..479a7045a 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/DropDownTaskNavigateAction.java
@@ -67,7 +67,7 @@ public abstract class DropDownTaskNavigateAction extends Action implements IMenu
}
public void run(){
- new TaskActivateAction(targetTask).run();
+ new TaskActivateAction().run(targetTask);
taskHistory.navigatedToTask(targetTask); //Notify the task history of arbitrary history navigation
setButtonStatus();
view.getViewer().refresh();
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/NextTaskDropDownAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/NextTaskDropDownAction.java
index a04bd99ee..d04ac4ccc 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/NextTaskDropDownAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/NextTaskDropDownAction.java
@@ -51,7 +51,7 @@ public class NextTaskDropDownAction extends DropDownTaskNavigateAction {
public void run() {
if (taskHistory.hasNext()) {
- new TaskActivateAction(taskHistory.getNextTask()).run();
+ new TaskActivateAction().run(taskHistory.getNextTask());
setButtonStatus();
view.getViewer().refresh();
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/PreviousTaskDropDownAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/PreviousTaskDropDownAction.java
index a8029ffc6..3e04120a9 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/PreviousTaskDropDownAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/PreviousTaskDropDownAction.java
@@ -51,7 +51,7 @@ public class PreviousTaskDropDownAction extends DropDownTaskNavigateAction {
public void run() {
if (taskHistory.hasPrevious()) {
- new TaskActivateAction(taskHistory.getPreviousTask()).run();
+ new TaskActivateAction().run(taskHistory.getPreviousTask());
setButtonStatus();
view.getViewer().refresh();
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskActivateAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskActivateAction.java
index 44866a6ae..d2ac31c36 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskActivateAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskActivateAction.java
@@ -14,10 +14,10 @@ package org.eclipse.mylar.tasklist.ui.actions;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylar.core.MylarPlugin;
import org.eclipse.mylar.tasklist.ITask;
import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
+import org.eclipse.mylar.tasklist.TaskListImages;
import org.eclipse.mylar.tasklist.ui.views.TaskListView;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
@@ -28,37 +28,34 @@ import org.eclipse.ui.IViewPart;
public class TaskActivateAction extends Action implements IViewActionDelegate {
public static final String ID = "org.eclipse.mylar.tasklist.actions.context.activate";
-
- private ITask task = null;
- public TaskActivateAction() {
- // plugin.xml activation
- }
+ public ITask task = null;
- public TaskActivateAction(ITask task) {
- this.task = task;
+ public TaskActivateAction() {
setId(ID);
+ setText("Activate");
+ setImageDescriptor(TaskListImages.TASK_ACTIVE);
}
- public void run() {
- MylarPlugin.getContextManager().actionObserved(this, Boolean.TRUE.toString());
- MylarTasklistPlugin.getTaskListManager().activateTask(task);
- }
-
public void init(IViewPart view) {
// TODO Auto-generated method stub
}
- public void run(IAction action) {
- ISelection selection = TaskListView.getDefault().getViewer().getSelection();
- if (selection instanceof IStructuredSelection) {
- Object element = ((IStructuredSelection)selection).getFirstElement();
- if (element instanceof ITask) {
- MylarTasklistPlugin.getTaskListManager().activateTask((ITask)element);
- }
+ public void run() {
+ MylarPlugin.getContextManager().actionObserved(this, Boolean.TRUE.toString());
+ run(TaskListView.getDefault().getSelectedTask());
+ }
+
+ public void run(ITask task) {
+ if (task != null) {
+ MylarTasklistPlugin.getTaskListManager().activateTask(task);
}
}
+
+ public void run(IAction action) {
+ run();
+ }
public void selectionChanged(IAction action, ISelection selection) {
// TODO Auto-generated method stub
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskDeactivateAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskDeactivateAction.java
index 2595b6ed9..ea2276d29 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskDeactivateAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/actions/TaskDeactivateAction.java
@@ -15,37 +15,38 @@ import org.eclipse.jface.action.Action;
import org.eclipse.mylar.core.MylarPlugin;
import org.eclipse.mylar.tasklist.ITask;
import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
+import org.eclipse.mylar.tasklist.TaskListImages;
import org.eclipse.mylar.tasklist.ui.views.TaskListView;
import org.eclipse.ui.IWorkbenchPage;
/**
- * @author Mik Kersten and Ken Sueda
+ * @author Mik Kersten
*/
public class TaskDeactivateAction extends Action {
public static final String ID = "org.eclipse.mylar.tasklist.actions.context.deactivate";
-
- private ITask task;
- private final TaskListView view;
-
- public TaskDeactivateAction(ITask task, TaskListView view) {
- this.task = task;
- this.view = view;
+
+ public TaskDeactivateAction() {
setId(ID);
+ setText("Deactivate");
+ setImageDescriptor(TaskListImages.TASK_INACTIVE);
}
- public void run() {
+ public void run(ITask task) {
MylarPlugin.getContextManager().actionObserved(this, Boolean.FALSE.toString());
- MylarTasklistPlugin.getTaskListManager().deactivateTask(task);
IWorkbenchPage page = MylarTasklistPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
-
- // if we couldn't get the page, get out of here
- if (page == null)
- return;
+ if (page == null) return;
try {
- this.view.closeTaskEditors(task, page);
+ if (task != null) {
+ MylarTasklistPlugin.getTaskListManager().deactivateTask(task);
+ TaskListView.getDefault().closeTaskEditors(task, page);
+ }
} catch (Exception e) {
MylarPlugin.log(e, " Closing task editor on task deactivation failed");
- }
+ }
+ }
+
+ public void run() {
+ run(TaskListView.getDefault().getSelectedTask());
}
}
\ No newline at end of file
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java
index 3ee326d20..3018c37f0 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ui/views/TaskListView.java
@@ -31,11 +31,12 @@ import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxCellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IOpenListener;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.OpenEvent;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TextCellEditor;
@@ -46,12 +47,12 @@ import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.jface.window.Window;
import org.eclipse.mylar.core.MylarPlugin;
import org.eclipse.mylar.dt.MylarWebRef;
-import org.eclipse.mylar.tasklist.ITaskListCategory;
import org.eclipse.mylar.tasklist.IQuery;
import org.eclipse.mylar.tasklist.IQueryHit;
import org.eclipse.mylar.tasklist.ITask;
import org.eclipse.mylar.tasklist.ITaskFilter;
import org.eclipse.mylar.tasklist.ITaskHandler;
+import org.eclipse.mylar.tasklist.ITaskListCategory;
import org.eclipse.mylar.tasklist.ITaskListDynamicSubMenuContributor;
import org.eclipse.mylar.tasklist.ITaskListElement;
import org.eclipse.mylar.tasklist.MylarTasklistPlugin;
@@ -128,7 +129,8 @@ public class TaskListView extends ViewPart {
public static final String ID = "org.eclipse.mylar.tasks.ui.views.TaskListView";
private static final String SEPARATOR_ID_REPORTS = "reports";
-
+ private static final String PART_NAME = "Mylar Tasks";
+
private static TaskListView INSTANCE;
FilteredTree tree;
@@ -142,8 +144,7 @@ public class TaskListView extends ViewPart {
private CopyDescriptionAction copyAction;
private OpenTaskEditorAction openAction;
- private CreateTaskAction createTask;
- private CreateTaskAction createTaskToolbar;
+ private CreateTaskAction createTaskAction;
private CreateCategoryAction createCategory;
private RenameAction rename;
@@ -151,7 +152,7 @@ public class TaskListView extends ViewPart {
private CollapseAllAction collapseAll;
private DeleteAction delete;
private AutoCloseAction autoClose;
- private OpenTaskEditorAction doubleClickAction;
+ private OpenTaskEditorAction openTaskEditor;
private RemoveFromCategoryAction removeAction;
@@ -472,11 +473,11 @@ public class TaskListView extends ViewPart {
}
if (task != null) {
if (task.isActive()) {
- new TaskDeactivateAction(task, INSTANCE).run();
+ new TaskDeactivateAction().run();
nextTaskAction.setEnabled(taskHistory.hasNext());
previousTaskAction.setEnabled(taskHistory.hasPrevious());
} else {
- new TaskActivateAction(task).run();
+ new TaskActivateAction().run();
addTaskToHistory(task);
}
// getViewer().setSelection(null);
@@ -757,7 +758,7 @@ public class TaskListView extends ViewPart {
makeActions();
hookContextMenu();
- hookDoubleClickAction();
+ hookOpenAction();
contributeToActionBars();
ToolTipHandler toolTipHandler = new ToolTipHandler(getViewer().getControl().getShell());
@@ -899,16 +900,34 @@ public class TaskListView extends ViewPart {
private void fillLocalPullDown(IMenuManager manager) {
updateDrillDownActions();
- manager.add(collapseAll);
+ manager.add(new Separator("reports"));
+ manager.add(new Separator("local"));
+ manager.add(createTaskAction);
+ manager.add(createCategory);
manager.add(goBackAction);
+ manager.add(collapseAll);
// manager.add(new Separator());
+// autoClose.setEnabled(true);
+ manager.add(new Separator("context"));
manager.add(autoClose);
- autoClose.setEnabled(true);
manager.add(workOffline);
-// workOffline.setEnabled(true);
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
+ private void fillLocalToolBar(IToolBarManager manager) {
+// manager.removeAll();
+ manager.add(new Separator(SEPARATOR_ID_REPORTS));
+ manager.add(createTaskAction);
+ manager.add(new Separator());
+ manager.add(filterCompleteTask);
+ manager.add(filterOnPriority);
+ manager.add(new Separator());
+ manager.add(previousTaskAction);
+ manager.add(nextTaskAction);
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+
+ }
+
void fillContextMenu(IMenuManager manager) {
updateDrillDownActions();
@@ -918,17 +937,19 @@ public class TaskListView extends ViewPart {
element = (ITaskListElement) selectedObject;
}
+ addAction(new TaskActivateAction(), manager, element);
+ addAction(new TaskDeactivateAction(), manager, element);
addAction(openAction, manager, element);
-// addAction(goIntoAction, manager, element);
+// addAction(openAction, manager, element);
manager.add(new Separator("tasks"));
addAction(completeTask, manager, element);
addAction(incompleteTask, manager, element);
- addAction(delete, manager, element);
- addAction(copyAction, manager, element);
+ manager.add(new Separator());
addAction(rename, manager, element);
addAction(removeAction, manager, element);
- manager.add(new Separator());
- addAction(createTask, manager, element);
+ addAction(delete, manager, element);
+ addAction(copyAction, manager, element);
+// addAction(createTask, manager, element);
manager.add(new Separator("context"));
for (ITaskListDynamicSubMenuContributor contributor : MylarTasklistPlugin.getDefault().getDynamicMenuContributers()) {
@@ -1026,10 +1047,6 @@ public class TaskListView extends ViewPart {
// }
}
- /**
- * @see org.eclipse.pde.internal.ui.view.HistoryDropDownAction
- *
- */
private void makeActions() {
copyAction = new CopyDescriptionAction(this);
@@ -1040,8 +1057,7 @@ public class TaskListView extends ViewPart {
// goIntoAction = new GoIntoAction(drillDownAdapter);
goBackAction = new GoUpAction(drillDownAdapter);
- createTask = new CreateTaskAction(this);
- createTaskToolbar = new CreateTaskAction(this);
+ createTaskAction = new CreateTaskAction(this);
createCategory = new CreateCategoryAction(this);
removeAction = new RemoveFromCategoryAction(this);
rename = new RenameAction(this);
@@ -1051,13 +1067,12 @@ public class TaskListView extends ViewPart {
autoClose = new AutoCloseAction();
completeTask = new MarkTaskCompleteAction(this);
incompleteTask = new MarkTaskIncompleteAction(this);
- doubleClickAction = new OpenTaskEditorAction(this);
+ openTaskEditor = new OpenTaskEditorAction(this);
filterCompleteTask = new FilterCompletedTasksAction(this);
filterOnPriority = new PriorityDropDownAction();
previousTaskAction = new PreviousTaskDropDownAction(this, taskHistory);
nextTaskAction = new NextTaskDropDownAction(this, taskHistory);
}
-
public void toggleNextAction(boolean enable) {
nextTaskAction.setEnabled(enable);
@@ -1117,11 +1132,11 @@ public class TaskListView extends ViewPart {
}
}
- private void hookDoubleClickAction() {
- getViewer().addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- doubleClickAction.run();
- }
+ private void hookOpenAction() {
+ getViewer().addOpenListener(new IOpenListener() {
+ public void open(OpenEvent event) {
+ openTaskEditor.run();
+ }
});
}
@@ -1204,25 +1219,9 @@ public class TaskListView extends ViewPart {
return COMPLETE_FILTER;
}
-
public TaskPriorityFilter getPriorityFilter() {
return PRIORITY_FILTER;
}
-
- private void fillLocalToolBar(IToolBarManager manager) {
- manager.removeAll();
- manager.add(createTaskToolbar);
- manager.add(createCategory);
- manager.add(new Separator(SEPARATOR_ID_REPORTS));
- manager.add(new Separator());
- manager.add(filterCompleteTask);
- manager.add(filterOnPriority);
-// manager.add(new Separator());
- manager.add(previousTaskAction);
- manager.add(nextTaskAction);
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-
- }
public void addFilter(ITaskFilter filter) {
if (!filters.contains(filter)) filters.add(filter);
@@ -1276,279 +1275,24 @@ public class TaskListView extends ViewPart {
updateDrillDownActions();
}
-}
-
-//TextTransfer textTransfer = TextTransfer.getInstance();
-//DropTarget target = new DropTarget(viewer.getTree(), DND.DROP_MOVE);
-//target.setTransfer(new Transfer[] { textTransfer });
-//target.addDropListener(new TaskListDropTargetListener(parent, null, textTransfer, true));
-//
-//DragSource source = new DragSouarce(viewer.getTree(), DND.DROP_MOVE);
-//source.setTransfer(types);
-
-//source.addDragListener(new DragSourceListener() {
-//public void dragStart(DragSourceEvent event) {
-// if (((StructuredSelection)viewer.getSelection()).isEmpty()) {
-// event.doit = false;
-// }
-//}
-//public void dragSetData(DragSourceEvent event) {
-// StructuredSelection selection = (StructuredSelection) viewer.getSelection();
-// if (!selection.isEmpty()) {
-// event.data = "" + ((ITask)selection.getFirstElement()).getId();
-// } else {
-// event.data = "null";
-// }
-//}
-//
-//public void dragFinished(DragSourceEvent event) { }
-//});
-
-
-// public boolean getServerStatus() {
-// return serverStatus;
-// }
-//
-// /**
-// * Sets whether or not we could connect to the Bugzilla server. If
-// * necessary, the corresponding label in the view is updated.
-// *
-// * @param canRead
-// * true
if the Bugzilla server could be connected
-// * to
-// */
-// public void setServerStatus(boolean canRead) {
-// if (serverStatus != canRead) {
-// serverStatus = canRead;
-// updateServerStatusLabel();
-// }
-// }
-//
-// private void updateServerStatusLabel() {
-// if (serverStatusLabel.isDisposed()) {
-// return;
-// }
-// if (serverStatus) {
-// serverStatusLabel.setText(CAN_READ_LABEL);
-// }
-// else {
-// serverStatusLabel.setText(CANNOT_READ_LABEL);
-// }
-// }
-//
-// private class ServerPingJob extends Job {
-// private boolean shouldCheckAgain = true;
-// private int counter = 0;
-//
-// public ServerPingJob(String name) {
-// super(name);
-// }
-//
-// public void stopPinging() {
-// shouldCheckAgain = false;
-// }
-//
-// protected IStatus run(IProgressMonitor monitor) {
-// while (shouldCheckAgain) {
-// try {
-// final boolean canReadFromServer = TaskListView.checkServer();
-// Workbench.getInstance().getDisplay().asyncExec(new Runnable() {
-// public void run() {
-// setServerStatus(canReadFromServer);
-// }
-// });
-// Thread.sleep(10000/*MylarPreferencePage.getServerPing()*5000*/);
-// } catch (InterruptedException e) {
-// break;
-// }
-// }
-// return new Status(IStatus.OK, MylarPlugin.IDENTIFIER, IStatus.OK, "", null);
-// }
-// }
-//
-// /**
-// * @return true
if we could connect to the Bugzilla server
-// */
-// public static boolean checkServer() {
-// boolean canRead = true;
-// BufferedReader in = null;
-//
-// // Call this function to intialize the Bugzilla url that the repository
-// // is using.
-// BugzillaRepository.getInstance();
-//
-// try {
-// // connect to the bugzilla server
-// SSLContext ctx = SSLContext.getInstance("TLS");
-// javax.net.ssl.TrustManager[] tm = new javax.net.ssl.TrustManager[]{new TrustAll()};
-// ctx.init(null, tm, null);
-// HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
-// String urlText = "";
-//
-// // use the usename and password to get into bugzilla if we have it
-// if(BugzillaPreferences.getUserName() != null && !BugzillaPreferences.getUserName().equals("") && BugzillaPreferences.getPassword() != null && !BugzillaPreferences.getPassword().equals(""))
-// {
-// /*
-// * The UnsupportedEncodingException exception for
-// * URLEncoder.encode() should not be thrown, since every
-// * implementation of the Java platform is required to support
-// * the standard charset "UTF-8"
-// */
-// try {
-// urlText += "?GoAheadAndLogIn=1&Bugzilla_login=" + URLEncoder.encode(BugzillaPreferences.getUserName(), "UTF-8") + "&Bugzilla_password=" + URLEncoder.encode(BugzillaPreferences.getPassword(), "UTF-8");
-// } catch (UnsupportedEncodingException e) { }
-// }
-//
-// URL url = new URL(BugzillaRepository.getURL() + "/enter_bug.cgi" + urlText);
-//
-// // create a new input stream for getting the bug
-// in = new BufferedReader(new InputStreamReader(url.openStream()));
-// }
-// catch (Exception e) {
-// // If there was an IOException, then there was a problem connecting.
-// // If there was some other exception, then it was a problem not
-// // related to the server.
-// if (e instanceof IOException) {
-// canRead = false;
-// }
-// }
-//
-// // Close the BufferedReader if we opened one.
-// try {
-// if (in != null)
-// in.close();
-// } catch(IOException e) {}
-//
-// return canRead;
-// }
-//
-// public void dispose() {
-// if (serverPingJob != null) {
-// serverPingJob.stopPinging();
-// }
-// super.dispose();
-// }
-
-// source.addDragListener(new DragSourceListener() {
-//
-// public void dragStart(DragSourceEvent event) {
-// if (((StructuredSelection) viewer.getSelection()).getFirstElement() == null) {
-// event.doit = false;
-// }
-// }
-//
-// public void dragSetData(DragSourceEvent event) {
-// StructuredSelection selection = (StructuredSelection)viewer.getSelection();
-// ITask task = (ITask) selection.getFirstElement();
-// if (task != null) {
-// event.data = "" + task.getId();
-// } else {
-// event.data = " ";
-// }
-// }
-//
-// public void dragFinished(DragSourceEvent event) {
-// StructuredSelection selection = (StructuredSelection)viewer.getSelection();
-// if (selection.isEmpty()) {
-// return;
-// } else {
-// ITask task = (ITask) selection.getFirstElement();
-//
-//
-// }
-// }
-//
-// });
+ public ITask getSelectedTask() {
+ ISelection selection = getViewer().getSelection();
+ if (selection.isEmpty()) return null;
+ if (selection instanceof StructuredSelection) {
+ StructuredSelection structuredSelection = (StructuredSelection)selection;
+ if (structuredSelection.getFirstElement() instanceof ITask) {
+ return (ITask)structuredSelection.getFirstElement();
+ }
+ }
+ return null;
+ }
-//private ViewerFilter completeFilter = new ViewerFilter(){
-//@Override
-//public boolean select(Viewer viewer, Object parentElement, Object element) {
-// if (element instanceof ITaskListElement) {
-// if(element instanceof ITask && ((ITaskListElement)element).hasCorrespondingActivatableTask()){
-// ITask task = ((ITaskListElement)element).getOrCreateCorrespondingTask();
-// if (task.isActive()) {
-// return true;
-// }
-// if(task != null){
-// return !task.isCompleted();
-// } else {
-// return true;
-// }
-// } else {
-// return true;
-// }
-// }
-// return false;
-//}
-//};
-//
-//private ViewerFilter inCompleteFilter = new ViewerFilter(){
-//@Override
-//public boolean select(Viewer viewer, Object parentElement, Object element) {
-// if (element instanceof ITask) {
-// return ((ITask)element).isCompleted();
-// } else {
-// return true;
-// }
-//}
-//};
-//
-//public class PriorityFilter extends ViewerFilter {
-//private List priorities = new ArrayList();
-//
-//public PriorityFilter() {
-// displayPrioritiesAbove(MylarTasklistPlugin.getPriorityLevel());
-//}
-//
-//public void displayPrioritiesAbove(String p) {
-// priorities.clear();
-// if (p.equals(PRIORITY_LEVELS[0])) {
-// priorities.add(PRIORITY_LEVELS[0]);
-// }
-// if (p.equals(PRIORITY_LEVELS[1])) {
-// priorities.add(PRIORITY_LEVELS[0]);
-// priorities.add(PRIORITY_LEVELS[1]);
-// } else if (p.equals(PRIORITY_LEVELS[2])) {
-// priorities.add(PRIORITY_LEVELS[0]);
-// priorities.add(PRIORITY_LEVELS[1]);
-// priorities.add(PRIORITY_LEVELS[2]);
-// } else if (p.equals(PRIORITY_LEVELS[3])) {
-// priorities.add(PRIORITY_LEVELS[0]);
-// priorities.add(PRIORITY_LEVELS[1]);
-// priorities.add(PRIORITY_LEVELS[2]);
-// priorities.add(PRIORITY_LEVELS[3]);
-// } else if (p.equals(PRIORITY_LEVELS[4])) {
-// priorities.add(PRIORITY_LEVELS[0]);
-// priorities.add(PRIORITY_LEVELS[1]);
-// priorities.add(PRIORITY_LEVELS[2]);
-// priorities.add(PRIORITY_LEVELS[3]);
-// priorities.add(PRIORITY_LEVELS[4]);
-// }
-//}
-//
-//@Override
-//public boolean select(Viewer viewer, Object parentElement, Object element) {
-// if (element instanceof ITaskListElement) {
-// ITaskListElement task = (ITaskListElement) element;
-// if (priorities.size() == PRIORITY_LEVELS.length) {
-// return true;
-// } else {
-// return checkTask(task);
-// }
-// } else {
-// return true;
-// }
-//}
-//private boolean checkTask(ITaskListElement task) {
-// if (task instanceof ITask && ((ITask)task).isActive()) {
-// return true;
-// }
-// for (String filter : priorities) {
-// if (task.getPriority().equals(filter)) {
-// return true;
-// }
-// }
-// return false;
-//}
-//};
\ No newline at end of file
+ public void indicatePaused(boolean paused) {
+ if (paused) {
+ setPartName("(paused) " + PART_NAME);
+ } else {
+ setPartName(PART_NAME);
+ }
+ }
+}
\ No newline at end of file
--
cgit v1.2.3