Example usage for org.eclipse.jface.viewers ColumnViewerEditorActivationEvent PROGRAMMATIC

List of usage examples for org.eclipse.jface.viewers ColumnViewerEditorActivationEvent PROGRAMMATIC

Introduction

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

Prototype

int PROGRAMMATIC

To view the source code for org.eclipse.jface.viewers ColumnViewerEditorActivationEvent PROGRAMMATIC.

Click Source Link

Document

if a cell is activated using code like e.g ColumnViewer#editElement(Object,int)

Usage

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  w w w  .j  a v a  2  s  .  c o  m
    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:au.gov.ga.earthsci.application.parts.layer.LayerTreePart.java

License:Apache License

@PostConstruct
public void init(Composite parent, EMenuService menuService) {
    LayerOpacityToolControl.setPartContext(context);

    viewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    viewer.getTree().setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, viewer);

    clipboard = new Clipboard(shell.getDisplay());
    context.set(Clipboard.class, clipboard);

    IListProperty childrenProperty = new MultiListProperty(
            new IListProperty[] { BeanProperties.list("children") }); //$NON-NLS-1$

    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            childrenProperty.listFactory(), null);
    viewer.setContentProvider(contentProvider);

    //TreeViewerEditor.create(viewer, new SecondClickColumnViewerEditorActivationStrategy(viewer), ColumnViewerEditor.DEFAULT);

    IObservableSet knownElements = contentProvider.getKnownElements();
    IObservableMap enabledMap = BeanProperties.value("enabled").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap opacityMap = BeanProperties.value("opacity").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap nameMap = BeanProperties.value("name").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap labelMap = BeanProperties.value("label").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap statusMap = BeanProperties.value("status").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap anyChildrenEnabledMap = BeanProperties.value("anyChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap allChildrenEnabledMap = BeanProperties.value("allChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap childrenMap = BeanProperties.value("children").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap expandedMap = BeanProperties.value("expanded").observeDetail(knownElements); //$NON-NLS-1$

    IObservableMap[] labelAttributeMaps = new IObservableMap[] { enabledMap, opacityMap, nameMap, labelMap,
            anyChildrenEnabledMap, allChildrenEnabledMap, statusMap };

    labelProvider = new LayerTreeLabelProvider(labelAttributeMaps);
    viewer.setLabelProvider(labelProvider);
    viewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    viewer.setInput(model.getRootNode());
    viewer.setExpandedElements(getExpandedNodes());

    IMapChangeListener childrenListener = new IMapChangeListener() {
        @Override/*  ww w  . ja  v a  2  s.  co m*/
        public void handleMapChange(MapChangeEvent event) {
            //for any children added, expand the nodes
            Set<?> addedKeys = event.diff.getAddedKeys();
            for (Object o : addedKeys) {
                if (o instanceof ILayerTreeNode) {
                    ((ILayerTreeNode) o).getParent().getValue().setExpanded(true);
                }
            }
        }
    };
    IMapChangeListener expandedListener = new IMapChangeListener() {
        @Override
        public void handleMapChange(MapChangeEvent event) {
            //ensure the expanded elements are kept in sync with the model
            viewer.getTree().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    if (!viewer.getTree().isDisposed()) {
                        viewer.setExpandedElements(getExpandedNodes());
                    }
                }
            });
        }
    };
    childrenMap.addMapChangeListener(childrenListener);
    childrenMap.addMapChangeListener(expandedListener);
    expandedMap.addMapChangeListener(expandedListener);

    viewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            selectionService.setSelection(array.length == 1 ? array[0] : array);
        }
    });

    viewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    viewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null)
                return;

            ILayerTreeNode layer = (ILayerTreeNode) cell.getElement();
            selectLayer(layer);
        }

        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                viewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    viewer.getTree().addTraverseListener(new TraverseListener() {
        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_RETURN) {
                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                if (selection.size() == 1) {
                    ILayerTreeNode layer = (ILayerTreeNode) selection.getFirstElement();
                    selectLayer(layer);
                }
            }
        }
    });

    viewer.setCellEditors(new CellEditor[] { new TextCellEditor(viewer.getTree(), SWT.BORDER) });
    viewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$

    viewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(viewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    viewer.addDragSupport(ops, new Transfer[] { LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(viewer));
    viewer.addDropSupport(ops, new Transfer[] { LayerTransfer.getInstance(), FileTransfer.getInstance() },
            new LayerTreeDropAdapter(viewer, model, context));

    //add context menu
    menuService.registerContextMenu(viewer.getTree(), "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:au.gov.ga.earthsci.bookmark.part.BookmarksPart.java

License:Apache License

private void initList(Composite parent) {
    Composite tableHolder = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;//from ww w  .j  a  va2s.  c  o m
    gd.horizontalAlignment = GridData.FILL;
    tableHolder.setLayoutData(gd);

    TableColumnLayout layout = new TableColumnLayout();
    tableHolder.setLayout(layout);

    bookmarkListTableViewer = new TableViewer(tableHolder,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    bookmarkListTableViewer.getTable().setHeaderVisible(false);
    bookmarkListTableViewer.getTable().setLinesVisible(false);

    bookmarkListTableViewer.getTable().setLayoutData(gd);

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    bookmarkListTableViewer.setContentProvider(contentProvider);

    IObservableMap labelMap = BeanProperties.value("name").observeDetail(contentProvider.getKnownElements()); //$NON-NLS-1$

    TableViewerColumn column = new TableViewerColumn(bookmarkListTableViewer, SWT.LEFT);
    column.setEditingSupport(new BookmarkNameEditingSupport(bookmarkListTableViewer));
    column.setLabelProvider(new ObservableMapCellLabelProvider(labelMap) {
        @Override
        public void update(ViewerCell cell) {
            super.update(cell);
            cell.setText(" " + ((IBookmark) cell.getElement()).getName()); //$NON-NLS-1$
            cell.setImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_BOOKMARKS));
        }
    });
    ColumnLayoutData cld = new ColumnWeightData(12);
    layout.setColumnData(column.getColumn(), cld);

    // Allow edit (rename) only via programmatic access (rename command) 
    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            bookmarkListTableViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TableViewerEditor.create(bookmarkListTableViewer, activationStrategy,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    // Populate the current selection with the actual bookmark items
    bookmarkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) bookmarkListTableViewer.getSelection();
            List<?> list = selection.toList();
            selectionService.setSelection(list.toArray(new IBookmark[list.size()]));
        }
    });

    // Apply the bookmark on double click
    bookmarkListTableViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            controller.apply((IBookmark) ((IStructuredSelection) event.getSelection()).getFirstElement());
        }
    });

    // Deselect when clicking outside a valid row
    bookmarkListTableViewer.getTable().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            if (bookmarkListTableViewer.getTable().getItem(new Point(e.x, e.y)) == null) {
                bookmarkListTableViewer.setSelection(null);
            }
        }
    });

}

