### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.context.ui Index: src/org/eclipse/mylyn/internal/context/ui/ContextUiPlugin.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.context.ui/src/org/eclipse/mylyn/internal/context/ui/ContextUiPlugin.java,v retrieving revision 1.42 diff -u -r1.42 ContextUiPlugin.java --- src/org/eclipse/mylyn/internal/context/ui/ContextUiPlugin.java 7 Oct 2009 23:15:05 -0000 1.42 +++ src/org/eclipse/mylyn/internal/context/ui/ContextUiPlugin.java 8 Oct 2009 21:39:44 -0000 @@ -47,7 +47,6 @@ import org.eclipse.mylyn.context.ui.AbstractContextUiBridge; import org.eclipse.mylyn.context.ui.IContextUiStartup; import org.eclipse.mylyn.internal.context.ui.wizards.RetrieveLatestContextDialog; -import org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin; import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil; import org.eclipse.mylyn.monitor.ui.MonitorUi; import org.eclipse.mylyn.tasks.core.ITask; @@ -186,7 +185,7 @@ private static final ITaskActivationListener TASK_ACTIVATION_LISTENER = new TaskActivationAdapter() { - @SuppressWarnings({ "restriction" }) + @SuppressWarnings( { "restriction" }) @Override public void taskActivated(ITask task) { if (CoreUtil.TEST_MODE) { @@ -246,10 +245,6 @@ @SuppressWarnings("restriction") private void lazyStart(IWorkbench workbench) { try { - MonitorUiPlugin.getDefault() - .getPreferenceStore() - .setValue(MonitorUiPlugin.PREF_USER_ACTIVITY_ENABLED, true); - MonitorUiPlugin.getDefault().savePluginPreferences(); ContextCore.getContextManager().addListener(viewerManager); MonitorUi.addWindowPartListener(contentOutlineManager); perspectiveManager.addManagedPerspective(ITasksUiConstants.ID_PERSPECTIVE_PLANNING); #P org.eclipse.mylyn.tasks.core Index: src/org/eclipse/mylyn/internal/tasks/core/TaskActivationHistory.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskActivationHistory.java,v retrieving revision 1.8 diff -u -r1.8 TaskActivationHistory.java --- src/org/eclipse/mylyn/internal/tasks/core/TaskActivationHistory.java 24 Jul 2009 12:07:58 -0000 1.8 +++ src/org/eclipse/mylyn/internal/tasks/core/TaskActivationHistory.java 8 Oct 2009 21:39:44 -0000 @@ -124,4 +124,8 @@ return history.size(); } + public List getHistory() { + return Collections.unmodifiableList(history); + } + } #P org.eclipse.mylyn.tasks.ui Index: src/org/eclipse/mylyn/internal/tasks/ui/preferences/Messages.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/Messages.java,v retrieving revision 1.1 diff -u -r1.1 Messages.java --- src/org/eclipse/mylyn/internal/tasks/ui/preferences/Messages.java 5 Dec 2008 02:25:12 -0000 1.1 +++ src/org/eclipse/mylyn/internal/tasks/ui/preferences/Messages.java 8 Oct 2009 21:39:46 -0000 @@ -25,6 +25,14 @@ NLS.initializeMessages(BUNDLE_NAME, Messages.class); } + public static String Friday; + + public static String Monday; + + public static String Saturday; + + public static String Sunday; + public static String TasksUiPreferencePage_Advanced; public static String TasksUiPreferencePage_Browse_; @@ -41,6 +49,8 @@ public static String TasksUiPreferencePage_Enable_inactivity_timeouts; + public static String TasksUiPreferencePage_Enable_Time_Tracking; + public static String TasksUiPreferencePage_Error_applying_Task_List_data_directory_changes; public static String TasksUiPreferencePage_Folder_Selection; @@ -79,9 +89,17 @@ public static String TasksUiPreferencePage_Task_Timing; + public static String TasksUiPreferencePage_Track_Time_Spent; + public static String TasksUiPreferencePage_Use_the_Restore_dialog_to_recover_missing_tasks; public static String TasksUiPreferencePage_Web_Browser; public static String TasksUiPreferencePage_Week_Start; + + public static String Thursday; + + public static String Tuesday; + + public static String Wednesday; } Index: src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksUiPreferencePage.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksUiPreferencePage.java,v retrieving revision 1.36 diff -u -r1.36 TasksUiPreferencePage.java --- src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksUiPreferencePage.java 24 Jul 2009 12:05:47 -0000 1.36 +++ src/org/eclipse/mylyn/internal/tasks/ui/preferences/TasksUiPreferencePage.java 8 Oct 2009 21:39:46 -0000 @@ -99,6 +99,8 @@ private Combo weekStartCombo; + private Button activityTrackingEnabledButton; + public TasksUiPreferencePage() { super(); setPreferenceStore(TasksUiPlugin.getDefault().getPreferenceStore()); @@ -112,20 +114,20 @@ GridLayout layout = new GridLayout(1, false); container.setLayout(layout); - if (getContainer() instanceof IWorkbenchPreferenceContainer) { - String message = Messages.TasksUiPreferencePage_See_X_for_configuring_Task_List_colors; - new PreferenceLinkArea(container, SWT.NONE, "org.eclipse.ui.preferencePages.ColorsAndFonts", message, //$NON-NLS-1$ - (IWorkbenchPreferenceContainer) getContainer(), null); - } - createTaskRefreshScheduleGroup(container); createSchedulingGroup(container); createOpenWith(container); + createTaskActivityGroup(container); Composite advanced = createAdvancedSection(container); - createTaskActivityGroup(advanced); createTaskDataControl(advanced); - createLinks(container); + if (getContainer() instanceof IWorkbenchPreferenceContainer) { + String message = Messages.TasksUiPreferencePage_See_X_for_configuring_Task_List_colors; + new PreferenceLinkArea(advanced, SWT.NONE, "org.eclipse.ui.preferencePages.ColorsAndFonts", message, //$NON-NLS-1$ + (IWorkbenchPreferenceContainer) getContainer(), null); + } + + createLinks(advanced); updateRefreshGroupEnablements(); applyDialogFont(container); return container; @@ -199,7 +201,9 @@ timeoutEnabledButton.getSelection()); MonitorUiPlugin.getDefault().getPreferenceStore().setValue(ActivityContextManager.ACTIVITY_TIMEOUT, timeoutMinutes.getSelection() * (60 * 1000)); - //backupNow.setEnabled(true); + + MonitorUiPlugin.getDefault().getPreferenceStore().setValue(MonitorUiPlugin.ACTIVITY_TRACKING_ENABLED, + activityTrackingEnabledButton.getSelection()); String taskDirectory = taskDirectoryText.getText(); taskDirectory = taskDirectory.replaceAll(BACKSLASH_MULTI, FORWARDSLASH); @@ -262,6 +266,10 @@ timeoutMinutes.setSelection(minutes); timeoutEnabledButton.setSelection(MonitorUiPlugin.getDefault().getPreferenceStore().getBoolean( ActivityContextManager.ACTIVITY_TIMEOUT_ENABLED)); + + activityTrackingEnabledButton.setSelection(MonitorUiPlugin.getDefault().getPreferenceStore().getBoolean( + MonitorUiPlugin.ACTIVITY_TRACKING_ENABLED)); + return true; } @@ -306,6 +314,10 @@ timeoutMinutes.setSelection(activityTimeoutMinutes); timeoutEnabledButton.setSelection(MonitorUiPlugin.getDefault().getPreferenceStore().getDefaultBoolean( ActivityContextManager.ACTIVITY_TIMEOUT_ENABLED)); + + activityTrackingEnabledButton.setSelection(MonitorUiPlugin.getDefault().getPreferenceStore().getDefaultBoolean( + MonitorUiPlugin.ACTIVITY_TRACKING_ENABLED)); + updateRefreshGroupEnablements(); } @@ -413,54 +425,11 @@ if (taskDataDirectoryAction != IDialogConstants.CANCEL_ID) { taskDirectoryText.setText(dir); -// backupFolderText.setText(dir + FORWARDSLASH + ITasksCoreConstants.DEFAULT_BACKUP_FOLDER_NAME); -// backupNow.setEnabled(false); } } }); -// Composite backupComposite = new Composite(taskDataGroup, SWT.NULL); -// gridLayout = new GridLayout(5, false); -// gridLayout.marginWidth = 0; -// gridLayout.marginHeight = 0; -// backupComposite.setLayout(gridLayout); -// backupComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - -// label = new Label(backupComposite, SWT.NULL); -// label.setText("Backup every"); -// backupScheduleTimeText = new Text(backupComposite, SWT.BORDER | SWT.RIGHT); -// final GridData gridData_1 = new GridData(); -// gridData_1.widthHint = 13; -// backupScheduleTimeText.setLayoutData(gridData_1); -// -// backupScheduleTimeText.setText("" + getPreferenceStore().getInt(TasksUiPreferenceConstants.BACKUP_SCHEDULE)); -// backupScheduleTimeText.addModifyListener(new ModifyListener() { -// public void modifyText(ModifyEvent e) { -// updateRefreshGroupEnablements(); -// } -// }); -// -// label = new Label(backupComposite, SWT.NONE); -// label.setText("days to"); - -// String backupDirectory = TasksUiPlugin.getDefault().getBackupFolderPath();// getPreferenceStore().getString(TaskListPreferenceConstants.BACKUP_FOLDER); -// backupDirectory = backupDirectory.replaceAll(BACKSLASH_MULTI, FORWARDSLASH); -// backupFolderText = new Text(backupComposite, SWT.BORDER); -// backupFolderText.setText(backupDirectory); -// backupFolderText.setEditable(false); -// backupFolderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); -// -// backupNow = new Button(backupComposite, SWT.NONE); -// backupNow.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); -// backupNow.setText("Backup Now"); -// backupNow.addSelectionListener(new SelectionAdapter() { -// -// @Override -// public void widgetSelected(SelectionEvent e) { -// TasksUiPlugin.getBackupManager().backupNow(true); -// } -// }); } private void createSchedulingGroup(Composite container) { @@ -485,71 +454,6 @@ weekStartCombo.add(CommonMessages.Saturday); weekStartCombo.select(getPreferenceStore().getInt(ITasksUiPreferenceConstants.WEEK_START_DAY) - 1); -// Label workWeekBeginLabel = new Label(group, SWT.NONE); -// workWeekBeginLabel.setText(START_DAY_LABEL); -// workWeekBegin = new Combo(group, SWT.READ_ONLY); -// // Calendar.SUNDAY = 1 -// workWeekBegin.add("SUNDAY"); -// workWeekBegin.add("MONDAY"); -// workWeekBegin.add("TUESDAY"); -// workWeekBegin.add("WEDNESDAY"); -// workWeekBegin.add("THURSDAY"); -// workWeekBegin.add("FRIDAY"); -// workWeekBegin.add("SATURDAY"); -// workWeekBegin.select(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_STARTDAY) -// - 1); - -// Label workWeekEndLabel = new Label(group, SWT.NONE); -// workWeekEndLabel.setText(END_DAY_LABEL); -// workWeekEnd = new Combo(group, SWT.READ_ONLY); -// workWeekEnd.add("SUNDAY"); -// workWeekEnd.add("MONDAY"); -// workWeekEnd.add("TUESDAY"); -// workWeekEnd.add("WEDNESDAY"); -// workWeekEnd.add("THURSDAY"); -// workWeekEnd.add("FRIDAY"); -// workWeekEnd.add("SATURDAY"); -// workWeekEnd.select(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_ENDDAY) -// - 1); - -// Label hourDayStartLabel = new Label(group, SWT.NONE); -// hourDayStartLabel.setText(START_HOUR_LABEL); -// hourDayStart = new Spinner(group, SWT.BORDER); -// hourDayStart.setDigits(0); -// hourDayStart.setIncrement(1); -// hourDayStart.setMaximum(23); -// hourDayStart.setMinimum(0); -// hourDayStart.setSelection(getPreferenceStore().getInt(TasksUiPreferenceConstants.PLANNING_STARTHOUR)); -// hourDayStart.addSelectionListener(new SelectionAdapter() { -// -// @Override -// public void widgetSelected(SelectionEvent e) { -// updateRefreshGroupEnablements(); -// } -// -// }); -// -// Label spacer = new Label(group, SWT.NONE); -// GridDataFactory.fillDefaults().hint(40, SWT.DEFAULT).applyTo(spacer); -// -// Label hourDayEndLabel = new Label(group, SWT.NONE); -// hourDayEndLabel.setText(END_HOUR_LABEL); -// -// hourDayEnd = new Spinner(group, SWT.BORDER); -// hourDayEnd.setDigits(0); -// hourDayEnd.setIncrement(1); -// hourDayEnd.setMaximum(23); -// hourDayEnd.setMinimum(0); -// hourDayEnd.setSelection(getPreferenceStore().getInt(TasksUiPreferenceConstants.PLANNING_ENDHOUR)); -// hourDayEnd.addSelectionListener(new SelectionAdapter() { -// -// @Override -// public void widgetSelected(SelectionEvent e) { -// updateRefreshGroupEnablements(); -// } -// -// }); - } private void createTaskActivityGroup(Composite container) { @@ -558,9 +462,24 @@ group.setLayout(new GridLayout(3, false)); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + boolean activityTrackingEnabled = MonitorUiPlugin.getDefault().getPreferenceStore().getBoolean( + MonitorUiPlugin.ACTIVITY_TRACKING_ENABLED); + boolean timeoutEnabled = MonitorUiPlugin.getDefault().getPreferenceStore().getBoolean( ActivityContextManager.ACTIVITY_TIMEOUT_ENABLED); + activityTrackingEnabledButton = new Button(group, SWT.CHECK); + activityTrackingEnabledButton.setText(Messages.TasksUiPreferencePage_Enable_Time_Tracking); + activityTrackingEnabledButton.setSelection(activityTrackingEnabled); + activityTrackingEnabledButton.setToolTipText(Messages.TasksUiPreferencePage_Track_Time_Spent); + activityTrackingEnabledButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + updateRefreshGroupEnablements(); + } + }); + GridDataFactory.swtDefaults().span(3, 1).applyTo(activityTrackingEnabledButton); + timeoutEnabledButton = new Button(group, SWT.CHECK); timeoutEnabledButton.setText(Messages.TasksUiPreferencePage_Enable_inactivity_timeouts); timeoutEnabledButton.setSelection(timeoutEnabled); @@ -596,116 +515,11 @@ timeoutLabel = new Label(group, SWT.NONE); timeoutLabel.setText(Messages.TasksUiPreferencePage_minutes_of_inactivity); -// Label spacer = new Label(group, SWT.NONE); -// GridDataFactory.fillDefaults().hint(40, SWT.DEFAULT).applyTo(spacer); -// -// Label hourDayEndLabel = new Label(group, SWT.NONE); -// hourDayEndLabel.setText(END_HOUR_LABEL); -// -// hourDayEnd = new Spinner(group, SWT.BORDER); -// hourDayEnd.setDigits(0); -// hourDayEnd.setIncrement(1); -// hourDayEnd.setMaximum(23); -// hourDayEnd.setMinimum(0); -// hourDayEnd.setSelection(getPreferenceStore().getInt(TasksUiPreferenceConstants.PLANNING_ENDHOUR)); -// hourDayEnd.addSelectionListener(new SelectionAdapter() { -// -// @Override -// public void widgetSelected(SelectionEvent e) { -// updateRefreshGroupEnablements(); -// } -// -// }); - - } - -// private void createSchedulingGroup(Composite container) { -// Group group = new Group(container, SWT.SHADOW_ETCHED_IN); -// group.setText(GROUP_WORK_WEEK_LABEL); -// group.setLayout(new GridLayout(5, false)); -// group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); -// -// // Label workWeekBeginLabel = new Label(group, SWT.NONE); -// // workWeekBeginLabel.setText(START_DAY_LABEL); -// // workWeekBegin = new Combo(group, SWT.READ_ONLY); -// // // Calendar.SUNDAY = 1 -// // workWeekBegin.add("SUNDAY"); -// // workWeekBegin.add("MONDAY"); -// // workWeekBegin.add("TUESDAY"); -// // workWeekBegin.add("WEDNESDAY"); -// // workWeekBegin.add("THURSDAY"); -// // workWeekBegin.add("FRIDAY"); -// // workWeekBegin.add("SATURDAY"); -// // workWeekBegin.select(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_STARTDAY) -// // - 1); -// // -// // Label workWeekEndLabel = new Label(group, SWT.NONE); -// // workWeekEndLabel.setText(END_DAY_LABEL); -// // workWeekEnd = new Combo(group, SWT.READ_ONLY); -// // workWeekEnd.add("SUNDAY"); -// // workWeekEnd.add("MONDAY"); -// // workWeekEnd.add("TUESDAY"); -// // workWeekEnd.add("WEDNESDAY"); -// // workWeekEnd.add("THURSDAY"); -// // workWeekEnd.add("FRIDAY"); -// // workWeekEnd.add("SATURDAY"); -// // workWeekEnd.select(getPreferenceStore().getInt(TaskListPreferenceConstants.PLANNING_ENDDAY) -// // - 1); -// -// Label hourDayStartLabel = new Label(group, SWT.NONE); -// hourDayStartLabel.setText(START_HOUR_LABEL); -// hourDayStart = new Spinner(group, SWT.BORDER); -// hourDayStart.setDigits(0); -// hourDayStart.setIncrement(1); -// hourDayStart.setMaximum(23); -// hourDayStart.setMinimum(0); -// hourDayStart.setSelection(getPreferenceStore().getInt(TasksUiPreferenceConstants.PLANNING_STARTHOUR)); -// hourDayStart.addSelectionListener(new SelectionAdapter() { -// -// @Override -// public void widgetSelected(SelectionEvent e) { -// updateRefreshGroupEnablements(); -// } -// -// }); -// -// Label spacer = new Label(group, SWT.NONE); -// GridDataFactory.fillDefaults().hint(40, SWT.DEFAULT).applyTo(spacer); -// -// Label hourDayEndLabel = new Label(group, SWT.NONE); -// hourDayEndLabel.setText(END_HOUR_LABEL); -// -// hourDayEnd = new Spinner(group, SWT.BORDER); -// hourDayEnd.setDigits(0); -// hourDayEnd.setIncrement(1); -// hourDayEnd.setMaximum(23); -// hourDayEnd.setMinimum(0); -// hourDayEnd.setSelection(getPreferenceStore().getInt(TasksUiPreferenceConstants.PLANNING_ENDHOUR)); -// hourDayEnd.addSelectionListener(new SelectionAdapter() { -// -// @Override -// public void widgetSelected(SelectionEvent e) { -// updateRefreshGroupEnablements(); -// } -// -// }); -// -// } + } public void updateRefreshGroupEnablements() { String errorMessage = null; -// try { -// long number = Integer.parseInt(backupScheduleTimeText.getText()); -// if (number <= 0) { -// errorMessage = "Backup schedule time must be > 0"; -// } else if (backupFolderText.getText() == "") { -// errorMessage = "Backup destination folder must be specified"; -// } -// } catch (NumberFormatException e) { -// errorMessage = "Backup schedule time must be valid integer"; -// } - if (enableBackgroundSynch.getSelection()) { try { long number = Long.parseLong(synchScheduleTime.getText()); @@ -717,16 +531,23 @@ } } -// if (hourDayEnd.getSelection() <= hourDayStart.getSelection()) { -// errorMessage = "Planning: Work day start must be before end."; -// } - setErrorMessage(errorMessage); setValid(errorMessage == null); - synchScheduleTime.setEnabled(enableBackgroundSynch.getSelection()); + if (activityTrackingEnabledButton.getSelection()) { + + timeoutEnabledButton.setEnabled(true); + + synchScheduleTime.setEnabled(enableBackgroundSynch.getSelection()); - timeoutMinutes.setEnabled(timeoutEnabledButton.getSelection()); + timeoutMinutes.setEnabled(timeoutEnabledButton.getSelection()); + } else { + timeoutEnabledButton.setEnabled(false); + + synchScheduleTime.setEnabled(false); + + timeoutMinutes.setEnabled(false); + } } Index: src/org/eclipse/mylyn/internal/tasks/ui/preferences/messages.properties =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/preferences/messages.properties,v retrieving revision 1.3 diff -u -r1.3 messages.properties --- src/org/eclipse/mylyn/internal/tasks/ui/preferences/messages.properties 24 Jul 2009 12:05:47 -0000 1.3 +++ src/org/eclipse/mylyn/internal/tasks/ui/preferences/messages.properties 8 Oct 2009 21:39:46 -0000 @@ -1,3 +1,6 @@ +Monday= +Saturday= +Sunday= ############################################################################### # Copyright (c) 2009 Tasktop Technologies and others. # All rights reserved. This program and the accompanying materials @@ -8,6 +11,7 @@ # Contributors: # Tasktop Technologies - initial API and implementation ############################################################################### +Friday= TasksUiPreferencePage_Advanced=Advanced TasksUiPreferencePage_Browse_=Browse... TasksUiPreferencePage_Change_data_directory=Change data directory @@ -16,6 +20,7 @@ TasksUiPreferencePage_Destination_folder_does_not_exist=Destination folder does not exist. TasksUiPreferencePage_Display_notifications_for_overdue_tasks_and_incoming_changes=Display notifications for overdue tasks and incoming changes TasksUiPreferencePage_Enable_inactivity_timeouts=Enable inactivity timeouts +TasksUiPreferencePage_Enable_Time_Tracking=Enable Time Tracking (track time spent within Eclipse when a task is active) TasksUiPreferencePage_Error_applying_Task_List_data_directory_changes=Error applying Task List data directory changes. The previous setting will be restored. TasksUiPreferencePage_Folder_Selection=Folder Selection TasksUiPreferencePage_If_disabled=If disabled, time accumulates while a task is active with no timeout due to inactivity. @@ -34,7 +39,11 @@ TasksUiPreferencePage_Task_Data=Task Data TasksUiPreferencePage_Task_Data_Directory_Error=Task Data Directory Error TasksUiPreferencePage_Task_Editing=Task Editing -TasksUiPreferencePage_Task_Timing=Task Timing +TasksUiPreferencePage_Task_Timing=Time Tracking +TasksUiPreferencePage_Track_Time_Spent=Track time spent within Eclipse when a task is active TasksUiPreferencePage_Use_the_Restore_dialog_to_recover_missing_tasks=Use the Restore dialog to recover missing tasks TasksUiPreferencePage_Web_Browser=Web Browser TasksUiPreferencePage_Week_Start=Week Start: +Thursday= +Tuesday= +Wednesday= Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java,v retrieving revision 1.23 diff -u -r1.23 PlanningPart.java --- src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java 8 Oct 2009 01:16:50 -0000 1.23 +++ src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java 8 Oct 2009 21:39:46 -0000 @@ -21,6 +21,8 @@ import org.eclipse.jface.text.ITextListener; import org.eclipse.jface.text.TextEvent; import org.eclipse.mylyn.commons.core.DateUtil; +import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; +import org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonTextSupport; import org.eclipse.mylyn.internal.provisional.commons.ui.CommonUiUtil; @@ -67,6 +69,7 @@ import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.Hyperlink; import org.eclipse.ui.forms.widgets.ImageHyperlink; import org.eclipse.ui.forms.widgets.Section; @@ -393,15 +396,15 @@ private void updateElapsedTime() { long elapsedTime = TasksUiPlugin.getTaskActivityManager().getElapsedTime(getTask()); - if (elapsedTime > 0) { - if (actualTimeComposite != null && !actualTimeComposite.isVisible()) { - actualTimeComposite.setVisible(true); - } - } else { - if (actualTimeComposite != null) { - actualTimeComposite.setVisible(false); - } - } +// if (elapsedTime > 0) { + if (actualTimeComposite != null && !actualTimeComposite.isVisible()) { + actualTimeComposite.setVisible(true); + } +// } else { +// if (actualTimeComposite != null) { +// actualTimeComposite.setVisible(false); +// } +// } String elapsedTimeString = DateUtil.getFormattedDurationShort(elapsedTime); if (elapsedTimeString.equals("")) { //$NON-NLS-1$ elapsedTimeString = Messages.TaskEditorPlanningPart_0_SECOUNDS; @@ -514,10 +517,11 @@ } } + @SuppressWarnings("restriction") @Override - protected void setSection(FormToolkit toolkit, Section section) { + protected void setSection(final FormToolkit toolkit, final Section section) { if (section.getTextClient() == null) { - Composite toolbarComposite = toolkit.createComposite(section); + final Composite toolbarComposite = toolkit.createComposite(section); toolbarComposite.setBackground(null); RowLayout rowLayout = new RowLayout(); rowLayout.marginTop = 0; @@ -525,9 +529,23 @@ rowLayout.center = true; toolbarComposite.setLayout(rowLayout); - createActualTime(toolkit, toolbarComposite); - - fillToolbar(toolbarComposite); + if (ContextCorePlugin.getDefault().isActivityTrackingEnabled()) { + createActualTime(toolkit, toolbarComposite); + } else { + final Hyperlink link = toolkit.createHyperlink(toolbarComposite, "Enable Time Tracking", SWT.NONE); //$NON-NLS-1$ + link.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); + link.setBackground(null); + link.addHyperlinkListener(new HyperlinkAdapter() { + @Override + public void linkActivated(HyperlinkEvent e) { + MonitorUiPlugin.getDefault().getPreferenceStore().setValue( + MonitorUiPlugin.ACTIVITY_TRACKING_ENABLED, true); + link.dispose(); + createActualTime(toolkit, toolbarComposite); + section.layout(); + } + }); + } section.setTextClient(toolbarComposite); } @@ -535,14 +553,6 @@ super.setSection(toolkit, section); } - private void fillToolbar(Composite parent) { -// if (toolBarManager == null) { -// toolBarManager = new ToolBarManager(SWT.FLAT | SWT.HORIZONTAL); -// toolBarManager.add(new TaskEditorScheduleAction(getTask())); -// toolBarManager.createControl(parent); -// } - } - public boolean needsNotes() { return needsNotes; } Index: src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java,v retrieving revision 1.123 diff -u -r1.123 TasksUiPlugin.java --- src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java 8 Oct 2009 03:41:16 -0000 1.123 +++ src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java 8 Oct 2009 21:39:46 -0000 @@ -12,6 +12,8 @@ package org.eclipse.mylyn.internal.tasks.ui; import java.io.File; +import java.io.StringReader; +import java.io.StringWriter; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -93,8 +95,10 @@ import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPageFactory; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IMemento; import org.eclipse.ui.IStartup; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.XMLMemento; import org.eclipse.ui.forms.FormColors; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.progress.IProgressService; @@ -110,6 +114,8 @@ */ public class TasksUiPlugin extends AbstractUIPlugin { + private static final String PREF_ACTIVATION_HISTORY = "org.eclipse.mylyn.tasks.ui.activation.history"; + private static final int DELAY_QUERY_REFRESH_ON_STARTUP = 20 * 1000; private static final int DEFAULT_LINK_PROVIDER_TIMEOUT = 5 * 1000; @@ -413,6 +419,24 @@ } } } + + // Load Activation History + String historyString = getPreferenceStore().getString(PREF_ACTIVATION_HISTORY); + if (historyString.length() > 0) { + StringReader reader = new StringReader(historyString); + XMLMemento historyMemento = XMLMemento.createReadRoot(reader); + IMemento[] historyItems = historyMemento.getChildren("task"); //$NON-NLS-1$ + for (IMemento iMemento : historyItems) { + String handle = iMemento.getString("handle"); //$NON-NLS-1$ + if (handle != null) { + AbstractTask activatedTask = taskList.getTask(handle); + if (activatedTask != null) { + taskActivityManager.getTaskActivationHistory().addTask(activatedTask); + } + } + } + } + //taskActivityMonitor.reloadActivityTime(); } catch (Throwable t) { StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, @@ -472,7 +496,7 @@ } } - @SuppressWarnings({ "restriction" }) + @SuppressWarnings( { "restriction" }) @Override public void start(BundleContext context) throws Exception { super.start(context); @@ -514,6 +538,7 @@ taskList.addChangeListener(taskListExternalizationParticipant); taskActivityManager = new TaskActivityManager(repositoryManager, taskList); + taskActivityManager.addActivationListener(taskListExternalizationParticipant); // initialize @@ -677,6 +702,16 @@ @Override public void stop(BundleContext context) throws Exception { try { + + XMLMemento history = XMLMemento.createWriteRoot(PREF_ACTIVATION_HISTORY); + for (AbstractTask task : taskActivityManager.getTaskActivationHistory().getHistory()) { + IMemento mem = history.createChild("task"); //$NON-NLS-1$ + mem.putString("handle", task.getHandleIdentifier()); //$NON-NLS-1$ + } + StringWriter writer = new StringWriter(); + history.save(writer); + getPreferenceStore().setValue(PREF_ACTIVATION_HISTORY, writer.toString()); + if (formColors != null) { formColors.dispose(); formColors = null; Index: src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java,v retrieving revision 1.18 diff -u -r1.18 ActivityExternalizationParticipant.java --- src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java 24 Jul 2009 12:05:46 -0000 1.18 +++ src/org/eclipse/mylyn/internal/tasks/ui/ActivityExternalizationParticipant.java 8 Oct 2009 21:39:45 -0000 @@ -47,7 +47,8 @@ Assert.isNotNull(context); switch (context.getKind()) { case SAVE: - if (ContextCorePlugin.getDefault() != null && ContextCorePlugin.getContextManager() != null) { + if (ContextCorePlugin.getDefault() != null && ContextCorePlugin.getDefault().isActivityTrackingEnabled() + && ContextCorePlugin.getContextManager() != null) { setDirty(false); ContextCorePlugin.getContextManager().saveActivityMetaContext(); } Index: src/org/eclipse/mylyn/internal/tasks/ui/TaskActivityMonitor.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TaskActivityMonitor.java,v retrieving revision 1.23 diff -u -r1.23 TaskActivityMonitor.java --- src/org/eclipse/mylyn/internal/tasks/ui/TaskActivityMonitor.java 24 Jul 2009 12:05:46 -0000 1.23 +++ src/org/eclipse/mylyn/internal/tasks/ui/TaskActivityMonitor.java 8 Oct 2009 21:39:45 -0000 @@ -76,7 +76,7 @@ if (event.getKind().equals(InteractionEvent.Kind.COMMAND)) { if ((event.getDelta().equals(InteractionContextManager.ACTIVITY_DELTA_ACTIVATED))) { AbstractTask activatedTask = taskList.getTask(event.getStructureHandle()); - if (activatedTask != null) { + if (activatedTask != null && !isReloading) { taskActivityManager.getTaskActivationHistory().addTask(activatedTask); return true; } #P org.eclipse.mylyn.context.core Index: src/org/eclipse/mylyn/internal/context/core/ContextCorePlugin.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.context.core/src/org/eclipse/mylyn/internal/context/core/ContextCorePlugin.java,v retrieving revision 1.16 diff -u -r1.16 ContextCorePlugin.java --- src/org/eclipse/mylyn/internal/context/core/ContextCorePlugin.java 24 Jul 2009 12:06:53 -0000 1.16 +++ src/org/eclipse/mylyn/internal/context/core/ContextCorePlugin.java 8 Oct 2009 21:39:47 -0000 @@ -64,6 +64,8 @@ private final InteractionContextScaling commonContextScaling = new InteractionContextScaling(); + private boolean activityTrackingEnabled; + private static final AbstractContextStructureBridge DEFAULT_BRIDGE = new AbstractContextStructureBridge() { @Override @@ -471,4 +473,13 @@ public IInteractionContextScaling getCommonContextScaling() { return commonContextScaling; } + + public void setActivityTrackingEnabled(boolean b) { + this.activityTrackingEnabled = b; + } + + public boolean isActivityTrackingEnabled() { + return activityTrackingEnabled; + } + } #P org.eclipse.mylyn.monitor.ui Index: src/org/eclipse/mylyn/internal/monitor/ui/MonitorUiPlugin.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.monitor.ui/src/org/eclipse/mylyn/internal/monitor/ui/MonitorUiPlugin.java,v retrieving revision 1.18 diff -u -r1.18 MonitorUiPlugin.java --- src/org/eclipse/mylyn/internal/monitor/ui/MonitorUiPlugin.java 8 Oct 2009 03:41:14 -0000 1.18 +++ src/org/eclipse/mylyn/internal/monitor/ui/MonitorUiPlugin.java 8 Oct 2009 21:39:48 -0000 @@ -81,7 +81,7 @@ public static final String OBFUSCATED_LABEL = "[obfuscated]"; //$NON-NLS-1$ - public static final String PREF_USER_ACTIVITY_ENABLED = "org.eclipse.mylyn.monitor.user.activity.enabled"; //$NON-NLS-1$ + public static final String ACTIVITY_TRACKING_ENABLED = "org.eclipse.mylyn.monitor.activity.tracking.enabled"; //$NON-NLS-1$ private IWorkbenchWindow launchingWorkbenchWindow = null; @@ -91,13 +91,9 @@ if (event.getProperty().equals(ActivityContextManager.ACTIVITY_TIMEOUT) || event.getProperty().equals(ActivityContextManager.ACTIVITY_TIMEOUT_ENABLED)) { updateActivityTimout(); - } else if (event.getProperty().equals(PREF_USER_ACTIVITY_ENABLED)) { - if (getPreferenceStore().getBoolean(PREF_USER_ACTIVITY_ENABLED)) { - activityContextManager.start(); - } else { - activityContextManager.stop(); - } - + } else if (event.getProperty().equals(ACTIVITY_TRACKING_ENABLED)) { + ContextCorePlugin.getDefault().setActivityTrackingEnabled( + getPreferenceStore().getBoolean(ACTIVITY_TRACKING_ENABLED)); } } @@ -145,6 +141,10 @@ getPreferenceStore().setDefault(ActivityContextManager.ACTIVITY_TIMEOUT, DEFAULT_ACTIVITY_TIMEOUT); getPreferenceStore().setDefault(ActivityContextManager.ACTIVITY_TIMEOUT_ENABLED, true); + getPreferenceStore().setDefault(ACTIVITY_TRACKING_ENABLED, false); + + ContextCorePlugin.getDefault().setActivityTrackingEnabled( + getPreferenceStore().getBoolean(ACTIVITY_TRACKING_ENABLED)); this.activityContextManager = new ActivityContextManager(new ArrayList(0)); @@ -414,9 +414,7 @@ updateActivityTimout(); - if (getPreferenceStore().getBoolean(PREF_USER_ACTIVITY_ENABLED)) { - activityContextManager.start(); - } + activityContextManager.start(); getPreferenceStore().addPropertyChangeListener(PROPERTY_LISTENER);