Search in sources :

Example 1 with ColumnCellModifier

use of org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier in project tdi-studio-se by Talend.

the class AbstractHL7MetadataTableEditorView method configurePatternColumn.

/**
     * DOC amaumont Comment method "configurePatternColumn".
     * 
     * @param tableViewerCreator
     */
protected void configurePatternColumn(TableViewerCreator<B> tableViewerCreator) {
    if (LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA && showPatternColumn) {
        final TableViewerCreatorColumn column = new TableViewerCreatorColumn(tableViewerCreator);
        //$NON-NLS-1$
        String patternTitle = Messages.getString("MetadataTableEditorView.PatternTitle");
        column.setTitle(patternTitle);
        column.setToolTipHeader(patternTitle);
        column.setId(ID_COLUMN_PATTERN);
        column.setBeanPropertyAccessors(getPatternAccessor());
        column.setModifiable(!isReadOnly());
        column.setWeight(16);
        final ColumnCellModifier columnCellModifier = new ColumnCellModifier(column) {

            public boolean canModify(Object bean) {
                boolean typeIsDate = currentBeanHasJavaDateType(bean) && !isReadOnly();
                return typeIsDate;
            }
        };
        column.setColorProvider(new IColumnColorProvider() {

            public Color getBackgroundColor(Object bean) {
                if (!columnCellModifier.canModify(bean)) {
                    return READONLY_CELL_BG_COLOR;
                }
                return null;
            }

            public Color getForegroundColor(Object bean) {
                return null;
            }
        });
        column.setLabelProvider(new IColumnLabelProvider() {

            /*
                 * (non-Javadoc)
                 * 
                 * @see org.talend.commons.ui.swt.tableviewer.behavior.IColumnLabelProvider#getLabel(java.lang.Object)
                 */
            public String getLabel(Object bean) {
                if (!currentBeanHasJavaDateType(bean)) {
                    //$NON-NLS-1$
                    return "";
                }
                return null;
            }
        });
        column.setColumnCellModifier(columnCellModifier);
        JavaSimpleDateFormatProposalProvider proposalProvider = new JavaSimpleDateFormatProposalProvider();
        TextCellEditorWithProposal patternCellEditor = new TextCellEditorWithProposal(tableViewerCreator.getTable(), column);
        ContentProposalAdapterExtended contentProposalAdapter = patternCellEditor.getContentProposalAdapter();
        contentProposalAdapter.setFilterStyle(ContentProposalAdapterExtended.FILTER_NONE);
        contentProposalAdapter.setProposalAcceptanceStyle(ContentProposalAdapterExtended.PROPOSAL_INSERT);
        patternCellEditor.setContentProposalProvider(proposalProvider);
        column.setCellEditor(patternCellEditor, CellEditorValueAdapterFactory.getNullToEmptyStringTextAdapater());
    }
}
Also used : IColumnLabelProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnLabelProvider) ContentProposalAdapterExtended(org.talend.commons.ui.swt.proposal.ContentProposalAdapterExtended) TextCellEditorWithProposal(org.talend.commons.ui.swt.proposal.TextCellEditorWithProposal) Color(org.eclipse.swt.graphics.Color) JavaSimpleDateFormatProposalProvider(org.talend.core.ui.proposal.JavaSimpleDateFormatProposalProvider) TableViewerCreatorColumn(org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn) IColumnColorProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnColorProvider) ColumnCellModifier(org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier)

Example 2 with ColumnCellModifier

use of org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier in project tdi-studio-se by Talend.

the class PropertiesTableEditorView method createColumns.

/*
     * (non-Javadoc)
     * 
     * @see
     * org.talend.commons.ui.swt.extended.macrotable.AbstractExtendedTableViewer#createColumns(org.talend.commons.ui
     * .swt.tableviewer.TableViewerCreator, org.eclipse.swt.widgets.Table)
     */
