Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 64786
Collapse All | Expand All

(-)src/org/eclipse/hyades/test/ui/datapool/internal/control/DatapoolMenuManager.java (-12 / +16 lines)
Lines 41-47 Link Here
41
 * 
41
 * 
42
 * @author  Peter Sun
42
 * @author  Peter Sun
43
 * @author  Paul E. Slauenwhite
43
 * @author  Paul E. Slauenwhite
44
 * @version May 12, 2009
44
 * @version May 17, 2009
45
 * @since   January 27, 2005
45
 * @since   January 27, 2005
46
 */
46
 */
47
public class DatapoolMenuManager {
47
public class DatapoolMenuManager {
Lines 94-113 Link Here
94
	public static final int EDIT_COLUMN_ACTION_ENABLED = 1 << 6;
94
	public static final int EDIT_COLUMN_ACTION_ENABLED = 1 << 6;
95
95
96
	/**
96
	/**
97
	 * Display mode constant for enabling the cut {@link EditAction} (value is 1&lt;&lt;7).
97
	 * Display mode constant for enabling the cut {@link CutAction} (value is 1&lt;&lt;7).
98
	 */
98
	 */
99
	public static final int CUT_ACTION_ENABLED = 1 << 7;
99
	public static final int CUT_ACTION_ENABLED = 1 << 7;
100
100
101
	/**
101
	/**
102
	 * Display mode constant for enabling the copy {@link EditAction} (value is 1&lt;&lt;8).
102
	 * Display mode constant for enabling the copy {@link CopyAction} (value is 1&lt;&lt;8).
103
	 */
103
	 */
104
	public static final int COPY_ACTION_ENABLED = 1 << 8;
104
	public static final int COPY_ACTION_ENABLED = 1 << 8;
105
105
106
	/**
106
	/**
107
	 * Display mode constant for enabling the paste {@link EditAction} (value is 1&lt;&lt9).
107
	 * Display mode constant for enabling the paste {@link PasteAction} (value is 1&lt;&lt9).
108
	 */
108
	 */
109
	public static final int PASTE_ACTION_ENABLED = 1 << 9;
109
	public static final int PASTE_ACTION_ENABLED = 1 << 9;
110
110
111
	/**
112
	 * Display mode constant for enabling the find and replace {@link FindReplaceAction} (value is 1&lt;&lt10).
113
	 */
114
	public static final int FIND_REPLACE_ACTION_ENABLED = 1 << 10;
115
111
    public DatapoolMenuManager(DatapoolTable table, String vendorID, boolean showEquivalenceClassActions, boolean showVariableActions, boolean showRecordActions) {
116
    public DatapoolMenuManager(DatapoolTable table, String vendorID, boolean showEquivalenceClassActions, boolean showVariableActions, boolean showRecordActions) {
112
        if (table == null) return;
117
        if (table == null) return;
113
        this.customActions = new Vector();
118
        this.customActions = new Vector();
Lines 218-231 Link Here
218
    }
223
    }
219
224
220
    public void setDisplayMode(int displayMode) {
225
    public void setDisplayMode(int displayMode) {
221
        
226
            	
222
    	//Enable find/replace action:
223
    	FindReplaceAction findReplaceAction = DatapoolActionHandlerListener.INSTANCE.getFindReplaceAction();
224
    	
225
    	if (findReplaceAction != null) {
226
    		findReplaceAction.setEnabled(true);
227
    	}
228
    	
229
    	//Set the display modes for the row actions:
227
    	//Set the display modes for the row actions:
230
    	insertRowAction.aboutToShow((displayMode & INSERT_ROW_ACTION_ENABLED) != 0);
228
    	insertRowAction.aboutToShow((displayMode & INSERT_ROW_ACTION_ENABLED) != 0);
231
        deleteRowAction.aboutToShow((displayMode & DELETE_ROW_ACTION_ENABLED) != 0);
229
        deleteRowAction.aboutToShow((displayMode & DELETE_ROW_ACTION_ENABLED) != 0);
Lines 240-244 Link Here
240
        cutAction.setEnabled((displayMode & CUT_ACTION_ENABLED) != 0);
238
        cutAction.setEnabled((displayMode & CUT_ACTION_ENABLED) != 0);
241
        copyAction.setEnabled((displayMode & COPY_ACTION_ENABLED) != 0);
239
        copyAction.setEnabled((displayMode & COPY_ACTION_ENABLED) != 0);
242
        pasteAction.setEnabled((displayMode & PASTE_ACTION_ENABLED) != 0);
240
        pasteAction.setEnabled((displayMode & PASTE_ACTION_ENABLED) != 0);
241
        
242
    	FindReplaceAction findReplaceAction = DatapoolActionHandlerListener.INSTANCE.getFindReplaceAction();
243
    	
244
    	if (findReplaceAction != null) {
245
    		findReplaceAction.setEnabled((displayMode & FIND_REPLACE_ACTION_ENABLED) != 0);
246
    	}
243
    }
247
    }
244
}
248
}
(-)src/org/eclipse/hyades/test/ui/datapool/internal/control/DatapoolTable.java (-101 / +205 lines)
Lines 74-81 Link Here
74
import org.eclipse.swt.events.KeyListener;
74
import org.eclipse.swt.events.KeyListener;
75
import org.eclipse.swt.events.MenuDetectEvent;
75
import org.eclipse.swt.events.MenuDetectEvent;
76
import org.eclipse.swt.events.MenuDetectListener;
76
import org.eclipse.swt.events.MenuDetectListener;
77
import org.eclipse.swt.events.MenuEvent;
78
import org.eclipse.swt.events.MenuListener;
79
import org.eclipse.swt.events.MouseAdapter;
77
import org.eclipse.swt.events.MouseAdapter;
80
import org.eclipse.swt.events.MouseEvent;
78
import org.eclipse.swt.events.MouseEvent;
81
import org.eclipse.swt.events.PaintEvent;
79
import org.eclipse.swt.events.PaintEvent;
Lines 94-99 Link Here
94
import org.eclipse.swt.widgets.Combo;
92
import org.eclipse.swt.widgets.Combo;
95
import org.eclipse.swt.widgets.Composite;
93
import org.eclipse.swt.widgets.Composite;
96
import org.eclipse.swt.widgets.Display;
94
import org.eclipse.swt.widgets.Display;
95
import org.eclipse.swt.widgets.Event;
96
import org.eclipse.swt.widgets.Listener;
97
import org.eclipse.swt.widgets.Menu;
97
import org.eclipse.swt.widgets.Menu;
98
import org.eclipse.swt.widgets.Shell;
98
import org.eclipse.swt.widgets.Shell;
99
import org.eclipse.swt.widgets.Table;
99
import org.eclipse.swt.widgets.Table;
Lines 116-125 Link Here
116
 * 