From source file:au.gov.ga.earthsci.bookmark.ui.BookmarksPart.java

License:Apache License

private void initList(Composite parent) {
    Composite tableHolder = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;// w  w w  . ja  v  a  2  s.c  o  m
    gd.horizontalAlignment = GridData.FILL;
    tableHolder.setLayoutData(gd);

    TableColumnLayout layout = new TableColumnLayout();
    tableHolder.setLayout(layout);

    bookmarkListTableViewer = new TableViewer(tableHolder,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    bookmarkListTableViewer.getTable().setHeaderVisible(false);
    bookmarkListTableViewer.getTable().setLinesVisible(false);

    bookmarkListTableViewer.getTable().setLayoutData(gd);

    ObservableListContentProvider<IBookmark> contentProvider = new ObservableListContentProvider<IBookmark>(
            IBookmark.class);
    bookmarkListTableViewer.setContentProvider(contentProvider);

    IObservableSet<IBookmark> knownElements = contentProvider.getKnownElements();
    IObservableMap<IBookmark, String> nameMap = BeanProperties.value(IBookmark.class, "name", String.class) //$NON-NLS-1$
            .observeDetail(knownElements);

    TableViewerColumn column = new TableViewerColumn(bookmarkListTableViewer, SWT.LEFT);
    column.setEditingSupport(new BookmarkNameEditingSupport(bookmarkListTableViewer));
    column.setLabelProvider(new ObservableMapCellLabelProvider<IBookmark, String>(nameMap) {
        @Override
        public void update(ViewerCell cell) {
            super.update(cell);
            cell.setText(" " + ((IBookmark) cell.getElement()).getName()); //$NON-NLS-1$
            cell.setImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_BOOKMARKS));
        }
    });
    ColumnLayoutData cld = new ColumnWeightData(12);
    layout.setColumnData(column.getColumn(), cld);

    // Allow edit (rename) only via programmatic access (rename command)
    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            bookmarkListTableViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TableViewerEditor.create(bookmarkListTableViewer, activationStrategy,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    // Populate the current selection with the actual bookmark items
    bookmarkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) bookmarkListTableViewer.getSelection();
            List<?> list = selection.toList();
            selectionService.setSelection(list.toArray(new IBookmark[list.size()]));
        }
    });

    // Apply the bookmark on double click
    bookmarkListTableViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            controller.apply((IBookmark) ((IStructuredSelection) event.getSelection()).getFirstElement());
        }
    });

    // Deselect when clicking outside a valid row
    bookmarkListTableViewer.getTable().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            if (bookmarkListTableViewer.getTable().getItem(new Point(e.x, e.y)) == null) {
                bookmarkListTableViewer.setSelection(null);
            }
        }
    });

}

