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.editors.actionsequence.pages.parameters;
014:
015: import org.eclipse.swt.SWT;
016: import org.eclipse.swt.events.MenuEvent;
017: import org.eclipse.swt.events.MenuListener;
018: import org.eclipse.swt.events.SelectionEvent;
019: import org.eclipse.swt.events.SelectionListener;
020: import org.eclipse.swt.graphics.Image;
021: import org.eclipse.swt.graphics.Point;
022: import org.eclipse.swt.graphics.Rectangle;
023: import org.eclipse.swt.widgets.Composite;
024: import org.eclipse.swt.widgets.Menu;
025: import org.eclipse.swt.widgets.MenuItem;
026: import org.eclipse.swt.widgets.Shell;
027: import org.eclipse.swt.widgets.ToolBar;
028: import org.eclipse.swt.widgets.ToolItem;
029: import org.pentaho.designstudio.editors.actionsequence.ActionSequenceEditorPlugin;
030: import org.pentaho.designstudio.messages.Messages;
031:
032: public class InputTableToolbar {
033:
034: static final Image ADD_ICON = ActionSequenceEditorPlugin
035: .getImageDescriptor(
036: Messages
037: .getString("ActionsMasterDetailBlock.ICON_ADD_ACTION")).createImage(); //$NON-NLS-1$
038:
039: static final Image REMOVE_ICON = ActionSequenceEditorPlugin
040: .getImageDescriptor(
041: Messages
042: .getString("ActionsMasterDetailBlock.ICON_REMOVE_ACTION")).createImage(); //$NON-NLS-1$
043:
044: static final Image MOVE_UP_ICON = ActionSequenceEditorPlugin
045: .getImageDescriptor(
046: Messages
047: .getString("ActionsMasterDetailBlock.ICON_MOVE_UP")).createImage(); //$NON-NLS-1$
048:
049: static final Image MOVE_DOWN_ICON = ActionSequenceEditorPlugin
050: .getImageDescriptor(
051: Messages
052: .getString("ActionsMasterDetailBlock.ICON_MOVE_DOWN")).createImage(); //$NON-NLS-1$
053:
054: InputTableViewer resultSetViewer;
055: ToolBar toolBar;
056:
057: public InputTableToolbar(Composite parent, InputTableViewer viewer) {
058: this .resultSetViewer = viewer;
059:
060: toolBar = new ToolBar(parent, SWT.FLAT);
061: ToolItem toolItem = new ToolItem(toolBar, SWT.NULL);
062: toolItem.setImage(MOVE_DOWN_ICON);
063: toolItem.setToolTipText(Messages
064: .getString("InputTableCoolbar.MOVE_ROW_DOWN")); //$NON-NLS-1$
065: toolItem.addSelectionListener(new SelectionListener() {
066: public void widgetDefaultSelected(SelectionEvent e) {
067: }
068:
069: public void widgetSelected(SelectionEvent e) {
070: Point[] selection = resultSetViewer.getCellSelection();
071: if ((selection.length == 1)
072: && (selection[0].y < resultSetViewer.getModel()
073: .getRowCount() - 1)) {
074: resultSetViewer.moveRow(selection[0].y,
075: selection[0].y + 1);
076: resultSetViewer.setSelection(selection[0].x,
077: selection[0].y + 1, true);
078: }
079: }
080: });
081:
082: toolItem = new ToolItem(toolBar, SWT.NULL);
083: toolItem.setImage(MOVE_UP_ICON);
084: toolItem.setToolTipText(Messages
085: .getString("InputTableCoolbar.MOVE_ROW_UP")); //$NON-NLS-1$
086: toolItem.addSelectionListener(new SelectionListener() {
087: public void widgetDefaultSelected(SelectionEvent e) {
088: }
089:
090: public void widgetSelected(SelectionEvent e) {
091: Point[] selection = resultSetViewer.getCellSelection();
092: if ((selection.length == 1)
093: && (selection[0].y > resultSetViewer.getModel()
094: .getFixedHeaderRowCount())) {
095: resultSetViewer.moveRow(selection[0].y,
096: selection[0].y - 1);
097: resultSetViewer.setSelection(selection[0].x,
098: selection[0].y - 1, true);
099: }
100: }
101: });
102:
103: new ToolItem(toolBar, SWT.SEPARATOR);
104:
105: toolItem = new ToolItem(toolBar, SWT.DROP_DOWN);
106: toolItem.setImage(ADD_ICON);
107: toolItem.setToolTipText(Messages
108: .getString("InputTableCoolbar.CREATE_ROWS_COLUMNS")); //$NON-NLS-1$
109: final Menu addMenu = createAddMenu(toolBar.getShell());
110: toolItem.addSelectionListener(new SelectionListener() {
111: public void widgetDefaultSelected(SelectionEvent e) {
112: }
113:
114: public void widgetSelected(SelectionEvent e) {
115: ToolItem item = (ToolItem) e.widget;
116: Rectangle rectangle = item.getBounds();
117: Point pt = item.getParent().toDisplay(
118: new Point(rectangle.x, rectangle.y));
119: addMenu.setLocation(pt.x, pt.y + rectangle.height);
120: addMenu.setVisible(true);
121: }
122:
123: });
124:
125: toolItem = new ToolItem(toolBar, SWT.DROP_DOWN);
126: toolItem.setImage(REMOVE_ICON);
127: toolItem.setToolTipText(Messages
128: .getString("InputTableCoolbar.DELETE_ROWS_COLUMNS")); //$NON-NLS-1$
129: final Menu removeMenu = createRemoveMenu(toolBar.getShell());
130: toolItem.addSelectionListener(new SelectionListener() {
131: public void widgetDefaultSelected(SelectionEvent e) {
132: }
133:
134: public void widgetSelected(SelectionEvent e) {
135: ToolItem item = (ToolItem) e.widget;
136: Rectangle rectangle = item.getBounds();
137: Point pt = item.getParent().toDisplay(
138: new Point(rectangle.x, rectangle.y));
139: removeMenu.setLocation(pt.x, pt.y + rectangle.height);
140: removeMenu.setVisible(true);
141: }
142:
143: });
144: }
145:
146: private Menu createAddMenu(Shell shell) {
147:
148: final Menu menu = new Menu(shell, SWT.POP_UP);
149:
150: MenuItem menuItem = new MenuItem(menu, SWT.NONE);
151: menuItem.setText(Messages
152: .getString("InputTableCoolbar.ADD_ROW")); //$NON-NLS-1$
153: menuItem.addSelectionListener(new SelectionListener() {
154: public void widgetDefaultSelected(SelectionEvent e) {
155: }
156:
157: public void widgetSelected(SelectionEvent e) {
158: resultSetViewer.addRow();
159: }
160: });
161:
162: menuItem = new MenuItem(menu, SWT.NONE);
163: menuItem.setText(Messages
164: .getString("InputTableCoolbar.ADD_COLUMN")); //$NON-NLS-1$
165: menuItem.addSelectionListener(new SelectionListener() {
166: public void widgetDefaultSelected(SelectionEvent e) {
167: }
168:
169: public void widgetSelected(SelectionEvent e) {
170: resultSetViewer.addColumn();
171: }
172: });
173:
174: final MenuItem insertRowMenuItem = new MenuItem(menu,
175: SWT.CASCADE);
176: insertRowMenuItem.setText(Messages
177: .getString("InputTableCoolbar.INSERT_ROW")); //$NON-NLS-1$
178: Menu insertRowMenu = new Menu(menu);
179: insertRowMenuItem.setMenu(insertRowMenu);
180:
181: menuItem = new MenuItem(insertRowMenu, SWT.NONE);
182: menuItem.setText(Messages
183: .getString("InputTableCoolbar.INSERT_ROW_BEFORE")); //$NON-NLS-1$
184: menuItem.addSelectionListener(new SelectionListener() {
185: public void widgetDefaultSelected(SelectionEvent e) {
186: }
187:
188: public void widgetSelected(SelectionEvent e) {
189: Point[] selection = resultSetViewer.getCellSelection();
190: resultSetViewer.insertRow(selection[0].y);
191: }
192: });
193:
194: menuItem = new MenuItem(insertRowMenu, SWT.NONE);
195: menuItem.setText(Messages
196: .getString("InputTableCoolbar.INSERT_ROW_AFTER")); //$NON-NLS-1$
197: menuItem.addSelectionListener(new SelectionListener() {
198: public void widgetDefaultSelected(SelectionEvent e) {
199: }
200:
201: public void widgetSelected(SelectionEvent e) {
202: Point[] selection = resultSetViewer.getCellSelection();
203: if (selection[0].y == resultSetViewer.getModel()
204: .getRowCount() - 1) {
205: resultSetViewer.addRow();
206: } else {
207: resultSetViewer.insertRow(selection[0].y + 1);
208: }
209: }
210: });
211:
212: final MenuItem insertColumnMenuItem = new MenuItem(menu,
213: SWT.CASCADE);
214: insertColumnMenuItem.setText(Messages
215: .getString("InputTableCoolbar.INSERT_COLUMN")); //$NON-NLS-1$
216:
217: Menu insertColumnMenu = new Menu(menu);
218: insertColumnMenuItem.setMenu(insertColumnMenu);
219:
220: menuItem = new MenuItem(insertColumnMenu, SWT.NONE);
221: menuItem.setText(Messages
222: .getString("InputTableCoolbar.INSERT_COLUMN_BEFORE")); //$NON-NLS-1$
223: menuItem.addSelectionListener(new SelectionListener() {
224: public void widgetDefaultSelected(SelectionEvent e) {
225: }
226:
227: public void widgetSelected(SelectionEvent e) {
228: Point[] selection = resultSetViewer.getCellSelection();
229: resultSetViewer.insertColumn(selection[0].x);
230: }
231: });
232:
233: menuItem = new MenuItem(insertColumnMenu, SWT.NONE);
234: menuItem.setText(Messages
235: .getString("InputTableCoolbar.INSERT_COLUMN_AFTER")); //$NON-NLS-1$
236: menuItem.addSelectionListener(new SelectionListener() {
237: public void widgetDefaultSelected(SelectionEvent e) {
238: }
239:
240: public void widgetSelected(SelectionEvent e) {
241: Point[] selection = resultSetViewer.getCellSelection();
242: if (selection[0].x == resultSetViewer.getModel()
243: .getColumnCount() - 1) {
244: resultSetViewer.addColumn();
245: } else {
246: resultSetViewer.insertColumn(selection[0].x + 1);
247: }
248: }
249: });
250:
251: menu.addMenuListener(new MenuListener() {
252: public void menuHidden(MenuEvent e) {
253: }
254:
255: public void menuShown(MenuEvent e) {
256: Point[] selections = resultSetViewer.getCellSelection();
257: if (selections.length == 0) {
258: insertRowMenuItem.setEnabled(false);
259: insertColumnMenuItem.setEnabled(false);
260: } else {
261: insertRowMenuItem.setEnabled(true);
262: insertColumnMenuItem.setEnabled(true);
263: }
264: }
265: });
266: return menu;
267: }
268:
269: private Menu createRemoveMenu(Shell shell) {
270:
271: final Menu menu = new Menu(shell, SWT.POP_UP);
272:
273: final MenuItem deleteRowMenuItem = new MenuItem(menu, SWT.NONE);
274: deleteRowMenuItem.setText(Messages
275: .getString("InputTableCoolbar.DELETE_ROW")); //$NON-NLS-1$
276: deleteRowMenuItem.addSelectionListener(new SelectionListener() {
277: public void widgetDefaultSelected(SelectionEvent e) {
278: }
279:
280: public void widgetSelected(SelectionEvent e) {
281: Point[] selection = resultSetViewer.getCellSelection();
282: resultSetViewer.deleteRow(selection[0].y);
283: }
284: });
285:
286: final MenuItem insertColumnMenuItem = new MenuItem(menu,
287: SWT.NONE);
288: insertColumnMenuItem.setText(Messages
289: .getString("InputTableCoolbar.DELETE_COLUMN")); //$NON-NLS-1$
290: insertColumnMenuItem
291: .addSelectionListener(new SelectionListener() {
292: public void widgetDefaultSelected(SelectionEvent e) {
293: }
294:
295: public void widgetSelected(SelectionEvent e) {
296: Point[] selection = resultSetViewer
297: .getCellSelection();
298: resultSetViewer.deleteColumn(selection[0].x);
299: }
300: });
301:
302: menu.addMenuListener(new MenuListener() {
303: public void menuHidden(MenuEvent e) {
304: }
305:
306: public void menuShown(MenuEvent e) {
307: Point[] selections = resultSetViewer.getCellSelection();
308: if (selections.length == 0) {
309: deleteRowMenuItem.setEnabled(false);
310: insertColumnMenuItem.setEnabled(false);
311: } else {
312: deleteRowMenuItem.setEnabled(true);
313: insertColumnMenuItem.setEnabled(true);
314: }
315: }
316: });
317: return menu;
318: }
319:
320: public ToolBar getControl() {
321: return toolBar;
322: }
323: }
|