116
 * 
117
 * @author  Peter Sun
117
 * @author  Peter Sun
118
 * @author  Paul E. Slauenwhite
118
 * @author  Paul E. Slauenwhite
119
 * @version May 15, 2009
119
 * @version May 17, 2009
120
 * @since   January 27, 2005
120
 * @since   January 27, 2005
121
 */
121
 */
122
public class DatapoolTable implements IMenuListener, MenuListener, SelectionListener, IDatapoolListener {
122
public class DatapoolTable implements SelectionListener, IDatapoolListener {
123
	
123
	
124
	private static final int MAX_TABLE_WIDTH = 60;
124
	private static final int MAX_TABLE_WIDTH = 60;
125
	private static final int MAX_TABLE_HEIGHT = 60;
125
	private static final int MAX_TABLE_HEIGHT = 60;
Lines 146-151 Link Here
146
	private boolean showRecords = true;
146
	private boolean showRecords = true;
147
	private boolean isF2Mode = false;
147
	private boolean isF2Mode = false;
148
	private int previousMultiRowSelectionIndex = -1;  // only used for deselecting when multi-selection in place.
148
	private int previousMultiRowSelectionIndex = -1;  // only used for deselecting when multi-selection in place.
149
	private int headerSelectionIndex = -1;
149
	private String cellkey;
150
	private String cellkey;
150
	private boolean passwordExist = false;
151
	private boolean passwordExist = false;
151
	private String password = null;
152
	private String password = null;
Lines 756-761 Link Here
756
				//Open the context menu:
757
				//Open the context menu:
757
				contextMenu.setEnabled(true);
758
				contextMenu.setEnabled(true);
758
				contextMenu.setVisible(true);
759
				contextMenu.setVisible(true);
760
				
761
				headerSelectionIndex = -1;
759
			}
762
			}
