Lines 29-35
Link Here
|
29 |
import org.eclipse.jface.viewers.IStructuredSelection; |
29 |
import org.eclipse.jface.viewers.IStructuredSelection; |
30 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
30 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
31 |
import org.eclipse.jface.viewers.StructuredSelection; |
31 |
import org.eclipse.jface.viewers.StructuredSelection; |
32 |
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages; |
32 |
import org.eclipse.mylyn.internal.commons.ui.WorkbenchActionSupport; |
|
|
33 |
import org.eclipse.mylyn.internal.commons.ui.WorkbenchActionSupport.WorkbenchActionCallback; |
33 |
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory; |
34 |
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory; |
34 |
import org.eclipse.mylyn.internal.tasks.core.LocalTask; |
35 |
import org.eclipse.mylyn.internal.tasks.core.LocalTask; |
35 |
import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; |
36 |
import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; |
Lines 51-70
Link Here
|
51 |
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage; |
52 |
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage; |
52 |
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor; |
53 |
import org.eclipse.mylyn.tasks.ui.editors.TaskEditor; |
53 |
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput; |
54 |
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput; |
|
|
55 |
import org.eclipse.swt.widgets.Control; |
54 |
import org.eclipse.ui.IActionBars; |
56 |
import org.eclipse.ui.IActionBars; |
55 |
import org.eclipse.ui.IEditorInput; |
57 |
import org.eclipse.ui.IEditorInput; |
56 |
import org.eclipse.ui.IEditorPart; |
58 |
import org.eclipse.ui.IEditorPart; |
57 |
import org.eclipse.ui.ISharedImages; |
|
|
58 |
import org.eclipse.ui.IWorkbenchActionConstants; |
59 |
import org.eclipse.ui.IWorkbenchActionConstants; |
59 |
import org.eclipse.ui.IWorkbenchPage; |
60 |
import org.eclipse.ui.IWorkbenchPage; |
60 |
import org.eclipse.ui.PlatformUI; |
61 |
import org.eclipse.ui.PlatformUI; |
61 |
import org.eclipse.ui.actions.ActionFactory; |
|
|
62 |
import org.eclipse.ui.forms.editor.IFormPage; |
62 |
import org.eclipse.ui.forms.editor.IFormPage; |
63 |
import org.eclipse.ui.internal.WorkbenchImages; |
|
|
64 |
import org.eclipse.ui.internal.WorkbenchMessages; |
65 |
import org.eclipse.ui.part.MultiPageEditorActionBarContributor; |
63 |
import org.eclipse.ui.part.MultiPageEditorActionBarContributor; |
66 |
import org.eclipse.ui.progress.IProgressService; |
64 |
import org.eclipse.ui.progress.IProgressService; |
67 |
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; |
|
|
68 |
|
65 |
|
69 |
/** |
66 |
/** |
70 |
* @author Mik Kersten |
67 |
* @author Mik Kersten |
Lines 86-163
Link Here
|
86 |
|
83 |
|
87 |
private final NewTaskFromSelectionAction newTaskFromSelectionAction = new NewTaskFromSelectionAction(); |
84 |
private final NewTaskFromSelectionAction newTaskFromSelectionAction = new NewTaskFromSelectionAction(); |
88 |
|
85 |
|
89 |
private final GlobalAction cutAction; |
86 |
private final WorkbenchActionSupport actionSupport; |
90 |
|
|
|
91 |
private final GlobalAction undoAction; |
92 |
|
93 |
private final GlobalAction redoAction; |
94 |
|
95 |
private final GlobalAction copyAction; |
96 |
|
97 |
private final GlobalAction pasteAction; |
98 |
|
99 |
private final GlobalAction selectAllAction; |
100 |
|
101 |
private final GlobalAction findAction; |
102 |
|
87 |
|
103 |
public TaskEditorActionContributor() { |
88 |
public TaskEditorActionContributor() { |
104 |
cutAction = new GlobalAction(ActionFactory.CUT.getId()); |
89 |
actionSupport = new WorkbenchActionSupport(); |
105 |
cutAction.setText(WorkbenchMessages.Workbench_cut); |
90 |
actionSupport.setCallback(new EditorPageCallback()); |
106 |
cutAction.setToolTipText(WorkbenchMessages.Workbench_cutToolTip); |
|
|
107 |
cutAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT)); |
108 |
cutAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT)); |
109 |
cutAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_CUT_DISABLED)); |
110 |
cutAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.CUT); |
111 |
|
112 |
pasteAction = new GlobalAction(ActionFactory.PASTE.getId()); |
113 |
pasteAction.setText(WorkbenchMessages.Workbench_paste); |
114 |
pasteAction.setToolTipText(WorkbenchMessages.Workbench_pasteToolTip); |
115 |
pasteAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); |
116 |
pasteAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); |
117 |
pasteAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED)); |
118 |
pasteAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.PASTE); |
119 |
|
120 |
copyAction = new GlobalAction(ActionFactory.COPY.getId()); |
121 |
copyAction.setText(WorkbenchMessages.Workbench_copy); |
122 |
copyAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); |
123 |
copyAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); |
124 |
copyAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED)); |
125 |
copyAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY); |
126 |
|
127 |
undoAction = new GlobalAction(ActionFactory.UNDO.getId()); |
128 |
undoAction.setText(WorkbenchMessages.Workbench_undo); |
129 |
undoAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)); |
130 |
undoAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO)); |
131 |
undoAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_UNDO_DISABLED)); |
132 |
undoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.UNDO); |
133 |
|
134 |
redoAction = new GlobalAction(ActionFactory.REDO.getId()); |
135 |
redoAction.setText(WorkbenchMessages.Workbench_redo); |
136 |
redoAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO)); |
137 |
redoAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO)); |
138 |
redoAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_REDO_DISABLED)); |
139 |
redoAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.REDO); |
140 |
|
141 |
selectAllAction = new GlobalAction(ActionFactory.SELECT_ALL.getId()); |
142 |
selectAllAction.setText(WorkbenchMessages.Workbench_selectAll); |
143 |
selectAllAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL); |
144 |
selectAllAction.setEnabled(true); |
145 |
|
146 |
findAction = new GlobalAction(ActionFactory.FIND.getId()); |
147 |
findAction.setText(Messages.TaskEditorActionContributor_Find); |
148 |
findAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.FIND_REPLACE); |
149 |
findAction.setImageDescriptor(CommonImages.FIND); |
150 |
} |
91 |
} |
151 |
|
92 |
|
152 |
public void addClipboardActions(IMenuManager manager) { |
93 |
public void addClipboardActions(IMenuManager manager) { |
153 |
manager.add(undoAction); |
94 |
manager.add(actionSupport.getUndoAction()); |
154 |
manager.add(redoAction); |
95 |
manager.add(actionSupport.getRedoAction()); |
155 |
manager.add(new Separator()); |
96 |
manager.add(new Separator()); |
156 |
manager.add(cutAction); |
97 |
manager.add(actionSupport.getCutAction()); |
157 |
manager.add(copyAction); |
98 |
manager.add(actionSupport.getCopyAction()); |
158 |
manager.add(copyTaskDetailsAction); |
99 |
manager.add(copyTaskDetailsAction); |
159 |
manager.add(pasteAction); |
100 |
manager.add(actionSupport.getPasteAction()); |
160 |
manager.add(selectAllAction); |
101 |
manager.add(actionSupport.getSelectAllAction()); |
161 |
manager.add(newTaskFromSelectionAction); |
102 |
manager.add(newTaskFromSelectionAction); |
162 |
manager.add(new Separator()); |
103 |
manager.add(new Separator()); |
163 |
} |
104 |
} |
Lines 275-288
Link Here
|
275 |
|
216 |
|
276 |
public void updateSelectableActions(ISelection selection) { |
217 |
public void updateSelectableActions(ISelection selection) { |
277 |
if (editor != null) { |
218 |
if (editor != null) { |
278 |
cutAction.selectionChanged(selection); |
219 |
actionSupport.updateActions(selection); |
279 |
copyAction.selectionChanged(selection); |
|
|
280 |
pasteAction.selectionChanged(selection); |
281 |
undoAction.selectionChanged(selection); |
282 |
redoAction.selectionChanged(selection); |
283 |
selectAllAction.selectionChanged(selection); |
284 |
newTaskFromSelectionAction.selectionChanged(selection); |
220 |
newTaskFromSelectionAction.selectionChanged(selection); |
285 |
findAction.selectionChanged(selection); |
|
|
286 |
} |
221 |
} |
287 |
} |
222 |
} |
288 |
|
223 |
|
Lines 305-312
Link Here
|
305 |
@Override |
240 |
@Override |
306 |
public void init(IActionBars bars, IWorkbenchPage page) { |
241 |
public void init(IActionBars bars, IWorkbenchPage page) { |
307 |
super.init(bars, page); |
242 |
super.init(bars, page); |
308 |
registerGlobalHandlers(bars); |
243 |
actionSupport.install(bars); |
309 |
findAction.selectionChanged(StructuredSelection.EMPTY); |
|
|
310 |
} |
244 |
} |
311 |
|
245 |
|
312 |
public TaskEditor getEditor() { |
246 |
public TaskEditor getEditor() { |
Lines 332-411
Link Here
|
332 |
updateSelectableActions(event.getSelection()); |
266 |
updateSelectableActions(event.getSelection()); |
333 |
} |
267 |
} |
334 |
|
268 |
|
335 |
private class GlobalAction extends Action { |
269 |
private class EditorPageCallback extends WorkbenchActionCallback { |
336 |
|
|
|
337 |
private final String actionId; |
338 |
|
339 |
public GlobalAction(String actionId) { |
340 |
this.actionId = actionId; |
341 |
} |
342 |
|
270 |
|
343 |
@Override |
271 |
@Override |
344 |
public void run() { |
272 |
public void doAction(String actionId, Control control) { |
345 |
IFormPage page = getActivePage(); |
273 |
IFormPage page = getActivePage(); |
346 |
if (page instanceof TaskFormPage) { |
274 |
if (page instanceof AbstractTaskEditorPage) { |
347 |
TaskFormPage editor = (TaskFormPage) page; |
|
|
348 |
editor.doAction(actionId); |
349 |
} else if (page instanceof AbstractTaskEditorPage) { |
350 |
AbstractTaskEditorPage editor = (AbstractTaskEditorPage) page; |
275 |
AbstractTaskEditorPage editor = (AbstractTaskEditorPage) page; |
351 |
editor.doAction(actionId); |
276 |
editor.doAction(actionId); |
352 |
} else { |
277 |
} else { |
353 |
EditorUtil.doAction(actionId, EditorUtil.getFocusControl(getActivePage())); |
278 |
WorkbenchActionCallback textSupport = (WorkbenchActionCallback) page.getAdapter(WorkbenchActionCallback.class); |
|
|
279 |
if (textSupport != null) { |
280 |
textSupport.doAction(actionId, control); |
281 |
} else { |
282 |
super.doAction(actionId, control); |
283 |
} |
354 |
} |
284 |
} |
355 |
updateSelectableActions(getSelection()); |
|
|
356 |
} |
285 |
} |
357 |
|
286 |
|
358 |
public void selectionChanged(ISelection selection) { |
287 |
@Override |
|
|
288 |
public boolean canPerformAction(String actionId, Control control) { |
359 |
IFormPage page = getActivePage(); |
289 |
IFormPage page = getActivePage(); |
360 |
if (page instanceof TaskFormPage) { |
290 |
if (page instanceof TaskFormPage) { |
361 |
TaskFormPage editor = (TaskFormPage) page; |
291 |
TaskFormPage editor = (TaskFormPage) page; |
362 |
setEnabled(editor.canPerformAction(actionId)); |
292 |
return editor.canPerformAction(actionId); |
363 |
} else if (page instanceof AbstractTaskEditorPage) { |
|
|
364 |
AbstractTaskEditorPage editor = (AbstractTaskEditorPage) page; |
365 |
setEnabled(editor.canPerformAction(actionId)); |
366 |
} else { |
293 |
} else { |
367 |
setEnabled(EditorUtil.canPerformAction(actionId, EditorUtil.getFocusControl(getActivePage()))); |
294 |
WorkbenchActionCallback textSupport = (WorkbenchActionCallback) page.getAdapter(WorkbenchActionCallback.class); |
|
|
295 |
if (textSupport != null) { |
296 |
return textSupport.canPerformAction(actionId, control); |
297 |
} else { |
298 |
return super.canPerformAction(actionId, control); |
299 |
} |
368 |
} |
300 |
} |
369 |
} |
301 |
} |
370 |
} |
|
|
371 |
|
302 |
|
372 |
private void registerGlobalHandlers(IActionBars bars) { |
303 |
@Override |
373 |
bars.setGlobalActionHandler(ActionFactory.CUT.getId(), cutAction); |
304 |
public ISelection getSelection() { |
374 |
bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), pasteAction); |
305 |
return TaskEditorActionContributor.this.getSelection(); |
375 |
bars.setGlobalActionHandler(ActionFactory.COPY.getId(), copyAction); |
306 |
} |
376 |
bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undoAction); |
|
|
377 |
bars.setGlobalActionHandler(ActionFactory.REDO.getId(), redoAction); |
378 |
bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAllAction); |
379 |
bars.setGlobalActionHandler(ActionFactory.FIND.getId(), findAction); |
380 |
bars.updateActionBars(); |
381 |
} |
382 |
|
383 |
@SuppressWarnings("unused") |
384 |
private void unregisterGlobalHandlers(IActionBars bars) { |
385 |
bars.setGlobalActionHandler(ActionFactory.CUT.getId(), null); |
386 |
bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), null); |
387 |
bars.setGlobalActionHandler(ActionFactory.COPY.getId(), null); |
388 |
bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), null); |
389 |
bars.setGlobalActionHandler(ActionFactory.REDO.getId(), null); |
390 |
bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), null); |
391 |
bars.setGlobalActionHandler(ActionFactory.FIND.getId(), null); |
392 |
bars.updateActionBars(); |
393 |
} |
394 |
|
307 |
|
395 |
public void forceActionsEnabled() { |
308 |
@Override |
396 |
cutAction.setEnabled(true); |
309 |
public Control getFocusControl() { |
397 |
copyAction.setEnabled(true); |
310 |
IFormPage page = getActivePage(); |
398 |
pasteAction.setEnabled(true); |
311 |
return EditorUtil.getFocusControl(page); |
399 |
selectAllAction.setEnabled(true); |
312 |
} |
400 |
undoAction.setEnabled(false); |
|
|
401 |
redoAction.setEnabled(false); |
402 |
} |
403 |
|
313 |
|
404 |
private IFormPage getActivePage() { |
|
|
405 |
return (editor != null) ? editor.getActivePageInstance() : null; |
406 |
} |
314 |
} |
407 |
|
315 |
|
408 |
private ISelection getSelection() { |
316 |
public ISelection getSelection() { |
409 |
if (editor != null && editor.getSite().getSelectionProvider() != null) { |
317 |
if (editor != null && editor.getSite().getSelectionProvider() != null) { |
410 |
return editor.getSite().getSelectionProvider().getSelection(); |
318 |
return editor.getSite().getSelectionProvider().getSelection(); |
411 |
} else { |
319 |
} else { |
Lines 413-416
Link Here
|
413 |
} |
321 |
} |
414 |
} |
322 |
} |
415 |
|
323 |
|
|
|
324 |
public void forceActionsEnabled() { |
325 |
actionSupport.forceActionsEnabled(); |
326 |
} |
327 |
|
328 |
private IFormPage getActivePage() { |
329 |
return (editor != null) ? editor.getActivePageInstance() : null; |
330 |
} |
331 |
|
416 |
} |
332 |
} |