Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkersten2005-12-08 02:39:56 +0000
committermkersten2005-12-08 02:39:56 +0000
commit9f04018e5d02133cc563614a53fcf1d75c073837 (patch)
tree4937ed5c03a8cfc760149f9c5e455daf1d9cd5ff
parent231869e24e88be6bfc5dba4b42d90d36f8d55a27 (diff)
downloadorg.eclipse.mylyn.tasks-9f04018e5d02133cc563614a53fcf1d75c073837.tar.gz
org.eclipse.mylyn.tasks-9f04018e5d02133cc563614a53fcf1d75c073837.tar.xz
org.eclipse.mylyn.tasks-9f04018e5d02133cc563614a53fcf1d75c073837.zip
Progress on: Bug 119300: fix setting of elapsed time to 0
https://bugs.eclipse.org/bugs/show_bug.cgi?id=119300
-rw-r--r--org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/ui/actions/OpenCorrespondingReportAction.java2
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/AllTasklistTests.java2
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/ChangeMainTaskDirTest.java2
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityTimingTest.java75
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTimerTest.java154
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/ITask.java19
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/MylarTaskListPlugin.java11
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DelegatingLocalTaskExternalizer.java18
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/Task.java87
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskActivityTimer.java97
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskList.java6
11 files changed, 234 insertions, 239 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/ui/actions/OpenCorrespondingReportAction.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/ui/actions/OpenCorrespondingReportAction.java
index 21eb030f0..e274b66f7 100644
--- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/ui/actions/OpenCorrespondingReportAction.java
+++ b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/bugs/ui/actions/OpenCorrespondingReportAction.java
@@ -18,7 +18,7 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.mylar.bugs.java.OpenBugzillaReportJob;
import org.eclipse.mylar.bugzilla.ui.BugzillaUITools;
import org.eclipse.mylar.core.MylarPlugin;
-import org.eclipse.mylar.ide.MylarContextChangeSet;
+import org.eclipse.mylar.ide.team.MylarContextChangeSet;
import org.eclipse.swt.widgets.Display;
import org.eclipse.team.internal.ccvs.core.client.listeners.LogEntry;
import org.eclipse.team.internal.ui.synchronize.ChangeSetDiffNode;
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/AllTasklistTests.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/AllTasklistTests.java
index 095a5afbb..8d6cdadb8 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/AllTasklistTests.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/AllTasklistTests.java
@@ -30,7 +30,7 @@ public class AllTasklistTests {
suite.addTestSuite(TaskDataExportTest.class);
suite.addTestSuite(ChangeMainTaskDirTest.class);
suite.addTestSuite(BackgroundSaveTest.class);
-// suite.addTestSuite(TaskTimerTest.class);
+ suite.addTestSuite(TaskActivityTimingTest.class);
//$JUnit-END$
return suite;
}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/ChangeMainTaskDirTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/ChangeMainTaskDirTest.java
index 1db99c5c5..ff4777ad2 100644
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/ChangeMainTaskDirTest.java
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/ChangeMainTaskDirTest.java
@@ -98,7 +98,7 @@ public class ChangeMainTaskDirTest extends TestCase{
}
- /** Copy (almost) of code that changes the task directory (MylarTasklistPreferencePage) */
+ /** Copy (almost) of code that changes the task directory (MylarTaskListPreferencePage) */
protected void switchMainTaskDirectory(String newDir){
//Order matters:
MylarTaskListPlugin.getDefault().getTaskListSaveManager().saveTaskListAndContexts();
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityTimingTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityTimingTest.java
new file mode 100644
index 000000000..91ffba9cf
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskActivityTimingTest.java
@@ -0,0 +1,75 @@
+package org.eclipse.mylar.tasklist.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.mylar.core.InteractionEvent;
+import org.eclipse.mylar.core.MylarPlugin;
+import org.eclipse.mylar.tasklist.MylarTaskListPlugin;
+import org.eclipse.mylar.tasklist.internal.Task;
+import org.eclipse.mylar.tasklist.internal.TaskListManager;
+import org.eclipse.mylar.tasklist.ui.views.TaskListView;
+
+/**
+ * @author Mik Kersten (rewrite)
+ */
+public class TaskActivityTimingTest extends TestCase {
+
+ private static final int SLEEP = 250;
+
+ private static final int TIMOUT = 50;
+
+ protected TaskListManager manager = MylarTaskListPlugin.getTaskListManager();
+
+// protected TaskListView taskView = null;
+
+ protected Task task1 = null;
+
+ protected int originalActivityTimeout = -1;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+// TaskListView.openInActivePerspective();
+ assertNotNull(TaskListView.getDefault());
+ task1 = new Task("t1", "t1", true);
+ originalActivityTimeout = MylarPlugin.getContextManager().getInactivityTimeout();
+ MylarPlugin.getContextManager().setInactivityTimeout(TIMOUT);
+ }
+
+ public void tearDown() {
+ MylarTaskListPlugin.getTaskListManager().deactivateTask(task1);
+ MylarPlugin.getContextManager().setInactivityTimeout(originalActivityTimeout);
+ }
+
+ public void testElapsedTimeCapture() throws InterruptedException {
+ long elapsed = task1.getElapsedTime();
+ assertEquals(0, elapsed);
+ MylarTaskListPlugin.getTaskListManager().activateTask(task1);
+ Thread.sleep(SLEEP);
+
+ elapsed = task1.getElapsedTime();
+ assertTrue("should be bigger than timeout", elapsed > TIMOUT);
+
+ MylarTaskListPlugin.getTaskListManager().deactivateTask(task1);
+ Thread.sleep(SLEEP);
+ long elapsedAfterDeactivation = task1.getElapsedTime();
+ assertTrue("should have accumulated some itme", elapsedAfterDeactivation > elapsed);
+
+ Thread.sleep(SLEEP);
+ long elapsedAfterInactivity = task1.getElapsedTime();
+ assertEquals("no accumulation if task inactive", elapsedAfterDeactivation, elapsedAfterInactivity);
+
+ MylarPlugin.getContextManager().setInactivityTimeout(SLEEP*2);
+ MylarTaskListPlugin.getTaskListManager().activateTask(task1);
+ Thread.sleep(250);
+ MylarTaskListPlugin.getTaskListManager().deactivateTask(task1);
+ long elpasedAfterReactivation = task1.getElapsedTime();
+
+ assertTrue("time: " + (elpasedAfterReactivation - elapsedAfterDeactivation),
+ elpasedAfterReactivation - elapsedAfterDeactivation >= 250);
+ }
+
+ protected void mockInteraction() {
+ MylarPlugin.getDefault().notifyInteractionObserved(
+ new InteractionEvent(InteractionEvent.Kind.EDIT, "java", "A.java", "mock-id"));
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTimerTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTimerTest.java
deleted file mode 100644
index 39e7423bf..000000000
--- a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasklist/tests/TaskTimerTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package org.eclipse.mylar.tasklist.tests;
-
-import java.util.GregorianCalendar;
-
-import junit.framework.TestCase;
-
-import org.eclipse.mylar.core.InteractionEvent;
-import org.eclipse.mylar.core.MylarPlugin;
-import org.eclipse.mylar.tasklist.MylarTaskListPlugin;
-import org.eclipse.mylar.tasklist.internal.Task;
-import org.eclipse.mylar.tasklist.internal.TaskListManager;
-import org.eclipse.mylar.tasklist.ui.actions.TaskActivateAction;
-import org.eclipse.mylar.tasklist.ui.actions.TaskDeactivateAction;
-import org.eclipse.mylar.tasklist.ui.views.TaskListView;
-import org.eclipse.ui.PartInitException;
-
-/**
- * Checks that task active time figures are within reasonable bounds.
- *
- * @author Wesley Coelho
- */
-public class TaskTimerTest extends TestCase {
-
- protected TaskListManager manager = MylarTaskListPlugin.getTaskListManager();
-
- protected TaskListView taskView = null;
-
- protected Task task1 = null;
-
- protected int originalActivityTimeout = -1;
-
- protected void setUp() throws Exception {
- super.setUp();
-
- try {
- MylarTaskListPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(
- "org.eclipse.mylar.tasks.ui.views.TaskListView");
- } catch (PartInitException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- fail("View not initialized");
- }
-
- assertNotNull(TaskListView.getDefault());
- taskView = TaskListView.getDefault();
-
- originalActivityTimeout = MylarPlugin.getContextManager().getActivityTimeoutSeconds();
-
- // Must be set before the task is created
- MylarPlugin.getContextManager().setActivityTimeoutSeconds(1);
-
- task1 = new Task(MylarTaskListPlugin.getTaskListManager().genUniqueTaskHandle(), "task 1", true);
- manager.moveToRoot(task1);
-
- }
-
- public void testTaskTime() {
-
- // This set of parameters runs quickly but has a relatively high fudge
- // factor
- // See parameters below for a longer test that can have a low fudge
- // factor
-
- // Note: ActivityTimeout is set to 1 second in setup()
- long fudgeFactor = 2000; // Maximum time it takes for the inactivity
- // timer to notice plus a fudge factor for
- // computation time
- long sleepTime = 500; // Must be less than ActivityTimeout
- long activityTimeoutTime = 1500; // Should be X * activity timeout
- long notCountedTime = 1000;
-
- // Here's a slower test with higher times so that the fudge factor
- // can be relatively small compared to the desired task time
- // Set ActivityTimeoutSeconds to 10 in setup() above to use these
- // parameters
-
- // //Note: ActivityTimeout is set to be set to 10 seconds in setup()
- // above
- // long fudgeFactor = 2000; //Maximum time it takes for the inactivity
- // timer to notice plus a fudge factor for computation time
- // long sleepTime = 4000; //Must be less than ActivityTimeout
- // long activityTimeoutTime = 11000; //Should be around 1.X * activity
- // timeout
- // long notCountedTime = 20000;
-
- long startTime = GregorianCalendar.getInstance().getTimeInMillis();
- (new TaskActivateAction()).run(task1);
-
- try {
- Thread.sleep(sleepTime); // this time should be counted
-
- assertTrue(task1.getElapsedTimeLong() >= sleepTime);
-
- mockInteraction();
-
- Thread.sleep(activityTimeoutTime); // should not be counted
-
- Thread.sleep(notCountedTime); // should not be counted
-
- // At this point the task should have "stalled," causing the
- // activityTimeoutTime
- // to be subtracted.
-
- long time1 = task1.getElapsedTimeLong();
- assertTrue(time1 >= sleepTime);
- assertTrue(time1 < sleepTime + fudgeFactor);
-
- mockInteraction();
-
- Thread.sleep(sleepTime); // This time should be counted
-
- assertTrue(task1.getElapsedTimeLong() >= sleepTime + sleepTime);
- assertTrue(task1.getElapsedTimeLong() < sleepTime + sleepTime + fudgeFactor);
-
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- (new TaskDeactivateAction()).run(task1);
- long endTime = GregorianCalendar.getInstance().getTimeInMillis();
-
- // Sleep after the task has been deactivated to make sure it isn't still
- // counting
- try {
- Thread.sleep(sleepTime);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- long totalReportedTime = task1.getElapsedTimeLong();
-
- // Check that the reported time is less than the timestamp upper bound
- // times
- assertTrue(totalReportedTime <= endTime - startTime);
-
- // Check that reported time is greater than the wait times that should
- // be added
- assertTrue(totalReportedTime >= sleepTime + sleepTime);
-
- // Check that it didn't count too much time
- assertTrue(totalReportedTime < sleepTime + sleepTime + fudgeFactor);
-
- }
-
- protected void mockInteraction() {
- MylarPlugin.getDefault().notifyInteractionObserved(
- new InteractionEvent(InteractionEvent.Kind.EDIT, "java", "A.java", "mock-id"));
- }
-
- public void tearDown() {
- MylarPlugin.getContextManager().setActivityTimeoutSeconds(this.originalActivityTimeout);
- }
-
-}
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 a7eb029eb..cb1359cb5 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
@@ -20,8 +20,7 @@ import org.eclipse.mylar.tasklist.ui.ITaskListElement;
/**
* @author Mik Kersten
- *
- * TODO: make IDs be handles, clean up
+
*/
public interface ITask extends ITaskListElement {
@@ -33,7 +32,7 @@ public interface ITask extends ITaskListElement {
public abstract boolean isActive();
- public abstract void setActive(boolean active, boolean isStalled);
+ public abstract void setActive(boolean active);
/**
* TODO: consider changing to java.net.URL
@@ -64,12 +63,14 @@ public interface ITask extends ITaskListElement {
public abstract void setNotes(String notes);
- public abstract String getElapsedTime();
-
- public abstract long getElapsedTimeLong();
-
- public abstract void setElapsedTime(String elapsed);
+ /**
+ * @param time in milliseconds
+ */
+ public abstract void setElapsedTime(long elapsed);
+ /**
+ * TODO: change to millis
+ */
public abstract int getEstimateTimeHours();
public abstract void setEstimatedTimeHours(int estimated);
@@ -91,7 +92,7 @@ public interface ITask extends ITaskListElement {
*/
public abstract ITaskCategory getCategory();
- public abstract long getElapsedMillis();
+ public abstract long getElapsedTime();
public abstract Date getCompletionDate();
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 7fd6c1a10..fdd42f989 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
@@ -108,14 +108,6 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
public static final String DEFAULT_URL_PREFIX = "org.eclipse.mylar.tasklist.defaultUrlPrefix";
- public static final String COMMIT_PREFIX_COMPLETED = "org.eclipse.mylar.team.commit.prefix.completed";
-
- public static final String COMMIT_PREFIX_PROGRESS = "org.eclipse.mylar.team.commit.prefix.progress";
-
- public static final String DEFAULT_PREFIX_PROGRESS = "Progress on:";
-
- public static final String DEFAULT_PREFIX_COMPLETED = "Completed:";
-
private ResourceBundle resourceBundle;
private long AUTOMATIC_BACKUP_SAVE_INTERVAL = 1 * 3600 * 1000; // every hour
@@ -366,9 +358,6 @@ public class MylarTaskListPlugin extends AbstractUIPlugin implements IStartup {
store.setDefault(REPORT_OPEN_EXTERNAL, false);
store.setDefault(MULTIPLE_ACTIVE_TASKS, false);
- store.setDefault(COMMIT_PREFIX_COMPLETED, DEFAULT_PREFIX_COMPLETED);
- store.setDefault(COMMIT_PREFIX_PROGRESS, DEFAULT_PREFIX_PROGRESS);
-
store.setDefault(SAVE_TASKLIST_MODE, TaskListSaveMode.THREE_HOURS.toString());
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DelegatingLocalTaskExternalizer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DelegatingLocalTaskExternalizer.java
index 1fae0fddd..a1074e497 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DelegatingLocalTaskExternalizer.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/DelegatingLocalTaskExternalizer.java
@@ -160,7 +160,7 @@ public class DelegatingLocalTaskExternalizer implements ITaskListExternalizer {
node.setAttribute(ISSUEURL, task.getIssueReportURL());
node.setAttribute(NOTES, task.getNotes());
- node.setAttribute(ELAPSED, task.getElapsedTime());
+ node.setAttribute(ELAPSED, "" + task.getElapsedTime());
node.setAttribute(ESTIMATED, "" + task.getEstimateTimeHours());
node.setAttribute(END_DATE, formatExternDate(task.getCompletionDate()));
node.setAttribute(CREATION_DATE, formatExternDate(task.getCreationDate()));
@@ -269,8 +269,8 @@ public class DelegatingLocalTaskExternalizer implements ITaskListExternalizer {
}
if (element.getAttribute(ACTIVE).compareTo(TRUE) == 0) {
- task.setActive(true, false);
- tlist.setActive(task, true, false);
+ task.setActive(true);
+ tlist.setActive(task, true);
try {
// TODO: move this
new TaskActivateAction().run(task);
@@ -278,7 +278,7 @@ public class DelegatingLocalTaskExternalizer implements ITaskListExternalizer {
// ignore an activation failure since it's a UI issue
}
} else {
- task.setActive(false, false);
+ task.setActive(false);
}
if (element.hasAttribute(ISSUEURL)) {
task.setIssueReportURL(element.getAttribute(ISSUEURL));
@@ -291,9 +291,15 @@ public class DelegatingLocalTaskExternalizer implements ITaskListExternalizer {
task.setNotes("");
}
if (element.hasAttribute(ELAPSED)) {
- task.setElapsedTime(element.getAttribute(ELAPSED));
+ long elapsed = 0;
+ try {
+ elapsed = Long.parseLong(element.getAttribute(ELAPSED));
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ task.setElapsedTime(elapsed);
} else {
- task.setElapsedTime("");
+ task.setElapsedTime(0);
}
if (element.hasAttribute(ESTIMATED)) {
String est = element.getAttribute(ESTIMATED);
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/Task.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/Task.java
index 76b4edb8c..b1efd48c2 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/Task.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/Task.java
@@ -65,7 +65,7 @@ public class Task implements ITask {
private ITaskCategory parentCategory = null;
- private Date lastActivatedDate = null;
+// private Date lastActivatedDate = null;
private long timeActive = 0;
@@ -127,39 +127,39 @@ public class Task implements ITask {
public Object getAdapter(Class adapter) {
return null;
}
-
+
/**
* Package visible in order to prevent sets that don't update the index.
*/
- public void setActive(boolean active, boolean isStalled) {
+ public void setActive(boolean active) {
this.active = active;
- if (active && !isStalled) {
- lastActivatedDate = new Date();
- } else {
- calculateElapsedTime(isStalled);
- lastActivatedDate = null;
- }
- }
-
- private void calculateElapsedTime(boolean isStalled) {
- if (lastActivatedDate != null) {
- timeActive += new Date().getTime() - lastActivatedDate.getTime();
- if (isStalled) {
- timeActive -= TaskListManager.INACTIVITY_TIME_MILLIS;
- }
- if (isActive()) {
- lastActivatedDate = new Date();
- } else {
- lastActivatedDate = null;
- }
- }
-
- if (timeActive < 0) {
- MylarPlugin.fail(new RuntimeException("Elapsed time was less than zero for: " + getDescription(true)), "",
- false);
- timeActive = 0;
- }
- }
+// if (active && !isStalled) {
+// lastActivatedDate = new Date();
+// } else {
+// calculateElapsedTime(isStalled);
+// lastActivatedDate = null;
+// }
+ }
+
+// private void calculateElapsedTime(boolean isStalled) {
+// if (lastActivatedDate != null) {
+// timeActive += new Date().getTime() - lastActivatedDate.getTime();
+// if (isStalled) {
+// timeActive -= TaskListManager.INACTIVITY_TIME_MILLIS;
+// }
+// if (isActive()) {
+// lastActivatedDate = new Date();
+// } else {
+// lastActivatedDate = null;
+// }
+// }
+//
+// if (timeActive < 0) {
+// MylarPlugin.fail(new RuntimeException("Elapsed time was less than zero for: " + getDescription(true)), "",
+// false);
+// timeActive = 0;
+// }
+// }
public boolean isActive() {
return active;
@@ -301,26 +301,12 @@ public class Task implements ITask {
this.notes = notes;
}
- public String getElapsedTime() {
- if (isActive()) {
- calculateElapsedTime(false);
- }
- return "" + timeActive;
- }
-
- public long getElapsedTimeLong() {
- if (isActive()) {
- calculateElapsedTime(false);
- }
+ public long getElapsedTime() {
return timeActive;
}
-
- public void setElapsedTime(String elapsedString) {
- if (elapsedString.equals("")) {
- timeActive = 0;
- } else {
- timeActive = Long.parseLong(elapsedString);
- }
+
+ public void setElapsedTime(long elapsedTime) {
+ this.timeActive = elapsedTime;
}
public int getEstimateTimeHours() {
@@ -393,11 +379,6 @@ public class Task implements ITask {
}
}
- public long getElapsedMillis() {
- calculateElapsedTime(false);
- return timeActive;
- }
-
public boolean canEditDescription() {
return true;
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskActivityTimer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskActivityTimer.java
new file mode 100644
index 000000000..8fd469c20
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskActivityTimer.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * 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.internal;
+
+import java.util.Calendar;
+
+import org.eclipse.mylar.core.IInteractionEventListener;
+import org.eclipse.mylar.core.InteractionEvent;
+import org.eclipse.mylar.core.MylarPlugin;
+import org.eclipse.mylar.core.util.ITimerThreadListener;
+import org.eclipse.mylar.core.util.TimerThread;
+import org.eclipse.mylar.tasklist.ITask;
+import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.events.ShellListener;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * @author Mik Kersten
+ */
+public class TaskActivityTimer implements ITimerThreadListener, IInteractionEventListener, ShellListener {
+
+ private TimerThread timer;
+
+ private ITask task;
+
+ private long lastTimeout;
+
+ public TaskActivityTimer(ITask task, int timeout) {
+ this.task = task;
+ timer = new TimerThread(timeout);
+ }
+
+ public void fireTimedOut() {
+ long elapsed = Calendar.getInstance().getTimeInMillis() - lastTimeout;
+ task.setElapsedTime(task.getElapsedTime() + elapsed);
+ lastTimeout = Calendar.getInstance().getTimeInMillis();
+ }
+
+ public void interactionObserved(InteractionEvent event) {
+ timer.resetTimer();
+ }
+
+ public void startTimer() {
+ lastTimeout = Calendar.getInstance().getTimeInMillis();
+ timer.addListener(this);
+ MylarPlugin.getDefault().addInteractionListener(this);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().addShellListener(this);
+ timer.start();
+ }
+
+ public void stopTimer() {
+ fireTimedOut();
+ timer.killTimer();
+ MylarPlugin.getDefault().removeInteractionListener(this);
+ }
+
+ public void shellDeactivated(ShellEvent e) {
+ fireTimedOut();
+ timer.setSuspended(true);
+ // windowDeactivationTime = new Date().getTime();
+ }
+
+ public void shellActivated(ShellEvent e) {
+ timer.setSuspended(false);
+ lastTimeout = Calendar.getInstance().getTimeInMillis();
+ }
+
+ public void shellClosed(ShellEvent e) {
+ // Do nothing, deactivated will fire
+ }
+
+ public void shellDeiconified(ShellEvent e) {
+ // Do nothing, wait for interaction to signal that the task is
+ // continuing
+ }
+
+ public void shellIconified(ShellEvent e) {
+ // Do nothing, deactivated will fire
+ }
+
+ public void startObserving() {
+
+ }
+
+ public void stopObserving() {
+
+ }
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskList.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskList.java
index ab2d45529..2437b04f7 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskList.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasklist/internal/TaskList.java
@@ -68,8 +68,8 @@ public class TaskList implements Serializable {
queries.add(query);
}
- public void setActive(ITask task, boolean active, boolean isStalled) {
- task.setActive(active, isStalled);
+ public void setActive(ITask task, boolean active) {
+ task.setActive(active);
if (active && !activeTasks.contains(task)) {
activeTasks.add(task);
} else if (!active) {
@@ -234,7 +234,7 @@ public class TaskList implements Serializable {
public void clearActiveTasks() {
for (ITask task : activeTasks) {
- task.setActive(false, false);
+ task.setActive(false);
}
activeTasks.clear();
}

Back to the top