760
		}
763
		}
761
	}
764
	}
Lines 1198-1213 Link Here
1198
	}
1201
	}
1199
1202
1200
	/**
1203
	/**
1201
	 * 
1204
	 * Creates the context menu.
1202
	 */
1205
	 */
1203
	private void createMenu() {
1206
	private void createMenu() {
1204
		MenuManager menuMgr= new MenuManager("#DatapoolEditor"); //$NON-NLS-1$
1207
		
1205
		menuMgr.setRemoveAllWhenShown(true);
1208
		MenuManager menuManager = new MenuManager("#DatapoolEditor"); //$NON-NLS-1$
1206
		menuMgr.addMenuListener(this);
1209
		menuManager.setRemoveAllWhenShown(true);
1207
		contextMenu = menuMgr.createContextMenu(table);
1210
		menuManager.addMenuListener(new IMenuListener(){
1211
		
1212
			/* (non-Javadoc)
1213
			 * @see org.eclipse.jface.action.IMenuListener#menuAboutToShow(org.eclipse.jface.action.IMenuManager)
1214
			 */
1215
			public void menuAboutToShow(IMenuManager menuManager) {
1216
				
1217
				datapoolMenuManager.addActions(menuManager);
1218
				
1219
				if(headerSelectionIndex != -1){
1220
					setHeaderMenuMode(datapoolMenuManager);					
1221
				}
1222
				else{
1223
					setMenuMode(datapoolMenuManager);
1224
				}
1225
			}
1226
		});
1227
1228
		contextMenu = menuManager.createContextMenu(table);
1229
		
1208
		table.setMenu(contextMenu);
1230
		table.setMenu(contextMenu);
1231
		table.addListener(SWT.MenuDetect, new Listener(){
1232
			
1233
			/* (non-Javadoc)
1234
			 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
1235
			 */
1236
			public void handleEvent(Event event) {
1237
				
1238
				Point point = Display.getCurrent().map(null, table, new Point(event.x, event.y));				
1239
				Rectangle clientArea = table.getClientArea();
1240
1241
				//Header context menu:
1242
				if((point.y >= clientArea.y) && (point.y < (clientArea.y + table.getHeaderHeight()))){
1243
					headerSelectionIndex = getColumnIndex(point);					
1244
				}
1245
				
1246
				//Cell context menu:
1247
				else{
1248
					headerSelectionIndex = -1;
1249
				}
1250
			}
1251
		});
1252
	}
1253
1254
	/**
1255
	 * Resolves the column index of the selection{@link Point}.
1256
	 * 
1257
	 * @param point The section point.
1258
	 * @return The column index of the selection{@link Point}.
1259
	 */
1260
	private int getColumnIndex(Point point){
1261
		
1262
		//Resolve the first row:
1263
		TableItem tableItem = table.getItem(0);
1264
		
1265
		for (int counter = 0; counter < table.getColumnCount(); counter++) {
1266
			
1267
			Rectangle clientArea = tableItem.getBounds(counter);
1268
1269
			if((point.x >= clientArea.x) && (point.x <= (clientArea.x + clientArea.width))){
1270
				return counter;
1271
			}
1272
		}
1273
		
1274
		return -1;
1209
	}
1275
	}
1210
1276
1277
	/**
1278
	 * Sets the mode for the context menu.
1279
	 * 
1280
	 * @param datapoolMenuManager Datapool menu manager.
1281
	 */
