Example usage for org.eclipse.jface.viewers ViewerCell getNeighbor

List of usage examples for org.eclipse.jface.viewers ViewerCell getNeighbor

Introduction

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

Prototype

public ViewerCell getNeighbor(int directionMask, boolean sameLevel) 

Source Link

Document

Returns the specified neighbor of this cell, or null if no neighbor exists in the given direction.

Usage

From source file:com.maccasoft.composer.internal.TextEditingSupport.java

License:Open Source License

@Override
protected CellEditor getCellEditor(Object element) {
    if (cellEditor == null) {
        cellEditor = new TextCellEditor((Composite) getViewer().getControl(), SWT.CENTER) {

            @Override/*www .  j  ava  2  s. c om*/
            protected void keyReleaseOccured(KeyEvent e) {
                if (e.keyCode == SWT.ARROW_UP) {
                    fireApplyEditorValue();
                    deactivate();

                    ViewerCell cell = getViewer().getColumnViewerEditor().getFocusCell();
                    if (cell != null) {
                        final ViewerCell nextCell = cell.getNeighbor(ViewerCell.ABOVE, false);
                        if (nextCell != null) {
                            getViewer().getControl().getDisplay().asyncExec(new Runnable() {

                                @Override
                                public void run() {
                                    GridTableViewer viewer = (GridTableViewer) getViewer();
                                    Grid grid = (Grid) viewer.getControl();
                                    if (!grid.isDisposed()) {
                                        viewer.editElement(nextCell.getElement(), nextCell.getColumnIndex());
                                    }
                                }
                            });
                        }
                    }
                    e.doit = false;
                } else if (e.keyCode == SWT.ARROW_DOWN) {
                    fireApplyEditorValue();
                    deactivate();

                    ViewerCell cell = getViewer().getColumnViewerEditor().getFocusCell();
                    if (cell != null) {
                        final ViewerCell nextCell = cell.getNeighbor(ViewerCell.BELOW, false);
                        if (nextCell != null) {
                            getViewer().getControl().getDisplay().asyncExec(new Runnable() {

                                @Override
                                public void run() {
                                    GridTableViewer viewer = (GridTableViewer) getViewer();
                                    Grid grid = (Grid) viewer.getControl();
                                    if (!grid.isDisposed()) {
                                        viewer.editElement(nextCell.getElement(), nextCell.getColumnIndex());
                                    }
                                }
                            });
                        }
                    }
                    e.doit = false;
                }
                super.keyReleaseOccured(e);
            }
        };
    }
    return cellEditor;
}

From source file:com.maccasoft.composer.NoteKeyListener.java

License:Open Source License

@Override
public void keyPressed(KeyEvent e) {
    IStructuredSelection selection = viewer.getStructuredSelection();
    if (selection.isEmpty()) {
        return;/*  w  ww  . jav a2 s  .  c  o m*/
    }

    SongRow model = (SongRow) selection.getFirstElement();

    final ViewerCell cell = viewer.getColumnViewerEditor().getFocusCell();
    int channel = cell.getColumnIndex() / 4;
    int columnIndex = cell.getColumnIndex() % 4;

    if (columnIndex == 0) {
        String s = noteMap.get(e.character);
        if (s != null) {
            model.setNote(channel, s + String.valueOf(getOctave()));
            if ("".equals(model.getInstrument(channel))) {
                model.setInstrument(channel, getInstrument());
            }
            viewer.update(model, null);

            final ViewerCell nextCell = cell.getNeighbor(ViewerCell.BELOW, false);
            if (nextCell != null) {
                final Event event1 = new Event();
                event1.type = SWT.KeyDown;
                event1.keyCode = SWT.ARROW_DOWN;
                event1.widget = e.widget;
                final Event event2 = new Event();
                event2.type = SWT.KeyUp;
                event2.keyCode = SWT.ARROW_DOWN;
                event2.widget = e.widget;

                final Display display = e.display;
                display.asyncExec(new Runnable() {

                    @Override
                    public void run() {
                        if (event1.widget.isDisposed()) {
                            return;
                        }
                        display.post(event1);
                        display.post(event2);
                    }
                });
            }
            e.doit = false;
            return;
        }
    }
    if (e.character == SWT.DEL) {
        if ((e.stateMask & SWT.MOD2) != 0) {
            removeEntryAndShiftUp(channel, model);
            viewer.refresh();
            e.doit = false;
            return;
        }
        switch (columnIndex) {
        case 0:
            model.setNote(channel, "");
            break;
        case 1:
            model.setInstrument(channel, "");
            break;
        case 2:
            model.setFx1(channel, "");
            break;
        case 3:
            model.setFx2(channel, "");
            break;
        }
        viewer.update(model, null);
        e.doit = false;
        return;
    }
    if (e.keyCode == SWT.INSERT) {
        insertBlankAndShiftDown(channel, model);
        viewer.refresh();
        e.doit = false;
        return;
    }
    if (e.character >= 0x20 && e.character <= 0x7F) {
        e.doit = false;
        return;
    }
}

