001: /*
002: * Copyright 2006 Pentaho Corporation. All rights reserved.
003: * This software was developed by Pentaho Corporation and is provided under the terms
004: * of the Mozilla Public License, Version 1.1, or any later version. You may not use
005: * this file except in compliance with the license. If you need a copy of the license,
006: * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho
007: * BI Platform. The Initial Developer is Pentaho Corporation.
008: *
009: * Software distributed under the Mozilla Public License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
011: * the license for the specific language governing your rights and limitations.
012: */
013: package org.pentaho.designstudio.widgets.flowtable;
014:
015: import java.util.Arrays;
016: import java.util.List;
017:
018: import org.eclipse.jface.dialogs.MessageDialog;
019: import org.eclipse.jface.viewers.IStructuredSelection;
020: import org.eclipse.jface.viewers.StructuredSelection;
021: import org.eclipse.swt.SWT;
022: import org.eclipse.swt.events.SelectionEvent;
023: import org.eclipse.swt.events.SelectionListener;
024: import org.eclipse.swt.graphics.Image;
025: import org.eclipse.swt.graphics.Point;
026: import org.eclipse.swt.graphics.Rectangle;
027: import org.eclipse.swt.widgets.Composite;
028: import org.eclipse.swt.widgets.Menu;
029: import org.eclipse.swt.widgets.MenuItem;
030: import org.eclipse.swt.widgets.Shell;
031: import org.eclipse.swt.widgets.ToolBar;
032: import org.eclipse.swt.widgets.ToolItem;
033: import org.pentaho.actionsequence.dom.ActionControlStatement;
034: import org.pentaho.actionsequence.dom.IActionSequenceElement;
035: import org.pentaho.actionsequence.dom.IActionSequenceExecutableStatement;
036: import org.pentaho.actionsequence.dom.actions.ActionDefinition;
037: import org.pentaho.actionsequence.dom.actions.AreaChartAction;
038: import org.pentaho.actionsequence.dom.actions.BarChartAction;
039: import org.pentaho.actionsequence.dom.actions.BirtReportAction;
040: import org.pentaho.actionsequence.dom.actions.ContentOutputAction;
041: import org.pentaho.actionsequence.dom.actions.CopyParamAction;
042: import org.pentaho.actionsequence.dom.actions.DeleteScheduledJobAction;
043: import org.pentaho.actionsequence.dom.actions.EmailAction;
044: import org.pentaho.actionsequence.dom.actions.FormatMsgAction;
045: import org.pentaho.actionsequence.dom.actions.HelloWorldAction;
046: import org.pentaho.actionsequence.dom.actions.JFreeReportAction;
047: import org.pentaho.actionsequence.dom.actions.JFreeReportGenAction;
048: import org.pentaho.actionsequence.dom.actions.JMSAction;
049: import org.pentaho.actionsequence.dom.actions.JasperReportAction;
050: import org.pentaho.actionsequence.dom.actions.JavascriptAction;
051: import org.pentaho.actionsequence.dom.actions.KettleJobAction;
052: import org.pentaho.actionsequence.dom.actions.KettleTransformAction;
053: import org.pentaho.actionsequence.dom.actions.LineChartAction;
054: import org.pentaho.actionsequence.dom.actions.ListSchedJobsAction;
055: import org.pentaho.actionsequence.dom.actions.MQLAction;
056: import org.pentaho.actionsequence.dom.actions.MdxConnectionAction;
057: import org.pentaho.actionsequence.dom.actions.MdxQueryAction;
058: import org.pentaho.actionsequence.dom.actions.PieChartAction;
059: import org.pentaho.actionsequence.dom.actions.PivotViewAction;
060: import org.pentaho.actionsequence.dom.actions.PrintMapValsAction;
061: import org.pentaho.actionsequence.dom.actions.PrintParamAction;
062: import org.pentaho.actionsequence.dom.actions.PrinterAction;
063: import org.pentaho.actionsequence.dom.actions.ReceiptAuditAction;
064: import org.pentaho.actionsequence.dom.actions.ResultSetCompareAction;
065: import org.pentaho.actionsequence.dom.actions.ResumeScheduledJobAction;
066: import org.pentaho.actionsequence.dom.actions.ResumeSchedulerAction;
067: import org.pentaho.actionsequence.dom.actions.SchedulerStatusAction;
068: import org.pentaho.actionsequence.dom.actions.SecureFilterAction;
069: import org.pentaho.actionsequence.dom.actions.SharkWorkflowAction;
070: import org.pentaho.actionsequence.dom.actions.SqlConnectionAction;
071: import org.pentaho.actionsequence.dom.actions.SqlExecuteAction;
072: import org.pentaho.actionsequence.dom.actions.SqlQueryAction;
073: import org.pentaho.actionsequence.dom.actions.StartScheduledJobAction;
074: import org.pentaho.actionsequence.dom.actions.SubActionAction;
075: import org.pentaho.actionsequence.dom.actions.SuspendScheduledJobAction;
076: import org.pentaho.actionsequence.dom.actions.SuspendSchedulerAction;
077: import org.pentaho.actionsequence.dom.actions.TemplateMsgAction;
078: import org.pentaho.actionsequence.dom.actions.XQueryAction;
079: import org.pentaho.designstudio.editors.actionsequence.ActionSequenceEditorPlugin;
080: import org.pentaho.designstudio.messages.Messages;
081:
082: public class ActionsFlowTableToolbar {
083:
084: static final Image ADD_ICON = ActionSequenceEditorPlugin
085: .getImageDescriptor(
086: Messages
087: .getString("ActionsMasterDetailBlock.ICON_ADD_ACTION")).createImage(); //$NON-NLS-1$
088:
089: static final Image REMOVE_ICON = ActionSequenceEditorPlugin
090: .getImageDescriptor(
091: Messages
092: .getString("ActionsMasterDetailBlock.ICON_REMOVE_ACTION")).createImage(); //$NON-NLS-1$
093:
094: static final Image MOVE_UP_ICON = ActionSequenceEditorPlugin
095: .getImageDescriptor(
096: Messages
097: .getString("ActionsMasterDetailBlock.ICON_MOVE_UP")).createImage(); //$NON-NLS-1$
098:
099: static final Image MOVE_DOWN_ICON = ActionSequenceEditorPlugin
100: .getImageDescriptor(
101: Messages
102: .getString("ActionsMasterDetailBlock.ICON_MOVE_DOWN")).createImage(); //$NON-NLS-1$
103:
104: private ToolItem newActionToolItem;
105: Menu addActionMenu;
106: ToolBar toolBar;
107:
108: FlowViewer flowViewer;
109:
110: class AddIfMenuItem {
111: MenuItem menuItem;
112:
113: AddIfMenuItem(Menu parent) {
114: menuItem = new MenuItem(parent, SWT.NONE);
115: menuItem
116: .setText(Messages
117: .getString("ActionIfDetailsPage.IF_STATEMENT_NAME")); //$NON-NLS-1$
118: menuItem.addSelectionListener(new SelectionListener() {
119: public void widgetDefaultSelected(SelectionEvent e) {
120: }
121:
122: public void widgetSelected(SelectionEvent e) {
123: flowViewer.createNewIfStatement();
124: }
125: });
126: }
127: }
128:
129: class AddLoopMenuItem {
130: MenuItem menuItem;
131:
132: AddLoopMenuItem(Menu parent) {
133: menuItem = new MenuItem(parent, SWT.NONE);
134: menuItem
135: .setText(Messages
136: .getString("ActionLoopDetailsPage.UI_DETAILS_LOOP_NAME")); //$NON-NLS-1$
137: menuItem.addSelectionListener(new SelectionListener() {
138: public void widgetDefaultSelected(SelectionEvent e) {
139: }
140:
141: public void widgetSelected(SelectionEvent e) {
142: flowViewer.createNewLoop();
143: }
144: });
145: }
146: }
147:
148: class AddActionMenuItem {
149: Class actionDefinitionClass;
150:
151: String actionName;
152:
153: MenuItem menuItem;
154:
155: AddActionMenuItem(Menu parent, String name, Class actionDefClass) {
156: menuItem = new MenuItem(parent, SWT.NONE);
157: actionDefinitionClass = actionDefClass;
158: actionName = name;
159: menuItem.setText(name);
160: menuItem.addSelectionListener(new SelectionListener() {
161: public void widgetDefaultSelected(SelectionEvent e) {
162: }
163:
164: public void widgetSelected(SelectionEvent e) {
165: try {
166: flowViewer.createNewAction(
167: actionDefinitionClass, actionName);
168: } catch (Exception ex) {
169: MessageDialog.openError(flowViewer.getControl()
170: .getShell(), "Error", ex.getMessage());
171: }
172: }
173: });
174: }
175: }
176:
177: public ActionsFlowTableToolbar(Composite parent, FlowViewer viewer) {
178: this .flowViewer = viewer;
179:
180: toolBar = new ToolBar(parent, SWT.FLAT);
181: ToolItem toolItem = new ToolItem(toolBar, SWT.NULL);
182: toolItem.setImage(MOVE_DOWN_ICON);
183: toolItem
184: .setToolTipText(Messages
185: .getString("ActionsMasterDetailBlock.MOVE_ACTION_DOWN")); //$NON-NLS-1$
186: toolItem.addSelectionListener(new SelectionListener() {
187: public void widgetDefaultSelected(SelectionEvent e) {
188: }
189:
190: public void widgetSelected(SelectionEvent e) {
191: IStructuredSelection selection = (IStructuredSelection) flowViewer
192: .getSelection();
193: if ((selection.size() == 1)
194: && (selection.getFirstElement() instanceof IActionSequenceExecutableStatement)) {
195: IActionSequenceElement actionSequenceElement = (IActionSequenceElement) selection
196: .getFirstElement();
197: ActionControlStatement parentControlStatement = null;
198: if (actionSequenceElement instanceof ActionDefinition) {
199: parentControlStatement = ((ActionDefinition) actionSequenceElement)
200: .getParent();
201: } else if (actionSequenceElement instanceof ActionControlStatement) {
202: parentControlStatement = ((ActionControlStatement) actionSequenceElement)
203: .getParent();
204: }
205: List siblings = null;
206: if (parentControlStatement == null) {
207: siblings = Arrays.asList(actionSequenceElement
208: .getDocument().getExecutableChildren());
209: } else {
210: siblings = Arrays.asList(parentControlStatement
211: .getChildren());
212: }
213:
214: int childIndex = siblings
215: .indexOf(actionSequenceElement);
216:
217: if (childIndex == siblings.size() - 1) {
218: if (parentControlStatement == null) {
219: return;
220: }
221: ActionControlStatement grandParentControlStatement = parentControlStatement
222: .getParent();
223: List ancestors = null;
224: if (grandParentControlStatement == null) {
225: ancestors = Arrays
226: .asList(actionSequenceElement
227: .getDocument()
228: .getExecutableChildren());
229: } else {
230: ancestors = Arrays
231: .asList(grandParentControlStatement
232: .getChildren());
233: }
234: childIndex = ancestors
235: .indexOf(parentControlStatement) + 1;
236: parentControlStatement = grandParentControlStatement;
237: } else {
238: IActionSequenceElement nextSibling = (IActionSequenceElement) siblings
239: .get(childIndex + 1);
240: if (nextSibling instanceof ActionControlStatement) {
241: parentControlStatement = (ActionControlStatement) nextSibling;
242: childIndex = 0;
243: } else {
244: childIndex += 2;
245: }
246: }
247: ((IActionSequenceExecutableStatement) actionSequenceElement)
248: .moveTo(parentControlStatement, childIndex);
249: flowViewer.setSelection(new StructuredSelection(
250: actionSequenceElement));
251: }
252: }
253: });
254:
255: toolItem = new ToolItem(toolBar, SWT.NULL);
256: toolItem.setImage(MOVE_UP_ICON);
257: toolItem.setToolTipText(Messages
258: .getString("ActionsMasterDetailBlock.MOVE_ACTION_UP")); //$NON-NLS-1$
259: toolItem.addSelectionListener(new SelectionListener() {
260: public void widgetDefaultSelected(SelectionEvent e) {
261: }
262:
263: public void widgetSelected(SelectionEvent e) {
264: IStructuredSelection selection = (IStructuredSelection) flowViewer
265: .getSelection();
266: if ((selection.size() == 1)
267: && (selection.getFirstElement() instanceof IActionSequenceExecutableStatement)) {
268: IActionSequenceElement actionSequenceElement = (IActionSequenceElement) selection
269: .getFirstElement();
270: ActionControlStatement parentControlStatement = null;
271: if (actionSequenceElement instanceof ActionDefinition) {
272: parentControlStatement = ((ActionDefinition) actionSequenceElement)
273: .getParent();
274: } else if (actionSequenceElement instanceof ActionControlStatement) {
275: parentControlStatement = ((ActionControlStatement) actionSequenceElement)
276: .getParent();
277: }
278: List siblings = null;
279: if (parentControlStatement == null) {
280: siblings = Arrays.asList(actionSequenceElement
281: .getDocument().getExecutableChildren());
282: } else {
283: siblings = Arrays.asList(parentControlStatement
284: .getChildren());
285: }
286:
287: int childIndex = siblings
288: .indexOf(actionSequenceElement);
289:
290: if (childIndex == 0) {
291: if (parentControlStatement == null) {
292: return;
293: }
294: ActionControlStatement grandParentControlStatement = parentControlStatement
295: .getParent();
296: List ancestors = null;
297: if (grandParentControlStatement == null) {
298: ancestors = Arrays
299: .asList(actionSequenceElement
300: .getDocument()
301: .getExecutableChildren());
302: } else {
303: ancestors = Arrays
304: .asList(grandParentControlStatement
305: .getChildren());
306: }
307: childIndex = ancestors
308: .indexOf(parentControlStatement);
309: parentControlStatement = grandParentControlStatement;
310: } else {
311: IActionSequenceElement prevSibling = (IActionSequenceElement) siblings
312: .get(childIndex - 1);
313: if (prevSibling instanceof ActionControlStatement) {
314: parentControlStatement = (ActionControlStatement) prevSibling;
315: childIndex = parentControlStatement
316: .getChildren().length;
317: } else {
318: childIndex -= 1;
319: }
320: }
321: ((IActionSequenceExecutableStatement) actionSequenceElement)
322: .moveTo(parentControlStatement, childIndex);
323: flowViewer.setSelection(new StructuredSelection(
324: actionSequenceElement));
325: }
326:
327: }
328: });
329: new ToolItem(toolBar, SWT.SEPARATOR);
330:
331: newActionToolItem = new ToolItem(toolBar, SWT.DROP_DOWN);
332: newActionToolItem.setImage(ADD_ICON);
333: newActionToolItem.setToolTipText(Messages
334: .getString("ActionsMasterDetailBlock.ADD_NEW_ACTION")); //$NON-NLS-1$
335: addActionMenu = createAddActionMenu(toolBar.getShell());
336:
337: toolItem = new ToolItem(toolBar, SWT.NULL);
338: toolItem.setImage(REMOVE_ICON);
339: toolItem
340: .setToolTipText(Messages
341: .getString("ActionsMasterDetailBlock.REMOVE_SELECTED_ACTION")); //$NON-NLS-1$
342: toolItem.addSelectionListener(new SelectionListener() {
343: public void widgetDefaultSelected(SelectionEvent e) {
344: }
345:
346: public void widgetSelected(SelectionEvent e) {
347: flowViewer.deleteSelectedActions();
348: }
349: });
350: }
351:
352: public ToolBar getControl() {
353: return toolBar;
354: }
355:
356: private Menu createAddActionMenu(Shell shell) {
357: final Menu menu = new Menu(newActionToolItem.getParent()
358: .getShell(), SWT.POP_UP);
359:
360: MenuItem querySubMenuItem = new MenuItem(menu, SWT.CASCADE);
361: querySubMenuItem
362: .setText(Messages
363: .getString("ActionsMasterDetailBlock.UI_ACTION_MENU_QUERY")); //$NON-NLS-1$
364: Menu querySubMenu = new Menu(menu);
365: querySubMenuItem.setMenu(querySubMenu);
366: new AddActionMenuItem(
367: querySubMenu,
368: Messages
369: .getString("SqlLookupDetailsPage.UI_COMPONENT_NAME_SQL_QUERY"), SqlQueryAction.class); //$NON-NLS-1$
370: new AddActionMenuItem(
371: querySubMenu,
372: Messages
373: .getString("MdxLookupDetailsPage.UI_COMPONENT_NAME_MDX_QUERY"), MdxQueryAction.class); //$NON-NLS-1$
374: new AddActionMenuItem(
375: querySubMenu,
376: Messages
377: .getString("XQueryDetailsPage.UI_COMPONENT_NAME_XQUERY"), XQueryAction.class); //$NON-NLS-1$
378: new AddActionMenuItem(
379: querySubMenu,
380: Messages
381: .getString("ActionPageMasterPart.MQL_MENU_ITEM"), MQLAction.class); //$NON-NLS-1$
382: new AddActionMenuItem(
383: querySubMenu,
384: Messages
385: .getString("JavascriptDetailsPage.UI_COMPONENT_NAME_JAVASCRIPT"), JavascriptAction.class); //$NON-NLS-1$
386: new AddActionMenuItem(
387: querySubMenu,
388: Messages
389: .getString("KettleTransformationDetailsPage.KETTLE_TRANSFORMATION"), KettleTransformAction.class); //$NON-NLS-1$
390:
391: MenuItem reportSubMenuItem = new MenuItem(menu, SWT.CASCADE);
392: reportSubMenuItem
393: .setText(Messages
394: .getString("ActionsMasterDetailBlock.UI_ACTION_MENU_REPORT")); //$NON-NLS-1$
395: Menu reportSubMenu = new Menu(menu);
396: reportSubMenuItem.setMenu(reportSubMenu);
397: new AddActionMenuItem(
398: reportSubMenu,
399: Messages
400: .getString("JFreeReportDetailsPage.UI_COMPONENT_NAME_JFREE_REPORT"), JFreeReportAction.class); //$NON-NLS-1$
401: new AddActionMenuItem(
402: reportSubMenu,
403: Messages
404: .getString("JFreeReportGeneratorDetailsPage.UI_COMPONENT_NAME_JFREE_GEN"), JFreeReportGenAction.class); //$NON-NLS-1$
405: new AddActionMenuItem(
406: reportSubMenu,
407: Messages
408: .getString("PivotViewDetailsPage.UI_COMPONENT_NAME_PIVOT_VIEW"), PivotViewAction.class); //$NON-NLS-1$
409: MenuItem otherReportSubMenuItem = new MenuItem(reportSubMenu,
410: SWT.CASCADE);
411: otherReportSubMenuItem
412: .setText(Messages
413: .getString("ActionPageMasterPart.OTHER_REPORT_TYPE_MENU_ITEM")); //$NON-NLS-1$
414: Menu otherReportSubMenu = new Menu(reportSubMenu);
415: new AddActionMenuItem(
416: otherReportSubMenu,
417: Messages
418: .getString("JasperReportDetailsPage.UI_COMPONENT_NAME_JASPER_REP"), JasperReportAction.class); //$NON-NLS-1$
419: new AddActionMenuItem(
420: otherReportSubMenu,
421: Messages
422: .getString("BIRTReportDetailsPage.UI_COMPONENT_NAME_BIRT"), BirtReportAction.class); //$NON-NLS-1$
423: otherReportSubMenuItem.setMenu(otherReportSubMenu);
424:
425: MenuItem chartSubMenuItem = new MenuItem(menu, SWT.CASCADE);
426: chartSubMenuItem
427: .setText(Messages
428: .getString("ActionsMasterDetailBlock.UI_ACTION_MENU_CHART")); //$NON-NLS-1$
429: Menu chartSubMenu = new Menu(menu);
430: chartSubMenuItem.setMenu(chartSubMenu);
431: new AddActionMenuItem(
432: chartSubMenu,
433: Messages
434: .getString("BarChartDetailsPage.UI_BAR_CHART_DISP_NAME"), BarChartAction.class); //$NON-NLS-1$
435: new AddActionMenuItem(
436: chartSubMenu,
437: Messages
438: .getString("AreaChartDetailsPage.UI_AREA_CHART_DISP_NAME"), AreaChartAction.class); //$NON-NLS-1$
439: new AddActionMenuItem(
440: chartSubMenu,
441: Messages
442: .getString("LineChartDetailsPage.UI_LINE_CHART_DISP_NAME"), LineChartAction.class); //$NON-NLS-1$
443: new AddActionMenuItem(
444: chartSubMenu,
445: Messages
446: .getString("PieChartDetailsPage.UI_PIE_CHART_DISP_NAME"), PieChartAction.class); //$NON-NLS-1$
447:
448: new AddActionMenuItem(
449: menu,
450: Messages
451: .getString("SecureFilterDetailsPage.UI_COMPONENT_NAME_SECURE_FILTER"), SecureFilterAction.class); //$NON-NLS-1$
452: new AddActionMenuItem(
453: menu,
454: Messages
455: .getString("TemplateMessageDetailsPage.UI_COMPONENT_NAME_TEMPLATE"), TemplateMsgAction.class); //$NON-NLS-1$
456:
457: MenuItem sendToMenuItem = new MenuItem(menu, SWT.CASCADE);
458: sendToMenuItem.setText(Messages
459: .getString("ActionPageMasterPart.SEND_TO_MENU_TITLE")); //$NON-NLS-1$
460: Menu sendToSubMenu = new Menu(menu);
461: sendToMenuItem.setMenu(sendToSubMenu);
462: new AddActionMenuItem(
463: sendToSubMenu,
464: Messages
465: .getString("EmailDetailsPage.UI_COMPONENT_NAME_EMAIL"), EmailAction.class); //$NON-NLS-1$
466: new AddActionMenuItem(
467: sendToSubMenu,
468: Messages
469: .getString("PrinterDetailsPage.UI_COMPONENT_NAME_PRINTER"), PrinterAction.class); //$NON-NLS-1$
470:
471: MenuItem schedulerSubMenuItem = new MenuItem(menu, SWT.CASCADE);
472: schedulerSubMenuItem
473: .setText(Messages
474: .getString("ActionsMasterDetailBlock.UI_ACTION_MENU_SCHEDULER")); //$NON-NLS-1$
475: Menu schedulerSubMenu = new Menu(menu);
476: schedulerSubMenuItem.setMenu(schedulerSubMenu);
477: new AddActionMenuItem(
478: schedulerSubMenu,
479: Messages
480: .getString("StartScheduledJobDetailsPage.UI_START_SCHED_JOB_TITLE"), StartScheduledJobAction.class); //$NON-NLS-1$
481: new AddActionMenuItem(
482: schedulerSubMenu,
483: Messages
484: .getString("DeleteScheduledJobDetailsPage.UI_DELETE_JOB_NAME"), DeleteScheduledJobAction.class); //$NON-NLS-1$
485: new AddActionMenuItem(
486: schedulerSubMenu,
487: Messages
488: .getString("SuspendScheduledJobDetailsPage.UI_SUSPEND_SCHED_JOB_TITLE"), SuspendScheduledJobAction.class); //$NON-NLS-1$
489: new AddActionMenuItem(
490: schedulerSubMenu,
491: Messages
492: .getString("ResumeScheduledJobDetailsPage.UI_RESUME_SCHEDULED_JOB_TITLE"), ResumeScheduledJobAction.class); //$NON-NLS-1$
493: new MenuItem(schedulerSubMenu, SWT.SEPARATOR);
494: new AddActionMenuItem(
495: schedulerSubMenu,
496: Messages
497: .getString("ListScheduledJobsDetailsPage.UI_LIST_SCHEDULED_JOBS_TEXT"), ListSchedJobsAction.class); //$NON-NLS-1$
498: new AddActionMenuItem(
499: schedulerSubMenu,
500: Messages
501: .getString("ResumeSchedulerDetailsPage.UI_RESUME_SCHEDULER_TITLE"), ResumeSchedulerAction.class); //$NON-NLS-1$
502: new AddActionMenuItem(
503: schedulerSubMenu,
504: Messages
505: .getString("SuspendSchedulerDetailsPage.UI_SUSPEND_SCHED_TITLE"), SuspendSchedulerAction.class); //$NON-NLS-1$
506: new AddActionMenuItem(
507: schedulerSubMenu,
508: Messages
509: .getString("SchedulerStatusDetailsPage.UI_SCHEDULER_STATUS_TITLE"), SchedulerStatusAction.class); //$NON-NLS-1$
510:
511: MenuItem executeSubMenuItem = new MenuItem(menu, SWT.CASCADE);
512: executeSubMenuItem.setText(Messages
513: .getString("ActionPageMasterPart.EXECUTE_MENU_TITLE")); //$NON-NLS-1$
514: Menu executeSubMenu = new Menu(menu);
515: executeSubMenuItem.setMenu(executeSubMenu);
516: new AddActionMenuItem(
517: executeSubMenu,
518: Messages
519: .getString("SqlExecuteDetailsPage.UI_COMPONENT_NAME_SQL_EXECUTE_ACTION"), SqlExecuteAction.class); //$NON-NLS-1$
520: new AddActionMenuItem(
521: executeSubMenu,
522: Messages
523: .getString("SubActionDetailsPage.UI_COMPONENT_NAME_SUB_ACTION"), SubActionAction.class); //$NON-NLS-1$
524: new AddActionMenuItem(
525: executeSubMenu,
526: Messages.getString("KettleJobDetailsPage.KETTLE_JOB"), KettleJobAction.class); //$NON-NLS-1$
527: new AddActionMenuItem(
528: executeSubMenu,
529: Messages
530: .getString("SharkWorkflowDetailsPage.UI_COMPONENT_NAME_SHARK_WORKFLOW"), SharkWorkflowAction.class); //$NON-NLS-1$
531: new AddActionMenuItem(
532: executeSubMenu,
533: Messages
534: .getString("ResultSetCompareDetailsPage.UI_COMPONENT_NAME_RESULT_SET_COMPARE"), ResultSetCompareAction.class); //$NON-NLS-1$
535: new AddActionMenuItem(
536: executeSubMenu,
537: Messages
538: .getString("JMSDetailsPage.UI_COMPONENT_NAME_SUB_ACTION"), JMSAction.class); //$NON-NLS-1$
539: MenuItem openConnectionSubMenuItem = new MenuItem(
540: executeSubMenu, SWT.CASCADE);
541: openConnectionSubMenuItem
542: .setText(Messages
543: .getString("ActionPageMasterPart.OPEN_CONNECTION_MENU_TITLE")); //$NON-NLS-1$
544: Menu openConnectionSubMenu = new Menu(executeSubMenu);
545: openConnectionSubMenuItem.setMenu(openConnectionSubMenu);
546: new AddActionMenuItem(
547: openConnectionSubMenu,
548: Messages
549: .getString("SqlConnectionDetailsPage.UI_COMPONENT_NAME_SQL_CONNECTION"), SqlConnectionAction.class); //$NON-NLS-1$
550: new AddActionMenuItem(
551: openConnectionSubMenu,
552: Messages
553: .getString("MdxConnectionDetailsPage.UI_COMPONENT_NAME_MDX_CONNECTION"), MdxConnectionAction.class); //$NON-NLS-1$
554:
555: MenuItem utilitySubMenuItem = new MenuItem(menu, SWT.CASCADE);
556: utilitySubMenuItem
557: .setText(Messages
558: .getString("ActionsMasterDetailBlock.UI_ACTION_MENU_UTILITIES")); //$NON-NLS-1$
559: Menu utilitySubMenu = new Menu(menu);
560: utilitySubMenuItem.setMenu(utilitySubMenu);
561: new AddActionMenuItem(
562: utilitySubMenu,
563: Messages
564: .getString("ReceiptAuditDetailsPage.UI_COMPONENT_NAME_TRACE_POINT"), ReceiptAuditAction.class); //$NON-NLS-1$
565: new AddActionMenuItem(
566: utilitySubMenu,
567: Messages.getString("CopyParamDetailsPage.ID_COPY"), CopyParamAction.class); //$NON-NLS-1$
568: new AddActionMenuItem(
569: utilitySubMenu,
570: Messages
571: .getString("ContentOutputDetailsPage.UI_COMPONENT_NAME_CONTENT_OUTPUT"), ContentOutputAction.class); //$NON-NLS-1$
572: new AddActionMenuItem(
573: utilitySubMenu,
574: Messages
575: .getString("PrintParamsDetailsPage.ID_PRINT_PARAMS"), PrintParamAction.class); //$NON-NLS-1$
576: new AddActionMenuItem(
577: utilitySubMenu,
578: Messages
579: .getString("PrintMapValuesDetailsPage.ID_PRINT_MAP"), PrintMapValsAction.class); //$NON-NLS-1$
580: new AddActionMenuItem(
581: utilitySubMenu,
582: Messages
583: .getString("HelloWorldDetailsPage.UI_COMPONENT_NAME_HELLO_WORLD"), HelloWorldAction.class); //$NON-NLS-1$
584: new AddActionMenuItem(
585: utilitySubMenu,
586: Messages
587: .getString("FormattedMsgDetailsPage.ID_FORMAT_MSG"), FormatMsgAction.class); //$NON-NLS-1$
588:
589: new AddActionMenuItem(menu, "Custom", ActionDefinition.class); //$NON-NLS-1$
590:
591: new MenuItem(menu, SWT.SEPARATOR);
592: new AddLoopMenuItem(menu);
593: new AddIfMenuItem(menu);
594:
595: newActionToolItem.addSelectionListener(new SelectionListener() {
596: public void widgetDefaultSelected(SelectionEvent e) {
597: // TODO Auto-generated method stub
598:
599: }
600:
601: public void widgetSelected(SelectionEvent e) {
602: ToolItem item = (ToolItem) e.widget;
603: Rectangle rectangle = item.getBounds();
604: Point pt = item.getParent().toDisplay(
605: new Point(rectangle.x, rectangle.y));
606: menu.setLocation(pt.x, pt.y + rectangle.height);
607: menu.setVisible(true);
608: }
609:
610: });
611: return menu;
612: }
613: }
|