1282
	private void setMenuMode(DatapoolMenuManager datapoolMenuManager){
1283
		
1284
		if(datapoolMenuManager != null){
1285
						
1286
			int displayMode = 0;
1287
			int recordCount = equivalenceClass.getRecordCount();
1288
1289
			if((!datapoolEditorPart.isReadOnly()) && (equivalenceClass != null)){
1290
			
1291
		    	//Set the display modes for the row actions:
1292
				displayMode |= DatapoolMenuManager.INSERT_ROW_ACTION_ENABLED;
1293
1294
				if(recordCount > 0){
1295
1296
					displayMode |= DatapoolMenuManager.EDIT_ROW_ACTION_ENABLED;
1297
					
1298
					if(recordCount > 1){
1299
						displayMode |= DatapoolMenuManager.DELETE_ROW_ACTION_ENABLED;					
1300
					}
1301
				}
1302
1303
				//Set the display modes for the columns actions:
1304
				displayMode |= DatapoolMenuManager.INSERT_COLUMN_ACTION_ENABLED;
1305
1306
				if (((tableCursor != null) && (!tableCursor.isDisposed()) && (tableCursor.getColumn() > 0)) && (table.getSelectionIndex() > -1)) {
1307
1308
					displayMode |= DatapoolMenuManager.EDIT_COLUMN_ACTION_ENABLED;
1309
1310
					if(getDatapool().getVariableCount() > 1){
1311
						displayMode |= DatapoolMenuManager.DELETE_COLUMN_ACTION_ENABLED;
1312
					}						
1313
	            }
1314
			}
1315
1316
		    //Set the display modes for the copy edit action:
1317
			if((!table.isDisposed()) && (table.getSelectionCount() > 0) && (tableUtil.getColumnCount() > 1) && (recordCount > 0)){
1318
1319
				displayMode |= DatapoolMenuManager.CUT_ACTION_ENABLED;
1320
				displayMode |= DatapoolMenuManager.COPY_ACTION_ENABLED;
1321
				
1322
				if(!DatapoolClipboard.getInstance().isEmpty()){
1323
					displayMode |= DatapoolMenuManager.PASTE_ACTION_ENABLED;					
1324
				}
1325
				
1326
				displayMode |= DatapoolMenuManager.FIND_REPLACE_ACTION_ENABLED;
1327
			}
1328
			
1329
			datapoolMenuManager.setDisplayMode(displayMode);			
1330
		}
1331
	}
1332
1333
	/**
1334
	 * Sets the mode for the header context menu.
1335
	 * 
1336
	 * @param datapoolMenuManager Datapool menu manager.
1337
	 */
1338
	private void setHeaderMenuMode(DatapoolMenuManager datapoolMenuManager){
1339
		
1340
		if(datapoolMenuManager != null){
1341
						
1342
			int displayMode = 0;
1343
1344
			if((!datapoolEditorPart.isReadOnly()) && (equivalenceClass != null)){
1345
			
1346
				//Set the display modes for the columns actions:
1347
				displayMode |= DatapoolMenuManager.INSERT_COLUMN_ACTION_ENABLED;
1348
1349
				if (headerSelectionIndex > 0) {
1350
1351
					displayMode |= DatapoolMenuManager.EDIT_COLUMN_ACTION_ENABLED;
1352
1353
					if(getDatapool().getVariableCount() > 1){
1354
						displayMode |= DatapoolMenuManager.DELETE_COLUMN_ACTION_ENABLED;
1355
					}						
1356
	            }
1357
			}
1358
1359
			datapoolMenuManager.setDisplayMode(displayMode);			
1360
		}
1361
	}
1362
	
1211
	/* 
1363
	/* 
1212
	 * Creates the table widget and viewer.  Populates the table from the datapool.
1364
	 * Creates the table widget and viewer.  Populates the table from the datapool.
1213
	 */
1365
	 */
Lines 1800-1875 Link Here
1800
	/** 
1952
	/** 
1801
	 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
1953
	 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
1802
	 */
1954
	 */
1803
	public void widgetDefaultSelected(SelectionEvent e) 