From source file:au.gov.ga.earthsci.layer.ui.LayerTreePart.java

License:Apache License

protected void createStructureViewer(Composite parent, EMenuService menuService, CTabItem tabItem) {
    structureViewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    tabItem.setControl(structureViewer.getControl());
    structureViewer.getTree()//from www.  j  ava2  s .  c  om
            .setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, structureViewer);

    clipboard = new Clipboard(parent.getDisplay());
    context.set(Clipboard.class, clipboard);

    //create a property change listener for updating the labels whenever a property
    //changes on an ILayerTreeNode instance
    final PropertyChangeListener anyChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(final PropertyChangeEvent evt) {
            updateElementLabel(evt.getSource());
        }
    };
    //create a property change listener that ensures the expanded state of the tree
    //is kept in sync with the value of the expanded property for each node
    final PropertyChangeListener expandedChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            syncExpandedNodes();
        }
    };

    //setup the label provider
    labelProvider = new LayerTreeLabelProvider();

    //create a bean list property associated with ILayerTreeNode's children property
    IBeanListProperty<ILayerTreeNode, ILayerTreeNode> childrenProperty = BeanProperties
            .list(ILayerTreeNode.class, "children", ILayerTreeNode.class); //$NON-NLS-1$
    //setup a factory for creating observables observing ILayerTreeNodes
    IObservableFactory<ILayerTreeNode, IObservableList<ILayerTreeNode>> observableFactory = childrenProperty
            .listFactory();

    //listen for any changes (additions/removals) to any of the children in the tree
    observableListTreeSupport = new ObservableListTreeSupport<ILayerTreeNode>(observableFactory);
    observableListTreeSupport.addListener(new ITreeChangeListener<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            element.addPropertyChangeListener(anyChangeListener);
            element.addPropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }

        @Override
        public void elementRemoved(ILayerTreeNode element) {
            element.removePropertyChangeListener(anyChangeListener);
            element.removePropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }
    });

    //create a content provider that listens for changes to any children in the tree
    ObservableListTreeContentProvider<ILayerTreeNode> contentProvider = new ObservableListTreeContentProvider<ILayerTreeNode>(
            observableFactory, null);

    //set the viewer's providers
    structureViewer.setContentProvider(contentProvider);
    structureViewer.setLabelProvider(labelProvider);
    structureViewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    //set the viewer and listener inputs
    structureViewer.setInput(model.getRootNode());
    observableListTreeSupport.setInput(model.getRootNode());

    //Listen for any additions to the tree, and expand added node's parent, so that
    //added nodes are always visible. This is done after the input is set up, so that
    //we don't expand all the nodes that are already in the tree.
    observableListTreeSupport.addListener(new TreeChangeAdapter<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            //for any children added, expand the nodes
            if (!element.isRoot()) {
                element.getParent().setExpanded(true);
            }

            //if the nodes were already expanded, the expanded property change event
            //is not fired, so we need to sync the expanded state anyway
            syncExpandedNodes();

            //when a layer is added, we should activate this part and select the added element
            activateAndSelectElement(element);
        }
    });

    //expand any nodes that should be expanded after unpersisting
    syncExpandedNodes();

    //enable/disable any nodes that are checked/unchecked
    structureViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    //setup the selection tracking
    structureViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            settingSelection = true;
            selectionService.setSelection(array.length == 1 ? array[0] : array);
            settingSelection = false;
        }
    });
    structureViewer.getTree().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            ILayerTreeNode firstElement = (ILayerTreeNode) selection.getFirstElement();
            if (firstElement != null) {
                selectLayer(firstElement);
            }
        }
    });

    //setup tree expansion/collapse listening
    structureViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    //make tree cells unselectable by selecting outside
    structureViewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = structureViewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                structureViewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    //setup cell editing
    structureViewer
            .setCellEditors(new CellEditor[] { new TextCellEditor(structureViewer.getTree(), SWT.BORDER) });
    structureViewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$
    structureViewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            structureViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(structureViewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    structureViewer.addDragSupport(ops,
            new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(structureViewer));
    structureViewer
            .addDropSupport(ops,
                    new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance(),
                            FileTransfer.getInstance() },
                    new LayerTreeDropAdapter(structureViewer, model, context));

    //add context menu
    menuService.registerContextMenu(structureViewer.getTree(),
            "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:ch.elexis.core.ui.dialogs.OrderImportDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite mainArea = new Composite(parent, SWT.NONE);
    mainArea.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    mainArea.setLayout(new GridLayout());

    Composite scannerArea = new Composite(mainArea, SWT.NONE);
    scannerArea.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    scannerArea.setLayout(new GridLayout());

    Group scannerGroup = new Group(scannerArea, SWT.NONE);
    scannerGroup.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    scannerGroup.setLayout(new GridLayout(4, false));
    scannerGroup.setText("Einlesen mit Barcode-Scanner");

    diffSpinner = new Spinner(scannerGroup, SWT.NONE);
    diffSpinner.setMinimum(DIFF_SPINNER_MIN);
    diffSpinner.setSelection(DIFF_SPINNER_DEFAULT);

    Label eanLabel = new Label(scannerGroup, SWT.NONE);
    eanLabel.setText("EAN:");
    eanText = new ElexisText(scannerGroup, SWT.NONE);
    eanText.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));

    eanText.addKeyListener(new KeyAdapter() {
        @Override//  w w  w  .jav  a 2s  .  co m
        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.CR) {
                applyScanner();
            }
        }
    });

    Button button = new Button(scannerGroup, SWT.PUSH);
    button.setText("bernehmen");
    button.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            applyScanner();
        }

        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }
    });

    Composite tableArea = new Composite(mainArea, SWT.NONE);
    tableArea.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    tableArea.setLayout(new GridLayout());

    viewer = new TableViewer(tableArea, SWT.FULL_SELECTION);
    Table table = viewer.getTable();
    table.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    table.setLinesVisible(true);
    table.setHeaderVisible(true);

    verifiedColor = table.getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN);
    boldFont = createBoldFont(table.getFont());

    final TableViewerFocusCellManager mgr = new TableViewerFocusCellManager(viewer,
            new FocusCellOwnerDrawHighlighter(viewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) {
        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;
        }
    };

    TableViewerEditor.create(viewer, mgr, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    createViewerColumns();

    viewer.setContentProvider(new ViewerContentProvider());
    viewer.setInput(this);
    viewer.setComparator(new ViewerComparator() {
        public int compare(Viewer viewer, Object e1, Object e2) {
            Artikel a1 = ((OrderElement) e1).getArticle();
            Artikel a2 = ((OrderElement) e2).getArticle();

            if (a1 != null && a2 != null) {
                return a1.getName().compareTo(a2.getName());
            }
            return 0;
        };
    });

    Composite cButtons = new Composite(mainArea, SWT.NONE);
    cButtons.setLayout(new GridLayout(2, false));
    final Button clickAllButton = new Button(cButtons, SWT.PUSH);
    clickAllButton.setText(ALLE_MARKIEREN);
    clickAllButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            boolean bv = true;
            if (clickAllButton.getText().equals(ALLE_MARKIEREN)) {
                bv = true;
                clickAllButton.setText("Alle demarkieren");
            } else {
                bv = false;
                clickAllButton.setText(ALLE_MARKIEREN);
            }

            for (OrderElement oe : orderElements) {
                oe.setVerified(bv);
            }
            viewer.refresh(true);
        }

    });
    Button importButton = new Button(cButtons, SWT.PUSH);
    GridData gd = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
    importButton.setLayoutData(gd);
    importButton.setText("Lagerbestnde anpassen");
    importButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doImport();
        }
    });
    cButtons.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    return mainArea;
}

