List of usage examples for org.eclipse.jface.viewers FocusCellHighlighter FocusCellHighlighter
public FocusCellHighlighter(ColumnViewer viewer)
From source file:com.gorillalogic.monkeyconsole.tableview.MonkeyTalkTabularEditor.java
License:Open Source License
/** * Creates the main window's contents/* w w w. j a v a 2 s . c o m*/ * * @param parent * the main window * @return Control */ protected Control createContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(1, false)); // Add the TableViewer tv = new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); tv.setContentProvider(new CommandContentProvider()); tv.setInput(commands); table = tv.getTable(); table.setLayoutData(new GridData(GridData.FILL_BOTH)); TableColumnLayout layout = new TableColumnLayout(); composite.setLayout(layout); // Row Number Column TableViewerColumn row_col = createTableViewerColumn(ROW, 100, 0); row_col.setLabelProvider(new RowNumberLabelProvider(commands)); layout.setColumnData(row_col.getColumn(), new ColumnWeightData(10)); // Component Type Column TableViewerColumn component_col = createTableViewerColumn(COMPONENT, 100, 1); component_col.setLabelProvider(new ComponentLabelProvider()); component_col.setEditingSupport(new ComponentEditingSupport(tv, limitedComponentSet) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(component_col.getColumn(), new ColumnWeightData(30)); TableViewerColumn monkeyid_col = createTableViewerColumn(MONKEYID, 100, 2); monkeyid_col.setLabelProvider(new MonkeyidLabelProvider()); monkeyid_col.setEditingSupport(new MonkeyidEditingSupport(tv) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(monkeyid_col.getColumn(), new ColumnWeightData(25)); TableViewerColumn action_col = createTableViewerColumn(ACTION, 100, 3); action_col.setLabelProvider(new ActionLabelProvider()); action_col.setEditingSupport(new ActionEditingSupport(tv) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(action_col.getColumn(), new ColumnWeightData(30)); TableViewerColumn args_col = createTableViewerColumn(ARGS, 100, 4); args_col.setLabelProvider(new ArgsLabelProvider()); args_col.setEditingSupport(new ArgsEditingSupport(tv) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(args_col.getColumn(), new ColumnWeightData(40)); TableViewerColumn timeout_col = createTableViewerColumn(TIMEOUT, 100, 5); timeout_col.setLabelProvider(new TimeoutLabelProvider()); timeout_col.setEditingSupport(new TimeoutEditingSupport(tv) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(timeout_col.getColumn(), new ColumnWeightData(20)); TableViewerColumn thinktime_col = createTableViewerColumn(THINKTIME, 100, 6); thinktime_col.setLabelProvider(new ThinktimeLabelProvider()); thinktime_col.setEditingSupport(new ThinktimeEditingSupport(tv) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(thinktime_col.getColumn(), new ColumnWeightData(20)); String extencion = FilenameUtils .getExtension(((FileEditorInput) this.getEditorInput()).getPath().toFile().getName()); if (extencion.equals("mt")) { TableViewerColumn shouldfail_col = createTableViewerColumn(SHOULDFAIL, 100, 7); shouldfail_col.getColumn().setAlignment(SWT.CENTER); shouldfail_col.setLabelProvider(new ShouldFailLabelProvider(tv)); shouldfail_col.setEditingSupport(new ShouldFailEditingSupport(tv) { public void dataChanged() { MonkeyTalkTabularEditor.this.doDataChanged(); }; }); layout.setColumnData(shouldfail_col.getColumn(), new ColumnWeightData(15)); } tv.getTable().addListener(SWT.MenuDetect, new Listener() { public void handleEvent(Event event) { if (menueventsCaught != event.time) { new ContextMenu(MonkeyTalkTabularEditor.this, event).show(); menueventsCaught = event.time; } } }); table.addListener(SWT.MouseDoubleClick, new Listener() { @Override public void handleEvent(Event e) { TableItem item = table.getItem(new Point(e.x, e.y)); if (item == null) { } else { // click link case String comp = ((TableRow) item.getData()).getComponentType(); if (comp != null && (comp.equalsIgnoreCase("Script") || comp.equalsIgnoreCase("Test") || comp.equalsIgnoreCase("SetUp") || comp.equalsIgnoreCase("Teardown"))) { try { IEditorPart ieditorpart = MonkeyTalkTabularEditor.this.getEditorSite().getPage() .getActiveEditor(); String dotMt = ".mt"; if (((TableRow) item.getData()).getMonkeyId().contains(".mt") || ((TableRow) item.getData()).getMonkeyId().contains(".js")) { dotMt = ""; } IFile fileToBeOpened = ((IFileEditorInput) ieditorpart.getEditorInput()).getFile() .getProject().getFile(((TableRow) item.getData()).getMonkeyId() + dotMt); IEditorInput editorInput = new FileEditorInput(fileToBeOpened); MonkeyTalkTabularEditor.this.getEditorSite().getPage().openEditor(editorInput, "com.gorillalogic.monkeyconsole.editors.FoneMonkeyTestEditor"); commandKeyDown = false; } catch (CoreException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } } } }); table.addListener(SWT.MouseUp, new Listener() { @Override public void handleEvent(Event e) { TableItem item = table.getItem(new Point(e.x, e.y)); if (item == null) { if (e.y < (table.getItemCount() * table.getItemHeight()) + table.getItemHeight()) { appendRow(); } } else { // click link case String comp = ((TableRow) item.getData()).getComponentType(); if (comp != null && commandKeyDown && tv.getCell(new Point(e.x, e.y)).getColumnIndex() == 2 && (comp.equalsIgnoreCase("Script") || comp.equalsIgnoreCase("Test") || comp.equalsIgnoreCase("Run") || comp.equalsIgnoreCase("RunWith") || comp.equalsIgnoreCase("SetUp") || comp.equalsIgnoreCase("Teardown"))) { try { IEditorPart ieditorpart = MonkeyTalkTabularEditor.this.getEditorSite().getPage() .getActiveEditor(); IFile fileToBeOpened = ((IFileEditorInput) ieditorpart.getEditorInput()).getFile() .getProject().getFile(tv.getCell(new Point(e.x, e.y)).getText() + ".mt"); IEditorInput editorInput = new FileEditorInput(fileToBeOpened); MonkeyTalkTabularEditor.this.getEditorSite().getPage().openEditor(editorInput, "com.gorillalogic.monkeyconsole.editors.FoneMonkeyTestEditor"); commandKeyDown = false; } catch (CoreException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } } } }); // FOCUS TRAVERSAL FocusCellHighlighter highlighter = new FocusCellHighlighter(tv) { }; TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(tv, highlighter) { }; ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(tv) { protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TableViewerEditor.create(tv, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); table.setHeaderVisible(true); table.setLinesVisible(true); table.addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent arg0) { if (arg0.keyCode == SWT.CTRL || arg0.keyCode == SWT.COMMAND) { commandKeyDown = true; } } @Override public void keyReleased(KeyEvent arg0) { if (arg0.keyCode == SWT.CTRL || arg0.keyCode == SWT.COMMAND) { commandKeyDown = false; } if (commandKeyDown && (arg0.character == 'P' || arg0.character == 'p')) { if (monkeyControls.isCurrentlyConnected() && !monkeyControls.isRecordingON() && getLimitedComponentSet() == null) monkeyControls.startReplayRange(tv.getTable().getSelectionIndex(), tv.getTable().getSelectionIndex() + tv.getTable().getSelectionCount()); } System.out.println(arg0.keyCode); if (arg0.keyCode == SWT.DEL || arg0.keyCode == 8) { deleteRows(getTv().getTable().getSelectionIndices()); } } }); int ops = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transfers = new Transfer[] { TextTransfer.getInstance() }; tv.addDropSupport(ops, transfers, new GadgetTableDropAdapter(tv)); return composite; }