diff options
author | mkersten | 2005-12-08 02:39:56 +0000 |
---|---|---|
committer | mkersten | 2005-12-08 02:39:56 +0000 |
commit | 9f04018e5d02133cc563614a53fcf1d75c073837 (patch) | |
tree | 4937ed5c03a8cfc760149f9c5e455daf1d9cd5ff | |
parent | 231869e24e88be6bfc5dba4b42d90d36f8d55a27 (diff) | |
download | org.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
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(); } |