List of usage examples for org.eclipse.jface.viewers TreeViewerFocusCellManager getFocusCell
@Override
public ViewerCell getFocusCell()
From source file:Snippet048TreeViewerTabWithCheckboxFor3_3.java
License:Open Source License
public Snippet048TreeViewerTabWithCheckboxFor3_3(final Shell shell) { final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION); v.getTree().setLinesVisible(true);//from ww w . j a va2 s .c om v.getTree().setHeaderVisible(true); final TreeViewerFocusCellManager mgr = new TreeViewerFocusCellManager(v, new FocusCellOwnerDrawHighlighter(v)); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v) { protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && (event.keyCode == SWT.CR || event.character == ' ')) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TreeViewerEditor.create(v, mgr, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); final TextCellEditor textCellEditor = new TextCellEditor(v.getTree()); final CheckboxCellEditor checkboxCellEditor = new CheckboxCellEditor(v.getTree()); TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(true); column.getColumn().setText("Column 1"); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { return "Column 1 => " + element.toString(); } }); column.setEditingSupport(new EditingSupport(v) { protected boolean canEdit(Object element) { return false; } protected CellEditor getCellEditor(Object element) { return textCellEditor; } protected Object getValue(Object element) { return ((MyModel) element).counter + ""; } protected void setValue(Object element, Object value) { ((MyModel) element).counter = Integer.parseInt(value.toString()); v.update(element, null); } }); column = new TreeViewerColumn(v, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(true); column.getColumn().setText("Column 2"); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { return "Column 2 => " + element.toString(); } }); column.setEditingSupport(new EditingSupport(v) { protected boolean canEdit(Object element) { return true; } protected CellEditor getCellEditor(Object element) { return textCellEditor; } protected Object getValue(Object element) { return ((MyModel) element).counter + ""; } protected void setValue(Object element, Object value) { ((MyModel) element).counter = Integer.parseInt(value.toString()); v.update(element, null); } }); column = new TreeViewerColumn(v, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(true); column.getColumn().setText("Column 3"); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { return ((MyModel) element).bool + ""; } }); column.setEditingSupport(new EditingSupport(v) { protected boolean canEdit(Object element) { return true; } protected CellEditor getCellEditor(Object element) { return checkboxCellEditor; } protected Object getValue(Object element) { return new Boolean(((MyModel) element).bool); } protected void setValue(Object element, Object value) { ((MyModel) element).bool = ((Boolean) value).booleanValue(); v.update(element, null); } }); v.setContentProvider(new MyContentProvider()); v.setInput(createModel()); v.getControl().addTraverseListener(new TraverseListener() { public void keyTraversed(TraverseEvent e) { if ((e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) && mgr.getFocusCell().getColumnIndex() == 2) { ColumnViewerEditor editor = v.getColumnViewerEditor(); ViewerCell cell = mgr.getFocusCell(); try { Method m = ColumnViewerEditor.class.getDeclaredMethod("processTraverseEvent", new Class[] { int.class, ViewerRow.class, TraverseEvent.class }); m.setAccessible(true); m.invoke(editor, new Object[] { new Integer(cell.getColumnIndex()), cell.getViewerRow(), e }); } catch (SecurityException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NoSuchMethodException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); }
From source file:org.eclipse.jface.snippets.viewers.Snippet048TreeViewerTabWithCheckboxFor3_3.java
License:Open Source License
public Snippet048TreeViewerTabWithCheckboxFor3_3(final Shell shell) { final TreeViewer v = new TreeViewer(shell, SWT.BORDER | SWT.FULL_SELECTION); v.getTree().setLinesVisible(true);// w ww. ja va 2s. co m v.getTree().setHeaderVisible(true); final TreeViewerFocusCellManager mgr = new TreeViewerFocusCellManager(v, new FocusCellOwnerDrawHighlighter(v)); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(v) { @Override protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && (event.keyCode == SWT.CR || event.character == ' ')) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TreeViewerEditor.create(v, mgr, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); final TextCellEditor textCellEditor = new TextCellEditor(v.getTree()); final CheckboxCellEditor checkboxCellEditor = new CheckboxCellEditor(v.getTree()); TreeViewerColumn column = new TreeViewerColumn(v, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(true); column.getColumn().setText("Column 1"); column.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return "Column 1 => " + element; } }); column.setEditingSupport(new EditingSupport(v) { @Override protected boolean canEdit(Object element) { return false; } @Override protected CellEditor getCellEditor(Object element) { return textCellEditor; } @Override protected Object getValue(Object element) { return ((MyModel) element).counter + ""; } @Override protected void setValue(Object element, Object value) { ((MyModel) element).counter = Integer.parseInt(value.toString()); v.update(element, null); } }); column = new TreeViewerColumn(v, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(true); column.getColumn().setText("Column 2"); column.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return "Column 2 => " + element; } }); column.setEditingSupport(new EditingSupport(v) { @Override protected boolean canEdit(Object element) { return true; } @Override protected CellEditor getCellEditor(Object element) { return textCellEditor; } @Override protected Object getValue(Object element) { return ((MyModel) element).counter + ""; } @Override protected void setValue(Object element, Object value) { ((MyModel) element).counter = Integer.parseInt(value.toString()); v.update(element, null); } }); column = new TreeViewerColumn(v, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setMoveable(true); column.getColumn().setText("Column 3"); column.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return ((MyModel) element).bool + ""; } }); column.setEditingSupport(new EditingSupport(v) { @Override protected boolean canEdit(Object element) { return true; } @Override protected CellEditor getCellEditor(Object element) { return checkboxCellEditor; } @Override protected Object getValue(Object element) { return Boolean.valueOf(((MyModel) element).bool); } @Override protected void setValue(Object element, Object value) { ((MyModel) element).bool = ((Boolean) value).booleanValue(); v.update(element, null); } }); v.setContentProvider(new MyContentProvider()); v.setInput(createModel()); v.getControl().addTraverseListener(new TraverseListener() { @Override public void keyTraversed(TraverseEvent e) { if ((e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == SWT.TRAVERSE_TAB_PREVIOUS) && mgr.getFocusCell().getColumnIndex() == 2) { ColumnViewerEditor editor = v.getColumnViewerEditor(); ViewerCell cell = mgr.getFocusCell(); try { Method m = ColumnViewerEditor.class.getDeclaredMethod("processTraverseEvent", new Class[] { int.class, ViewerRow.class, TraverseEvent.class }); m.setAccessible(true); m.invoke(editor, Integer.valueOf(cell.getColumnIndex()), cell.getViewerRow(), e); } catch (SecurityException | NoSuchMethodException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); }
From source file:org.eclipse.jubula.client.ui.rcp.views.JBPropertiesPage.java
License:Open Source License
/** * Workaround for ticket #3012. Prevents odd cell selection * behavior by pre-emptively setting the focus cell, if it is not already * set. This workaround relies <b>heavily</b> on reflection. so the smallest * change to JFace might break it. A try-catch(throwable) block is used to * minimize the damage that such a breakage would cause. Worst-case * scenario: The bug is not fixed and a small performance penalty is * incurred by looking everything up via reflection. * //ww w . jav a 2 s . co m * @param focusCellManager The focus manager on which to perform the * workaround. */ private void workaroundSpringySelection(TreeViewerFocusCellManager focusCellManager) { try { if (focusCellManager.getFocusCell() == null) { Class focusManagerClass = focusCellManager.getClass(); Class abstractFocusManagerClass = focusManagerClass.getSuperclass(); Method getInitialFocusCellMethod = focusManagerClass.getDeclaredMethod("getInitialFocusCell", //$NON-NLS-1$ new Class[0]); Method setFocusCellMethod = abstractFocusManagerClass.getDeclaredMethod("setFocusCell", //$NON-NLS-1$ ViewerCell.class); getInitialFocusCellMethod.setAccessible(true); setFocusCellMethod.setAccessible(true); Object initialFocusCellObj = getInitialFocusCellMethod.invoke(focusCellManager, new Object[0]); if (initialFocusCellObj instanceof ViewerCell) { ViewerCell initialFocusCell = (ViewerCell) initialFocusCellObj; setFocusCellMethod.invoke(focusCellManager, initialFocusCell); } } } catch (Throwable t) { LOG.info(Messages.ErrorInWorkaroundForSpringySelection, t); } }