1955
	public void widgetDefaultSelected(SelectionEvent e){
1804
	{
1956
		//No-operation.
1805
	}
1806
	
1807
		
1808
	// IMenuListener
1809
		
1810
	/**
1811
 	* see menuAboutToShow(org.eclipse.jface.action.IMenuManager) in org.eclipse.jface.action.IMenuListener
1812
	*/
1813
	public void menuAboutToShow(IMenuManager imenuMgr)
1814
	{
1815
		datapoolMenuManager.addActions(imenuMgr);
1816
		setMenuMode(datapoolMenuManager);
1817
	}
1957
	}
1818
	
1819
	// Action handlers
1820
	
1821
	/**
1822
	 * @param dpMenuManager
1823
	 */
1824
	private void setMenuMode(DatapoolMenuManager dpMenuManager) 
1825
	{
1826
		if(dpMenuManager != null){
1827
						
1828
			int displayMode = 0;
1829
			int recordCount = equivalenceClass.getRecordCount();
1830
1831
			if((!datapoolEditorPart.isReadOnly()) && (equivalenceClass != null)){
1832
			
1833
		    	//Set the display modes for the row actions:
1834
				displayMode |= DatapoolMenuManager.INSERT_ROW_ACTION_ENABLED;
1835
1836
				if(recordCount > 0){
1837
1838
					displayMode |= DatapoolMenuManager.DELETE_ROW_ACTION_ENABLED;
1839
					
1840
					if(recordCount > 1){
1841
						displayMode |= DatapoolMenuManager.EDIT_ROW_ACTION_ENABLED;					
1842
					}
1843
				}
1844
1845
				//Set the display modes for the columns actions:
1846
				displayMode |= DatapoolMenuManager.INSERT_COLUMN_ACTION_ENABLED;
1847
1848
				if (((tableCursor != null) && (!tableCursor.isDisposed()) && (tableCursor.getColumn() > 0)) && (table.getSelectionIndex() > -1)) {
1849
1850
					if(getDatapool().getVariableCount() > 1){
1851
						displayMode |= DatapoolMenuManager.DELETE_COLUMN_ACTION_ENABLED;
1852
					}
1853
						
1854
					displayMode |= DatapoolMenuManager.EDIT_COLUMN_ACTION_ENABLED;
1855
	            }
1856
			}
1857
1858
		    //Set the display modes for the copy edit action:
1859
			if((!table.isDisposed()) && (table.getSelectionCount() > 0) && (tableUtil.getColumnCount() > 1) && (recordCount > 0)){
1860
1861
				displayMode |= DatapoolMenuManager.CUT_ACTION_ENABLED;
1862
				displayMode |= DatapoolMenuManager.COPY_ACTION_ENABLED;
1863
				
1958
				
1864
				if(!DatapoolClipboard.getInstance().isEmpty()){
1865
					displayMode |= DatapoolMenuManager.PASTE_ACTION_ENABLED;					
1866
				}
1867
			}
1868
			
1869
			dpMenuManager.setDisplayMode(displayMode);			
1870
		}
1871
	}
1872
1873
	/**
1959
	/**
1874
	 * Inserts a new record/row to the table before the current record.
1960
	 * Inserts a new record/row to the table before the current record.
1875
	 */
1961
	 */
Lines 2011-2021 Link Here
2011
	 */
2097
	 */
2012
	public void insertColumn()
2098
	public void insertColumn()