From source file:ch.elexis.dialogs.OrderImportDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite mainArea = new Composite(parent, SWT.NONE);
    mainArea.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    mainArea.setLayout(new GridLayout());

    Composite scannerArea = new Composite(mainArea, SWT.NONE);
    scannerArea.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    scannerArea.setLayout(new GridLayout());

    Group scannerGroup = new Group(scannerArea, SWT.NONE);
    scannerGroup.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    scannerGroup.setLayout(new GridLayout(4, false));
    scannerGroup.setText("Einlesen mit Barcode-Scanner");

    diffSpinner = new Spinner(scannerGroup, SWT.NONE);
    diffSpinner.setMinimum(DIFF_SPINNER_MIN);
    diffSpinner.setSelection(DIFF_SPINNER_DEFAULT);

    Label eanLabel = new Label(scannerGroup, SWT.NONE);
    eanLabel.setText("EAN:");
    eanText = new ElexisText(scannerGroup, SWT.NONE);
    eanText.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));

    eanText.addKeyListener(new KeyAdapter() {
        @Override/*from  ww w.  j av  a2 s .c  om*/
        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.CR) {
                applyScanner();
            }
        }
    });

    Button button = new Button(scannerGroup, SWT.PUSH);
    button.setText("bernehmen");
    button.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            applyScanner();
        }

        public void widgetDefaultSelected(SelectionEvent e) {
            // do nothing
        }
    });

    Composite tableArea = new Composite(mainArea, SWT.NONE);
    tableArea.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    tableArea.setLayout(new GridLayout());

    viewer = new TableViewer(tableArea, SWT.FULL_SELECTION);
    Table table = viewer.getTable();
    table.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    table.setLinesVisible(true);
    table.setHeaderVisible(true);

    verifiedColor = table.getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN);
    boldFont = createBoldFont(table.getFont());

    final TableViewerFocusCellManager mgr = new TableViewerFocusCellManager(viewer,
            new FocusCellOwnerDrawHighlighter(viewer));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) {
        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;
        }
    };

    TableViewerEditor.create(viewer, mgr, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    createViewerColumns();

    viewer.setContentProvider(new ViewerContentProvider());
    viewer.setInput(this);

    Composite cButtons = new Composite(mainArea, SWT.NONE);
    cButtons.setLayout(new GridLayout(2, false));
    final Button clickAllButton = new Button(cButtons, SWT.PUSH);
    clickAllButton.setText(ALLE_MARKIEREN);
    clickAllButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            boolean bv = true;
            if (clickAllButton.getText().equals(ALLE_MARKIEREN)) {
                bv = true;
                clickAllButton.setText("Alle demarkieren");
            } else {
                bv = false;
                clickAllButton.setText(ALLE_MARKIEREN);
            }

            for (OrderElement oe : orderElements) {
                oe.setVerified(bv);
            }
            viewer.refresh(true);
        }

    });
    Button importButton = new Button(cButtons, SWT.PUSH);
    GridData gd = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
    importButton.setLayoutData(gd);
    importButton.setText("Lagerbestnde anpassen");
    importButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doImport();
        }
    });
    cButtons.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
    return mainArea;
}

