Example usage for org.eclipse.jface.viewers FocusCellHighlighter FocusCellHighlighter

List of usage examples for org.eclipse.jface.viewers FocusCellHighlighter FocusCellHighlighter

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers FocusCellHighlighter FocusCellHighlighter.

Prototype

public FocusCellHighlighter(ColumnViewer viewer) 

Source Link

Usage

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