Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 291084 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/monitor/ui/MonitorUiPlugin.java (+7 lines)
Lines 437-440 Link Here
437
		return activityTrackingEnabled;
437
		return activityTrackingEnabled;
438
	}
438
	}
439
439
440
	/**
441
	 * Returns true, if other activity monitors than {@link WorkbenchUserActivityMonitor} have been registered.
442
	 */
443
	public boolean isTrackingOsTime() {
444
		return monitors.size() > 1;
445
	}
446
440
}
447
}
(-)src/org/eclipse/mylyn/internal/provisional/commons/ui/AbstractNotificationPopup.java (-9 / +2 lines)
Lines 12-21 Link Here
12
12
13
package org.eclipse.mylyn.internal.provisional.commons.ui;
13
package org.eclipse.mylyn.internal.provisional.commons.ui;
14
14
15
import org.eclipse.core.runtime.IProduct;
16
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IStatus;
16
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.Platform;
19
import org.eclipse.core.runtime.Status;
17
import org.eclipse.core.runtime.Status;
20
import org.eclipse.core.runtime.jobs.Job;
18
import org.eclipse.core.runtime.jobs.Job;
21
import org.eclipse.jface.resource.JFaceResources;
19
import org.eclipse.jface.resource.JFaceResources;
Lines 153-165 Link Here
153
	 * @return the name to be used in the title of the popup.
151
	 * @return the name to be used in the title of the popup.
154
	 */
152
	 */
