|
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 |
} |