Search in sources :

Example 1 with Connection

use of org.talend.designer.core.ui.editor.connections.Connection in project tdi-studio-se by Talend.

the class MergeOrderDialog method createDialogArea.

/*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
     */
@Override
protected Control createDialogArea(Composite parent) {
    Composite composite = (Composite) super.createDialogArea(parent);
    Composite tableComposite = new Composite(composite, SWT.None);
    tableComposite.setLayout(new GridLayout());
    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.widthHint = WIDTH;
    gridData.minimumWidth = WIDTH;
    gridData.heightHint = HEIGHT;
    gridData.minimumHeight = HEIGHT;
    tableComposite.setLayoutData(gridData);
    final TableViewerCreator tableViewerCreator = new TableViewerCreator(tableComposite);
    tableViewerCreator.setBorderVisible(true);
    tableViewerCreator.setCheckboxInFirstColumn(false);
    tableViewerCreator.setColumnsResizableByDefault(true);
    tableViewerCreator.setColumnsSortableByDefault(true);
    tableViewerCreator.setLayoutMode(LAYOUT_MODE.FILL_HORIZONTAL);
    Table table = tableViewerCreator.createTable();
    table.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
    TableViewerCreatorColumn column = new TableViewerCreatorColumn(tableViewerCreator);
    //$NON-NLS-1$
    column.setTitle(Messages.getString("MergeOrderDialog.Order"));
    column.setModifiable(true);
    column.setWidth(50);
    //$NON-NLS-1$
    column.setToolTipHeader(Messages.getString("MergeOrderDialog.CurrentOrderConnection"));
    column.setBeanPropertyAccessors(new IBeanPropertyAccessors<Connection, String>() {

        public String get(Connection bean) {
            return String.valueOf(connectionList.indexOf(bean) + 1);
        }

        public void set(Connection bean, String value) {
        // bean.setName(value);
        }
    });
    column = new TableViewerCreatorColumn(tableViewerCreator);
    //$NON-NLS-1$
    column.setTitle(Messages.getString("MergeOrderDialog.ConnectionName"));
    column.setBeanPropertyAccessors(new IBeanPropertyAccessors<Connection, String>() {

        public String get(Connection bean) {
            return getDisplayStr(bean);
        }

        public void set(Connection bean, String value) {
        // bean.setName(value);
        }
    });
    column.setModifiable(false);
    column.setWidth(200);
    tableViewerCreator.init(connectionList);
    Composite buttonComposite = new Composite(composite, SWT.None);
    buttonComposite.setLayout(new RowLayout(SWT.HORIZONTAL));
    Button moveUp = new Button(buttonComposite, SWT.PUSH);
    //$NON-NLS-1$
    moveUp.setToolTipText(Messages.getString("MergeOrderDialog.MoveUp"));
    moveUp.setImage(ImageProvider.getImage(EImage.UP_ICON));
    moveUp.addListener(SWT.Selection, new Listener() {

        public void handleEvent(Event event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewerCreator.getTableViewer().getSelection();
            Connection connection = (Connection) selection.getFirstElement();
            int connId = connectionList.indexOf(connection);
            if (connId > 0) {
                Collections.swap(connectionList, connId - 1, connId);
                tableViewerCreator.getTableViewer().refresh();
            }
        }
    });
    Button moveDown = new Button(buttonComposite, SWT.PUSH);
    //$NON-NLS-1$
    moveDown.setToolTipText(Messages.getString("MergeOrderDialog.MoveDown"));
    moveDown.setImage(ImageProvider.getImage(EImage.DOWN_ICON));
    if (getMergeNode() != null && getMergeNode().isReadOnly()) {
        moveUp.setEnabled(false);
        moveDown.setEnabled(false);
    }
    final int nbConn = getConnectionQty();
    moveDown.addListener(SWT.Selection, new Listener() {

        public void handleEvent(Event event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewerCreator.getTableViewer().getSelection();
            if (selection.size() > 0) {
                Connection connection = (Connection) selection.getFirstElement();
                int connId = connectionList.indexOf(connection);
                if (connId < (nbConn - 1)) {
                    Collections.swap(connectionList, connId + 1, connId);
                    tableViewerCreator.getTableViewer().refresh();
                }
            }
        }
    });
    return composite;
}
Also used : TableViewerCreator(org.talend.commons.ui.swt.tableviewer.TableViewerCreator) Table(org.eclipse.swt.widgets.Table) Listener(org.eclipse.swt.widgets.Listener) Composite(org.eclipse.swt.widgets.Composite) IConnection(org.talend.core.model.process.IConnection) Connection(org.talend.designer.core.ui.editor.connections.Connection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) GridLayout(org.eclipse.swt.layout.GridLayout) Button(org.eclipse.swt.widgets.Button) RowLayout(org.eclipse.swt.layout.RowLayout) GridData(org.eclipse.swt.layout.GridData) Event(org.eclipse.swt.widgets.Event) TableViewerCreatorColumn(org.talend.commons.ui.swt.tableviewer.TableViewerCreatorColumn)