155
	protected String getPopupShellTitle() {
153
	protected String getPopupShellTitle() {
156
		IProduct product = Platform.getProduct();
154
		String productName = CommonUiUtil.getProductName();
157
		if (product != null) {
155
		if (productName != null) {
158
			String productName = product.getName();
159
			String LABEL_SDK = "SDK"; //$NON-NLS-1$
160
			if (productName.endsWith(LABEL_SDK)) {
161
				productName = productName.substring(0, productName.length() - LABEL_SDK.length());
162
			}
163
			return productName + " " + LABEL_NOTIFICATION; //$NON-NLS-1$
156
			return productName + " " + LABEL_NOTIFICATION; //$NON-NLS-1$
164
		} else {
157
		} else {
165
			return LABEL_NOTIFICATION;
158
			return LABEL_NOTIFICATION;
(-)src/org/eclipse/mylyn/internal/provisional/commons/ui/CommonUiUtil.java (+22 lines)
Lines 14-22 Link Here
14
import java.lang.reflect.InvocationTargetException;
14
import java.lang.reflect.InvocationTargetException;
15
15
16
import org.eclipse.core.runtime.CoreException;
16
import org.eclipse.core.runtime.CoreException;
17
import org.eclipse.core.runtime.IProduct;
17
import org.eclipse.core.runtime.IProgressMonitor;
18
import org.eclipse.core.runtime.IProgressMonitor;
18
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.core.runtime.OperationCanceledException;
20
import org.eclipse.core.runtime.OperationCanceledException;
21
import org.eclipse.core.runtime.Platform;
20
import org.eclipse.core.runtime.Status;
22
import org.eclipse.core.runtime.Status;
21
import org.eclipse.core.runtime.jobs.ISchedulingRule;
23
import org.eclipse.core.runtime.jobs.ISchedulingRule;
22
import org.eclipse.jface.dialogs.DialogPage;
24
import org.eclipse.jface.dialogs.DialogPage;
Lines 226-229 Link Here
226
	public static String toLabel(String text) {
228
	public static String toLabel(String text) {
227
		return (text != null) ? text.replaceAll("&", "&&") : null; // mask & from SWT //$NON-NLS-1$ //$NON-NLS-2$
229
		return (text != null) ? text.replaceAll("&", "&&") : null; // mask & from SWT //$NON-NLS-1$ //$NON-NLS-2$
228
	}
230
	}
231
232
	public static String getProductName() {
233
		return getProductName(null);
234
	}
235
236
	public static String getProductName(String defaultName) {
237
		IProduct product = Platform.getProduct();
238
		if (product != null) {
239
			String productName = product.getName();
240
			if (productName != null) {
241
				String LABEL_SDK = "SDK"; //$NON-NLS-1$
242
				if (productName.endsWith(LABEL_SDK)) {
243
					productName = productName.substring(0, productName.length() - LABEL_SDK.length()).trim();
244
				}
245
				return productName;
246
			}
247
		}
248
		return defaultName;
249
	}
250
229
}
251
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorPlanningPart.java (-1 / +3 lines)
Lines 51-57 Link Here
51
		part = new PlanningPart(ExpandableComposite.TWISTIE) {
51
		part = new PlanningPart(ExpandableComposite.TWISTIE) {
52
			@Override
52
			@Override
53
			protected void fillToolBar(ToolBarManager toolBarManager) {
53
			protected void fillToolBar(ToolBarManager toolBarManager) {
54
				toolBarManager.add(new NotesAction());
54
				NotesAction notesAction = new NotesAction();
55
				notesAction.setEnabled(needsNotes());
56
				toolBarManager.add(notesAction);
55
			}
57
			}
56
		};
58
		};
57
	}
59
	}
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/PlanningPart.java (-7 / +78 lines)
Lines 28-37 Link Here
28
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonUiUtil;
28
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonUiUtil;
29
import org.eclipse.mylyn.internal.provisional.commons.ui.DatePicker;
29
import org.eclipse.mylyn.internal.provisional.commons.ui.DatePicker;
30
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
30
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
31
import org.eclipse.mylyn.internal.tasks.core.DateRange;
31
import org.eclipse.mylyn.internal.tasks.core.DayDateRange;
32
import org.eclipse.mylyn.internal.tasks.core.DayDateRange;
32
import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener;
33
import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener;
33
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
34
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
34
import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta;
35
import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta;
36
import org.eclipse.mylyn.internal.tasks.core.WeekDateRange;
35
import org.eclipse.mylyn.internal.tasks.ui.ScheduleDatePicker;
37
import org.eclipse.mylyn.internal.tasks.ui.ScheduleDatePicker;
36
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
38
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
37
import org.eclipse.mylyn.internal.tasks.ui.util.PlatformUtil;
39
import org.eclipse.mylyn.internal.tasks.ui.util.PlatformUtil;
Lines 46-51 Link Here
46
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorExtension;
48
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorExtension;
47
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
49
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
48
import org.eclipse.mylyn.tasks.ui.editors.TaskFormPage;
50
import org.eclipse.mylyn.tasks.ui.editors.TaskFormPage;
51
import org.eclipse.osgi.util.NLS;
49
import org.eclipse.swt.SWT;
52
import org.eclipse.swt.SWT;
50
import org.eclipse.swt.events.FocusEvent;
53
import org.eclipse.swt.events.FocusEvent;
51
import org.eclipse.swt.events.FocusListener;
54
import org.eclipse.swt.events.FocusListener;
Lines 54-59 Link Here
54
import org.eclipse.swt.events.SelectionAdapter;
57
import org.eclipse.swt.events.SelectionAdapter;
55
import org.eclipse.swt.events.SelectionEvent;
58
import org.eclipse.swt.events.SelectionEvent;
56
import org.eclipse.swt.events.SelectionListener;
59
import org.eclipse.swt.events.SelectionListener;
60
import org.eclipse.swt.layout.GridData;
57
import org.eclipse.swt.layout.GridLayout;
61
import org.eclipse.swt.layout.GridLayout;
58
import org.eclipse.swt.layout.RowLayout;
62
import org.eclipse.swt.layout.RowLayout;
59
import org.eclipse.swt.widgets.Composite;
63
import org.eclipse.swt.widgets.Composite;
Lines 196-201 Link Here
196
200
197
	private boolean activeTimeEnabled;
201
	private boolean activeTimeEnabled;
198
202
203
	private Label scheduledLabel;
204
199
	public PlanningPart(int sectionStyle) {
205
	public PlanningPart(int sectionStyle) {
200
		super(sectionStyle, Messages.PersonalPart_Personal_Planning);
206
		super(sectionStyle, Messages.PersonalPart_Personal_Planning);
201
		this.activeTimeEnabled = true;
207
		this.activeTimeEnabled = true;
Lines 306-317 Link Here
306
312
307
		createEstimatedTime(toolkit, sectionClient);
313
		createEstimatedTime(toolkit, sectionClient);
308
314
309
//		createActualTime(toolkit, composite);
310
311
		if (needsNotes()) {
315
		if (needsNotes()) {
312
			createNotesArea(toolkit, sectionClient, layout.numColumns);
316
			createNotesArea(toolkit, sectionClient, layout.numColumns);
313
		}
317
		}
314
318
319
		createActiveTime(toolkit, sectionClient, layout.numColumns);
320
315
		toolkit.paintBordersFor(sectionClient);
321
		toolkit.paintBordersFor(sectionClient);
316
		section.setClient(sectionClient);
322
		section.setClient(sectionClient);
317
		CommonUiUtil.setMenu(sectionClient, section.getParent().getMenu());
323
		CommonUiUtil.setMenu(sectionClient, section.getParent().getMenu());
Lines 399-406 Link Here
399
405
400
	}
406
	}
401
407
402
	private void createActiveTimeControl(FormToolkit toolkit, Composite toolbarComposite) {
408
	private void createActiveTime(FormToolkit toolkit, Composite toolbarComposite, int numColumns) {
403
		activeTimeComposite = toolkit.createComposite(toolbarComposite);
409
		activeTimeComposite = toolkit.createComposite(toolbarComposite);
410
		GridDataFactory.fillDefaults().span(numColumns, SWT.DEFAULT).grab(false, false).applyTo(activeTimeComposite);
404
		activeTimeComposite.setBackground(null);
411
		activeTimeComposite.setBackground(null);
405
		activeTimeComposite.setBackgroundMode(SWT.INHERIT_FORCE);
412
		activeTimeComposite.setBackgroundMode(SWT.INHERIT_FORCE);
406
		RowLayout rowLayout = new RowLayout();
413
		RowLayout rowLayout = new RowLayout();
Lines 411-417 Link Here
411
		rowLayout.marginRight = 0;
418
		rowLayout.marginRight = 0;
412
		activeTimeComposite.setLayout(rowLayout);
419
		activeTimeComposite.setLayout(rowLayout);
413
420
414
		Label label = toolkit.createLabel(activeTimeComposite, Messages.TaskEditorPlanningPart_Active);
421
		String labelString;
422
		if (MonitorUiPlugin.getDefault().isTrackingOsTime()) {
423
			labelString = "Active time:";
424
		} else {
425
			String productName = CommonUiUtil.getProductName("Eclipse");
426
			labelString = NLS.bind("Active time spent in {0}:", productName);
427
		}
428
		Label label = toolkit.createLabel(activeTimeComposite, labelString);
415
		label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
429
		label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
416
		label.setToolTipText(Messages.TaskEditorPlanningPart_Time_working_on_this_task);
430
		label.setToolTipText(Messages.TaskEditorPlanningPart_Time_working_on_this_task);
417
		label.setBackground(null);
431
		label.setBackground(null);
Lines 450-455 Link Here
450
		if (show && (elapsedTime > 0 || getTask().isActive())) {
464
		if (show && (elapsedTime > 0 || getTask().isActive())) {
451
			if (activeTimeComposite != null && !activeTimeComposite.isVisible()) {
465
			if (activeTimeComposite != null && !activeTimeComposite.isVisible()) {
452
				activeTimeComposite.setVisible(true);
466
				activeTimeComposite.setVisible(true);
467
				((GridData) activeTimeComposite.getLayoutData()).exclude = false;
468
				activeTimeComposite.getParent().layout();
453
			}
469
			}
454
			String elapsedTimeString = DateUtil.getFormattedDurationShort(elapsedTime);
470
			String elapsedTimeString = DateUtil.getFormattedDurationShort(elapsedTime);
455
			if (elapsedTimeString.equals("")) { //$NON-NLS-1$
471
			if (elapsedTimeString.equals("")) { //$NON-NLS-1$
Lines 457-463 Link Here
457
			}
473
			}
458
			activeTimeText.setText(elapsedTimeString);
474
			activeTimeText.setText(elapsedTimeString);
459
		} else {
475
		} else {
460
			if (activeTimeComposite != null) {
476
			if (activeTimeComposite != null && activeTimeComposite.isVisible()) {
477
				((GridData) activeTimeComposite.getLayoutData()).exclude = true;
478
				activeTimeComposite.getParent().layout();
461
				activeTimeComposite.setVisible(false);
479
				activeTimeComposite.setVisible(false);
462
			}
480
			}
463
		}
481
		}
Lines 572-577 Link Here
572
590
573
	@Override
591
	@Override
574
	protected void setSection(FormToolkit toolkit, Section section) {
592
	protected void setSection(FormToolkit toolkit, Section section) {
593
		super.setSection(toolkit, section);
575
		if (section.getTextClient() == null) {
594
		if (section.getTextClient() == null) {
576
			Composite toolbarComposite = toolkit.createComposite(section);
595
			Composite toolbarComposite = toolkit.createComposite(section);
577
			toolbarComposite.setBackground(null);
596
			toolbarComposite.setBackground(null);
Lines 583-589 Link Here
583
			rowLayout.center = true;
602
			rowLayout.center = true;
584
			toolbarComposite.setLayout(rowLayout);
603
			toolbarComposite.setLayout(rowLayout);
585
604
586
			createActiveTimeControl(toolkit, toolbarComposite);
605
			createScheduledLabel(toolbarComposite, section, toolkit);
587
606
588
			ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
607
			ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
589
			fillToolBar(toolBarManager);
608
			fillToolBar(toolBarManager);
Lines 598-605 Link Here
598
617
599
			section.setTextClient(toolbarComposite);
618
			section.setTextClient(toolbarComposite);
600
		}
619
		}
620
	}
601
621
602
		super.setSection(toolkit, section);
622
	private void createScheduledLabel(Composite composite, Section section, FormToolkit toolkit) {
623
		scheduledLabel = toolkit.createLabel(composite, ""); //$NON-NLS-1$
624
		scheduledLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
625
		scheduledLabel.setBackground(null);
626
		updateScheduledLabel(section.isExpanded());
627
		section.addExpansionListener(new ExpansionAdapter() {
628
			@Override
629
			public void expansionStateChanging(ExpansionEvent event) {
630
				updateScheduledLabel(event.getState());
631
			}
632
		});
633
	}
634
635
	private void updateScheduledLabel(boolean sectionIsExpanded) {
636
		if (scheduledLabel != null && !scheduledLabel.isDisposed()) {
637
			if (!sectionIsExpanded && !getTask().isCompleted()) {
638
				DateRange date = getTask().getScheduledForDate();
639
				if (date != null) {
640
					scheduledLabel.setText(getLabel(date));
641
				} else {
642
					scheduledLabel.setText(""); //$NON-NLS-1$
643
				}
644
				if (!scheduledLabel.isVisible()) {
645
					scheduledLabel.setVisible(true);
646
				}
647
				scheduledLabel.getParent().getParent().layout(true);
648
			} else {
649
				if (scheduledLabel.isVisible()) {
650
					scheduledLabel.setVisible(false);
651
					scheduledLabel.getParent().getParent().layout(true);
652
				}
653
			}
654
		}
655
	}
656
657
	private String getLabel(DateRange dateRange) {
658
		if (dateRange.isPresent() && !(dateRange instanceof WeekDateRange)) {
659
			return "Today";
660
		}
661
		if (TaskActivityUtil.getCurrentWeek().includes(dateRange)) {
662
			return "This Week";
663
		}
664
		Calendar endNextWeek = TaskActivityUtil.getCalendar();
665
		endNextWeek.add(Calendar.DAY_OF_YEAR, 7);
666
		if (TaskActivityUtil.getNextWeek().includes(dateRange) && dateRange.before(endNextWeek)) {
667
			return "Next Week";
668
		}
669
		return "Later";
603
	}
670
	}
604
671
605
	protected void fillToolBar(ToolBarManager toolBarManager) {
672
	protected void fillToolBar(ToolBarManager toolBarManager) {
Lines 631-636 Link Here
631
			}
698
			}
632
		}
699
		}
633
700
701
		if (scheduledLabel != null && !scheduledLabel.isDisposed()) {
702
			updateScheduledLabel(getSection().isExpanded());
703
		}
704
634
		if (estimatedTimeSpinner != null && !estimatedTimeSpinner.isDisposed()) {
705
		if (estimatedTimeSpinner != null && !estimatedTimeSpinner.isDisposed()) {
635
			estimatedTimeSpinner.setSelection(getTask().getEstimatedTimeHours());
706
			estimatedTimeSpinner.setSelection(getTask().getEstimatedTimeHours());
636
		}
707
		}

Return to bug 291084