From source file:cn.ieclipse.adt.ext.wizards.ElementTableSelector.java

License:Apache License

public ElementTableSelector(final Composite composite, GridData gridData, final String groupDescr,
        final String selectionMessage, final Object[] elements) {
    this.elements = elements;
    Group intentGroup = new Group(composite, SWT.NONE);
    intentGroup.setLayout(new GridLayout(2, false));
    intentGroup.setLayoutData(gridData);
    intentGroup.setText(groupDescr);/*www  . j  a va2  s. co  m*/

    tv = new TableViewer(intentGroup, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION);
    table = tv.getTable();
    table.setHeaderVisible(false);
    table.setLinesVisible(true);

    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    final Menu menu = new Menu(tv.getControl());
    MenuItem add = new MenuItem(menu, SWT.PUSH);
    add.setText("&Add Custom");
    add.setImage(ADD_IMG);
    add.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            addModel(new Model("custom"));
            tv.refresh();
        }
    });

    MenuItem up = new MenuItem(menu, SWT.PUSH);
    up.setText("&Up");
    up.setImage(UP_IMG);
    up.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if (!sel.isEmpty()) {
                Model m = (Model) sel.getFirstElement();
                int idx = selectedElements.indexOf(m);
                if (idx > 0) {
                    Model n = selectedElements.get(idx - 1);
                    selectedElements.set(idx, n);
                    selectedElements.set(idx - 1, m);

                    tv.refresh();
                }

            }
        }
    });

    MenuItem down = new MenuItem(menu, SWT.PUSH);
    down.setText("&Down");
    down.setImage(DOWN_IMG);
    down.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if (!sel.isEmpty()) {
                Model m = (Model) sel.getFirstElement();
                int idx = selectedElements.indexOf(m);
                if (idx < selectedElements.size() - 1) {
                    Model n = selectedElements.get(idx + 1);
                    selectedElements.set(idx, n);
                    selectedElements.set(idx + 1, m);

                    tv.refresh();
                }

            }
        }
    });

    table.setMenu(menu);

    tv.setContentProvider(new MyContentProvider());

    ColumnViewerToolTipSupport.enableFor(tv, ToolTip.NO_RECREATE);
    // TableViewerFocusCellManager focusCellManager = new
    // TableViewerFocusCellManager(
    // tv, new FocusBorderCellHighlighter(tv));
    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(tv) {
        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.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };

    TableViewerEditor.create(tv, null, actSupport,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    final TableViewerColumn col = new TableViewerColumn(tv, SWT.NONE);
    col.setLabelProvider(new MyCellLabelProvider());
    col.setEditingSupport(new MyEditingSupport(tv));
    // tv.getTable().
    col.getColumn().setWidth(300);

    table.addControlListener(new ControlListener() {

        public void controlResized(ControlEvent e) {
            int w = table.getClientArea().width;
            if (w > 0) {
                col.getColumn().setWidth(w);
            }
        }

        public void controlMoved(ControlEvent e) {

        }
    });

    tv.setInput(selectedElements);

    Composite buttonComp = new Composite(intentGroup, SWT.NONE);
    buttonComp.setLayout(new FillLayout(SWT.VERTICAL));
    addButton = new Button(buttonComp, SWT.NONE);
    addButton.setText("Add...");
    addButton.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            showSelectionDialog(composite, selectionMessage);
        }

        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });

    removeButton = new Button(buttonComp, SWT.NONE);
    removeButton.setText("Remove...");
    removeButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            int[] selection = table.getSelectionIndices();
            if (selection != null) {
                IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
                if (!sel.isEmpty()) {
                    for (Object object : sel.toArray()) {
                        selectedElements.remove(object);
                    }
                }
                tv.refresh();
            }
        }
    });
}