Example 2 with Connection

use of org.talend.designer.core.ui.editor.connections.Connection in project tdi-studio-se by Talend.

the class NodeAnchor method getLocation.

/*
     * (non-Javadoc)
     * 
     * @see org.eclipse.draw2d.ChopboxAnchor#getLocation(org.eclipse.draw2d.geometry.Point)
     */
@Override
public Point getLocation(Point reference) {
    if (target != null && !target.equals(source)) {
        sourceLocation = new Point(source.getLocation());
        targetLocation = new Point(target.getLocation());
        Point diff = new Point(0, 0);
        if (!isTargetAnchor) {
            if (((reference.y - (target.getSize().height / 2)) != targetLocation.y) || ((reference.x - (target.getSize().width / 2)) != targetLocation.x)) {
                FreeformViewport viewport = getViewport();
                if (viewport != null) {
                    int y = viewport.getVerticalRangeModel().getValue();
                    int x = viewport.getHorizontalRangeModel().getValue();
                    diff = new Point(-x, -y);
                }
            }
        } else {
            if (((reference.y - (source.getSize().height / 2)) != sourceLocation.y) || ((reference.x - (source.getSize().width / 2)) != sourceLocation.x)) {
                FreeformViewport viewport = getViewport();
                if (viewport != null) {
                    int y = viewport.getVerticalRangeModel().getValue();
                    int x = viewport.getHorizontalRangeModel().getValue();
                    diff = new Point(-x, -y);
                }
            }
        }
        ScalableFreeformLayeredPane pane = getScalableFreeform();
        sourceRect = new Rectangle(sourceLocation, source.getSize());
        targetRect = new Rectangle(targetLocation, target.getSize());
        if (pane != null) {
            double scale = pane.getScale();
            sourceLocation.performScale(scale);
            targetLocation.performScale(scale);
            sourceRect.performScale(scale);
            targetRect.performScale(scale);
        }
        sourceLocation = sourceLocation.getTranslated(diff);
        targetLocation = targetLocation.getTranslated(diff);
        sourceRect = sourceRect.getTranslated(diff);
        targetRect = targetRect.getTranslated(diff);
        int nb = 0;
        int connectionId = 0;
        for (Connection connection : (List<Connection>) source.getOutgoingConnections()) {
            if (connection.getTarget().equals(target)) {
                nb++;
                if (connection.equals(this.connection)) {
                    connectionId = nb;
                }
            }
        }
        if (nb <= 1) {
            return getLocationForSimpleConnection(reference);
        } else {
            return getLocationForMultipleConnections(connectionId);
        }
    }
    return super.getLocation(reference);
}
Also used : ScalableFreeformLayeredPane(org.eclipse.draw2d.ScalableFreeformLayeredPane) FreeformViewport(org.eclipse.draw2d.FreeformViewport) Rectangle(org.eclipse.draw2d.geometry.Rectangle) IConnection(org.talend.core.model.process.IConnection) Connection(org.talend.designer.core.ui.editor.connections.Connection) ArrayList(java.util.ArrayList) List(java.util.List) KeyPoint(org.talend.commons.ui.gmf.draw2d.LineSeg.KeyPoint) Point(org.eclipse.draw2d.geometry.Point) KeyPoint(org.talend.commons.ui.gmf.draw2d.LineSeg.KeyPoint) Point(org.eclipse.draw2d.geometry.Point)

