Lines 8-26
Link Here
|
8 |
|
8 |
|
9 |
package org.eclipse.mylyn.internal.tasks.ui.editors; |
9 |
package org.eclipse.mylyn.internal.tasks.ui.editors; |
10 |
|
10 |
|
|
|
11 |
import java.util.Calendar; |
12 |
import java.util.Set; |
13 |
|
11 |
import org.eclipse.core.runtime.Assert; |
14 |
import org.eclipse.core.runtime.Assert; |
|
|
15 |
import org.eclipse.core.runtime.IStatus; |
16 |
import org.eclipse.core.runtime.Status; |
17 |
import org.eclipse.jface.dialogs.MessageDialog; |
18 |
import org.eclipse.jface.layout.GridDataFactory; |
19 |
import org.eclipse.mylyn.commons.core.DateUtil; |
20 |
import org.eclipse.mylyn.commons.core.StatusHandler; |
12 |
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; |
21 |
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; |
|
|
22 |
import org.eclipse.mylyn.internal.provisional.commons.ui.DatePicker; |
13 |
import org.eclipse.mylyn.internal.tasks.core.AbstractTask; |
23 |
import org.eclipse.mylyn.internal.tasks.core.AbstractTask; |
14 |
import org.eclipse.mylyn.internal.tasks.core.DateRange; |
24 |
import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener; |
|
|
25 |
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil; |
26 |
import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; |
15 |
import org.eclipse.mylyn.internal.tasks.ui.ScheduleDatePicker; |
27 |
import org.eclipse.mylyn.internal.tasks.ui.ScheduleDatePicker; |
16 |
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; |
28 |
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; |
|
|
29 |
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; |
30 |
import org.eclipse.mylyn.monitor.ui.MonitorUi; |
31 |
import org.eclipse.mylyn.tasks.core.ITask; |
32 |
import org.eclipse.mylyn.tasks.core.ITaskActivityListener; |
33 |
import org.eclipse.mylyn.tasks.core.TaskActivityAdapter; |
17 |
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart; |
34 |
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart; |
18 |
import org.eclipse.swt.SWT; |
35 |
import org.eclipse.swt.SWT; |
|
|
36 |
import org.eclipse.swt.events.SelectionAdapter; |
37 |
import org.eclipse.swt.events.SelectionEvent; |
38 |
import org.eclipse.swt.events.SelectionListener; |
19 |
import org.eclipse.swt.layout.GridData; |
39 |
import org.eclipse.swt.layout.GridData; |
20 |
import org.eclipse.swt.layout.GridLayout; |
40 |
import org.eclipse.swt.layout.GridLayout; |
21 |
import org.eclipse.swt.widgets.Composite; |
41 |
import org.eclipse.swt.widgets.Composite; |
|
|
42 |
import org.eclipse.swt.widgets.Display; |
22 |
import org.eclipse.swt.widgets.Label; |
43 |
import org.eclipse.swt.widgets.Label; |
23 |
import org.eclipse.swt.widgets.Spinner; |
44 |
import org.eclipse.swt.widgets.Spinner; |
|
|
45 |
import org.eclipse.swt.widgets.Text; |
46 |
import org.eclipse.ui.PlatformUI; |
47 |
import org.eclipse.ui.forms.IFormColors; |
24 |
import org.eclipse.ui.forms.events.HyperlinkAdapter; |
48 |
import org.eclipse.ui.forms.events.HyperlinkAdapter; |
25 |
import org.eclipse.ui.forms.events.HyperlinkEvent; |
49 |
import org.eclipse.ui.forms.events.HyperlinkEvent; |
26 |
import org.eclipse.ui.forms.widgets.FormToolkit; |
50 |
import org.eclipse.ui.forms.widgets.FormToolkit; |
Lines 32-43
Link Here
|
32 |
*/ |
56 |
*/ |
33 |
public class TaskEditorPlanningPart extends AbstractTaskEditorPart { |
57 |
public class TaskEditorPlanningPart extends AbstractTaskEditorPart { |
34 |
|
58 |
|
|
|
59 |
private static final String CLEAR = "Clear"; |
60 |
|
35 |
private static final int DEFAULT_ESTIMATED_TIME = 1; |
61 |
private static final int DEFAULT_ESTIMATED_TIME = 1; |
36 |
|
62 |
|
37 |
private ScheduleDatePicker scheduledForDate; |
63 |
private static final String NO_TIME_ELAPSED = "0 seconds"; |
|
|
64 |
|
65 |
private static final String RESET = "Reset"; |
66 |
|
67 |
private static final int LABEL_WIDTH = 80; |
68 |
|
69 |
private static final int CONTROL_WIDTH = 100; |
70 |
|
71 |
private DatePicker dueDatePicker; |
72 |
|
73 |
private Text elapsedTimeText; |
38 |
|
74 |
|
39 |
private Spinner estimatedTime; |
75 |
private Spinner estimatedTime; |
40 |
|
76 |
|
|
|
77 |
private ScheduleDatePicker scheduleDatePicker; |
78 |
|
79 |
private AbstractTask task; |
80 |
|
81 |
private final ITaskListChangeListener TASK_LIST_LISTENER = new TaskListChangeAdapter() { |
82 |
|
83 |
@Override |
84 |
public void containersChanged(Set<TaskContainerDelta> containers) { |
85 |
for (TaskContainerDelta taskContainerDelta : containers) { |
86 |
if (taskContainerDelta.getElement() instanceof ITask) { |
87 |
final AbstractTask updateTask = (AbstractTask) taskContainerDelta.getElement(); |
88 |
if (updateTask != null && task != null |
89 |
&& updateTask.getHandleIdentifier().equals(task.getHandleIdentifier())) { |
90 |
if (PlatformUI.getWorkbench() != null && !PlatformUI.getWorkbench().isClosing()) { |
91 |
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { |
92 |
public void run() { |
93 |
updateFromTask(updateTask); |
94 |
} |
95 |
}); |
96 |
} |
97 |
} |
98 |
} |
99 |
} |
100 |
} |
101 |
|
102 |
}; |
103 |
|
104 |
private final ITaskActivityListener timingListener = new TaskActivityAdapter() { |
105 |
|
106 |
@Override |
107 |
public void elapsedTimeUpdated(ITask task, long newElapsedTime) { |
108 |
if (task.equals(TaskEditorPlanningPart.this.task)) { |
109 |
String elapsedTimeString = NO_TIME_ELAPSED; |
110 |
try { |
111 |
elapsedTimeString = DateUtil.getFormattedDuration(newElapsedTime, false); |
112 |
if (elapsedTimeString.equals("")) { |
113 |
elapsedTimeString = NO_TIME_ELAPSED; |
114 |
} |
115 |
|
116 |
} catch (RuntimeException e) { |
117 |
StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, |
118 |
"Could not format elapsed time", e)); |
119 |
} |
120 |
final String elapsedString = elapsedTimeString; |
121 |
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { |
122 |
|
123 |
public void run() { |
124 |
if (elapsedTimeText != null && !elapsedTimeText.isDisposed()) { |
125 |
elapsedTimeText.setText(elapsedString); |
126 |
} |
127 |
} |
128 |
}); |
129 |
|
130 |
} |
131 |
} |
132 |
}; |
133 |
|
41 |
public TaskEditorPlanningPart() { |
134 |
public TaskEditorPlanningPart() { |
42 |
setPartName("Personal Planning"); |
135 |
setPartName("Personal Planning"); |
43 |
} |
136 |
} |
Lines 47-171
Link Here
|
47 |
AbstractTask task = (AbstractTask) getTaskEditorPage().getTask(); |
140 |
AbstractTask task = (AbstractTask) getTaskEditorPage().getTask(); |
48 |
Assert.isNotNull(task); |
141 |
Assert.isNotNull(task); |
49 |
|
142 |
|
50 |
DateRange selectedDate = null; |
143 |
if (scheduleDatePicker != null && scheduleDatePicker.getScheduledDate() != null) { |
51 |
if (scheduledForDate != null) { |
144 |
if (task.getScheduledForDate() == null |
52 |
selectedDate = scheduledForDate.getScheduledDate(); |
145 |
|| (task.getScheduledForDate() != null && !scheduleDatePicker.getScheduledDate().equals( |
53 |
} |
146 |
task.getScheduledForDate())) || (task).getScheduledForDate().isDay()) { |
54 |
if (selectedDate != null) { |
147 |
TasksUiPlugin.getTaskActivityManager().setScheduledFor(task, scheduleDatePicker.getScheduledDate()); |
55 |
TasksUiPlugin.getTaskActivityManager().setScheduledFor(task, selectedDate); |
148 |
(task).setReminded(false); |
|
|
149 |
} |
150 |
} else { |
151 |
TasksUiPlugin.getTaskActivityManager().setScheduledFor(task, null); |
152 |
(task).setReminded(false); |
56 |
} |
153 |
} |
57 |
|
154 |
|
58 |
if (estimatedTime != null) { |
155 |
if (estimatedTime != null) { |
59 |
task.setEstimatedTimeHours(estimatedTime.getSelection()); |
156 |
task.setEstimatedTimeHours(estimatedTime.getSelection()); |
60 |
} |
157 |
} |
61 |
|
158 |
|
|
|
159 |
if (dueDatePicker != null && dueDatePicker.getDate() != null) { |
160 |
TasksUiPlugin.getTaskActivityManager().setDueDate(task, dueDatePicker.getDate().getTime()); |
161 |
} else { |
162 |
TasksUiPlugin.getTaskActivityManager().setDueDate(task, null); |
163 |
} |
164 |
|
62 |
super.commit(onSave); |
165 |
super.commit(onSave); |
63 |
} |
166 |
} |
64 |
|
167 |
|
|
|
168 |
private void createActualTime(FormToolkit toolkit, Composite composite) { |
169 |
Composite nameValueComp = createComposite(composite, 3, toolkit); |
170 |
|
171 |
Label label = toolkit.createLabel(nameValueComp, "Active:"); |
172 |
label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); |
173 |
label.setToolTipText("Time working on this task"); |
174 |
|
175 |
String elapsedTimeString = NO_TIME_ELAPSED; |
176 |
try { |
177 |
elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskActivityManager().getElapsedTime( |
178 |
task), false); |
179 |
if (elapsedTimeString.equals("")) { |
180 |
elapsedTimeString = NO_TIME_ELAPSED; |
181 |
} |
182 |
} catch (RuntimeException e) { |
183 |
// FIXME what exception is caught here? |
184 |
StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Could not format elapsed time", e)); |
185 |
} |
186 |
|
187 |
elapsedTimeText = toolkit.createText(nameValueComp, elapsedTimeString); |
188 |
elapsedTimeText.setText(elapsedTimeString); |
189 |
|
190 |
GridData td = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); |
191 |
td.grabExcessHorizontalSpace = true; |
192 |
elapsedTimeText.setLayoutData(td); |
193 |
elapsedTimeText.setEditable(false); |
194 |
|
195 |
ImageHyperlink resetActivityTimeButton = toolkit.createImageHyperlink(nameValueComp, SWT.NONE); |
196 |
resetActivityTimeButton.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
197 |
resetActivityTimeButton.setToolTipText(RESET); |
198 |
resetActivityTimeButton.addHyperlinkListener(new HyperlinkAdapter() { |
199 |
|
200 |
@Override |
201 |
public void linkActivated(HyperlinkEvent e) { |
202 |
if (MessageDialog.openConfirm(getControl().getShell(), "Confirm Activity Time Deletion", |
203 |
"Do you wish to reset your activity time on this task?\n\nThis will take immediate affect and can not be undone.")) { |
204 |
MonitorUi.getActivityContextManager().removeActivityTime(task.getHandleIdentifier(), 0l, |
205 |
System.currentTimeMillis()); |
206 |
} |
207 |
} |
208 |
}); |
209 |
} |
210 |
|
211 |
private Composite createComposite(Composite parent, int col, FormToolkit toolkit) { |
212 |
Composite nameValueComp = toolkit.createComposite(parent); |
213 |
GridLayout layout = new GridLayout(3, false); |
214 |
layout.marginHeight = 3; |
215 |
nameValueComp.setLayout(layout); |
216 |
return nameValueComp; |
217 |
} |
218 |
|
65 |
@Override |
219 |
@Override |
66 |
public void createControl(Composite parent, FormToolkit toolkit) { |
220 |
public void createControl(Composite parent, FormToolkit toolkit) { |
|
|
221 |
task = (AbstractTask) getTaskEditorPage().getTask(); |
222 |
|
67 |
Section section = createSection(parent, toolkit, true); |
223 |
Section section = createSection(parent, toolkit, true); |
68 |
|
224 |
|
69 |
Composite sectionClient = getManagedForm().getToolkit().createComposite(section); |
225 |
Composite composite = getManagedForm().getToolkit().createComposite(section); |
70 |
GridLayout layout = new GridLayout(); |
226 |
composite.setLayout(new GridLayout(2, false)); |
71 |
layout.numColumns = 7; |
227 |
|
72 |
layout.makeColumnsEqualWidth = false; |
228 |
createScheduledDatePicker(toolkit, composite); |
73 |
sectionClient.setLayout(layout); |
229 |
|
74 |
GridData clientDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); |
230 |
// disable due date picker if it's a repository due date |
75 |
sectionClient.setLayoutData(clientDataLayout); |
231 |
if (!getTaskEditorPage().getConnector().hasRepositoryDueDate(getTaskEditorPage().getTaskRepository(), task, |
76 |
|
232 |
getTaskData())) { |
77 |
// Reminder |
233 |
createDueDatePicker(toolkit, composite); |
78 |
// getManagedForm().getToolkit().createLabel(sectionClient, "Scheduled for:"); |
234 |
} else { |
79 |
// // label.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); |
235 |
// dummy placeholder |
80 |
// scheduledForDate = new ScheduleDatePicker(sectionClient, SWT.FLAT, DatePicker.LABEL_CHOOSE, true, |
236 |
toolkit.createLabel(composite, ""); |
81 |
// TasksUiPlugin.getDefault().getPreferenceStore().getInt(TasksUiPreferenceConstants.PLANNING_ENDHOUR)); |
237 |
} |
82 |
// scheduledForDate.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); |
|
|
83 |
// scheduledForDate.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); |
84 |
// Calendar newTaskSchedule = Calendar.getInstance(); |
85 |
// int scheduledEndHour = TasksUiPlugin.getDefault().getPreferenceStore().getInt( |
86 |
// TasksUiPreferenceConstants.PLANNING_ENDHOUR); |
87 |
// // If past scheduledEndHour set for following day |
88 |
// if (newTaskSchedule.get(Calendar.HOUR_OF_DAY) >= scheduledEndHour) { |
89 |
// TaskActivityUtil.snapForwardNumDays(newTaskSchedule, 1); |
90 |
// } else { |
91 |
// TaskActivityUtil.snapEndOfWorkDay(newTaskSchedule); |
92 |
// } |
93 |
// scheduledForDate.setDate(newTaskSchedule); |
94 |
//// Button removeReminder = getManagedForm().getToolkit().createButton(sectionClient, "Clear", |
95 |
//// SWT.PUSH | SWT.CENTER); |
96 |
//// removeReminder.addSelectionListener(new SelectionAdapter() { |
97 |
//// @Override |
98 |
//// public void widgetSelected(SelectionEvent e) { |
99 |
//// scheduledForDate.setDate(null); |
100 |
//// } |
101 |
//// }); |
102 |
// |
103 |
// ImageHyperlink clearReminder = getManagedForm().getToolkit().createImageHyperlink(sectionClient, SWT.NONE); |
104 |
// clearReminder.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
105 |
// clearReminder.setToolTipText("Clear"); |
106 |
// clearReminder.addHyperlinkListener(new HyperlinkAdapter() { |
107 |
// @Override |
108 |
// public void linkActivated(HyperlinkEvent e) { |
109 |
// scheduledForDate.setDate(null); |
110 |
// } |
111 |
// }); |
112 |
|
113 |
///NEW |
114 |
// ITask task = getTaskEditorPage().getTask(); |
115 |
// scheduledForDate = new ScheduleDatePicker(sectionClient, task, SWT.FLAT); |
116 |
// scheduledForDate.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); |
117 |
// toolkit.adapt(scheduledForDate, true, true); |
118 |
// toolkit.paintBordersFor(sectionClient); |
119 |
// |
120 |
// scheduledForDate.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); |
121 |
// scheduledForDate.addPickerSelectionListener(new SelectionListener() { |
122 |
// public void widgetSelected(SelectionEvent arg0) { |
123 |
// getTaskEditorPage().getModel().attributeChanged(attribute); |
124 |
// } |
125 |
// |
126 |
// public void widgetDefaultSelected(SelectionEvent arg0) { |
127 |
// // ignore |
128 |
// } |
129 |
// }); |
130 |
// |
131 |
// ImageHyperlink clearScheduledDate = toolkit.createImageHyperlink(sectionClient, SWT.NONE); |
132 |
// clearScheduledDate.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
133 |
// clearScheduledDate.setToolTipText(CLEAR); |
134 |
// clearScheduledDate.addHyperlinkListener(new HyperlinkAdapter() { |
135 |
// |
136 |
// @Override |
137 |
// public void linkActivated(HyperlinkEvent e) { |
138 |
// scheduledForDate.setScheduledDate(null); |
139 |
// ((AbstractTask) task).setReminded(false); |
140 |
// TaskPlanningEditor.this.markDirty(true); |
141 |
// } |
142 |
// }); |
143 |
|
238 |
|
144 |
// 1 Blank column after Reminder clear button |
239 |
// 1 Blank column after Reminder clear button |
145 |
Label dummy = getManagedForm().getToolkit().createLabel(sectionClient, ""); |
240 |
// Label dummy = getManagedForm().getToolkit().createLabel(composite, ""); |
146 |
GridData dummyLabelDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_CENTER); |
241 |
// GridData dummyLabelDataLayout = new GridData(GridData.HORIZONTAL_ALIGN_CENTER); |
147 |
dummyLabelDataLayout.horizontalSpan = 1; |
242 |
// dummyLabelDataLayout.horizontalSpan = 1; |
148 |
dummyLabelDataLayout.widthHint = 30; |
243 |
// dummyLabelDataLayout.widthHint = 30; |
149 |
dummy.setLayoutData(dummyLabelDataLayout); |
244 |
// dummy.setLayoutData(dummyLabelDataLayout); |
|
|
245 |
|
246 |
createEstimatedTime(toolkit, composite); |
247 |
|
248 |
createActualTime(toolkit, composite); |
249 |
|
250 |
TasksUiInternal.getTaskList().addChangeListener(TASK_LIST_LISTENER); |
251 |
TasksUiPlugin.getTaskActivityManager().addActivityListener(timingListener); |
252 |
|
253 |
toolkit.paintBordersFor(composite); |
254 |
section.setClient(composite); |
255 |
setSection(toolkit, section); |
256 |
} |
257 |
|
258 |
private void createDueDatePicker(FormToolkit toolkit, Composite parent) { |
259 |
Composite composite = createComposite(parent, 3, toolkit); |
260 |
Label label = toolkit.createLabel(composite, "Due:"); |
261 |
label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); |
262 |
GridDataFactory.fillDefaults().hint(LABEL_WIDTH, SWT.DEFAULT).align(SWT.BEGINNING, SWT.CENTER).applyTo(label); |
263 |
|
264 |
dueDatePicker = new DatePicker(composite, SWT.FLAT, DatePicker.LABEL_CHOOSE, true, 0); |
265 |
GridDataFactory.fillDefaults().hint(CONTROL_WIDTH, SWT.DEFAULT).applyTo(dueDatePicker); |
266 |
dueDatePicker.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); |
267 |
dueDatePicker.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); |
268 |
if (task.getDueDate() != null) { |
269 |
Calendar calendar = TaskActivityUtil.getCalendar(); |
270 |
calendar.setTime(task.getDueDate()); |
271 |
dueDatePicker.setDate(calendar); |
272 |
} |
273 |
dueDatePicker.addPickerSelectionListener(new SelectionAdapter() { |
274 |
@Override |
275 |
public void widgetSelected(SelectionEvent arg0) { |
276 |
markDirty(); |
277 |
} |
278 |
}); |
279 |
toolkit.adapt(dueDatePicker, true, false); |
280 |
toolkit.paintBordersFor(composite); |
281 |
|
282 |
ImageHyperlink clearDueDate = toolkit.createImageHyperlink(composite, SWT.NONE); |
283 |
clearDueDate.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
284 |
clearDueDate.setToolTipText(CLEAR); |
285 |
clearDueDate.addHyperlinkListener(new HyperlinkAdapter() { |
286 |
@Override |
287 |
public void linkActivated(HyperlinkEvent e) { |
288 |
dueDatePicker.setDate(null); |
289 |
markDirty(); |
290 |
} |
291 |
}); |
292 |
} |
293 |
|
294 |
private void createEstimatedTime(FormToolkit toolkit, Composite parent) { |
295 |
Composite nameValueComp = createComposite(parent, 3, toolkit); |
296 |
Label label = toolkit.createLabel(nameValueComp, "Estimated:"); |
297 |
label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); |
298 |
GridDataFactory.fillDefaults().hint(LABEL_WIDTH, SWT.DEFAULT).align(SWT.BEGINNING, SWT.CENTER).applyTo(label); |
150 |
|
299 |
|
151 |
// Estimated time |
300 |
// Estimated time |
152 |
getManagedForm().getToolkit().createLabel(sectionClient, "Estimated hours:"); |
301 |
estimatedTime = new Spinner(nameValueComp, SWT.FLAT); |
153 |
// label.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); |
|
|
154 |
// estimatedTime = new Spinner(sectionClient, SWT.FLAT); |
155 |
estimatedTime = new Spinner(sectionClient, SWT.FLAT); |
156 |
estimatedTime.setDigits(0); |
302 |
estimatedTime.setDigits(0); |
157 |
estimatedTime.setMaximum(100); |
303 |
estimatedTime.setMaximum(100); |
158 |
estimatedTime.setMinimum(0); |
304 |
estimatedTime.setMinimum(0); |
159 |
estimatedTime.setIncrement(1); |
305 |
estimatedTime.setIncrement(1); |
160 |
estimatedTime.setSelection(DEFAULT_ESTIMATED_TIME); |
306 |
estimatedTime.setSelection(DEFAULT_ESTIMATED_TIME); |
161 |
estimatedTime.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); |
307 |
estimatedTime.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); |
162 |
GridData estimatedDataLayout = new GridData(); |
|
|
163 |
estimatedDataLayout.widthHint = 30; |
164 |
estimatedTime.setLayoutData(estimatedDataLayout); |
165 |
// getManagedForm().getToolkit().createLabel(sectionClient, "hours "); |
166 |
// label.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); |
167 |
|
308 |
|
168 |
ImageHyperlink clearEstimated = getManagedForm().getToolkit().createImageHyperlink(sectionClient, SWT.NONE); |
309 |
ImageHyperlink clearEstimated = toolkit.createImageHyperlink(nameValueComp, SWT.NONE); |
169 |
clearEstimated.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
310 |
clearEstimated.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
170 |
clearEstimated.setToolTipText("Clear"); |
311 |
clearEstimated.setToolTipText("Clear"); |
171 |
clearEstimated.addHyperlinkListener(new HyperlinkAdapter() { |
312 |
clearEstimated.addHyperlinkListener(new HyperlinkAdapter() { |
Lines 174-182
Link Here
|
174 |
estimatedTime.setSelection(0); |
315 |
estimatedTime.setSelection(0); |
175 |
} |
316 |
} |
176 |
}); |
317 |
}); |
|
|
318 |
toolkit.paintBordersFor(nameValueComp); |
319 |
} |
177 |
|
320 |
|
178 |
getManagedForm().getToolkit().paintBordersFor(sectionClient); |
321 |
private void createScheduledDatePicker(FormToolkit toolkit, Composite parent) { |
179 |
section.setClient(sectionClient); |
322 |
Composite composite = createComposite(parent, 3, toolkit); |
180 |
setSection(toolkit, section); |
323 |
Label label = toolkit.createLabel(composite, "Scheduled:"); |
|
|
324 |
label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); |
325 |
GridDataFactory.fillDefaults().hint(LABEL_WIDTH, SWT.DEFAULT).align(SWT.BEGINNING, SWT.CENTER).applyTo(label); |
326 |
|
327 |
scheduleDatePicker = new ScheduleDatePicker(composite, task, SWT.FLAT); |
328 |
GridDataFactory.fillDefaults().hint(CONTROL_WIDTH, SWT.DEFAULT).applyTo(scheduleDatePicker); |
329 |
scheduleDatePicker.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); |
330 |
toolkit.adapt(scheduleDatePicker, true, false); |
331 |
toolkit.paintBordersFor(composite); |
332 |
|
333 |
scheduleDatePicker.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); |
334 |
scheduleDatePicker.addPickerSelectionListener(new SelectionListener() { |
335 |
public void widgetDefaultSelected(SelectionEvent arg0) { |
336 |
// ignore |
337 |
} |
338 |
|
339 |
public void widgetSelected(SelectionEvent arg0) { |
340 |
markDirty(); |
341 |
} |
342 |
}); |
343 |
|
344 |
ImageHyperlink clearScheduledDate = toolkit.createImageHyperlink(composite, SWT.NONE); |
345 |
clearScheduledDate.setImage(CommonImages.getImage(CommonImages.REMOVE)); |
346 |
clearScheduledDate.setToolTipText(CLEAR); |
347 |
clearScheduledDate.addHyperlinkListener(new HyperlinkAdapter() { |
348 |
@Override |
349 |
public void linkActivated(HyperlinkEvent e) { |
350 |
scheduleDatePicker.setScheduledDate(null); |
351 |
// XXX why is this set here? |
352 |
task.setReminded(false); |
353 |
markDirty(); |
354 |
} |
355 |
}); |
181 |
} |
356 |
} |
|
|
357 |
|
358 |
@Override |
359 |
public void dispose() { |
360 |
TasksUiPlugin.getTaskActivityManager().removeActivityListener(timingListener); |
361 |
TasksUiInternal.getTaskList().removeChangeListener(TASK_LIST_LISTENER); |
362 |
} |
363 |
|
364 |
private void updateFromTask(AbstractTask updateTask) { |
365 |
if (scheduleDatePicker != null && !scheduleDatePicker.isDisposed()) { |
366 |
if (updateTask.getScheduledForDate() != null) { |
367 |
scheduleDatePicker.setScheduledDate(updateTask.getScheduledForDate()); |
368 |
} else { |
369 |
scheduleDatePicker.setScheduledDate(null); |
370 |
} |
371 |
} |
372 |
} |
373 |
|
182 |
} |
374 |
} |