From source file:com.adobe.granite.ide.eclipse.ui.wizards.np.AdvancedSettingsComponent.java

License:Apache License

public void createAdvancedSection(Composite container) {
    Label label;//  w w  w. j  av a 2s  . c o  m
    GridData gd;

    label = new Label(container, SWT.NULL);
    label.setText("&Version:");

    version = new Text(container, SWT.BORDER | SWT.SINGLE);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    version.setLayoutData(gd);
    version.setText("0.0.1-SNAPSHOT");
    version.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            wizardPage.dialogChanged();
        }
    });

    label = new Label(container, SWT.NULL);
    label.setText("&Package:");

    javaPackage = new Text(container, SWT.BORDER | SWT.SINGLE);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    javaPackage.setLayoutData(gd);
    javaPackageModified = false;
    javaPackage.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            javaPackageModified = true;
        }
    });
    javaPackage.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            wizardPage.dialogChanged();
        }
    });

    label = new Label(container, SWT.NULL);
    gd = new GridData(SWT.LEFT, SWT.TOP, false, false);
    label.setLayoutData(gd);
    label.setText("&Parameters:");

    propertiesViewer = new TableViewer(container, SWT.BORDER | SWT.FULL_SELECTION);
    propertiesTable = propertiesViewer.getTable();
    propertiesTable.setLinesVisible(true);
    propertiesTable.setHeaderVisible(true);
    propertiesTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 2));

    CellNavigationStrategy strategy = new CellNavigationStrategy();
    TableViewerFocusCellManager focusCellMgr = new TableViewerFocusCellManager(propertiesViewer,
            new FocusCellOwnerDrawHighlighter(propertiesViewer), strategy);

    ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(
            propertiesViewer) {

        @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.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    int features = ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
            | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION
            | ColumnViewerEditor.KEEP_EDITOR_ON_DOUBLE_CLICK;
    TableViewerEditor.create(propertiesViewer, focusCellMgr, actSupport, features);

    TableColumn propertiesTableNameColumn = new TableColumn(propertiesTable, SWT.NONE);
    propertiesTableNameColumn.setWidth(180);
    propertiesTableNameColumn.setText("Name");

    TableColumn propertiesTableValueColumn = new TableColumn(propertiesTable, SWT.NONE);
    propertiesTableValueColumn.setWidth(300);
    propertiesTableValueColumn.setText("Value");

    propertiesViewer.setColumnProperties(new String[] { KEY_PROPERTY, VALUE_PROPERTY });

    propertiesViewer.setCellEditors(new CellEditor[] { null /* cannot edit the name */,
            new TextCellEditor(propertiesTable, SWT.NONE) });
    propertiesViewer.setCellModifier(new ICellModifier() {
        public boolean canModify(Object element, String property) {
            return true;
        }

        public void modify(Object element, String property, Object value) {
            if (element instanceof TableItem) {
                ((TableItem) element).setText(getTextIndex(property), String.valueOf(value));
                wizardPage.dialogChanged();
            }
        }

        public Object getValue(Object element, String property) {
            if (element instanceof TableItem) {
                return ((TableItem) element).getText(getTextIndex(property));
            }
            return null;
        }
    });

}

