hydrograph.ui.propertywindow.widgets.customwidgets.operational.OperationClassComposite.java Source code

Java tutorial

Introduction

Here is the source code for hydrograph.ui.propertywindow.widgets.customwidgets.operational.OperationClassComposite.java

Source

/*******************************************************************************
\ * Copyright 2017 Capital One Services, LLC and Bitwise, Inc.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/

package hydrograph.ui.propertywindow.widgets.customwidgets.operational;

import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;

import hydrograph.ui.common.util.Constants;
import hydrograph.ui.common.util.ExternalOperationExpressionUtil;
import hydrograph.ui.common.util.ImagePathConstant;
import hydrograph.ui.common.util.OSValidator;
import hydrograph.ui.datastructure.property.mapping.MappingSheetRow;
import hydrograph.ui.datastructure.property.mapping.TransformMapping;
import hydrograph.ui.graph.model.Component;
import hydrograph.ui.propertywindow.messages.Messages;
import hydrograph.ui.propertywindow.widgets.customwidgets.config.OperationClassConfig;
import hydrograph.ui.propertywindow.widgets.customwidgets.config.WidgetConfig;
import hydrograph.ui.propertywindow.widgets.customwidgets.operational.external.ExpresssionOperationImportExportComposite;
import hydrograph.ui.propertywindow.widgets.customwidgets.operational.external.ImportExportType;

public class OperationClassComposite extends Composite {

    private Text operationIdTextBox;
    private Text operationTextBox;
    private Text parameterTextBox;
    private Table inputTable, outputTable;
    private TableViewer inputTableViewer, outputTableViewer;
    private Button addButtonInputTable, deletButtonInputTable, browseButton, addButtonOutputTable,
            deletButtonOutputTable;
    private Button btnIsParam;
    private static final String OPERATION_OUTPUT_FIELD_TABLE_VIEWER = "operationOutputFieldTableViewer";
    private static final String INPUT_DELETE_BUTTON = "inputDeletButton";
    private static final String INPUT_ADD_BUTTON = "inputAddButton";
    private static final String OPERATION_INPUT_FIELD_TABLE_VIEWER = "operationInputFieldTableViewer";
    private static final String OPERATION_ID_TEXT_BOX = "operationIDTextBox";
    private static final String OPERATION_CLASS_TEXT_BOX = "operationClassTextBox";
    private static final String PARAMETER_TEXT_BOX = "parameterTextBox";
    private static final String OUTPUT_DELETE_BUTTON = "outputDeleteButton";
    private static final String OUTPUT_ADD_BUTTON = "outputAddButton";
    private static final String BTN_NEW_BUTTON = "btnNewButton";
    private Button switchToExpressionButton;
    private Button switchToClassButton;
    private Label lblSwitchTo;
    private Composite composite_1;
    private Composite composite_2;
    private OperationClassConfig configurationForTransformWidget;
    private boolean isAggregateOrCumulate;
    private boolean isTransForm;
    private Composite mainComposite;
    private Component component;
    private TransformMapping transformMapping;
    private TransformDialog transformDialog;

    /**
     * Create the composite.
     * @param parent
     * @param style
     */
    public OperationClassComposite(TransformDialog transformDialog, Composite parent, int style,
            final MappingSheetRow mappingSheetRow, Component component, WidgetConfig widgetConfig,
            TransformMapping transformMapping) {
        super(parent, style);
        setLayout(new GridLayout(1, false));
        this.component = component;
        this.transformDialog = transformDialog;
        mainComposite = new Composite(this, SWT.NONE);
        mainComposite.setLayout(new GridLayout(3, false));
        mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        this.transformMapping = transformMapping;

        configurationForTransformWidget = (OperationClassConfig) widgetConfig;
        if (StringUtils.equalsIgnoreCase(Constants.AGGREGATE, configurationForTransformWidget.getComponentName())
                || StringUtils.equalsIgnoreCase(Constants.CUMULATE,
                        configurationForTransformWidget.getComponentName())
                || StringUtils.equalsIgnoreCase(Constants.GROUP_COMBINE,
                        configurationForTransformWidget.getComponentName())) {
            isAggregateOrCumulate = true;
        } else {
            isAggregateOrCumulate = false;
        }

        if (StringUtils.equalsIgnoreCase(Constants.TRANSFORM, configurationForTransformWidget.getComponentName())) {
            isTransForm = true;
        } else {
            isTransForm = false;
        }

        createOperationInputTable();
        Composite composite = new Composite(mainComposite, SWT.NONE);
        composite.setLayout(new GridLayout(4, false));
        GridData gd_composite = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
        gd_composite.heightHint = 191;
        gd_composite.widthHint = 272;
        composite.setLayoutData(gd_composite);
        new Label(composite, SWT.NONE);

        lblSwitchTo = new Label(composite, SWT.NONE);
        lblSwitchTo.setText("Switch to");

        Composite radioButtonComposite = new Composite(composite, SWT.NONE);
        GridLayout radioButtonCompositeLayout = new GridLayout(2, false);
        radioButtonCompositeLayout.marginWidth = 0;
        radioButtonComposite.setLayout(radioButtonCompositeLayout);
        radioButtonComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
        switchToExpressionButton = new Button(radioButtonComposite, SWT.RADIO);
        switchToExpressionButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
            }
        });
        switchToExpressionButton.setText("Expression");

        switchToClassButton = new Button(radioButtonComposite, SWT.RADIO);
        switchToClassButton.setText("Class");
        switchToClassButton.setSelection(true);
        if (!isAggregateOrCumulate && !isTransForm) {
            radioButtonComposite.setVisible(false);
            lblSwitchTo.setVisible(false);
        } else {
            radioButtonComposite.setVisible(true);
            lblSwitchTo.setVisible(true);
        }
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);

        Label lblExpression = new Label(composite, SWT.NONE);
        GridData gd_lblExpression = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
        gd_lblExpression.minimumWidth = 70;
        gd_lblExpression.heightHint = 15;
        lblExpression.setLayoutData(gd_lblExpression);
        lblExpression.setText("Operation Id");

        operationIdTextBox = new Text(composite, SWT.BORDER);
        operationIdTextBox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);

        composite_1 = new Composite(composite, SWT.NONE);
        composite_1.setLayout(new GridLayout(1, false));
        GridData gd_composite_1 = new GridData(SWT.LEFT, SWT.BOTTOM, false, false, 1, 4);
        gd_composite_1.heightHint = 80;
        gd_composite_1.widthHint = 90;
        composite_1.setLayoutData(gd_composite_1);

        composite_2 = new Composite(composite_1, SWT.NONE);
        GridData gd_composite_2 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
        gd_composite_2.heightHint = 75;
        gd_composite_2.widthHint = 80;
        composite_2.setLayoutData(gd_composite_2);
        composite_2.setLayout(new GridLayout(1, false));
        browseButton = new Button(composite_2, SWT.NONE);
        browseButton.setToolTipText(Messages.OPERATION_COMPOSITE_BROWSE_BUTTON_TOOL_TIP);
        GridData gd_browseButton = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
        if (OSValidator.isMac()) {
            gd_browseButton.horizontalIndent = -5;
            gd_browseButton.widthHint = 40;
        } else {
            gd_browseButton.widthHint = 28;
        }
        gd_browseButton.heightHint = 25;
        browseButton.setLayoutData(gd_browseButton);
        browseButton.setText("...");
        new Label(composite_2, SWT.NONE);
        btnIsParam = new Button(composite_2, SWT.CHECK);
        GridData gd_btnIsParam = new GridData(SWT.LEFT, SWT.BOTTOM, false, false, 1, 1);
        gd_btnIsParam.heightHint = 19;
        gd_btnIsParam.widthHint = 75;
        btnIsParam.setLayoutData(gd_btnIsParam);
        btnIsParam.setAlignment(SWT.CENTER);
        btnIsParam.setText(Messages.IS_PARAM);
        btnIsParam.setSelection(mappingSheetRow.isWholeOperationParameter());
        new Label(composite, SWT.NONE);

        Label lblNewLabel = new Label(composite, SWT.NONE);
        GridData gd_lblNewLabel = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
        gd_lblNewLabel.minimumWidth = 50;
        lblNewLabel.setLayoutData(gd_lblNewLabel);
        lblNewLabel.setText("Class");

        operationTextBox = new Text(composite, SWT.BORDER);
        operationTextBox.setEditable(false);
        operationTextBox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);
        new Label(composite, SWT.NONE);

        Label lblParameter = new Label(composite, SWT.NONE);
        GridData gd_lblParameter = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
        gd_lblParameter.minimumWidth = 50;
        lblParameter.setLayoutData(gd_lblParameter);
        lblParameter.setText("Parameter");

        parameterTextBox = new Text(composite, SWT.BORDER);
        parameterTextBox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        parameterTextBox.addModifyListener(new ModifyListener() {

            @Override
            public void modifyText(ModifyEvent e) {
                Text text = (Text) e.widget;
                mappingSheetRow.setWholeOperationParameterValue(text.getText());
            }
        });
        parameterTextBox.setEnabled(mappingSheetRow.isWholeOperationParameter());
        if (mappingSheetRow.getWholeOperationParameterValue() != null)
            parameterTextBox.setText(mappingSheetRow.getWholeOperationParameterValue());

        createOperationOutputFieldTable();
        setAllWidgetsOnIsParamButton(btnIsParam);
        disabledWidgetsifWholeOperationIsParameter(btnIsParam, mappingSheetRow.isWholeOperationParameter());
        if (mappingSheetRow.getOperationClassPath() != null) {
            operationTextBox.setText(mappingSheetRow.getOperationClassPath());
        }

        createExternalOperationComposite(mappingSheetRow);
    }

    private void createExternalOperationComposite(MappingSheetRow mappingSheetRow) {
        ExpresssionOperationImportExportComposite importExportComposite = new ExpresssionOperationImportExportComposite(
                this, SWT.NONE, ImportExportType.OPERATION, mappingSheetRow.getExternalOperation()) {

            @Override
            protected void exportButtonSelection(Button widget) {
                ExternalOperationExpressionUtil.INSTANCE.exportOperation(getFile(), mappingSheetRow, true,
                        TransformExpressionComposite.getInputSchemaOfCurrentComponent(component));
                transformDialog.showHideValidationMessage();
            }

            @Override
            protected void importButtonSelection(Button widget) {
                ExternalOperationExpressionUtil.INSTANCE.importOperation(getFile(), mappingSheetRow, true,
                        transformMapping, component.getComponentName());
                refreshOperationComposite(mappingSheetRow);

            }

            @Override
            protected void interalRadioButtonSelection(Button widget) {
                transformDialog.showHideValidationMessage();
                setEnableParameterCompo(true);

            }

            @Override
            protected void externalRadioButtonSelection(Button widget) {
                transformDialog.showHideValidationMessage();
                setEnableParameterCompo(false);

            }

            private void setEnableParameterCompo(boolean isEnable) {
                parameterTextBox.setEnabled(isEnable);
                btnIsParam.setEnabled(isEnable);
            }

        };
    }

    private void refreshOperationComposite(MappingSheetRow mappingSheetRow) {
        outputTableViewer.refresh();
        inputTableViewer.refresh();
        operationIdTextBox.setText(mappingSheetRow.getOperationID());
        operationTextBox.setText(mappingSheetRow.getOperationClassPath());
        transformDialog.refreshOutputTable();
        transformDialog.showHideValidationMessage();
    }

    private void disabledWidgetsifWholeOperationIsParameter(Button isParam, boolean isWholeOperationParameter) {
        if (isWholeOperationParameter) {
            Button text = (Button) isParam;
            Text parameterTextBox = (Text) text.getData(PARAMETER_TEXT_BOX);
            TableViewer operationInputFieldTableViewer = (TableViewer) text
                    .getData(OPERATION_INPUT_FIELD_TABLE_VIEWER);
            TableViewer operationalOutputFieldTableViewer = (TableViewer) text
                    .getData(OPERATION_OUTPUT_FIELD_TABLE_VIEWER);
            Text operationClassTextBox = (Text) text.getData(OPERATION_CLASS_TEXT_BOX);
            Text operationIDTextBox = (Text) text.getData(OPERATION_ID_TEXT_BOX);
            Button btnNewButton = (Button) text.getData(BTN_NEW_BUTTON);
            Button inputAdd = (Button) text.getData(INPUT_ADD_BUTTON);

            Button inputDelete = (Button) text.getData(INPUT_DELETE_BUTTON);
            Button outputAdd = (Button) text.getData(OUTPUT_ADD_BUTTON);
            Button outputDelete = (Button) text.getData(OUTPUT_DELETE_BUTTON);
            parameterTextBox.setEnabled(true);

            operationInputFieldTableViewer.getTable().setEnabled(false);

            operationalOutputFieldTableViewer.getTable().setEnabled(false);
            operationClassTextBox.setEnabled(false);

            operationIDTextBox.setEnabled(false);

            btnNewButton.setEnabled(false);
            inputAdd.setEnabled(false);
            inputDelete.setEnabled(false);

            outputAdd.setEnabled(false);
            outputDelete.setEnabled(false);

        }
    }

    private void setAllWidgetsOnIsParamButton(Button isParam) {
        isParam.setData(PARAMETER_TEXT_BOX, parameterTextBox);
        isParam.setData(OPERATION_CLASS_TEXT_BOX, operationTextBox);
        isParam.setData(OPERATION_ID_TEXT_BOX, operationIdTextBox);
        isParam.setData(OPERATION_INPUT_FIELD_TABLE_VIEWER, inputTableViewer);
        isParam.setData(OPERATION_OUTPUT_FIELD_TABLE_VIEWER, outputTableViewer);
        isParam.setData(INPUT_ADD_BUTTON, addButtonInputTable);
        isParam.setData(INPUT_DELETE_BUTTON, deletButtonInputTable);
        isParam.setData(OUTPUT_ADD_BUTTON, addButtonOutputTable);
        isParam.setData(OUTPUT_DELETE_BUTTON, deletButtonOutputTable);
        isParam.setData(BTN_NEW_BUTTON, browseButton);
    }

    private void createOperationInputTable() {
        Composite operationInputFieldComposite = new Composite(mainComposite, SWT.NONE);
        operationInputFieldComposite.setLayout(new GridLayout(1, false));
        GridData gridDataOperationInputFieldComposite = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
        gridDataOperationInputFieldComposite.heightHint = 200;
        gridDataOperationInputFieldComposite.widthHint = 159;
        operationInputFieldComposite.setLayoutData(gridDataOperationInputFieldComposite);

        Composite buttonComposite = new Composite(operationInputFieldComposite, SWT.NONE);
        buttonComposite.setLayout(new GridLayout(2, false));
        GridData gd_buttonComposite = new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1);
        gd_buttonComposite.heightHint = 36;
        gd_buttonComposite.widthHint = 139;
        buttonComposite.setLayoutData(gd_buttonComposite);

        addButtonInputTable = new Button(buttonComposite, SWT.NONE);
        addButtonInputTable.setImage(ImagePathConstant.ADD_BUTTON.getImageFromRegistry());
        deletButtonInputTable = new Button(buttonComposite, SWT.NONE);
        deletButtonInputTable.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
        deletButtonInputTable.setImage(ImagePathConstant.DELETE_BUTTON.getImageFromRegistry());

        inputTableViewer = new TableViewer(operationInputFieldComposite,
                SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
        inputTable = inputTableViewer.getTable();
        inputTable.setLinesVisible(true);
        inputTable.setHeaderVisible(true);
        inputTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        inputTable.setVisible(true);

        addButtonInputTable.setToolTipText(Messages.ADD_SCHEMA_TOOLTIP);
        deletButtonInputTable.setToolTipText(Messages.DELETE_SCHEMA_TOOLTIP);

    }

    private void createOperationOutputFieldTable() {
        Composite operationOutputFieldComposite = new Composite(mainComposite, SWT.NONE);
        operationOutputFieldComposite.setLayout(new GridLayout(1, false));
        GridData gridDataOperationOutputFieldComposite = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
        gridDataOperationOutputFieldComposite.heightHint = 200;
        gridDataOperationOutputFieldComposite.widthHint = 159;
        operationOutputFieldComposite.setLayoutData(gridDataOperationOutputFieldComposite);

        Composite buttonCompositeForOperationOutputField = new Composite(operationOutputFieldComposite, SWT.NONE);
        buttonCompositeForOperationOutputField.setLayout(new GridLayout(2, false));
        GridData gd_buttonCompositeForOperationOutputField = new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1);
        gd_buttonCompositeForOperationOutputField.heightHint = 36;
        gd_buttonCompositeForOperationOutputField.widthHint = 139;
        buttonCompositeForOperationOutputField.setLayoutData(gd_buttonCompositeForOperationOutputField);

        addButtonOutputTable = new Button(buttonCompositeForOperationOutputField, SWT.NONE);
        addButtonOutputTable.setImage(ImagePathConstant.ADD_BUTTON.getImageFromRegistry());
        deletButtonOutputTable = new Button(buttonCompositeForOperationOutputField, SWT.NONE);
        deletButtonOutputTable.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
        deletButtonOutputTable.setImage(ImagePathConstant.DELETE_BUTTON.getImageFromRegistry());

        outputTableViewer = new TableViewer(operationOutputFieldComposite,
                SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
        outputTable = outputTableViewer.getTable();
        outputTable.setLinesVisible(true);
        outputTable.setHeaderVisible(true);
        outputTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        outputTable.setVisible(true);
    }

    public TableViewer getInputTableViewer() {
        return inputTableViewer;
    }

    public TableViewer getOutputTableViewer() {
        return outputTableViewer;
    }

    public Text getOperationIdTextBox() {
        return operationIdTextBox;
    }

    public Text getOperationTextBox() {
        return operationTextBox;
    }

    public Text getParameterTextBox() {
        return parameterTextBox;
    }

    public Button getAddButtonInputTable() {
        return addButtonInputTable;
    }

    public Button getDeletButtonInputTable() {
        return deletButtonInputTable;
    }

    public Button getBrowseButton() {
        return browseButton;
    }

    public Button getAddButtonOutputTable() {
        return addButtonOutputTable;
    }

    public Button getDeletButtonOutputTable() {
        return deletButtonOutputTable;
    }

    public Button getBtnIsParam() {
        return btnIsParam;
    }

    public Button getSwitchToExpressionButton() {
        return switchToExpressionButton;
    }

    public Button getSwitchToClassButton() {
        return switchToClassButton;
    }

    @Override
    protected void checkSubclass() {
    }

}