Search in sources :

Example 1 with GroupController

use of org.talend.designer.core.ui.editor.properties.controllers.GroupController in project tdi-studio-se by Talend.

the class DynamicComposite method addComponents.

/**
     * Initialize all components for the defined section for this node.
     */
public void addComponents(boolean forceRedraw, boolean reInitialize, int height) {
    checkErrorsWhenViewRefreshed = true;
    int heightSize = 0, maxRowSize = 0, nbInRow, numInRow;
    int maxRow;
    boolean isCompute = false;
    Map<String, Integer> groupPosition = new HashMap<String, Integer>();
    List<? extends IElementParameter> listParam = elem.getElementParametersWithChildrens();
    if (!forceRedraw) {
        boolean needRedraw = isNeedRedraw();
        if (!needRedraw) {
            // System.out.println("no need redraw");
            return;
        }
    }
    Control lastControl = null;
    if (reInitialize) {
        if (currentComponent != null) {
            disposeChildren();
        }
    } else {
        heightSize = height;
    }
    hashCurControls = new DualHashBidiMap();
    maxRow = 0;
    for (int i = 0; i < listParam.size(); i++) {
        if (listParam.get(i).getCategory() == section) {
            if (listParam.get(i).getNumRow() > maxRow && listParam.get(i).isShow(listParam)) {
                maxRow = listParam.get(i).getNumRow();
            }
        }
    }
    IElementParameter synchronizeSchemaParam = elem.getElementParameter(EParameterName.NOT_SYNCHRONIZED_SCHEMA.getName());
    if (synchronizeSchemaParam != null) {
        // if the node don't contains a schema type and accept an input flow and is not synchronized
        // display a schema on the first line just the type to synchronize the schema
        synchronizeSchemaParam.setShow(!((Node) elem).isSchemaSynchronized());
    }
    generator.initController(this);
    // System.out.println("********************** NEW ADDCOMPONENTS
    // **********************");
    // TabbedPropertyComposite tabbedPropertyComposite = this.getTabbedPropertyComposite();
    int additionalHeightSize = 0;
    boolean hasDynamicRow = false;
    for (int i = 0; i < listParam.size(); i++) {
        IElementParameter curParam = listParam.get(i);
        if (curParam.getCategory() == section) {
            if (curParam.getFieldType() != EParameterFieldType.TECHNICAL) {
                if (curParam.isShow(listParam)) {
                    AbstractElementPropertySectionController controller = generator.getController(curParam.getFieldType(), this);
                    if (controller == null) {
                        continue;
                    }
                    if (controller.hasDynamicRowSize()) {
                        hasDynamicRow = true;
                        break;
                    }
                }
            }
        }
    }
    if (hasDynamicRow) {
        additionalHeightSize = estimatePropertyHeightSize(maxRow, listParam);
    }
    //$NON-NLS-1$
    long lastTime = TimeMeasure.timeSinceBegin("DC:refresh:" + getCurrentComponent());
    for (int curRow = 1; curRow <= maxRow; curRow++) {
        nbInRow = 0;
        for (int i = 0; i < listParam.size(); i++) {
            IElementParameter curParam = listParam.get(i);
            if (curParam.getCategory() == section) {
                if (curParam.getNumRow() == curRow && curParam.isShow(listParam) && (curParam.getFieldType() != EParameterFieldType.TECHNICAL)) {
                    nbInRow++;
                }
            }
        }
        numInRow = 0;
        lastControl = null;
        curRowSize = 0;
        for (int i = 0; i < listParam.size(); i++) {
            IElementParameter curParam = listParam.get(i);
            if (curParam.getCategory() == section) {
                if (curParam.getNumRow() == curRow && (curParam.getFieldType() != EParameterFieldType.TECHNICAL)) {
                    // field:"+curParam.getField());
                    if (curParam.isShow(listParam)) {
                        // System.out.println("show:" + curParam.getName()+
                        // " field:"+curParam.getField());
                        numInRow++;
                        AbstractElementPropertySectionController controller = generator.getController(curParam.getFieldType(), this);
                        if (controller == null) {
                            continue;
                        }
                        if (controller.hasDynamicRowSize()) {
                            controller.setAdditionalHeightSize(additionalHeightSize);
                        }
                        String groupName = curParam.getGroup();
                        Composite subComposite = null;
                        if (groupName != null) {
                            if (!hashCurControls.containsKey(groupName)) {
                                if (groupPosition.size() > 0) {
                                    heightSize += DEFAULT_GROUP_HEIGHT;
                                }
                                new GroupController(this).createControl(composite, curParam, numInRow, nbInRow, heightSize, lastControl);
                                groupPosition.put(groupName, heightSize);
                            }
                            subComposite = (Composite) hashCurControls.get(groupName);
                            int h2 = heightSize - groupPosition.get(groupName);
                            lastControl = controller.createControl(subComposite, curParam, numInRow, nbInRow, h2, lastControl);
                        } else {
                            if (isCompactView()) {
                                int h3 = DEFAULT_GROUP_HEIGHT * (groupPosition.size() > 0 ? 1 : 0) + heightSize;
                                lastControl = controller.createControl(composite, curParam, numInRow, nbInRow, h3, lastControl);
                            } else {
                                if (numInRow > 1 && nbInRow > 1) {
                                    heightSize += maxRowSize;
                                }
                                int h3 = DEFAULT_GROUP_HEIGHT * (groupPosition.size() > 0 ? 1 : 0) + heightSize;
                                lastControl = controller.createControl(composite, curParam, 1, 1, h3, null);
                            }
                        }
                        //$NON-NLS-1$
                        lastTime = TimeMeasure.timeSinceBegin("DC:refresh:" + getCurrentComponent()) - lastTime;
                        if (DynamicTabbedPropertySection.DEBUG_TIME) {
                            System.out.println(//$NON-NLS-1$ //$NON-NLS-2$
                            "DC;create:" + curParam.getFieldType().getName() + ";" + getCurrentComponent() + ";" + //$NON-NLS-1$
                            lastTime);
                        }
                        // System.out.println("param:" + curParam.getName()
                        // + " - curRowSize:" + curRowSize);
                        maxRowSize = 0;
                        if (curRowSize > maxRowSize) {
                            maxRowSize = curRowSize;
                            isCompute = true;
                        }
                    }
                }
            }
        }
        if (isCompute) {
            heightSize += maxRowSize;
            isCompute = false;
        }
    }
    if (synchronizeSchemaParam != null) {
        synchronizeSchemaParam.setShow(false);
    }
    resizeScrolledComposite();
}
Also used : Composite(org.eclipse.swt.widgets.Composite) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) HashMap(java.util.HashMap) GroupController(org.talend.designer.core.ui.editor.properties.controllers.GroupController) Node(org.talend.designer.core.ui.editor.nodes.Node) RepositoryNode(org.talend.repository.model.RepositoryNode) IRepositoryNode(org.talend.repository.model.IRepositoryNode) Control(org.eclipse.swt.widgets.Control) DualHashBidiMap(org.apache.commons.collections.bidimap.DualHashBidiMap) AbstractElementPropertySectionController(org.talend.designer.core.ui.editor.properties.controllers.AbstractElementPropertySectionController) IElementParameter(org.talend.core.model.process.IElementParameter)

