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

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

Introduction

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

Prototype

protected CellEditor() 

Source Link

Document

Creates a new cell editor with no control The cell editor has no cell validator.

Usage

From source file:com.nextep.designer.vcs.ui.dialogs.ViewSelectorDialog.java

License:Open Source License

/**
 * Configures the viewer which displays workspaces.<br>
 * The setup is a bit tricky as we need a "button" behaviour which reacts on the deletion
 * column, thus allowing the user to remove a view. We do this by adding an editor which fires
 * the deletion on activation. The way JFace performs editor checks impose us to add cell
 * modifier and label properties as well.<br>
 * Because of JFace, the order in which elements are added are <b>very important</b> as editors
 * and modifiers need to be added <u>before</u> label providers.
 *//*from ww w .j a v a2 s .  c o  m*/
private void configureTableViewer() {
    viewer = new TableViewer(viewsTable);
    viewer.setCellEditors(new CellEditor[] { null, null, null, new CellEditor() {

        @Override
        public void activate() {
            ISelection s = viewer.getSelection();
            if (s instanceof IStructuredSelection) {
                final IWorkspace view = (IWorkspace) ((IStructuredSelection) s).getFirstElement();
                boolean confirm = MessageDialog.openQuestion(viewsTable.getShell(),
                        MessageFormat.format(VCSUIMessages.getString("delViewConfirmTitle"), //$NON-NLS-1$
                                view.getName()),
                        MessageFormat.format(VCSUIMessages.getString("delViewConfirm"), view.getName())); //$NON-NLS-1$
                if (confirm) {
                    final IWorkspace originalView = getViewService().getCurrentWorkspace();
                    try {
                        getViewService().setCurrentWorkspace(view);
                        deleteView(view);
                    } finally {
                        getViewService().setCurrentWorkspace(originalView);
                    }
                    refreshGUI();
                }
            }
        }

        @Override
        protected Control createControl(Composite parent) {
            return null;
        }

        @Override
        protected Object doGetValue() {
            return null;
        }

        @Override
        protected void doSetFocus() {
        }

        @Override
        protected void doSetValue(Object value) {
        }
    } });
    viewer.setColumnProperties(new String[] { "name", "vendor", "desc", "del" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    viewer.setCellModifier(new ICellModifier() {

        @Override
        public void modify(Object element, String property, Object value) {
        }

        @Override
        public Object getValue(Object element, String property) {
            return null;
        }

        @Override
        public boolean canModify(Object element, String property) {
            return "del".equals(property); //$NON-NLS-1$
        }
    });
    viewer.setComparator(new TableColumnSorter(viewsTable, viewer));
    viewer.setContentProvider(new WorkspaceContentProvider());
    viewer.setLabelProvider(new WorkspaceLabelProvider());
}

From source file:name.schedenig.eclipse.grepconsole.view.items.DoubleClickEditingSupport.java

License:Open Source License

/**
 * @see org.eclipse.jface.viewers.EditingSupport#getCellEditor(java.lang.Object)
 *///from   ww  w .  ja v a 2s. c  o  m
@Override
protected CellEditor getCellEditor(Object element) {
    return new CellEditor() {
        @Override
        protected Control createControl(Composite parent) {
            return null;
        }

        @Override
        protected Object doGetValue() {
            return null;
        }

        @Override
        protected void doSetFocus() {
        }

        @Override
        protected void doSetValue(Object value) {
            doEdit(value);
        }
    };
}

From source file:org.entirej.applicationframework.rwt.renderers.mobile.blocks.EJRWTListRecordBlockRenderer.java

License:Apache License

public void buildGuiComponent(EJRWTEntireJGridPane blockCanvas) {
    EJFrameworkExtensionProperties appProp = EJCoreProperties.getInstance().getApplicationDefinedProperties();
    if (appProp != null) {
        EJFrameworkExtensionProperties propertyGroup = appProp
                .getPropertyGroup(EJRWTSingleRecordBlockDefinitionProperties.ACTION_GROUP);
        if (propertyGroup != null) {

            addActionKeyinfo(// w  w w  .j  av  a  2s .  c om
                    propertyGroup
                            .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_QUERY_KEY),
                    EJRWTSingleRecordBlockDefinitionProperties.ACTION_QUERY_KEY);
            addActionKeyinfo(
                    propertyGroup
                            .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_INSERT_KEY),
                    EJRWTSingleRecordBlockDefinitionProperties.ACTION_INSERT_KEY);
            addActionKeyinfo(
                    propertyGroup
                            .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_UPDATE_KEY),
                    EJRWTSingleRecordBlockDefinitionProperties.ACTION_UPDATE_KEY);
            addActionKeyinfo(
                    propertyGroup
                            .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_DELETE_KEY),
                    EJRWTSingleRecordBlockDefinitionProperties.ACTION_DELETE_KEY);
            addActionKeyinfo(
                    propertyGroup
                            .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ACTION_REFRESH_KEY),
                    EJRWTSingleRecordBlockDefinitionProperties.ACTION_REFRESH_KEY);

        }
    }
    // blockCanvas.cleanLayoutVertical();
    EJBlockProperties blockProperties = _block.getProperties();
    EJMainScreenProperties mainScreenProperties = blockProperties.getMainScreenProperties();

    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.widthHint = mainScreenProperties.getWidth();
    gridData.heightHint = mainScreenProperties.getHeight();

    gridData.horizontalSpan = mainScreenProperties.getHorizontalSpan();
    gridData.verticalSpan = mainScreenProperties.getVerticalSpan();
    gridData.grabExcessHorizontalSpace = mainScreenProperties.canExpandHorizontally();
    gridData.grabExcessVerticalSpace = mainScreenProperties.canExpandVertically();

    if (gridData.grabExcessHorizontalSpace)
        gridData.minimumWidth = mainScreenProperties.getWidth();
    if (gridData.grabExcessVerticalSpace)
        gridData.minimumHeight = mainScreenProperties.getHeight();
    EJFrameworkExtensionProperties rendererProp = blockProperties.getBlockRendererProperties();
    blockCanvas.setLayoutData(gridData);

    EJFrameworkExtensionProperties sectionProperties = null;
    if (rendererProp != null) {
        sectionProperties = rendererProp
                .getPropertyGroup(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR);
    }
    if (sectionProperties != null
            && sectionProperties.getStringProperty(
                    EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE) != null
            && !EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE_GROUP
                    .equals(sectionProperties.getStringProperty(
                            EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE))) {
        int style = ExpandableComposite.TITLE_BAR;

        String mode = sectionProperties
                .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE);
        if (EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE_TWISTIE.equals(mode)) {
            style = style | ExpandableComposite.TWISTIE;
        } else if (EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_MODE_TREE_NODE
                .equals(mode)) {
            style = style | ExpandableComposite.TREE_NODE;
        }
        if (sectionProperties.getBooleanProperty(
                EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_EXPANDED, true)) {
            style = style | ExpandableComposite.EXPANDED;
        }
        Section section = toolkit.createSection(blockCanvas, style);
        section.setLayoutData(gridData);
        String title = sectionProperties
                .getStringProperty(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_TITLE);
        if (title != null)
            section.setText(title);
        EJRWTImageRetriever.getGraphicsProvider().rendererSection(section);
        if (mainScreenProperties.getDisplayFrame()) {

            Group group = new Group(section, SWT.NONE);
            group.setLayout(new FillLayout());
            group.setLayoutData(gridData);
            hookKeyListener(group);
            String frameTitle = mainScreenProperties.getFrameTitle();
            if (frameTitle != null && frameTitle.length() > 0) {
                group.setText(frameTitle);
            }
            _mainPane = new EJRWTEntireJGridPane(group, 1);
            section.setClient(group);

        } else {
            _mainPane = new EJRWTEntireJGridPane(section, 1);
            _mainPane.setLayoutData(gridData);
            _mainPane.cleanLayoutHorizontal();
            section.setClient(_mainPane);
        }

        final EJFrameworkExtensionPropertyList propertyList = sectionProperties
                .getPropertyList(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTIONS);

        if (propertyList != null && propertyList.getAllListEntries().size() > 0) {
            ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
            final ToolBar toolbar = toolBarManager.createControl(section);
            final Cursor handCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_HAND);
            toolbar.setCursor(handCursor);
            // Cursor needs to be explicitly disposed
            toolbar.addDisposeListener(new DisposeListener() {
                public void widgetDisposed(DisposeEvent e) {
                    if ((handCursor != null) && (handCursor.isDisposed() == false)) {
                        handCursor.dispose();
                    }
                }
            });
            List<EJFrameworkExtensionPropertyListEntry> allListEntries = propertyList.getAllListEntries();
            for (EJFrameworkExtensionPropertyListEntry entry : allListEntries) {
                final String actionID = entry
                        .getProperty(EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_ID);
                String actionImage = entry.getProperty(
                        EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_IMAGE);
                String actionName = entry.getProperty(
                        EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_NAME);
                String actionTooltip = entry.getProperty(
                        EJRWTSingleRecordBlockDefinitionProperties.ITEM_GROUP_TITLE_BAR_ACTION_TOOLTIP);

                if (actionID != null) {
                    Action action = new Action(actionID, IAction.AS_PUSH_BUTTON) {

                        @Override
                        public void runWithEvent(Event event) {

                            _block.executeActionCommand(actionID, EJScreenType.MAIN);
                        }

                    };
                    if (actionName != null)
                        action.setText(actionName);
                    if (actionTooltip != null)
                        action.setDescription(actionTooltip);
                    if (actionImage != null && actionImage.length() > 0) {

                        action.setImageDescriptor(
                                ImageDescriptor.createFromImage(EJRWTImageRetriever.get(actionImage)));
                    }
                    toolBarManager.add(action);
                }

            }

            toolBarManager.update(true);

            section.setTextClient(toolbar);
        }
    } else {
        if (mainScreenProperties.getDisplayFrame()) {

            Group group = new Group(blockCanvas, SWT.NONE);
            group.setLayout(new FillLayout());
            group.setLayoutData(gridData);
            hookKeyListener(group);
            String frameTitle = mainScreenProperties.getFrameTitle();
            if (frameTitle != null && frameTitle.length() > 0) {
                group.setText(frameTitle);
            }
            _mainPane = new EJRWTEntireJGridPane(group, 1);

        } else {
            _mainPane = new EJRWTEntireJGridPane(blockCanvas, 1);
            _mainPane.setLayoutData(gridData);
            _mainPane.cleanLayoutHorizontal();
        }
    }

    hookKeyListener(_mainPane);
    int style = SWT.VIRTUAL | SWT.V_SCROLL;

    if (!rendererProp.getBooleanProperty(EJRWTListRecordBlockDefinitionProperties.HIDE_TABLE_BORDER, false))
        style = style | SWT.BORDER;

    if (rendererProp.getBooleanProperty(EJRWTListRecordBlockDefinitionProperties.ROW_SELECTION_PROPERTY, true))
        style = style | SWT.FULL_SELECTION;
    else
        style = style | SWT.HIDE_SELECTION;
    Collection<EJItemGroupProperties> allItemGroupProperties = _block.getProperties()
            .getScreenItemGroupContainer(EJScreenType.MAIN).getAllItemGroupProperties();
    final Table table;
    final boolean hideSelection = (style & SWT.HIDE_SELECTION) != 0;
    final EJRWTAbstractFilteredTable filterTree;
    if (rendererProp.getBooleanProperty(EJRWTTreeBlockDefinitionProperties.FILTER, false)) {
        if (allItemGroupProperties.size() > 0) {
            EJItemGroupProperties displayProperties = allItemGroupProperties.iterator().next();
            if (displayProperties.dispayGroupFrame()) {
                Group group = new Group(_mainPane, SWT.NONE);
                group.setLayout(new FillLayout());
                if (displayProperties.getFrameTitle() != null && displayProperties.getFrameTitle().length() > 0)
                    group.setText(displayProperties.getFrameTitle());
                group.setLayoutData(
                        new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));

                filterTree = new EJRWTAbstractFilteredTable(group, style) {
                    @Override
                    public void filter(String filter) {
                        if (filteredContentProvider != null
                                && ((filter == null && filteredContentProvider.getFilter() != null)
                                        || !filter.equals(filteredContentProvider.getFilter()))) {
                            filteredContentProvider.setFilter(filter);
                            getViewer().setInput(filter);
                            notifyStatus();
                        }
                    }

                    @Override
                    protected TableViewer doCreateTableViewer(Composite parent, int style) {
                        return _tableViewer = new TableViewer(parent) {

                            @Override
                            public void setSelection(ISelection selection) {
                                if (hideSelection)
                                    selection = new StructuredSelection();
                                super.setSelection(selection);
                            }

                            @Override
                            public void setSelection(ISelection selection, boolean reveal) {
                                if (hideSelection)
                                    selection = new StructuredSelection();
                                super.setSelection(selection, reveal);
                            }
                        };
                    }
                };
            } else {

                filterTree = new EJRWTAbstractFilteredTable(_mainPane, style) {
                    @Override
                    public void filter(String filter) {
                        if (filteredContentProvider != null
                                && ((filter == null && filteredContentProvider.getFilter() != null)
                                        || !filter.equals(filteredContentProvider.getFilter()))) {
                            filteredContentProvider.setFilter(filter);
                            getViewer().setInput(filter);
                            notifyStatus();
                        }
                    }

                    @Override
                    protected TableViewer doCreateTableViewer(Composite parent, int style) {
                        return _tableViewer = new TableViewer(parent) {

                            @Override
                            public void setSelection(ISelection selection) {
                                if (hideSelection)
                                    selection = new StructuredSelection();
                                super.setSelection(selection);
                            }

                            @Override
                            public void setSelection(ISelection selection, boolean reveal) {
                                if (hideSelection)
                                    selection = new StructuredSelection();
                                super.setSelection(selection, reveal);
                            }
                        };
                    }

                };
                filterTree.setLayoutData(
                        new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
            }
        } else {
            filterTree = new EJRWTAbstractFilteredTable(_mainPane, style) {
                @Override
                public void filter(String filter) {
                    if (filteredContentProvider != null
                            && ((filter == null && filteredContentProvider.getFilter() != null)
                                    || !filter.equals(filteredContentProvider.getFilter()))) {
                        filteredContentProvider.setFilter(filter);
                        getViewer().setInput(filter);
                        notifyStatus();
                    }
                }

                @Override
                protected TableViewer doCreateTableViewer(Composite parent, int style) {
                    return _tableViewer = new TableViewer(parent) {

                        @Override
                        public void setSelection(ISelection selection) {
                            if (hideSelection)
                                selection = new StructuredSelection();
                            super.setSelection(selection);
                        }

                        @Override
                        public void setSelection(ISelection selection, boolean reveal) {
                            if (hideSelection)
                                selection = new StructuredSelection();
                            super.setSelection(selection, reveal);
                        }
                    };
                }
            };

            filterTree.setLayoutData(
                    new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
        }
        table = (_tableViewer = filterTree.getViewer()).getTable();
    } else {
        filterTree = null;
        if (allItemGroupProperties.size() > 0) {
            EJItemGroupProperties displayProperties = allItemGroupProperties.iterator().next();
            if (displayProperties.dispayGroupFrame()) {
                Group group = new Group(_mainPane, SWT.NONE);
                group.setLayout(new FillLayout());
                if (displayProperties.getFrameTitle() != null && displayProperties.getFrameTitle().length() > 0)
                    group.setText(displayProperties.getFrameTitle());
                group.setLayoutData(
                        new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
                table = new Table(group, style);
            } else {
                table = new Table(_mainPane, style);

                table.setLayoutData(
                        new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
            }
        } else {
            table = new Table(_mainPane, style);

            table.setLayoutData(
                    new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
        }

        _tableViewer = new TableViewer(table) {

            @Override
            public void setSelection(ISelection selection) {
                if (hideSelection)
                    selection = new StructuredSelection();
                super.setSelection(selection);
            }

            @Override
            public void setSelection(ISelection selection, boolean reveal) {
                if (hideSelection)
                    selection = new StructuredSelection();
                super.setSelection(selection, reveal);
            }
        };
    }

    table.setLinesVisible(false);
    table.setHeaderVisible(false);
    Control[] children = table.getChildren();
    for (Control control : children) {
        hookKeyListener(control);
    }
    hookKeyListener(table);

    EJRWTTableViewerColumnFactory factory = new EJRWTTableViewerColumnFactory(_tableViewer);
    ColumnViewerToolTipSupport.enableFor(_tableViewer);

    final List<ColumnLabelProvider> nodeTextProviders = new ArrayList<ColumnLabelProvider>();
    final Map<ColumnLabelProvider, EJScreenItemProperties> nodeTextProvidersMap = new HashMap<ColumnLabelProvider, EJScreenItemProperties>();

    for (EJItemGroupProperties groupProperties : allItemGroupProperties) {
        Collection<EJScreenItemProperties> itemProperties = groupProperties.getAllItemProperties();

        for (EJScreenItemProperties screenItemProperties : itemProperties) {
            EJCoreMainScreenItemProperties mainScreenItemProperties = (EJCoreMainScreenItemProperties) screenItemProperties;
            ColumnLabelProvider screenItem = createScreenItem(factory, mainScreenItemProperties);
            if (screenItem != null) {
                nodeTextProviders.add(screenItem);
                nodeTextProvidersMap.put(screenItem, screenItemProperties);
            }
        }
    }

    if (!nodeTextProviders.isEmpty()) {
        table.setData(EJ_RWT.MARKUP_ENABLED, Boolean.TRUE);

        int height = rendererProp.getIntProperty(EJRWTListRecordBlockDefinitionProperties.ROW_HEIGHT, -1);

        if (height == -1 && nodeTextProviders.size() > 1) {
            table.setData(EJ_RWT.CUSTOM_ITEM_HEIGHT, Integer.valueOf(nodeTextProviders.size() * 20));
        } else if (height > 0) {
            table.setData(EJ_RWT.CUSTOM_ITEM_HEIGHT, Integer.valueOf(height));
        }

        // add double click action
        final String doubleClickActionCommand = rendererProp
                .getStringProperty(EJRWTListRecordBlockDefinitionProperties.CLICK_ACTION_COMMAND);
        final boolean hasAction = doubleClickActionCommand != null && doubleClickActionCommand.length() != 0;
        if (hasAction) {
            _tableViewer.addDoubleClickListener(new IDoubleClickListener() {

                public void doubleClick(DoubleClickEvent arg0) {
                    _block.executeActionCommand(doubleClickActionCommand, EJScreenType.MAIN);
                }
            });
        }

        final TableViewerColumn dataColumn = factory.createColumn("HTML", 500, new ColumnLabelProvider() {

            public String toHex(int r, int g, int b) {
                return "#" + toBrowserHexValue(r) + toBrowserHexValue(g) + toBrowserHexValue(b);
            }

            private String toBrowserHexValue(int number) {
                StringBuilder builder = new StringBuilder(Integer.toHexString(number & 0xff));
                while (builder.length() < 2) {
                    builder.append("0");
                }
                return builder.toString().toUpperCase();
            }

            @Override
            public String getText(Object element) {

                StringBuilder builder = new StringBuilder();
                boolean addBr = false;
                for (ColumnLabelProvider labelProvider : nodeTextProviders) {
                    if (addBr) {
                        builder.append("<br/>");
                    }

                    boolean added = false;

                    EJScreenItemProperties item = nodeTextProvidersMap.get(labelProvider);

                    if (item != null && item.getLabel() != null && item.getLabel().trim().length() > 0) {
                        builder.append(item.getLabel());
                        builder.append(" : ");
                        added = true;
                    }

                    Image image = labelProvider.getImage(element);
                    if (image != null) {
                        String imagePath = ImageFactory.getImagePath(image);
                        if (imagePath != null) {
                            builder.append("<img src=\"");
                            builder.append(imagePath);
                            Rectangle bounds = image.getBounds();
                            builder.append("\" style=\"vertical-align:middle;\" ");
                            builder.append(" width=\"");
                            builder.append(bounds.width);
                            builder.append("\" ");
                            builder.append(" height=\"");
                            builder.append(bounds.height);
                            builder.append("\"/>");
                            added = true;
                        }
                    }

                    String text = labelProvider.getText(element);
                    if (text != null && text.length() != 0) {

                        Font vaFont = labelProvider.getFont(element);
                        builder.append("<span style=\"");
                        if (vaFont != null && vaFont.getFontData().length > 0) {
                            FontData fontData = vaFont.getFontData()[0];

                            if ((fontData.getStyle() & SWT.BOLD) != 0) {
                                builder.append("font-weight:bold;");
                            }
                            if ((fontData.getStyle() & SWT.ITALIC) != 0) {
                                builder.append("font-style:italic;");
                            }

                            builder.append("font-size:");
                            builder.append(fontData.getHeight());
                            builder.append("px;");

                            builder.append("font-family:");
                            builder.append(fontData.getName().replace('"', ' '));
                            builder.append(";");

                        }
                        Color background = labelProvider.getBackground(element);
                        if (background != null) {
                            builder.append("background-color:");
                            builder.append(
                                    toHex(background.getRed(), background.getGreen(), background.getBlue()));
                            builder.append(";");
                        }
                        Color foreground = labelProvider.getForeground(element);
                        if (foreground != null) {
                            builder.append("color:");
                            builder.append(
                                    toHex(foreground.getRed(), foreground.getGreen(), foreground.getBlue()));
                            builder.append(";");
                        }

                        builder.append("\">");
                        builder.append(text);
                        builder.append("</span>");
                        added = true;
                    }
                    if (added) {
                        addBr = true;
                    }
                }
                return builder.toString();
            }
        });

        if (hasAction) {
            final Image arrow = EJRWTImageRetriever.get("icons/left-arrow.png");
            final TableViewerColumn actionColumn = factory.createColumn("HTML-ACTION", 40,
                    new ColumnLabelProvider() {

                        @Override
                        public String getText(Object element) {
                            return "";
                        }

                        @Override
                        public Image getImage(Object element) {

                            return arrow;
                        }

                    });
            actionColumn.getColumn().setAlignment(SWT.RIGHT);
            actionColumn.setEditingSupport(new EditingSupport(_tableViewer) {

                protected void setValue(Object arg0, Object arg1) {
                    // ignore

                }

                protected Object getValue(Object arg0) {
                    // ignore
                    return null;
                }

                protected CellEditor getCellEditor(Object arg0) {

                    return new CellEditor() {

                        @Override
                        protected void doSetValue(Object arg0) {
                            // ignore

                        }

                        @Override
                        protected void doSetFocus() {
                            // ignore

                        }

                        @Override
                        protected Object doGetValue() {
                            // ignore
                            return null;
                        }

                        @Override
                        protected Control createControl(Composite parent) {
                            Label action = new Label(parent, SWT.NONE);
                            action.setImage(arrow);

                            return action;
                        }
                    };
                }

                protected boolean canEdit(Object arg0) {
                    _block.executeActionCommand(doubleClickActionCommand, EJScreenType.MAIN);
                    return false;
                }
            });
        }

        table.addControlListener(new ControlAdapter() {

            @Override
            public void controlResized(ControlEvent e) {
                int offset = hasAction ? 50 : 10;
                if (table.getSize().x > offset)
                    dataColumn.getColumn().setWidth(table.getSize().x - offset);
            }
        });
    }

    table.addFocusListener(new FocusListener() {

        public void focusLost(FocusEvent arg0) {
            setHasFocus(false);

        }

        public void focusGained(FocusEvent arg0) {
            setHasFocus(true);

        }
    });
    // setHasFocus(true);
    _mainPane.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent arg0) {
            if (!table.isFocusControl())
                setHasFocus(true);

        }

    });
    table.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent arg0) {
            if (!table.isFocusControl())
                setHasFocus(true);

        }

    });
    final EJBlockController blockController = _block;

    _tableViewer.setContentProvider(filteredContentProvider = new FilteredContentProvider() {

        boolean matchItem(EJDataRecord rec) {
            if (filter != null && filter.trim().length() > 0) {
                for (ColumnLabelProvider filterTextProvider : nodeTextProviders) {
                    String text = filterTextProvider.getText(rec);
                    if ((text != null) && text.toLowerCase().contains(filter.toLowerCase())) {
                        return true;
                    }
                }
            }

            return false;
        }

        public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
            tableBaseRecords.clear();

            if (arg2 != null && arg2.equals(filter) && filter.trim().length() > 0) {
                // filter

                for (EJDataRecord record : _block.getBlock().getRecords()) {
                    if (matchItem(record))
                        tableBaseRecords.add(record);
                }
            } else {
                filter = null;
                if (filterTree != null)
                    filterTree.clearText();
                tableBaseRecords.addAll(_block.getBlock().getRecords());
            }
        }

        public void dispose() {
        }

        public Object[] getElements(Object arg0) {
            return tableBaseRecords.toArray();
        }
    });
    _tableViewer.setInput(new Object());
    selectRow(0);

    _tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent arg0) {

            EJDataRecord focusedRecord = getFocusedRecord();
            if (focusedRecord != null)
                _block.newRecordInstance(focusedRecord);
            notifyStatus();
        }
    });

}