Example 3 with Connection

use of org.talend.designer.core.ui.editor.connections.Connection in project tdi-studio-se by Talend.

the class NodeGraphicalEditPolicy method getReconnectTargetCommand.

@Override
protected Command getReconnectTargetCommand(ReconnectRequest request) {
    Connection conn = (Connection) request.getConnectionEditPart().getModel();
    Node newTarget = (Node) getHost().getModel();
    if (newTarget.isReadOnly()) {
        return null;
    }
    ConnectionReconnectCommand cmd = new ConnectionReconnectCommand(conn);
    cmd.setNewTarget(newTarget);
    return cmd;
}
Also used : Connection(org.talend.designer.core.ui.editor.connections.Connection) TalendDummyConnection(org.talend.designer.core.ui.editor.connections.TalendDummyConnection) ConnectionReconnectCommand(org.talend.designer.core.ui.editor.cmd.ConnectionReconnectCommand)

Example 4 with Connection

use of org.talend.designer.core.ui.editor.connections.Connection in project tdi-studio-se by Talend.

the class NodeGraphicalEditPolicy method getReconnectSourceCommand.

@Override
protected Command getReconnectSourceCommand(ReconnectRequest request) {
    Connection conn = (Connection) request.getConnectionEditPart().getModel();
    Node newSource = (Node) getHost().getModel();
    if (newSource.isReadOnly()) {
        return null;
    }
    ConnectionReconnectCommand cmd = new ConnectionReconnectCommand(conn);
    cmd.setNewSource(newSource);
    return cmd;
}
Also used : Connection(org.talend.designer.core.ui.editor.connections.Connection) TalendDummyConnection(org.talend.designer.core.ui.editor.connections.TalendDummyConnection) ConnectionReconnectCommand(org.talend.designer.core.ui.editor.cmd.ConnectionReconnectCommand)

Example 5 with Connection

use of org.talend.designer.core.ui.editor.connections.Connection in project tdi-studio-se by Talend.

the class DCSchemaController method createButtonCommand.

/*
     * (non-Javadoc)
     *
     * @see
     * org.talend.designer.core.ui.editor.properties.controllers.AbstractRepositoryController#createButtonCommand(org
     * .eclipse.swt.widgets.Button)
     */