@SuppressWarnings("unchecked")
@Override
protected void createColumns(final TableViewerCreator<B> tableViewerCreator, final Table table) {
    // there's two lists of values, one that will be in the table
    // and the other will be stored as the current value in the property
    // there is two lists because of the undo / redo capabilities
    PropertiesTableEditorModel model = getModel();
    TalendProposalProvider processProposalProvider = new TalendProposalProvider(model.getProcess());
    String[] titles = model.getTitles();
    final Object[] itemsValue = model.getItemsValue();
    final String[] items = model.getItems();
    // final Element elem = model.getElement();
    final IElementParameter param = model.getElemParameter();
    final IElement element = model.getElement();
    for (int i = 0; i < titles.length; i++) {
        final int curCol = i;
        final IElementParameter currentParam = (IElementParameter) itemsValue[i];
        // if all is empty, show it always.
        boolean toDisplay = currentParam.isShow(currentParam.getShowIf(), currentParam.getNotShowIf(), element.getElementParameters());
        if (!toDisplay) {
            List<Map<String, Object>> fullTable = (List<Map<String, Object>>) param.getValue();
            for (int curLine = 0; curLine < fullTable.size(); curLine++) {
                ((ElementParameter) currentParam).setCurrentRow(curLine);
                if (currentParam.isShow(element.getElementParameters())) {
                    toDisplay = true;
                    break;
                }
            }
        }
        if (toDisplay) {
            final TableViewerCreatorColumn column = new TableViewerCreatorColumn(tableViewerCreator);
            column.setTitle(titles[i]);
            column.setModifiable(true);
            column.setMinimumWidth(100);
            column.setWeight(20);
            switch(currentParam.getFieldType()) {
                case CONTEXT_PARAM_NAME_LIST:
                case CLOSED_LIST:
                case LOOKUP_COLUMN_LIST:
                case COLUMN_LIST:
                case CONNECTION_LIST:
                case DBTYPE_LIST:
                case COMPONENT_LIST:
                case PREV_COLUMN_LIST:
                    final ComboBoxCellEditor cellEditor = new ComboBoxCellEditor(table, currentParam.getListItemsDisplayName());
                    final IElementParameter copyOfTmpParam = currentParam;
                    ((CCombo) cellEditor.getControl()).setEditable(false);
                    ((CCombo) cellEditor.getControl()).setEnabled(!(param.isRepositoryValueUsed() || param.isReadOnly() || currentParam.isReadOnly()));
                    column.setCellEditor(cellEditor, new CellEditorValueAdapter() {

                        @Override
                        public String getColumnText(CellEditor cellEditor, Object bean, Object cellEditorValue) {
                            return (String) cellEditorValue;
                        }

                        @Override
                        public Object getOriginalTypedValue(CellEditor cellEditor, Object cellEditorTypedValue) {
                            Object returnedValue = null;
                            if (cellEditorTypedValue != null && cellEditorTypedValue instanceof Integer) {
                                int index = (Integer) cellEditorTypedValue;
                                String[] namesSet = ((CCombo) cellEditor.getControl()).getItems();
                                if (namesSet.length > 0 && index > -1 && index < namesSet.length) {
                                    returnedValue = namesSet[index];
                                } else {
                                    returnedValue = null;
                                }
                            } else {
                                returnedValue = null;
                            }
                            return returnedValue;
                        }

                        ;

                        @Override
                        public Object getCellEditorTypedValue(CellEditor cellEditor, Object originalTypedValue) {
                            CCombo combo = (CCombo) cellEditor.getControl();
                            int rowNumber = ((Table) combo.getParent()).getSelectionIndex();
                            String[] listToDisplay = getItemsToDisplay(element, copyOfTmpParam, rowNumber);
                            if (!Arrays.equals(listToDisplay, ((ComboBoxCellEditor) cellEditor).getItems())) {
                                ((ComboBoxCellEditor) cellEditor).setItems(listToDisplay);
                            }
                            Object returnedValue = 0;
                            if (originalTypedValue != null) {
                                String[] namesSet = listToDisplay;
                                for (int j = 0; j < namesSet.length; j++) {
                                    if (namesSet[j].equals(originalTypedValue)) {
                                        returnedValue = j;
                                        break;
                                    }
                                }
                            }
                            return returnedValue;
                        }

                        ;
                    });
                    break;
                case OPENED_LIST:
                    final EditableComboBoxCellEditor editCellEditor = new EditableComboBoxCellEditor(table, currentParam.getListItemsDisplayName());
                    table.addSelectionListener(new SelectionAdapter() {

                        @Override
                        public void widgetSelected(SelectionEvent e) {
                            String oldValue = null;
                            if (editCellEditor != null) {
                                if (!(editCellEditor.getValue() instanceof String)) {
                                    return;
                                }
                                oldValue = (String) editCellEditor.getValue();
                            }
                            String[] columnItems = null;
                            if (table.getSelection() != null && table.getSelection().length > 0) {
                                TableItem tableItem = table.getSelection()[0];
                                if (tableItem.getData() instanceof Map) {
                                    Map map = (Map) tableItem.getData();
                                    if (currentParam.getFilter() != null && map.get(currentParam.getFilter()) instanceof String) {
                                        String value = (String) map.get(currentParam.getFilter());
                                        if (element instanceof Node) {
                                            List<IConnection> listConnection = (List<IConnection>) ((Node) element).getInputs();
                                            for (IConnection con : listConnection) {
                                                if (con.getName().equals(value)) {
                                                    List<IMetadataColumn> columns = con.getMetadataTable().getListColumns();
                                                    columnItems = new String[columns.size()];
                                                    for (int i = 0; i < columns.size(); i++) {
                                                        columnItems[i] = columns.get(i).getLabel();
                                                    }
                                                    if (editCellEditor != null) {
                                                        List<String> ret = new ArrayList<String>();
                                                        for (String columnItem : columnItems) {
                                                            ret.add(columnItem);
                                                        }
                                                        for (int i = 0; i < currentParam.getListItemsDisplayName().length; i++) {
                                                            ret.add(currentParam.getListItemsDisplayName()[i]);
                                                        }
                                                        editCellEditor.setItems(ret.toArray(new String[0]));
                                                        editCellEditor.setValue(oldValue);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    });
                    column.setCellEditor(editCellEditor);
                    break;
                case MODULE_LIST:
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    ModuleListCellEditor moduleEditor = new ModuleListCellEditor(table, currentParam, param);
                    moduleEditor.setTableEditorView(this);
                    column.setCellEditor(moduleEditor);
                    break;
                case COLOR:
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    // column.setDisplayedValue("");
                    column.setLabelProvider(null);
                    column.setCellEditor(new ColorCellEditor(table) {

                        @Override
                        protected void doSetValue(Object value) {
                            if (value instanceof String) {
                                super.doSetValue(ColorUtils.stringToRGB((String) value));
                            } else {
                                super.doSetValue(value);
                            }
                        }

                        @Override
                        protected void updateContents(Object value) {
                            if (value != null) {
                                if (value instanceof String) {
                                    super.updateContents(ColorUtils.stringToRGB((String) value));
                                } else {
                                    super.updateContents(value);
                                }
                            }
                        }
                    });
                    column.setColorProvider(new IColumnColorProvider() {

                        @Override
                        public Color getBackgroundColor(Object bean) {
                            Object value = ((Map<String, Object>) bean).get(items[curCol]);
                            if (value == null || (!(value instanceof String))) {
                                return Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
                            }
                            return new Color(null, ColorUtils.stringToRGB((String) value));
                        }

                        @Override
                        public Color getForegroundColor(Object bean) {
                            return null;
                        }
                    });
                    break;
                case CHECK:
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    CheckColumnSelectionListener tableColumnSelectionListener = new CheckColumnSelectionListener(column, tableViewerCreator, currentParam);
                    if (!currentParam.isReadOnly()) {
                        column.setTableColumnSelectionListener(tableColumnSelectionListener);
                    }
                    column.setTableEditorContent(new CheckboxTableEditorContent());
                    Boolean curValue = (Boolean) currentParam.getValue();
                    if (curValue == null) {
                        curValue = Boolean.FALSE;
                    }
                    tableColumnSelectionListener.setChecked(curValue.booleanValue());
                    if (curValue.booleanValue()) {
                        column.setImageHeader(ImageProvider.getImage(EImage.CHECKED_ICON));
                    } else {
                        column.setImageHeader(ImageProvider.getImage(EImage.UNCHECKED_ICON));
                    }
                    //$NON-NLS-1$
                    column.setDisplayedValue("");
                    break;
                case SCHEMA_TYPE:
                case SCHEMA_REFERENCE:
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    final INode node = (INode) element;
                    // List<IMetadataTable> tables = node.getMetadataList();
                    // if (isEBCDICNode(node)) { // ebcdic
                    column.setLabelProvider(new IColumnLabelProvider() {

                        @Override
                        public String getLabel(Object bean) {
                            if (bean instanceof Map) {
                                Map<String, Object> valueMap = (Map<String, Object>) bean;
                                String value = (String) valueMap.get(IEbcdicConstant.FIELD_SCHEMA);
                                if (value != null && !"".equals(value)) {
                                    //$NON-NLS-1$
                                    IMetadataTable metadataTable = MetadataToolHelper.getMetadataTableFromNodeTableName(node, value);
                                    if (metadataTable != null) {
                                        if (isEBCDICNode(node)) {
                                            if (isRepositorySchemaLine(node, valueMap)) {
                                                //$NON-NLS-1$ //$NON-NLS-2$
                                                return "Repository (" + metadataTable.getTableName() + ")";
                                            } else {
                                                //$NON-NLS-1$ //$NON-NLS-2$
                                                return "Built-In (" + metadataTable.getTableName() + ")";
                                            }
                                        } else {
                                            return metadataTable.getTableName();
                                        }
                                    } else {
                                        return value;
                                    }
                                }
                            }
                            //$NON-NLS-1$
                            return "";
                        }
                    });
                    // } else {
                    // column.setLabelProvider(null);
                    // }
                    SchemaCellEditor schemaEditor = new SchemaCellEditor(table, node);
                    schemaEditor.setTableEditorView(this);
                    column.setCellEditor(schemaEditor);
                    break;
                case SAP_SCHEMA_TYPE:
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    final INode sapNode = (INode) element;
                    column.setLabelProvider(new IColumnLabelProvider() {

                        @Override
                        public String getLabel(Object bean) {
                            if (bean instanceof Map) {
                                Map<String, Object> valueMap = (Map<String, Object>) bean;
                                String value = (String) valueMap.get(IEbcdicConstant.FIELD_SCHEMA);
                                if (value != null && !"".equals(value)) {
                                    //$NON-NLS-1$
                                    IMetadataTable metadataTable = MetadataToolHelper.getMetadataTableFromNodeTableName(sapNode, value);
                                    if (metadataTable != null) {
                                        if (isEBCDICNode(sapNode)) {
                                            if (isRepositorySchemaLine(sapNode, valueMap)) {
                                                //$NON-NLS-1$ //$NON-NLS-2$
                                                return "Repository (" + metadataTable.getTableName() + ")";
                                            } else {
                                                //$NON-NLS-1$ //$NON-NLS-2$
                                                return "Built-In (" + metadataTable.getTableName() + ")";
                                            }
                                        } else if (isSAPNode(sapNode)) {
                                            Object type = valueMap.get(ISAPConstant.TYPE);
                                            if (type instanceof Integer) {
                                                return "";
                                            }
                                            if (type.toString().equals(SINGLE) || type.toString().equals(STRUCTURE)) {
                                                List<IMetadataColumn> columns = metadataTable.getListColumns(true);
                                                StringBuffer values = new StringBuffer();
                                                values.append(metadataTable.getTableName() + ":");
                                                if (metadataTable.getListColumns(true).size() > 0) {
                                                    for (IMetadataColumn column : columns) {
                                                        values.append(column.getDefault() + ",");
                                                    }
                                                    String ret = values.toString();
                                                    return ret.substring(0, ret.length() - 1);
                                                }
                                            } else {
                                                return metadataTable.getTableName();
                                            }
                                        } else {
                                            return metadataTable.getTableName();
                                        }
                                    } else {
                                        return value;
                                    }
                                }
                            }
                            //$NON-NLS-1$
                            return "";
                        }
                    });
                    schemaEditor = new SchemaCellEditor(table, sapNode);
                    schemaEditor.setTableEditorView(this);
                    column.setCellEditor(schemaEditor);
                    break;
                // hywang add for feature 6484
                case RULE_TYPE:
                    //$NON-NLS-1$
                    column.setTitle("Rule");
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    final INode node1 = (INode) element;
                    column.setLabelProvider(new IColumnLabelProvider() {

                        @Override
                        public String getLabel(Object bean) {
                            if (bean instanceof Map) {
                                Map<String, Object> valueMap = (Map<String, Object>) bean;
                                String value = (String) valueMap.get(IRuleConstant.FIELD_RULE);
                                if (value != null && !"".equals(value)) {
                                    //$NON-NLS-1$
                                    IMetadataTable metadataTable = MetadataToolHelper.getMetadataTableFromNodeTableName(node1, value);
                                    if (metadataTable != null) {
                                        return metadataTable.getTableName();
                                    } else {
                                        return value;
                                    }
                                }
                            }
                            //$NON-NLS-1$
                            return "";
                        }
                    });
                    RuleCellEditor ruleEditor = new RuleCellEditor(table, node1);
                    ruleEditor.setTableEditorView(this);
                    column.setCellEditor(ruleEditor);
                    break;
                case SCHEMA_XPATH_QUERYS:
                    column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    final INode node2 = (INode) element;
                    SchemaXPathQuerysCellEditor schemaXPathEditor = new SchemaXPathQuerysCellEditor(table, node2);
                    schemaXPathEditor.setTableEditorView(this);
                    column.setCellEditor(schemaXPathEditor);
                    break;
                case MULTI_PATTERN:
                    column.setModifiable(true);
                    PatternCellEditor patternEditor = new PatternCellEditor(table, element);
                    patternEditor.setTableEditorView(this);
                    column.setCellEditor(patternEditor);
                    break;
                case PATTERN_PROPERTY:
                    column.setModifiable(true);
                    PatternPropertyCellEditor patternPropertyEditor = new PatternPropertyCellEditor(table, element);
                    patternPropertyEditor.setTableEditorView(this);
                    column.setCellEditor(patternPropertyEditor);
                    break;
                default:
                    // TEXT
                    TextCellEditor tcEditor = null;
                    if (((i == 0) && (param.isBasedOnSchema() || param.isBasedOnSubjobStarts())) || (param.isRepositoryValueUsed()) || (param.isReadOnly()) || currentParam.isReadOnly()) {
                        // read only cell
                        if (!param.getElement().isReadOnly() && (param.getName().equals("HADOOP_ADVANCED_PROPERTIES") || param.getName().equals("SPARK_ADVANCED_PROPERTIES") || param.getName().equals("HBASE_PARAMETERS"))) {
                            if (currentParam.isNoContextAssist()) {
                                tcEditor = new TextCellEditor(table);
                            } else {
                                TextCellEditorWithProposal textCellEditor = new TextCellEditorWithProposal(table, column);
                                textCellEditor.setContentProposalProvider(processProposalProvider);
                                tcEditor = textCellEditor;
                            }
                        }
                    } else {
                        // writable cell
                        if (currentParam.isNoContextAssist()) {
                            tcEditor = new TextCellEditor(table);
                        } else {
                            TextCellEditorWithProposal textCellEditor = new TextCellEditorWithProposal(table, column);
                            textCellEditor.setContentProposalProvider(processProposalProvider);
                            tcEditor = textCellEditor;
                        }
                    }
                    if (tcEditor != null) {
                        column.setCellEditor(tcEditor);
                        column.setModifiable((!param.isRepositoryValueUsed()) && (!param.isReadOnly()) && (!currentParam.isReadOnly()));
                    }
            }
            // for all kinds of column, check if read only or not when edit the field.
            column.setColumnCellModifier(new ColumnCellModifier(column) {

                @Override
                public boolean canModify(Object bean) {
                    if (param.getName().equals("HADOOP_ADVANCED_PROPERTIES") || param.getName().equals("SPARK_ADVANCED_PROPERTIES") || param.getName().equals("HBASE_PARAMETERS")) {
                        boolean canModify = super.canModify(bean);
                        if (canModify) {
                            Map<String, Object> valueMap = (Map<String, Object>) bean;
                            List<Map<String, Object>> fullValues = (List<Map<String, Object>>) param.getValue();
                            ((ElementParameter) currentParam).setCurrentRow(fullValues.indexOf(valueMap));
                            if (currentParam.isReadOnly(element.getElementParameters())) {
                                return false;
                            }
                        } else {
                            Map<String, Object> valueMap = (Map<String, Object>) bean;
                            if (valueMap.get("BUILDIN") != null && valueMap.get("BUILDIN").equals("TRUE")) {
                                return true;
                            } else {
                                return false;
                            }
                        }
                        return canModify;
                    }
                    boolean canModify = super.canModify(bean);
                    if (canModify) {
                        Map<String, Object> valueMap = (Map<String, Object>) bean;
                        List<Map<String, Object>> fullValues = (List<Map<String, Object>>) param.getValue();
                        ((ElementParameter) currentParam).setCurrentRow(fullValues.indexOf(valueMap));
                        if (currentParam.isReadOnly(element.getElementParameters())) {
                            return false;
                        }
                    }
                    return canModify;
                }
            });
            column.setColorProvider(new IColumnColorProvider<B>() {

                @Override
                public Color getBackgroundColor(B bean) {
                    Map<String, Object> valueMap = (Map<String, Object>) bean;
                    List<Map<String, Object>> fullValues = (List<Map<String, Object>>) param.getValue();
                    // hyWang add varriable index for bug 7294
                    int index = fullValues.indexOf(valueMap);
                    if (index >= 0) {
                        ((ElementParameter) currentParam).setCurrentRow(index);
                        if (currentParam.isReadOnly(element.getElementParameters())) {
                            return AbstractMetadataTableEditorView.READONLY_CELL_BG_COLOR;
                        }
                    }
                    if (param.getName().equals("HADOOP_ADVANCED_PROPERTIES") || param.getName().equals("SPARK_ADVANCED_PROPERTIES") || param.getName().equals("HBASE_PARAMETERS")) {
                        if (valueMap.get("BUILDIN") == null || valueMap.get("BUILDIN") != null && valueMap.get("BUILDIN").equals("")) {
                            return Display.getCurrent().getSystemColor(SWT.COLOR_GRAY);
                        }
                    }
                    if (currentParam.getFieldType() == EParameterFieldType.CONTEXT_PARAM_NAME_LIST) {
                        Object value = ((Map<String, Object>) bean).get(items[curCol]);
                        boolean found = false;
                        Object[] items = currentParam.getListItemsValue();
                        for (Object item : items) {
                            if (item.equals(value)) {
                                found = true;
                                break;
                            }
                        }
                        if (!found) {
                            return Display.getCurrent().getSystemColor(SWT.COLOR_RED);
                        }
                    }
                    return null;
                }

                @Override
                public Color getForegroundColor(B bean) {
                    return null;
                }
            });
            column.setBeanPropertyAccessors(new IBeanPropertyAccessors<B, Object>() {

                @Override
                public Object get(B bean) {
                    Object value = ((Map<String, Object>) bean).get(items[curCol]);
                    if (value == null) {
                        //$NON-NLS-1$
                        return "";
                    }
                    if (itemsValue[curCol] instanceof IElementParameter) {
                        IElementParameter tmpParam = (IElementParameter) itemsValue[curCol];
                        boolean hideValue = false;
                        if (!tmpParam.isReadOnly()) {
                            if ((tmpParam.getReadOnlyIf() != null || tmpParam.getNotReadOnlyIf() != null) && tmpParam.isReadOnly(element.getElementParameters())) {
                                hideValue = true;
                            }
                        }
                        switch(tmpParam.getFieldType()) {
                            case CONTEXT_PARAM_NAME_LIST:
                            case CLOSED_LIST:
                            case COMPONENT_LIST:
                            case COLUMN_LIST:
                            case CONNECTION_LIST:
                            case LOOKUP_COLUMN_LIST:
                            case PREV_COLUMN_LIST:
                            case DBTYPE_LIST:
                                if (hideValue) {
                                    //$NON-NLS-1$
                                    return "";
                                }
                                String[] namesSet = tmpParam.getListItemsDisplayName();
                                if (namesSet.length == 0) {
                                    return tmpParam.getDefaultClosedListValue();
                                }
                                if (value instanceof String) {
                                    boolean found = false;
                                    int index = 0;
                                    if (currentParam.getFieldType() == EParameterFieldType.CONTEXT_PARAM_NAME_LIST) {
                                        // if not found, won't use first(index 0) instead
                                        index = -1;
                                    }
                                    Object[] items = currentParam.getListItemsValue();
                                    for (int j = 0; j < items.length && !found; j++) {
                                        if (items[j].equals(value)) {
                                            found = true;
                                            index = j;
                                        }
                                    }
                                    value = new Integer(index);
                                }
                                if (value != null && ((Integer) value) >= 0) {
                                    return namesSet[(Integer) value];
                                }
                                return null;
                            case OPENED_LIST:
                                if (hideValue) {
                                    //$NON-NLS-1$
                                    return "";
                                }
                                String[] listItemsValue = tmpParam.getListItemsDisplayName();
                                if (listItemsValue.length == 0) {
                                    return value;
                                }
                                int index = -1;
                                if (value instanceof String) {
                                    boolean found = false;
                                    Object[] items = ((IElementParameter) itemsValue[curCol]).getListItemsValue();
                                    for (int j = 0; j < items.length && !found; j++) {
                                        if (items[j].equals(value)) {
                                            found = true;
                                            index = j;
                                        }
                                    }
                                }
                                Integer count = new Integer(index);
                                if (count >= 0) {
                                    return listItemsValue[count];
                                } else if (count < 0) {
                                    return value;
                                }
                                return value;
                            case CHECK:
                                if (hideValue) {
                                    return false;
                                }
                                if (value instanceof String) {
                                    return new Boolean((String) value);
                                }
                                return value;
                            case RADIO:
                                if (hideValue) {
                                    return false;
                                }
                                if (value instanceof String) {
                                    return new Boolean((String) value);
                                }
                                return value;
                            case COLOR:
                                if (value instanceof String) {
                                    return ColorUtils.stringToRGB((String) value);
                                }
                                // already RGB
                                return value;
                            default:
                                // TEXT
                                if (hideValue) {
                                    //$NON-NLS-1$
                                    return "";
                                }
                                return value;
                        }
                    }
                    return value;
                }

                @Override
                public void set(B bean, Object value) {
                    Object finalValue = value;
                    IElementParameter tmpParam = (IElementParameter) itemsValue[curCol];
                    // TODO should test if this parameter is contained in any other show if / not show if, etc..
                    boolean included = false;
                    for (Object object : param.getListItemsValue()) {
                        if (object instanceof IElementParameter) {
                            if (((IElementParameter) object).getShowIf() != null && ((IElementParameter) object).getShowIf().contains(tmpParam.getName())) {
                                included = true;
                                break;
                            }
                            if (((IElementParameter) object).getNotShowIf() != null && ((IElementParameter) object).getNotShowIf().contains(tmpParam.getName())) {
                                included = true;
                                break;
                            }
                            if (((IElementParameter) object).getReadOnlyIf() != null && ((IElementParameter) object).getReadOnlyIf().contains(tmpParam.getName())) {
                                included = true;
                                break;
                            }
                            if (((IElementParameter) object).getNotReadOnlyIf() != null && ((IElementParameter) object).getNotReadOnlyIf().contains(tmpParam.getName())) {
                                included = true;
                                break;
                            }
                        }
                    }
                    if (included) {
                        IElementParameter param = element.getElementParameter(EParameterName.UPDATE_COMPONENTS.getName());
                        if (param != null) {
                            param.setValue(Boolean.TRUE);
                        }
                    }
                    boolean isNeedReCheck = false;
                    switch(tmpParam.getFieldType()) {
                        case CONTEXT_PARAM_NAME_LIST:
                        case CLOSED_LIST:
                        case COLUMN_LIST:
                        case COMPONENT_LIST:
                        case CONNECTION_LIST:
                        case LOOKUP_COLUMN_LIST:
                        case PREV_COLUMN_LIST:
                            isNeedReCheck = true;
                            if (value instanceof String) {
                                Object[] itemNames = ((IElementParameter) itemsValue[curCol]).getListItemsDisplayName();
                                Object[] itemValues = ((IElementParameter) itemsValue[curCol]).getListItemsValue();
                                boolean found = false;
                                int index = 0;
                                for (int j = 0; j < itemNames.length && !found; j++) {
                                    if (itemNames[j].equals(value)) {
                                        found = true;
                                        index = j;
                                    }
                                }
                                if (value != null && (index >= 0)) {
                                    finalValue = itemValues[new Integer(index)];
                                }
                            }
                            break;
                        case OPENED_LIST:
                            if (value instanceof String) {
                                Object[] itemNames = ((IElementParameter) itemsValue[curCol]).getListItemsDisplayName();
                                Object[] itemValues = ((IElementParameter) itemsValue[curCol]).getListItemsValue();
                                boolean found = false;
                                int index = -1;
                                for (int j = 0; j < itemNames.length && !found; j++) {
                                    if (itemNames[j].equals(value)) {
                                        found = true;
                                        index = j;
                                    }
                                }
                                if (value != null && (index >= 0)) {
                                    finalValue = itemValues[new Integer(index)];
                                } else if (value != null && (index < 0)) {
                                    finalValue = value;
                                }
                            }
                            break;
                        case COLOR:
                            if (value instanceof RGB) {
                                RGB rgb = (RGB) value;
                                //$NON-NLS-1$ //$NON-NLS-2$
                                finalValue = rgb.red + ";" + rgb.green + ";" + rgb.blue;
                            }
                        default:
                    }
                    ((Map<String, Object>) bean).put(items[curCol], finalValue);
                    resetValuesIfNeeded(element, param, (Map<String, Object>) bean);
                    /*
                         * TDI-6568, in fact, no need reset the value. just want to enable
                         * "firePropertyChange(RETURNS_CHANGED, null, null)" in Node.
                         */
                    if (param.getFieldType().equals(EParameterFieldType.TABLE)) {
                        element.setPropertyValue(param.getName(), param.getValue());
                    }
                    if (isNeedReCheck && element instanceof Node) {
                        IProcess process = ((Node) element).getProcess();
                        if (process instanceof IProcess2) {
                            ((IProcess2) process).checkProcess();
                        }
                        // enable to refresh component setting after change modules.
                        // so far, for cMessagingEndpoint (TUP-1119)
                        final IElementParameter copyOfTmpParam = currentParam;
                        if (element != null && "LIBPATH".equals(copyOfTmpParam.getName())) {
                            //$NON-NLS-1$
                            IElementParameter updateComponentsParam = element.getElementParameter(EParameterName.UPDATE_COMPONENTS.getName());
                            if (updateComponentsParam != null) {
                                updateComponentsParam.setValue(Boolean.TRUE);
                            }
                        }
                    }
                }
            });
        }
    }
}
Also used : TalendProposalProvider(org.talend.core.ui.proposal.TalendProposalProvider) TableItem(org.eclipse.swt.widgets.TableItem) Node(org.talend.designer.core.ui.editor.nodes.Node) INode(org.talend.core.model.process.INode) IElementParameter(org.talend.core.model.process.IElementParameter) ElementParameter(org.talend.designer.core.model.components.ElementParameter) SchemaCellEditor(org.talend.core.ui.metadata.celleditor.SchemaCellEditor) ColorCellEditor(org.eclipse.jface.viewers.ColorCellEditor) SelectionEvent(org.eclipse.swt.events.SelectionEvent) List(java.util.List) ArrayList(java.util.ArrayList) IColumnColorProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnColorProvider) IProcess(org.talend.core.model.process.IProcess) PatternPropertyCellEditor(org.talend.designer.core.ui.celleditor.PatternPropertyCellEditor) IElement(org.talend.core.model.process.IElement) Color(org.eclipse.swt.graphics.Color) EditableComboBoxCellEditor(org.talend.commons.ui.swt.tableviewer.celleditor.EditableComboBoxCellEditor) ComboBoxCellEditor(org.eclipse.jface.viewers.ComboBoxCellEditor) IMetadataColumn(org.talend.core.model.metadata.IMetadataColumn) RGB(org.eclipse.swt.graphics.RGB) CCombo(org.eclipse.swt.custom.CCombo) TextCellEditor(org.eclipse.jface.viewers.TextCellEditor) Map(java.util.Map) INode(org.talend.core.model.process.INode) RGB(org.eclipse.swt.graphics.RGB) CellEditor(org.eclipse.jface.viewers.CellEditor) SchemaCellEditor(org.talend.core.ui.metadata.celleditor.SchemaCellEditor) PatternPropertyCellEditor(org.talend.designer.core.ui.celleditor.PatternPropertyCellEditor) ColorCellEditor(org.eclipse.jface.viewers.ColorCellEditor) ModuleListCellEditor(org.talend.core.ui.metadata.celleditor.ModuleListCellEditor) EditableComboBoxCellEditor(org.talend.commons.ui.swt.tableviewer.celleditor.EditableComboBoxCellEditor) PatternCellEditor(org.talend.designer.core.ui.celleditor.PatternCellEditor) TextCellEditor(org.eclipse.jface.viewers.TextCellEditor) RuleCellEditor(org.talend.core.ui.metadata.celleditor.RuleCellEditor) SchemaXPathQuerysCellEditor(org.talend.core.ui.metadata.celleditor.SchemaXPathQuerysCellEditor) ComboBoxCellEditor(org.eclipse.jface.viewers.ComboBoxCellEditor) CheckColumnSelectionListener(org.talend.designer.core.ui.event.CheckColumnSelectionListener) CellEditorValueAdapter(org.talend.commons.ui.runtime.swt.tableviewer.behavior.CellEditorValueAdapter) RuleCellEditor(org.talend.core.ui.metadata.celleditor.RuleCellEditor) IConnection(org.talend.core.model.process.IConnection) ModuleListCellEditor(org.talend.core.ui.metadata.celleditor.ModuleListCellEditor) ColumnCellModifier(org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier) IElementParameter(org.talend.core.model.process.IElementParameter) PatternCellEditor(org.talend.designer.core.ui.celleditor.PatternCellEditor) IColumnLabelProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnLabelProvider) SchemaXPathQuerysCellEditor(org.talend.core.ui.metadata.celleditor.SchemaXPathQuerysCellEditor) TextCellEditorWithProposal(org.talend.commons.ui.swt.proposal.TextCellEditorWithProposal) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) IMetadataTable(org.talend.core.model.metadata.IMetadataTable) CheckboxTableEditorContent(org.talend.commons.ui.swt.tableviewer.tableeditor.CheckboxTableEditorContent) IProcess2(org.talend.core.model.process.IProcess2) TableViewerCreatorColumn(org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn) EditableComboBoxCellEditor(org.talend.commons.ui.swt.tableviewer.celleditor.EditableComboBoxCellEditor)

Example 3 with ColumnCellModifier

use of org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier in project tdi-studio-se by Talend.

the class PropertiesTableByRowEditorView method createColumns.

/*
     * (non-Javadoc)
     * 
     * @see
     * org.talend.commons.ui.swt.advanced.dataeditor.AbstractDataTableEditorView#createColumns(org.talend.commons.ui
     * .swt.tableviewer.TableViewerCreator, org.eclipse.swt.widgets.Table)
     */
@Override
protected void createColumns(TableViewerCreator<B> tableViewerCreator, Table table) {
    // there's two lists of values, one that will be in the table
    // and the other will be stored as the current value in the property
    // there is two lists because of the undo / redo capabilities
    PropertiesTableEditorModel model = getModel();
    TalendProposalProvider processProposalProvider = new TalendProposalProvider(model.getProcess());
    String[] titles = null;
    // final Element elem = model.getElement();
    final IElementParameter param = model.getElemParameter();
    final IElement element = model.getElement();
    if (element instanceof Node) {
        List<IConnection> listConnection = (List<IConnection>) ((Node) element).getInputs();
        List<String> names = new ArrayList<String>();
        for (IConnection con : listConnection) {
            names.add(con.getName());
        }
        titles = new String[names.size()];
        for (int i = 0; i < names.size(); i++) {
            titles[i] = names.get(i);
        }
    }
    if (titles != null && titles.length > 0) {
        for (int i = 0; i < titles.length; i++) {
            final int curCol = i;
            boolean toDisplay = true;
            if (toDisplay) {
                final TableViewerCreatorColumn column = new TableViewerCreatorColumn(tableViewerCreator);
                column.setTitle(titles[i]);
                column.setModifiable(true);
                column.setMinimumWidth(100);
                column.setWeight(20);
                String[] stringToDisplay = null;
                if (element instanceof Node) {
                    List<IConnection> listConnection = (List<IConnection>) ((Node) element).getInputs();
                    for (IConnection con : listConnection) {
                        if (con.getName().equals(titles[i])) {
                            List<IMetadataColumn> columns = con.getMetadataTable().getListColumns();
                            stringToDisplay = new String[columns.size()];
                            for (int j = 0; j < columns.size(); j++) {
                                stringToDisplay[j] = columns.get(j).getLabel();
                            }
                        }
                    }
                }
                final EditableComboBoxCellEditor cellEditor = new EditableComboBoxCellEditor(table, stringToDisplay);
                // column.setLabelProvider(new IColumnLabelProvider() {
                //
                // @Override
                // public String getLabel(Object bean) {
                // if (bean instanceof Map) {
                // Map valueMap = (Map) bean;
                // String columnName = column.getTitle();
                // if (valueMap.containsKey(columnName)) {
                // String value = (String) valueMap.get(columnName);
                // return value;
                // }
                // }
                //                            return ""; //$NON-NLS-1$
                // }
                // });
                // column.setCellEditor(cellEditor);
                column.setCellEditor(cellEditor, new CellEditorValueAdapter() {

                    @Override
                    public String getColumnText(CellEditor cellEditor, Object bean, Object cellEditorValue) {
                        Map valueMap = (Map) bean;
                        String columnName = column.getTitle();
                        if (valueMap.containsKey(columnName)) {
                            String value = (String) valueMap.get(columnName);
                            return value;
                        }
                        return "";
                    }

                    @Override
                    public Object getOriginalTypedValue(CellEditor cellEditor, Object cellEditorTypedValue) {
                        Object returnedValue = null;
                        CCombo combo = (CCombo) cellEditor.getControl();
                        int rowNumber = ((Table) combo.getParent()).getSelectionIndex();
                        String[] listToDisplay = getItem(element, column.getTitle());
                        if (!Arrays.equals(listToDisplay, ((ComboBoxCellEditor) cellEditor).getItems())) {
                            ((ComboBoxCellEditor) cellEditor).setItems(listToDisplay);
                        }
                        if (cellEditorTypedValue != null && cellEditorTypedValue instanceof String) {
                            return cellEditorTypedValue;
                        }
                        return "";
                    }

                    ;

                    @Override
                    public Object getCellEditorTypedValue(CellEditor cellEditor, Object originalTypedValue) {
                        CCombo combo = (CCombo) cellEditor.getControl();
                        int rowNumber = ((Table) combo.getParent()).getSelectionIndex();
                        String[] listToDisplay = getItem(element, column.getTitle());
                        if (!Arrays.equals(listToDisplay, ((ComboBoxCellEditor) cellEditor).getItems())) {
                            ((ComboBoxCellEditor) cellEditor).setItems(listToDisplay);
                        }
                        Object returnedValue = 0;
                        if (originalTypedValue != null) {
                            String[] namesSet = listToDisplay;
                            for (int j = 0; j < namesSet.length; j++) {
                                if (namesSet[j].equals(originalTypedValue)) {
                                    returnedValue = j;
                                    break;
                                }
                            }
                        }
                        return returnedValue;
                    }

                    ;

                    private String[] getItem(IElement element, String columnName) {
                        List<String> stringToDisplay = new ArrayList<String>();
                        if (element instanceof Node) {
                            List<IConnection> listConnection = (List<IConnection>) ((Node) element).getInputs();
                            for (IConnection con : listConnection) {
                                if (con.getName().equals(columnName)) {
                                    List<IMetadataColumn> columns = con.getMetadataTable().getListColumns();
                                    for (IMetadataColumn column : columns) {
                                        stringToDisplay.add(column.getLabel());
                                    }
                                }
                            }
                        }
                        String[] listToDisplay = stringToDisplay.toArray(new String[0]);
                        return listToDisplay;
                    }
                });
                column.setColumnCellModifier(new ColumnCellModifier(column) {

                    @Override
                    public boolean canModify(Object bean) {
                        boolean canModify = super.canModify(bean);
                        return canModify;
                    }

                    @Override
                    public Object getValue(Object bean) {
                        Map valueMap = (Map) bean;
                        String columnName = column.getTitle();
                        if (valueMap.containsKey(columnName)) {
                            String value = (String) valueMap.get(columnName);
                            return value;
                        }
                        return "";
                    }
                });
                column.setBeanPropertyAccessors(new IBeanPropertyAccessors<B, Object>() {

                    @Override
                    public Object get(B bean) {
                        Map valueMap = (Map) bean;
                        String columnName = column.getTitle();
                        if (valueMap.containsKey(columnName)) {
                            return valueMap.get(columnName);
                        }
                        return "";
                    }

                    @Override
                    public void set(B bean, Object value) {
                        if (value == null) {
                            return;
                        }
                        Map valueMap = (Map) bean;
                        String columnName = column.getTitle();
                        if (valueMap.containsKey(columnName)) {
                            valueMap.remove(columnName);
                            valueMap.put(columnName, value);
                        } else {
                            valueMap.put(columnName, value);
                        }
                    }
                });
            }
        }
    }
}
Also used : TalendProposalProvider(org.talend.core.ui.proposal.TalendProposalProvider) EditableComboBoxCellEditor(org.talend.commons.ui.swt.tableviewer.celleditor.EditableComboBoxCellEditor) CellEditor(org.eclipse.jface.viewers.CellEditor) ComboBoxCellEditor(org.eclipse.jface.viewers.ComboBoxCellEditor) Node(org.talend.designer.core.ui.editor.nodes.Node) ArrayList(java.util.ArrayList) CellEditorValueAdapter(org.talend.commons.ui.runtime.swt.tableviewer.behavior.CellEditorValueAdapter) IConnection(org.talend.core.model.process.IConnection) ColumnCellModifier(org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier) IElementParameter(org.talend.core.model.process.IElementParameter) ArrayList(java.util.ArrayList) List(java.util.List) IElement(org.talend.core.model.process.IElement) IMetadataColumn(org.talend.core.model.metadata.IMetadataColumn) CCombo(org.eclipse.swt.custom.CCombo) TableViewerCreatorColumn(org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn) EditableComboBoxCellEditor(org.talend.commons.ui.swt.tableviewer.celleditor.EditableComboBoxCellEditor) Map(java.util.Map)

Example 4 with ColumnCellModifier

use of org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier in project tdi-studio-se by Talend.

the class AbstractHL7MetadataTableEditorView method configureDbColumnName.

/**
     * DOC amaumont Comment method "configureNameColumn".
     * 
     * @param tableViewerCreator
     */
protected void configureDbColumnName(TableViewerCreator<B> tableViewerCreator) {
    TableViewerCreatorColumn column;
    column = new TableViewerCreatorColumn(tableViewerCreator);
    column.setId(ID_COLUMN_DBCOLUMNNAME);
    //$NON-NLS-1$ 
    column.setTitle("Mapping Column");
    //$NON-NLS-1$
    column.setToolTipHeader(Messages.getString("MetadataTableEditorView.ColumnTitle"));
    column.setBeanPropertyAccessors(getDbColumnNameAccessor());
    column.setWeight(25);
    column.setModifiable(!isReadOnly());
    column.setMinimumWidth(45);
    final TextCellEditor cellEditor = new TextCellEditor(tableViewerCreator.getTable());
    column.setCellEditor(cellEditor);
    column.setColumnCellModifier(new ColumnCellModifier(column) {

        @Override
        public boolean canModify(Object bean) {
            return super.canModify(bean) && canModifyDBColumn(bean);
        }
    });
    column.setCellEditorAppliedListener(new ITableCellValueModifiedListener() {

        public void cellValueModified(TableCellValueModifiedEvent e) {
            linker.getMainui().redrawLinkers();
            linker.getBackgroundRefresher().refreshBackground();
        }
    });
    if (!dbColumnNameWritable) {
        column.setColorProvider(new IColumnColorProvider() {

            public Color getBackgroundColor(Object bean) {
                return READONLY_CELL_BG_COLOR;
            }

            public Color getForegroundColor(Object bean) {
                return null;
            }
        });
    }
}
Also used : Color(org.eclipse.swt.graphics.Color) TextCellEditor(org.eclipse.jface.viewers.TextCellEditor) TableViewerCreatorColumn(org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn) TableCellValueModifiedEvent(org.talend.commons.ui.runtime.swt.tableviewer.behavior.TableCellValueModifiedEvent) IColumnColorProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnColorProvider) ITableCellValueModifiedListener(org.talend.commons.ui.runtime.swt.tableviewer.behavior.ITableCellValueModifiedListener) ColumnCellModifier(org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier)

Example 5 with ColumnCellModifier

use of org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier in project tdi-studio-se by Talend.

the class XmlTreeSchemaTableView method createColumns.

@Override
protected void createColumns(final TableViewerCreator<TreeNode> tableViewerCreator, Table table) {
    TableViewerCreatorColumn column = new TableViewerCreatorColumn(tableViewerCreator);
    column.setTitle("XPath");
    column.setId(ID_COLUMN_XPATH);
    column.setWeight(20);
    column.setModifiable(true);
    column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeNode, Object>() {

        @Override
        public Object get(TreeNode bean) {
            return bean.getXpath();
        }

        @Override
        public void set(TreeNode bean, Object value) {
            if (isValidName) {
                bean.setName((String) value);
                // String xPath = bean.getXPath();
                // xPath = xPath.substring(0, xPath.lastIndexOf(XmlMapUtil.XPATH_SEPARATOR) + 1);
                // NodeType nodeType = bean.getTreeNode().getNodeType();
                // String typedValue = null;
                // if (NodeType.ATTRIBUT.equals(nodeType)) {
                // typedValue = xPath + XmlMapUtil.XPATH_ATTRIBUTE + bean.getName();
                // } else if (NodeType.NAME_SPACE.equals(nodeType)) {
                // typedValue = xPath + XmlMapUtil.XPATH_NAMESPACE + bean.getName();
                // } else {
                // typedValue = xPath + bean.getName();
                // }
                // bean.setXPath(typedValue);
                XmlMapData mapperData = XmlMapUtil.getXmlMapData(bean);
                XmlMapExpressionManager expressionManager = new XmlMapExpressionManager();
                XmlMapUtil.updateXPathAndExpression(mapperData, expressionManager, bean, bean.getName(), XmlMapUtil.getXPathLength(bean.getXpath()), true);
                if (!bean.getChildren().isEmpty()) {
                    refresh();
                }
            }
        }
    });
    final TextCellEditor cellEditor = new TextCellEditor(tableViewerCreator.getTable());
    cellEditor.addListener(new DialogErrorForCellEditorListener(cellEditor, column) {

        @Override
        public void newValidValueTyped(int itemIndex, Object previousValue, Object newValue, CELL_EDITOR_STATE state) {
        }

        @Override
        public String validateValue(String newValue, int beanPosition) {
            return validateXPath(newValue, beanPosition);
        }
    });
    column.setCellEditor(cellEditor);
    column.setColumnCellModifier(new ColumnCellModifier(column) {

        @Override
        public Object getValue(Object bean) {
            TreeNode entry = (TreeNode) bean;
            return entry.getName();
        }

        @Override
        public boolean modify(Object bean, Object value) {
            return false;
        }
    });
    column = new TableViewerCreatorColumn(tableViewerCreator);
    column.setTitle("Key");
    column.setToolTipHeader("Key");
    column.setId(ID_COLUMN_KEY);
    //$NON-NLS-1$
    column.setDisplayedValue("");
    column.setWeight(10);
    column.setModifiable(true);
    CheckboxTableEditorContent checkbox = new CheckboxTableEditorContent();
    column.setTableEditorContent(checkbox);
    column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeNode, Boolean>() {

        @Override
        public Boolean get(TreeNode bean) {
            return bean.isKey();
        }

        @Override
        public void set(TreeNode bean, Boolean value) {
            bean.setKey(value);
        }
    });
    column = new TableViewerCreatorColumn(tableViewerCreator);
    column.setTitle("Type");
    column.setToolTipHeader("Type");
    column.setId(ID_COLUMN_TYPE);
    column.setBeanPropertyAccessors(getTalendTypeAccessor());
    column.setModifiable(true);
    column.setWeight(20);
    TreeSchemaJavaTypeComboValueAdapter comboValueAdapter = new TreeSchemaJavaTypeComboValueAdapter<TreeNode>(JavaTypesManager.getDefaultJavaType(), getNullableAccessor());
    ComboBoxCellEditor typeComboEditor = new ComboBoxCellEditor(tableViewerCreator.getTable(), comboValueAdapter.getTalendTypesLabels(), SWT.READ_ONLY);
    CCombo typeCombo = (CCombo) typeComboEditor.getControl();
    typeCombo.setEditable(false);
    column.setCellEditor(typeComboEditor, comboValueAdapter);
    column = new TableViewerCreatorColumn(tableViewerCreator);
    column.setTitle("Nullable");
    column.setToolTipHeader("Nullable");
    column.setId(ID_COLUMN_NULLABLE);
    column.setBeanPropertyAccessors(getNullableAccessor());
    column.setWeight(20);
    //$NON-NLS-1$
    column.setDisplayedValue("");
    column.setModifiable(true);
    column.setTableColumnSelectionListener(new CheckColumnSelectionListener(column, tableViewerCreator));
    column.setImageHeader(ImageProvider.getImage(EImage.CHECKED_ICON));
    CheckboxTableEditorContent nullableCheckbox = new CheckboxTableEditorContent();
    column.setTableEditorContent(nullableCheckbox);
    column = new TableViewerCreatorColumn(tableViewerCreator);
    column.setTitle("Pattern");
    column.setId(ID_COLUMN_PATTERN);
    column.setWeight(20);
    column.setBeanPropertyAccessors(new IBeanPropertyAccessors<TreeNode, String>() {

        @Override
        public String get(TreeNode bean) {
            return bean.getPattern();
        }

        @Override
        public void set(TreeNode bean, String value) {
            bean.setPattern(value);
        }
    });
    final ColumnCellModifier columnCellModifier = new ColumnCellModifier(column) {

        @Override
        public boolean canModify(Object bean) {
            boolean typeIsDate = currentBeanHasJavaDateType(bean) && !isReadOnly();
            return typeIsDate;
        }
    };
    column.setColorProvider(new IColumnColorProvider() {

        @Override
        public Color getBackgroundColor(Object bean) {
            if (!columnCellModifier.canModify(bean)) {
                return READONLY_CELL_BG_COLOR;
            }
            return null;
        }

        @Override
        public Color getForegroundColor(Object bean) {
            return null;
        }
    });
    column.setLabelProvider(new IColumnLabelProvider() {

        /*
             * (non-Javadoc)
             * 
             * @see org.talend.commons.ui.swt.tableviewer.behavior.IColumnLabelProvider#getLabel(java.lang.Object)
             */
        @Override
        public String getLabel(Object bean) {
            if (!currentBeanHasJavaDateType(bean)) {
                //$NON-NLS-1$
                return "";
            }
            return null;
        }
    });
    column.setColumnCellModifier(columnCellModifier);
    JavaSimpleDateFormatProposalProvider proposalProvider = new JavaSimpleDateFormatProposalProvider();
    TextCellEditorWithProposal patternCellEditor = new TextCellEditorWithProposal(tableViewerCreator.getTable(), column);
    ContentProposalAdapterExtended contentProposalAdapter = patternCellEditor.getContentProposalAdapter();
    contentProposalAdapter.setFilterStyle(ContentProposalAdapterExtended.FILTER_NONE);
    contentProposalAdapter.setProposalAcceptanceStyle(ContentProposalAdapterExtended.PROPOSAL_INSERT);
    patternCellEditor.setContentProposalProvider(proposalProvider);
    column.setCellEditor(patternCellEditor, CellEditorValueAdapterFactory.getNullToEmptyStringTextAdapater());
    tableViewerCreator.setCellModifier(new XmlCellModifier(tableViewerCreator));
}
Also used : DialogErrorForCellEditorListener(org.talend.commons.ui.swt.tableviewer.celleditor.DialogErrorForCellEditorListener) CheckColumnSelectionListener(org.talend.commons.ui.runtime.swt.tableviewer.behavior.CheckColumnSelectionListener) JavaSimpleDateFormatProposalProvider(org.talend.core.ui.proposal.JavaSimpleDateFormatProposalProvider) ColumnCellModifier(org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier) ContentProposalAdapterExtended(org.talend.commons.ui.swt.proposal.ContentProposalAdapterExtended) TreeNode(org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode) XmlMapExpressionManager(org.talend.designer.xmlmap.ui.expressionutil.XmlMapExpressionManager) IColumnColorProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnColorProvider) XmlMapData(org.talend.designer.xmlmap.model.emf.xmlmap.XmlMapData) IColumnLabelProvider(org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnLabelProvider) CELL_EDITOR_STATE(org.talend.commons.ui.swt.tableviewer.TableViewerCreator.CELL_EDITOR_STATE) TextCellEditorWithProposal(org.talend.commons.ui.swt.proposal.TextCellEditorWithProposal) Color(org.eclipse.swt.graphics.Color) ComboBoxCellEditor(org.eclipse.jface.viewers.ComboBoxCellEditor) CCombo(org.eclipse.swt.custom.CCombo) CheckboxTableEditorContent(org.talend.commons.ui.swt.tableviewer.tableeditor.CheckboxTableEditorContent) TextCellEditor(org.eclipse.jface.viewers.TextCellEditor) TableViewerCreatorColumn(org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn)

Aggregations

ColumnCellModifier (org.talend.commons.ui.runtime.swt.tableviewer.behavior.ColumnCellModifier)6 TableViewerCreatorColumn (org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn)6 Color (org.eclipse.swt.graphics.Color)5 IColumnColorProvider (org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnColorProvider)5 TextCellEditor (org.eclipse.jface.viewers.TextCellEditor)4 ComboBoxCellEditor (org.eclipse.jface.viewers.ComboBoxCellEditor)3 CCombo (org.eclipse.swt.custom.CCombo)3 IColumnLabelProvider (org.talend.commons.ui.runtime.swt.tableviewer.behavior.IColumnLabelProvider)3 TextCellEditorWithProposal (org.talend.commons.ui.swt.proposal.TextCellEditorWithProposal)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Map (java.util.Map)2 CellEditor (org.eclipse.jface.viewers.CellEditor)2 CellEditorValueAdapter (org.talend.commons.ui.runtime.swt.tableviewer.behavior.CellEditorValueAdapter)2 ContentProposalAdapterExtended (org.talend.commons.ui.swt.proposal.ContentProposalAdapterExtended)2 CELL_EDITOR_STATE (org.talend.commons.ui.swt.tableviewer.TableViewerCreator.CELL_EDITOR_STATE)2 DialogErrorForCellEditorListener (org.talend.commons.ui.swt.tableviewer.celleditor.DialogErrorForCellEditorListener)2 EditableComboBoxCellEditor (org.talend.commons.ui.swt.tableviewer.celleditor.EditableComboBoxCellEditor)2 CheckboxTableEditorContent (org.talend.commons.ui.swt.tableviewer.tableeditor.CheckboxTableEditorContent)2 IMetadataColumn (org.talend.core.model.metadata.IMetadataColumn)2