From source file:com.buildml.eclipse.outline.OutlinePage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    super.createControl(parent);

    /* //w w w  .  j a v a 2  s  . c om
     * Configure the view's (pre-existing) TreeViewer with necessary helper objects that
     * will display the BuildML editor's package structure.
     */
    treeViewer = getTreeViewer();
    treeViewer.setContentProvider(new OutlineContentProvider(pkgMgr, true));
    treeViewer.setLabelProvider(new OutlineLabelProvider(pkgMgr));
    treeViewer.addSelectionChangedListener(this);
    treeViewer.setInput(new UIPackageFolder[] { new UIPackageFolder(pkgMgr.getRootFolder()) });
    treeViewer.expandToLevel(2);

    /*
     * Create the context menu. It'll be populated by the rules in plugin.xml.
     */
    MenuManager menuMgr = new MenuManager();
    menuMgr.setRemoveAllWhenShown(true);
    menuMgr.addMenuListener(new IMenuListener() {
        @Override
        public void menuAboutToShow(IMenuManager manager) {
            manager.add(new Separator("buildmladditions"));
        }
    });
    Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
    treeViewer.getControl().setMenu(menu);
    getSite().registerContextMenu("org.eclipse.ui.views.ContentOutline", menuMgr, treeViewer);
    getSite().setSelectionProvider(treeViewer);

    /*
     * When the user double-clicks on a folder name, automatically expand the content
     * of that folder. If they double-click on a package name, open that package
     * as a new Diagram in the main editor.
     */
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Object node = selection.getFirstElement();

            if (treeViewer.isExpandable(node)) {
                treeViewer.setExpandedState(node, !treeViewer.getExpandedState(node));
            }

            /* else, open the package diagram editor */
            else {
                if (node instanceof UIPackage) {
                    int selectedPkgId = ((UIPackage) node).getId();
                    if (selectedPkgId != pkgMgr.getImportPackage()) {
                        mainEditor.openPackageDiagram(selectedPkgId);
                    }
                }
            }
        }
    });

    /*
     * Configure the ability to edit cells in the package/folder tree. The 
     * OutlineContentCellModifier class does most of the hard work.
     */
    treeViewer.setColumnProperties(new String[] { "NAME" });
    treeViewer.setCellModifier(new OutlineContentCellModifier(mainEditor));
    treeViewer.setCellEditors(new CellEditor[] { new TextCellEditor(treeViewer.getTree()) });

    /*
     * Arrange it so that cell editing is only possible when we call editElement(), rather
     * than when the user clicks on the label.
     */
    treeViewer.getColumnViewerEditor().addEditorActivationListener(new ColumnViewerEditorActivationListener() {
        public void beforeEditorActivated(ColumnViewerEditorActivationEvent event) {
            if (event.eventType != ColumnViewerEditorActivationEvent.PROGRAMMATIC) {
                event.cancel = true;
            }
        }

        public void beforeEditorDeactivated(ColumnViewerEditorDeactivationEvent event) {
        }

        public void afterEditorDeactivated(ColumnViewerEditorDeactivationEvent event) {
        }

        public void afterEditorActivated(ColumnViewerEditorActivationEvent event) {
        }
    });

    /*
     * Listen to our own selection events, which is necessary to learn which element is
     * selected when we want to add or delete elements.
     */
    addSelectionChangedListener(this);

    /*
     * Add the DragSource and DropTarget so that we can copy/move packages around.
     */
    new OutlineDragSource(treeViewer, this);
    new OutlineDropTarget(treeViewer, this);

    /*
     * Add the undo/redo actions from the main editor to our action bar. This allows
     * the user to use Ctrl-Z etc. to undo/redo while focused on our window.
     */
    getSite().getActionBars().setGlobalActionHandler(ActionFactory.UNDO.getId(), undoAction);
    getSite().getActionBars().setGlobalActionHandler(ActionFactory.REDO.getId(), redoAction);
}