@SuppressWarnings("unchecked")
protected Command createButtonCommand(Button button) {
    Button inputButton = button;
    Map<INode, Map<IMetadataTable, Boolean>> inputInfos = new HashMap<INode, Map<IMetadataTable, Boolean>>();
    Node node;
    if (elem instanceof Node) {
        node = (Node) elem;
    } else {
        // else instanceof Connection
        node = (Node) ((Connection) elem).getSource();
    }
    String componentName = node.getComponent().getName();
    initConnectionParameters();
    IContextManager manager;
    if (part == null) {
        manager = new EmptyContextManager();
    } else {
        manager = part.getProcess().getContextManager();
    }
    IElement oldElement = elem;
    if (isUseExistingConnection()) {
        this.elem = connectionNode;
        initConnectionParametersWithContext(connectionNode, manager.getDefaultContext());
    } else {
        initConnectionParametersWithContext(elem, manager.getDefaultContext());
    }
    this.elem = oldElement;
    if (!GlobalServiceRegister.getDefault().isServiceRegistered(IDCService.class)) {
        return null;
    }
    IDCService restService = (IDCService) GlobalServiceRegister.getDefault().getService(IDCService.class);
    restService.setupRestHelperInstance(connParameters.getHost(), connParameters.getPort(), connParameters.getUserName(), connParameters.getPassword(), connParameters.getDirectory(), connParameters.isHttps());
    String entityName = elem.getPropertyValue("ENTITY").toString().replaceAll("\"", "");
    IMetadataTable inputMetadata = null, inputMetaCopy = null;
    Connection inputConec = null;
    String propertyName = (String) inputButton.getData(PARAMETER_NAME);
    IElementParameter param = node.getElementParameter(propertyName);
    IElementParameter connectionParam = param.getChildParameters().get(EParameterName.CONNECTION.getName());
    String connectionName = null;
    if (connectionParam != null) {
        connectionName = (String) connectionParam.getValue();
    }
    boolean inputReadOnly = false, outputReadOnly = false, inputReadOnlyNode = false, inputReadOnlyParam = false;
    for (Connection connec : (List<Connection>) node.getIncomingConnections()) {
        if (connec.isActivate() && (EConnectionType.FLOW_MAIN.equals(connec.getLineStyle()) || EConnectionType.TABLE.equals(connec.getLineStyle()) || EConnectionType.FLOW_MERGE.equals(connec.getLineStyle()) || EConnectionType.FLOW_REF.equals(connec.getLineStyle()))) {
            if (connectionName != null && !connec.getName().equals(connectionName)) {
                continue;
            }
            inputMetadata = connec.getMetadataTable();
            inputMetaCopy = inputMetadata.clone();
            inputConec = connec;
            if (connec.getSource().isReadOnly()) {
                inputReadOnlyNode = true;
            } else {
                for (IElementParameter curParam : connec.getSource().getElementParameters()) {
                    if (curParam.getFieldType() == EParameterFieldType.SCHEMA_TYPE || curParam.getFieldType() == EParameterFieldType.DCSCHEMA) {
                        if (curParam.isReadOnly()) {
                            inputReadOnlyParam = true;
                        }
                    }
                }
            }
            // check if the inputMetadata is readonly
            if (inputMetadata != null) {
                for (IMetadataColumn column : inputMetadata.getListColumns()) {
                    IMetadataColumn columnCopied = inputMetaCopy.getColumn(column.getLabel());
                    columnCopied.setCustom(column.isCustom());
                    columnCopied.setReadOnly(column.isReadOnly());
                }
                inputMetaCopy.setReadOnly(inputMetadata.isReadOnly());
                inputReadOnly = prepareReadOnlyTable(inputMetaCopy, inputReadOnlyParam, inputReadOnlyNode);
            }
            // store the value for Dialog
            Map<IMetadataTable, Boolean> oneInput = new HashMap<IMetadataTable, Boolean>();
            oneInput.put(inputMetaCopy, inputReadOnly);
            inputInfos.put(connec.getSource(), oneInput);
        }
    }
    if (connectionParam != null && inputMetadata == null) {
        //$NON-NLS-1$
        MessageDialog.openError(//$NON-NLS-1$
        button.getShell(), //$NON-NLS-1$
        Messages.getString("SchemaTypeController.inputNotSet"), //$NON-NLS-1$
        Messages.getString("SchemaTypeController.connectionNotAvaliable"));
        return null;
    }
    IMetadataTable originaleMetadataTable = getMetadataTableFromXml(node);
    // check if the outputMetadata is readonly
    IMetadataTable originaleOutputTable = node.getMetadataFromConnector(param.getContext());
    IMetadataTable outputMetaCopy = originaleOutputTable.clone();
    for (IMetadataColumn column : originaleOutputTable.getListColumns()) {
        IMetadataColumn columnCopied = outputMetaCopy.getColumn(column.getLabel());
        columnCopied.setCustom(column.isCustom());
        columnCopied.setReadOnly(column.isReadOnly());
    }
    outputMetaCopy.setReadOnly(originaleOutputTable.isReadOnly() || param.isReadOnly(node.getElementParametersWithChildrens()));
    outputMetaCopy.sortCustomColumns();
    // create the MetadataDialog
    MetadataDialog metaDialog = null;
    if (inputMetadata != null) {
        if (inputInfos != null && inputInfos.size() > 1 && connectionName == null) {
            MetadataDialogForMerge metaDialogForMerge = new MetadataDialogForMerge(composite.getShell(), inputInfos, outputMetaCopy, node, getCommandStack());
            //$NON-NLS-1$
            metaDialogForMerge.setText(Messages.getString("SchemaController.schemaOf") + node.getLabel());
            metaDialogForMerge.setInputReadOnly(inputReadOnly);
            metaDialogForMerge.setOutputReadOnly(outputReadOnly);
            if (metaDialogForMerge.open() == MetadataDialogForMerge.OK) {
                outputMetaCopy = metaDialogForMerge.getOutputMetaData();
                // check if the metadata is modified
                boolean modified = false;
                if (!outputMetaCopy.sameMetadataAs(originaleOutputTable, IMetadataColumn.OPTIONS_NONE)) {
                    modified = true;
                } else {
                    if (inputMetadata != null) {
                        // Notice: the Map inputInfos maybe is modified by the dialog.
                        Set<INode> inputNodes = inputInfos.keySet();
                        for (INode inputNode : inputNodes) {
                            Map<IMetadataTable, Boolean> oneInput = inputInfos.get(inputNode);
                            inputMetaCopy = (IMetadataTable) oneInput.keySet().toArray()[0];
                            if (!inputMetaCopy.sameMetadataAs(inputNode.getMetadataList().get(0), IMetadataColumn.OPTIONS_NONE)) {
                                modified = true;
                            }
                        }
                    }
                }
                // create the changeMetadataCommand
                if (modified) {
                    Command changeMetadataCommand = null;
                    // only output, no input
                    if (inputInfos.isEmpty()) {
                        changeMetadataCommand = new ChangeMetadataCommand(node, param, null, null, null, originaleOutputTable, outputMetaCopy);
                    } else {
                        Set<INode> inputNodes = inputInfos.keySet();
                        int count = 0;
                        for (INode inputNode : inputNodes) {
                            Map<IMetadataTable, Boolean> oneInput = inputInfos.get(inputNode);
                            inputMetaCopy = (IMetadataTable) oneInput.keySet().toArray()[0];
                            if (count == 0) {
                                changeMetadataCommand = new ChangeMetadataCommand(node, param, inputNode, inputNode.getMetadataList().get(0), inputMetaCopy, originaleOutputTable, outputMetaCopy);
                            } else {
                                changeMetadataCommand = changeMetadataCommand.chain(new ChangeMetadataCommand(node, param, inputNode, inputNode.getMetadataList().get(0), inputMetaCopy, originaleOutputTable, outputMetaCopy));
                            }
                            count++;
                        }
                    }
                    return changeMetadataCommand;
                }
            }
        } else {
            Node inputNode = (Node) (inputConec.getSource());
            if (inputMetaCopy.getAttachedConnector() == null) {
                INodeConnector mainConnector;
                if (inputNode.isELTComponent()) {
                    mainConnector = inputNode.getConnectorFromType(EConnectionType.TABLE);
                } else {
                    mainConnector = inputNode.getConnectorFromType(EConnectionType.FLOW_MAIN);
                }
                inputMetaCopy.setAttachedConnector(mainConnector.getName());
            }
            metaDialog = new MetadataDialog(composite.getShell(), inputMetaCopy, inputNode, outputMetaCopy, node, getCommandStack());
        }
    } else {
        metaDialog = new MetadataDialog(composite.getShell(), outputMetaCopy, node, getCommandStack());
    }
    /*
         * Datacert: Populating data in the edit schema dialog
         *
         * @author : virtusa
         */
    List<IMetadataColumn> columnList = new ArrayList<IMetadataColumn>();
    String prefix = "";
    if (componentName.equalsIgnoreCase(Messages.getString("DataCertController.tDataCertDenormalize.componentName"))) {
        String denorCol = elem.getPropertyValue("DC_COLUMN_DENORMALIZE").toString().replaceAll("\"", "");
        ;
        prefix = denorCol;
        IMetadataTable inputTable = null;
        if (node.getIncomingConnections() != null && node.getIncomingConnections().size() > 0) {
            IConnection inputConn = node.getIncomingConnections().get(0);
            if (inputConn != null) {
                inputTable = inputConn.getMetadataTable();
            }
        }
        if (inputTable != null) {
            for (IMetadataColumn inCol : inputTable.getListColumns()) {
                if (!inCol.getLabel().equals(denorCol)) {
                    columnList.add(inCol);
                }
            }
        }
    }
    restService.addColumnsToSchema(entityName, componentName, prefix, columnList);
    outputMetaCopy.setListColumns(columnList);
    outputMetaCopy.setComment("Attribute Metadata");
    outputMetaCopy.setLabel("Attribute Metadata");
    outputMetaCopy.setTableName(entityName);
    if (metaDialog != null) {
        //$NON-NLS-1$
        metaDialog.setText(Messages.getString("AbstractSchemaController.schema.title", node.getLabel()));
        metaDialog.setInputReadOnly(false);
        metaDialog.setOutputReadOnly(false);
        if (metaDialog.open() == MetadataDialog.OK) {
            outputMetaCopy = metaDialog.getOutputMetaData();
            boolean modified = false;
            if (!outputMetaCopy.sameMetadataAs(originaleOutputTable, IMetadataColumn.OPTIONS_NONE)) {
                modified = true;
            }
            if (modified) {
                Node inputNode = null;
                if (inputConec != null) {
                    inputNode = (Node) inputConec.getSource();
                }
                ChangeMetadataCommand changeMetadataCommand = new ChangeMetadataCommand(node, param, inputNode, inputMetadata, inputMetaCopy, originaleOutputTable, outputMetaCopy);
                return changeMetadataCommand;
            }
        }
    }
    return null;
}
Also used : INode(org.talend.core.model.process.INode) HashMap(java.util.HashMap) Node(org.talend.designer.core.ui.editor.nodes.Node) INode(org.talend.core.model.process.INode) ArrayList(java.util.ArrayList) IConnection(org.talend.core.model.process.IConnection) INodeConnector(org.talend.core.model.process.INodeConnector) Button(org.eclipse.swt.widgets.Button) MetadataDialog(org.talend.core.ui.metadata.dialog.MetadataDialog) ChangeMetadataCommand(org.talend.designer.core.ui.editor.cmd.ChangeMetadataCommand) IElementParameter(org.talend.core.model.process.IElementParameter) ArrayList(java.util.ArrayList) List(java.util.List) IContextManager(org.talend.core.model.process.IContextManager) IElement(org.talend.core.model.process.IElement) IConnection(org.talend.core.model.process.IConnection) Connection(org.talend.designer.core.ui.editor.connections.Connection) IMetadataColumn(org.talend.core.model.metadata.IMetadataColumn) Point(org.eclipse.swt.graphics.Point) IMetadataTable(org.talend.core.model.metadata.IMetadataTable) ChangeMetadataCommand(org.talend.designer.core.ui.editor.cmd.ChangeMetadataCommand) Command(org.eclipse.gef.commands.Command) HashMap(java.util.HashMap) Map(java.util.Map) MetadataDialogForMerge(org.talend.core.ui.metadata.dialog.MetadataDialogForMerge)

Aggregations

Connection (org.talend.designer.core.ui.editor.connections.Connection)84 IConnection (org.talend.core.model.process.IConnection)52 ArrayList (java.util.ArrayList)47 List (java.util.List)46 Node (org.talend.designer.core.ui.editor.nodes.Node)44 INode (org.talend.core.model.process.INode)35 IMetadataTable (org.talend.core.model.metadata.IMetadataTable)28 Process (org.talend.designer.core.ui.editor.process.Process)24 IElementParameter (org.talend.core.model.process.IElementParameter)20 INodeConnector (org.talend.core.model.process.INodeConnector)18 HashMap (java.util.HashMap)12 IComponent (org.talend.core.model.components.IComponent)12 ConnectionPart (org.talend.designer.core.ui.editor.connections.ConnectionPart)12 NodeContainer (org.talend.designer.core.ui.editor.nodecontainer.NodeContainer)11 NodePart (org.talend.designer.core.ui.editor.nodes.NodePart)11 IMetadataColumn (org.talend.core.model.metadata.IMetadataColumn)10 Property (org.talend.core.model.properties.Property)10 Test (org.junit.Test)9 ConnLabelEditPart (org.talend.designer.core.ui.editor.connections.ConnLabelEditPart)9 Map (java.util.Map)8