2013
	{
2099
	{
2014
		if(showVariables == false)
2100
		if(showVariables == false){
2015
			return;
2101
			return;
2102
		}
2103
		
2016
		int selectedColumnIndex = -1;
2104
		int selectedColumnIndex = -1;
2017
		if(tableCursor != null && !tableCursor.isDisposed())
2105
		
2106
		if(headerSelectionIndex != -1){
2107
			
2108
			selectedColumnIndex = headerSelectionIndex;
2109
			
2110
			headerSelectionIndex = -1;
2111
		}
2112
		else if(tableCursor != null && !tableCursor.isDisposed()){
2018
			selectedColumnIndex = tableCursor.getColumn();
2113
			selectedColumnIndex = tableCursor.getColumn();
2114
		}
2115
		
2019
		TableColumn previousTableColumn = null;
2116
		TableColumn previousTableColumn = null;
2020
		if(selectedColumnIndex > 0)
2117
		if(selectedColumnIndex > 0)
2021
			previousTableColumn = table.getColumn(selectedColumnIndex - 1);
2118
			previousTableColumn = table.getColumn(selectedColumnIndex - 1);
Lines 2129-2135 Link Here
2129
2226
2130
	/*
2227
	/*
2131
	 * Deletes the currently selected variable/column.  Removes the column and 
2228
	 * Deletes the currently selected variable/column.  Removes the column and 
2132
	 * all assocaited cells from the datapool object.  Removes the column from 
2229
	 * all associated cells from the datapool object.  Removes the column from 
2133
	 * the table.
2230
	 * the table.
2134
	 */
2231
	 */
2135
	public void deleteColumn()
2232
	public void deleteColumn()
Lines 2155-2163 Link Here
2155
			else
2252
			else
2156
				return;
2253
				return;
2157
		}
2254
		}
2158
		else
2255
		else{
2159
		{
2256
			
2160
			int selectedColumnIndex = tableCursor.getColumn();
2257
			int selectedColumnIndex = -1;
2258
			
2259
			if(headerSelectionIndex != -1){
2260
				
2261
				selectedColumnIndex = headerSelectionIndex;
2262
				
2263
				headerSelectionIndex = -1;
2264
			}
2265
			else if(tableCursor != null && !tableCursor.isDisposed()){
2266
				selectedColumnIndex = tableCursor.getColumn();
2267
			}
2161
	
2268
	
2162
			// Don't delete the row name column.
2269
			// Don't delete the row name column.
2163
			if (selectedColumnIndex < 1)	
2270
			if (selectedColumnIndex < 1)	
Lines 2186-2196 Link Here
2186
	 * variable in the datapool object.  Updates the table to reflect the edit 
2293
	 * variable in the datapool object.  Updates the table to reflect the edit 
2187
	 * and/or move.
2294
	 * and/or move.
2188
	 */
2295
	 */
2189
	public void editColumn()
2296
	public void editColumn(){
2190
	{
2297
		
2191
		int selectedColumnIndex = tableCursor.getColumn();
2298
		int selectedColumnIndex = -1;
2192
		TableColumn tableColumn = (TableColumn) table.getColumn(selectedColumnIndex);
2299
		
2193
		editColumnAux(tableColumn);		
2300
		if(headerSelectionIndex != -1){
2301
			
2302
			selectedColumnIndex = headerSelectionIndex;
2303
			
2304
			headerSelectionIndex = -1;
2305
		}
2306
		else if(tableCursor != null && !tableCursor.isDisposed()){
2307
			selectedColumnIndex = tableCursor.getColumn();
2308
		}
2309
		
2310
		editColumnAux(((TableColumn)(table.getColumn(selectedColumnIndex))));		
2194
	}
2311
	}
2195
2312
2196
	/*
2313
	/*
Lines 3611-3629 Link Here
3611
	    return this.equivalenceClass;
3728
	    return this.equivalenceClass;
3612
	}
3729
	}
3613
3730
3614
	/**
3615
	 * @see org.eclipse.swt.events.MenuListener#menuHidden(org.eclipse.swt.events.MenuEvent)
3616
	 */
3617
	public void menuHidden(MenuEvent e) {
3618
	}
3619
3620
	/**
3621
	 * @see org.eclipse.swt.events.MenuListener#menuShown(org.eclipse.swt.events.MenuEvent)
3622
	 */
3623
	public void menuShown(MenuEvent e) {	
3624
		setMenuMode(datapoolMenuManager);
3625
	}
3626
	
3627
	public void setPassword(String password){
3731
	public void setPassword(String password){
3628
		this.password = password;
3732
		this.password = password;
3629
	}
3733
	}

Return to bug 64786