From source file:org.polymap.wbv.ui.FlurstueckTableViewer.java

License:Open Source License

public FlurstueckTableViewer(PanelSite panelSite, Composite parent) {
    super(parent, /* SWT.VIRTUAL | SWT.V_SCROLL | SWT.FULL_SELECTION |*/ SWT.BORDER);
    this.panelSite = panelSite;
    IAppContext context = BatikApplication.instance().getContext();
    context.propagate(this);

    suppressSelection();//w ww .ja v  a 2  s  . c  om

    context.addListener(panelChangeListener, ev -> ev.getType().isOnOf(EventType.LIFECYCLE));

    // listen to column/field changes
    EventManager.instance().subscribe(this,
            ev -> ev instanceof PropertyChangeEvent && displayed.values().contains(ev.getSource()));

    try {
        // suppress deferred loading to fix "empty table" issue
        // setContent( fs.getFeatures( this.baseFilter ) );
        setContentProvider(new CompositesFeatureContentProvider());

        // Action: delete
        addColumn(new FormFeatureTableColumn(descriptorFor("", String.class)).setWeight(1, 25)
                .setLabelProvider(new ColumnLabelProvider() {
                    @Override
                    public Image getImage(Object elm) {
                        return WbvPlugin.images().svgImage("delete.svg", SvgImageRegistryHelper.NORMAL12);
                    }

                    @Override
                    public String getText(Object elm) {
                        return null;
                    }

                    @Override
                    public String getToolTipText(Object elm) {
                        return "Flurstck lschen";
                    }
                }).setEditing(new ActionCellEditor(elm -> {
                    assert wb.isPresent();
                    Flurstueck fst = FeatureTableElement.entity(elm);
                    fst.geloescht.set(true);
                    refresh();

                    flurstueckDeleted = true;
                    fieldChange(null);

                    // waldbesitzer lschen, wenn (wirklich) kein flurstck mehr da
                    if (wb.get().flurstuecke(null).isEmpty()) {
                        uow.get().removeEntity(wb.get());
                        panelSite.toolkit().createSnackbar(Appearance.FadeIn,
                                "Waldbesitzer wird beim Speichern <b>gelscht</b>!");
                    }
                })));

        // Action: transfer
        addColumn(new FormFeatureTableColumn(descriptorFor("", String.class)).setWeight(1, 30)
                .setLabelProvider(new ColumnLabelProvider() {
                    @Override
                    public Image getImage(Object elm) {
                        return WbvPlugin.images().svgImage("transfer.svg", SvgImageRegistryHelper.NORMAL12);
                    }

                    @Override
                    public String getText(Object elm) {
                        return null;
                    }

                    @Override
                    public String getToolTipText(Object elm) {
                        return "Eigentumsbergang: an einem anderen Waldbesitzer bertragen";
                    }
                }).setEditing(new ActionCellEditor(elm -> {
                    Flurstueck fst = FeatureTableElement.entity(elm);
                    selected.set(fst);

                    BatikApplication.instance().getContext().openPanel(panelSite.path(),
                            EigentumsuebergangPanel.ID);
                })));

        // Gemarkung
        String propName = Flurstueck.TYPE.gemarkung.info().getName();
        addColumn(new FormFeatureTableColumn(descriptorFor(propName, Gemarkung.class)).setWeight(6, 80)
                .setLabelsAndValidation(new DefaultTableValidator<Object, Gemarkung>() {
                    @Override
                    public Object transform2Field(Gemarkung gmk, ValidatorSite site) throws Exception {
                        if (site.isEditing()) {
                            return gmk;
                        } else {
                            //Flurstueck flst = FeatureTableElement.entity( site.element() );
                            String result = gmk != null ? gmk.label() : "-keine Gemarkung-"; //"WVK: " + flst.wvkGemarkung.get() + "/" + flst.wvkGemeinde.get();
                            return StringUtils.abbreviate(result, 30);
                        }
                    }

                    @Override
                    public Gemarkung transform2Model(Object fieldValue, ValidatorSite site) throws Exception {
                        return fieldValue != null ? uow.get().entity((Gemarkung) fieldValue) : null;
                    }
                }).setEditing(new PicklistFormField(Gemarkung.all.get()))
                .setSortable(new Comparator<IFeatureTableElement>() {
                    public int compare(IFeatureTableElement e1, IFeatureTableElement e2) {
                        return label(e1).compareTo(label(e2));
                    }

                    protected String label(IFeatureTableElement elm) {
                        Gemarkung gmk = (Gemarkung) elm.getValue(propName);
                        return gmk != null ? gmk.label() : "";
                    }
                })).sort(SWT.DOWN);

        // Flurstcksnummer
        addColumn(new FormFeatureTableColumn(descriptorFor(Flurstueck.TYPE.zaehlerNenner)).setWeight(3, 50)
                .setHeader("Nr.")
                .setLabelsAndValidation(AND(new NotEmptyValidator().forTable(), new AenderungValidator(),
                        new NummerValidator(), new FlurstueckExistsValidator()))
                .setEditing(new StringFormField()));

        // Flche
        NumberValidator flaecheValidator = new NumberValidator(Double.class, Locale.GERMANY, 10, 4, 1, 4);
        addColumn(new FormFeatureTableColumn(descriptorFor(Flurstueck.TYPE.flaeche)).setWeight(3, 50)
                .setHeader("Flche\n(in ha)")
                .setLabelsAndValidation(AND(flaecheValidator.forTable(), new AenderungValidator()))
                .setEditing(new StringFormField()).setSortable(true));

        // davon Wald
        addColumn(new FormFeatureTableColumn(descriptorFor(Flurstueck.TYPE.flaecheWald)).setWeight(3, 50)
                .setHeader("Wald\n(in ha)")
                .setLabelsAndValidation(
                        AND(new WaldflaecheValidator(flaecheValidator), new AenderungValidator()))
                .setEditing(new StringFormField()).setSortable(true));

        // nderungsdatum
        addColumn(new FormFeatureTableColumn(descriptorFor(Flurstueck.TYPE.aenderung)).setWeight(4, 80)
                .setHeader("nderung").setLabelsAndValidation(new DateValidator().forTable()));

        // Bemerkung
        FormFeatureTableColumn bcolumn = new FormFeatureTableColumn(descriptorFor(Flurstueck.TYPE.bemerkung));
        bcolumn.setWeight(11, 120);
        bcolumn.setLabelsAndValidation(new AenderungValidator());
        bcolumn.setEditing(new CellEditor() {
            private String value;
            private Text txt;

            @Override
            protected Control createControl(Composite _parent) {
                return null;
            }

            @Override
            protected void doSetFocus() {
            }

            @Override
            protected Object doGetValue() {
                return value;
            }

            @Override
            protected void doSetValue(Object newValue) {
                this.value = (String) newValue;
            }

            @Override
            public void activate() {
                Shell appShell = BatikApplication.shellToParentOn();
                new SimpleDialog().centerOn.put(appShell).title.put("Bemerkung").setContents(dialogParent -> {
                    dialogParent.setLayout(FormLayoutFactory.defaults().create());
                    txt = on(new Text(dialogParent, SWT.MULTI | SWT.WRAP | SWT.BORDER)).fill().width(350)
                            .height(150).control();
                    txt.setText(value != null ? value : "");
                    txt.setFocus();
                }).addOkAction("BERNEHMEN", () -> {
                    value = txt.getText();
                    fireApplyEditorValue();
                    EventManager.instance().publish(new PropertyChangeEvent(bcolumn, "bemerkung", value, null));
                    return null;
                }).addCancelAction("ABBRECHEN").open();
            }
        });
        addColumn(bcolumn);

        setInput(wb.get().flurstuecke(revier.get()));

        //            /* Register for property change events */
        //            EventManager.instance().subscribe( this, new EventFilter<PropertyChangeEvent>() {
        //                public boolean apply( PropertyChangeEvent input ) {
        //                    return input.getSource() instanceof Flurstueck;
        //                }
        //            });
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

From source file:tinyos.dlrc.make.dialog.pages.IncludePage.java

License:Open Source License

private TableViewerColumn createColumnInclude() {
    TableViewerColumn column = new TableViewerColumn(includeList, SWT.CENTER, 1);
    column.getColumn().setMoveable(false);
    column.getColumn().setResizable(true);
    column.getColumn().setWidth(100);/* w w  w. j  av a 2s .co m*/
    column.getColumn().setText("Include");
    column.getColumn().setToolTipText("How source files can include files of this directory.\n"
            + "- never: the files cannot be included.\n"
            + "- source: the files can be included with '#include \"file.h\"'.\n"
            + "- system: the files can be included with '#include \"file.h\"' and with '#include <file.h>'.");
    column.setEditingSupport(new EditingSupport(includeList) {
        private CellEditor editor = new CellEditor() {
            private int value = 0;

            @Override
            protected Control createControl(Composite parent) {
                return null;
            }

            @Override
            protected Object doGetValue() {
                return Integer.valueOf(value);
            }

            @Override
            protected void doSetFocus() {
                // ignore   
            }

            @Override
            protected void doSetValue(Object value) {
                this.value = (Integer) value;
            }

            @Override
            public void activate() {
                value = (value + 1) % 3;
                fireApplyEditorValue();
            }
        };

        @Override
        protected boolean canEdit(Object element) {
            return !((TableEntry) element).isFile();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return editor;
        }

        @Override
        protected Object getValue(Object element) {
            switch (((TableEntry) element).include) {
            case NONE:
                return 0;
            case SOURCE:
                return 1;
            case SYSTEM:
                return 2;
            default:
                return 0;
            }
        }

        @Override
        protected void setValue(Object element, Object value) {
            Include include = Include.NONE;
            switch ((Integer) value) {
            case 0:
                include = Include.NONE;
                break;
            case 1:
                include = Include.SOURCE;
                break;
            case 2:
                include = Include.SYSTEM;
                break;
            default:
                throw new IllegalArgumentException();
            }

            ((TableEntry) element).include = include;
            contentProvider.refresh((TableEntry) element);
        }

    });
    column.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            TableEntry entry = (TableEntry) cell.getElement();
            if (entry.isFile()) {
                cell.setText("n/a");
            } else {
                switch (entry.include) {
                case NONE:
                    cell.setText("never");
                    break;
                case SOURCE:
                    cell.setText("source");
                    break;
                case SYSTEM:
                    cell.setText("system");
                    break;
                }
            }
        }
    });
    return column;
}