Example 2 with GroupController

use of org.talend.designer.core.ui.editor.properties.controllers.GroupController in project tdi-studio-se by Talend.

the class MultipleThreadDynamicComposite method addComponents.

/**
     * Initialize all components for the defined section for this node.
     */
public synchronized void addComponents(boolean forceRedraw, boolean reInitialize, int height) {
    // achen modifed to fix feature 0005991 if composite.isDisposed return
    if (elem == null || composite.isDisposed()) {
        return;
    }
    checkErrorsWhenViewRefreshed = true;
    int heightSize = 0, maxRowSize = 0, nbInRow, numInRow;
    int maxRow;
    boolean isCompute = false;
    if (!forceRedraw) {
        boolean needRedraw = isNeedRedraw();
        if (!needRedraw) {
            // System.out.println("no need redraw");
            return;
        }
    }
    Control lastControl = null;
    if (reInitialize) {
        if (currentComponent != null) {
            disposeChildren();
        }
    } else {
        heightSize = height;
    }
    final List<IElementParameter> currentValidParameters = new ArrayList<IElementParameter>(20);
    hashCurControls = new DualHashBidiMap();
    maxRow = 0;
    List<? extends IElementParameter> listParam = elem.getElementParametersWithChildrens();
    Map<String, Integer> groupPosition = new HashMap<String, Integer>();
    for (int i = 0; i < listParam.size(); i++) {
        IElementParameter param = listParam.get(i);
        if (param.getCategory() == section && param.getFieldType() != EParameterFieldType.TECHNICAL && param.isShow(listParam)) {
            currentValidParameters.add(param);
            if (param.getNumRow() > maxRow) {
                maxRow = param.getNumRow();
            }
        }
    }
    IElementParameter synchronizeSchemaParam = elem.getElementParameter(EParameterName.NOT_SYNCHRONIZED_SCHEMA.getName());
    if (synchronizeSchemaParam != null) {
        // if the node don't contains a schema type and accept an input flow and is not synchronized
        // display a schema on the first line just the type to synchronize the schema
        synchronizeSchemaParam.setShow(!((Node) elem).isSchemaSynchronized());
        IElementParameter schemaTypeParam = synchronizeSchemaParam.getChildParameters().get(EParameterName.SCHEMA_TYPE.getName());
        if (schemaTypeParam != null) {
            schemaTypeParam.setReadOnly(((Node) elem).isSchemaSynchronized());
        }
    }
    generator.initController(this);
    int additionalHeightSize = 0;
    boolean hasDynamicRow = false;
    for (int i = 0; i < currentValidParameters.size(); i++) {
        IElementParameter curParam = currentValidParameters.get(i);
        AbstractElementPropertySectionController controller = generator.getController(curParam.getFieldType(), this);
        if (controller == null) {
            continue;
        }
        if (controller.hasDynamicRowSize()) {
            hasDynamicRow = true;
            break;
        }
    }
    if (hasDynamicRow) {
        additionalHeightSize = estimatePropertyHeightSize(maxRow, listParam);
    }
    for (int curRow = 1; curRow <= maxRow; curRow++) {
        maxRowSize = 0;
        nbInRow = 0;
        for (int i = 0; i < currentValidParameters.size(); i++) {
            IElementParameter curParam = currentValidParameters.get(i);
            if (curParam.getNumRow() == curRow) {
                nbInRow++;
            }
        }
        numInRow = 0;
        lastControl = null;
        curRowSize = 0;
        for (int i = 0; i < currentValidParameters.size(); i++) {
            IElementParameter curParam = currentValidParameters.get(i);
            updateParameter(curParam);
            if (curParam.getNumRow() == curRow && isShouldDisParameter(curParam)) {
                numInRow++;
                AbstractElementPropertySectionController controller = generator.getController(curParam.getFieldType(), this);
                if (controller == null) {
                    continue;
                }
                if (controller.hasDynamicRowSize()) {
                    controller.setAdditionalHeightSize(additionalHeightSize);
                }
                String groupName = curParam.getGroup();
                Composite subComposite = null;
                Control cutLastControl = lastControl;
                int curNumInRow = numInRow;
                int curNbInRow = nbInRow;
                int curTop = 0;
                if (!isCompactView()) {
                    if (numInRow > 1 && nbInRow > 1) {
                        heightSize += maxRowSize;
                    }
                    curNumInRow = 1;
                    curNbInRow = 1;
                    cutLastControl = null;
                }
                if (groupName != null) {
                    if (!hashCurControls.containsKey(groupName)) {
                        if (groupPosition.size() > 0) {
                            heightSize += DEFAULT_GROUP_HEIGHT;
                        }
                        new GroupController(this).createControl(composite, curParam, numInRow, nbInRow, heightSize, lastControl);
                        groupPosition.put(groupName, heightSize);
                    }
                    subComposite = (Composite) hashCurControls.get(groupName);
                    curTop = heightSize - groupPosition.get(groupName);
                } else {
                    subComposite = composite;
                    curTop = DEFAULT_GROUP_HEIGHT * (groupPosition.size() > 0 ? 1 : 0) + heightSize;
                }
                lastControl = controller.createControl(subComposite, curParam, curNumInRow, curNbInRow, curTop, cutLastControl);
                if (curRowSize > maxRowSize) {
                    maxRowSize = curRowSize;
                }
            }
        }
        heightSize += maxRowSize;
    }
    if (synchronizeSchemaParam != null) {
        synchronizeSchemaParam.setShow(false);
    }
    minHeight = heightSize;
    resizeScrolledComposite();
}
Also used : Composite(org.eclipse.swt.widgets.Composite) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) HashMap(java.util.HashMap) GroupController(org.talend.designer.core.ui.editor.properties.controllers.GroupController) Node(org.talend.designer.core.ui.editor.nodes.Node) ArrayList(java.util.ArrayList) Control(org.eclipse.swt.widgets.Control) DualHashBidiMap(org.apache.commons.collections.bidimap.DualHashBidiMap) AbstractElementPropertySectionController(org.talend.designer.core.ui.editor.properties.controllers.AbstractElementPropertySectionController) IElementParameter(org.talend.core.model.process.IElementParameter)

Aggregations

HashMap (java.util.HashMap)2 DualHashBidiMap (org.apache.commons.collections.bidimap.DualHashBidiMap)2 ScrolledComposite (org.eclipse.swt.custom.ScrolledComposite)2 Composite (org.eclipse.swt.widgets.Composite)2 Control (org.eclipse.swt.widgets.Control)2 IElementParameter (org.talend.core.model.process.IElementParameter)2 Node (org.talend.designer.core.ui.editor.nodes.Node)2 AbstractElementPropertySectionController (org.talend.designer.core.ui.editor.properties.controllers.AbstractElementPropertySectionController)2 GroupController (org.talend.designer.core.ui.editor.properties.controllers.GroupController)2 ArrayList (java.util.ArrayList)1 IRepositoryNode (org.talend.repository.model.IRepositoryNode)1 RepositoryNode (org.talend.repository.model.RepositoryNode)1