|
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 |
} |