From source file:org.bonitasoft.studio.contract.ui.property.AddRowOnEnterCellNavigationStrategy.java

License:Open Source License

protected ViewerCell removeRow(final ViewerCell currentSelectedCell) {
    final ViewerCell aboveCell = currentSelectedCell.getNeighbor(ViewerCell.ABOVE, false);
    controller.remove(viewer);//from w w  w .ja  v  a 2  s .c o  m
    updateSelection(aboveCell);
    return aboveCell;
}

From source file:org.bonitasoft.studio.contract.ui.property.AddRowOnEnterCellNavigationStrategy.java

License:Open Source License

protected ViewerCell addNewRow(final ViewerCell currentSelectedCell, final Event event) {
    if (isContractInputNameColumn(currentSelectedCell)) {
        ViewerCell nextCell = currentSelectedCell.getNeighbor(ViewerCell.BELOW, false);
        if (nextCell == null) {
            setCancelEvent(true);// w  w w .j ava 2s.c  o m
            controller.add(viewer);
            nextCell = currentSelectedCell.getNeighbor(ViewerCell.BELOW, false);
            updateSelection(nextCell);
            return nextCell;
        }
    }
    return null;
}

From source file:org.eclipse.linuxtools.dataviewers.findreplace.STTableFindReplaceTarget.java

License:Open Source License

private ViewerCell searchInRow(ViewerRow row, int index, String findString, boolean searchForward,
        boolean caseSensitive, boolean wholeWord, int dirCell, boolean regExSearch) {
    Pattern pattern = null;/*from   w w w .  ja  v  a  2s .  c  om*/
    if (regExSearch) {
        pattern = Pattern.compile(findString);
    }

    ISTDataViewersField[] fields = getAllFields();

    ViewerCell cell = row.getCell(index);

    do {
        String text = "";

        ISTDataViewersField field = fields[cell.getColumnIndex()];
        if (field.getSpecialDrawer(cell.getElement()) != null) {
            ISpecialDrawerListener hfield = (ISpecialDrawerListener) field;
            text = hfield.getValue(cell.getElement()).trim();
        } else
            text = cell.getText().trim();
        boolean ok = false;

        if (regExSearch) {
            Matcher matcher = pattern.matcher(text);
            ok = matcher.find();
        } else {

            if (wholeWord) {
                if (caseSensitive)
                    ok = text.equals(findString);
                else
                    ok = text.equalsIgnoreCase(findString);
            } else {
                ok = text.contains(findString);

                if (ok && caseSensitive) {
                    text.indexOf(findString);
                }
            }
        }

        if (ok) {
            _viewer.reveal(cell.getElement());
            if (((TableViewer) _viewer).getTable().getSelectionCount() > 0) {
                TableViewer tv = (TableViewer) _viewer;
                Table table = tv.getTable();
                table.deselect(table.indexOf((TableItem) row.getItem()));
            }

            return cell;

        }
        cell = cell.getNeighbor(dirCell, true);
    } while (cell != null);

    return null;
}

From source file:org.eclipse.linuxtools.dataviewers.findreplace.STTreeFindReplaceTarget.java

License:Open Source License

private ViewerCell searchInRow(ViewerRow row, int index, String findString, boolean searchForward,
        boolean caseSensitive, boolean wholeWord, int dirCell, boolean regExSearch) {
    Pattern pattern = null;/* w  ww  .  ja  v  a 2 s .c  o m*/
    if (regExSearch) {
        pattern = Pattern.compile(findString);
    }

    ISTDataViewersField[] fields = getAllFields();

    ViewerCell cell = row.getCell(index);

    do {
        String text = "";

        ISTDataViewersField field = fields[cell.getColumnIndex()];
        if (field.getSpecialDrawer(cell.getElement()) != null) {
            ISpecialDrawerListener hfield = (ISpecialDrawerListener) field;
            text = hfield.getValue(cell.getElement()).trim();
        } else
            text = cell.getText().trim();

        boolean ok = false;

        if (regExSearch) {
            Matcher matcher = pattern.matcher(text);
            ok = matcher.find();
        } else {
            if (wholeWord) {
                if (caseSensitive)
                    ok = text.equals(findString);
                else
                    ok = text.equalsIgnoreCase(findString);
            } else {
                ok = text.contains(findString);

                if (ok && caseSensitive) {
                    text.indexOf(findString);
                }
            }
        }

        if (ok) {
            _viewer.reveal(cell.getElement());

            if (fSelections != null && fSelections.indexOf(row.getItem()) != -1)
                _viewer.getTree().deselectAll();

            return cell;

        }
        cell = cell.getNeighbor(dirCell, true);
    } while (cell != null);

    return null;
}