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

Java tutorial

Introduction

Here is the source code for hydrograph.ui.propertywindow.widgets.customwidgets.operational.OperationClassDialog.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 java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;

import hydrograph.ui.common.component.config.Operations;
import hydrograph.ui.common.component.config.TypeInfo;
import hydrograph.ui.common.datastructures.tooltip.TootlTipErrorMessage;
import hydrograph.ui.common.util.Constants;
import hydrograph.ui.common.util.CustomColorRegistry;
import hydrograph.ui.common.util.ImagePathConstant;
import hydrograph.ui.common.util.OSValidator;
import hydrograph.ui.common.util.XMLConfigUtil;
import hydrograph.ui.datastructure.property.NameValueProperty;
import hydrograph.ui.datastructure.property.mapping.MappingSheetRow;
import hydrograph.ui.propertywindow.messagebox.ConfirmCancelMessageBox;
import hydrograph.ui.propertywindow.messages.Messages;
import hydrograph.ui.propertywindow.propertydialog.PropertyDialogButtonBar;
import hydrograph.ui.propertywindow.widgets.customwidgets.config.WidgetConfig;
import hydrograph.ui.propertywindow.widgets.filterproperty.ELTFilterContentProvider;
import hydrograph.ui.propertywindow.widgets.gridwidgets.basic.AbstractELTWidget;
import hydrograph.ui.propertywindow.widgets.gridwidgets.basic.ELTDefaultCheckBox;
import hydrograph.ui.propertywindow.widgets.gridwidgets.basic.ELTDefaultCombo;
import hydrograph.ui.propertywindow.widgets.gridwidgets.basic.ELTDefaultTextBox;
import hydrograph.ui.propertywindow.widgets.gridwidgets.basic.ELTSWTWidgets;
import hydrograph.ui.propertywindow.widgets.interfaces.IOperationClassDialog;
import hydrograph.ui.propertywindow.widgets.utility.FilterOperationClassUtility;
import hydrograph.ui.propertywindow.widgets.utility.SchemaButtonsSyncUtility;
import hydrograph.ui.propertywindow.widgets.utility.WidgetUtility;

public class OperationClassDialog extends Dialog implements IOperationClassDialog {

    private static final String PATH = "path";
    /**
     * Create the dialog.
     * 
     * @param parentShell
     */
    private Text fileName;
    private Combo operationClasses;
    private Button isParameterCheckBox;
    private Button applyButton;
    private Button okButton;
    private Composite container;
    private boolean isOkPressed;
    private boolean isCancelPressed;
    private boolean isApplyPressed;
    private boolean closeDialog;
    private PropertyDialogButtonBar operationClassDialogButtonBar;
    private TootlTipErrorMessage tootlTipErrorMessage = new TootlTipErrorMessage();
    private WidgetConfig widgetConfig;
    private String componentName;
    private ControlDecoration alphanumericDecorator;
    private ControlDecoration emptyDecorator;
    private ControlDecoration parameterDecorator;
    private boolean isYesPressed = false;
    private boolean isNoPressed = false;
    private PropertyDialogButtonBar propertyDialogButtonBar;
    private PropertyDialogButtonBar opeartionClassDialogButtonBar;
    private Button cancelButton;
    private TransformDialog transformDialog;
    private MappingSheetRow mappingSheetRow;
    private Label errorLabel;
    private Integer windowButtonWidth = 30;
    private Integer windowButtonHeight = 25;
    private Integer macButtonWidth = 40;
    private Integer macButtonHeight = 30;
    private Composite buttonComposite;
    private ELTSWTWidgets widget = new ELTSWTWidgets();
    private boolean ctrlKeyPressed = false;
    private Table table_2;
    private TableViewer nameValueTableViewer;

    public OperationClassDialog(Shell parentShell, String componentName, MappingSheetRow mappingSheetRow,
            PropertyDialogButtonBar propertyDialogButtonBar, WidgetConfig widgetConfig,
            TransformDialog transformDialog) {
        super(parentShell);
        setShellStyle(SWT.CLOSE | SWT.RESIZE);
        this.widgetConfig = widgetConfig;
        this.componentName = componentName;
        this.propertyDialogButtonBar = propertyDialogButtonBar;
        opeartionClassDialogButtonBar = new PropertyDialogButtonBar(parentShell);
        this.mappingSheetRow = mappingSheetRow;
        this.transformDialog = transformDialog;
    }

    /**
     * Create contents of the dialog.
     * 
     * @param parent
     */
    @Override
    public Control createDialogArea(Composite parent) {
        container = (Composite) super.createDialogArea(parent);

        container.setLayout(new GridLayout(1, false));

        container.getShell().setText(Messages.OPERATION_CLASS);

        operationClassDialogButtonBar = new PropertyDialogButtonBar(container);

        Composite composite = new Composite(container, SWT.BORDER);
        container.getShell().setMinimumSize(550, 400);
        GridData gd_composite = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
        gd_composite.heightHint = 104;
        gd_composite.widthHint = 450;
        composite.setLayoutData(gd_composite);

        composite.setLayout(new GridLayout(1, false));

        AbstractELTWidget fileNameText = new ELTDefaultTextBox().grabExcessHorizontalSpace(true).textBoxWidth(150);

        AbstractELTWidget isParameterCheckbox = new ELTDefaultCheckBox(Constants.IS_PARAMETER)
                .checkBoxLableWidth(100);

        Operations operations = XMLConfigUtil.INSTANCE.getComponent(componentName).getOperations();
        List<TypeInfo> typeInfos = operations.getStdOperation();
        String optionsOfComboOfOperationClasses[] = new String[typeInfos.size() + 1];
        optionsOfComboOfOperationClasses[0] = Messages.CUSTOM;
        for (int i = 0; i < typeInfos.size(); i++) {
            optionsOfComboOfOperationClasses[i + 1] = typeInfos.get(i).getName();
        }
        AbstractELTWidget comboOfOperationClasses = new ELTDefaultCombo()
                .defaultText(optionsOfComboOfOperationClasses).comboBoxWidth(90);

        FilterOperationClassUtility.INSTANCE.createOperationalClass(composite, operationClassDialogButtonBar,
                comboOfOperationClasses, isParameterCheckbox, fileNameText, tootlTipErrorMessage, widgetConfig,
                this, propertyDialogButtonBar, opeartionClassDialogButtonBar);
        fileName = (Text) fileNameText.getSWTWidgetControl();
        fileName.setData(PATH, mappingSheetRow.getOperationClassFullPath());
        operationClasses = (Combo) comboOfOperationClasses.getSWTWidgetControl();

        FilterOperationClassUtility.INSTANCE.enableAndDisableButtons(true, false);
        FilterOperationClassUtility.INSTANCE.setComponentName(componentName);
        isParameterCheckBox = (Button) isParameterCheckbox.getSWTWidgetControl();
        alphanumericDecorator = WidgetUtility.addDecorator(fileName, Messages.CHARACTERSET);
        alphanumericDecorator.setMarginWidth(2);
        emptyDecorator = WidgetUtility.addDecorator(fileName, Messages.OperationClassBlank);
        emptyDecorator.setMarginWidth(2);
        parameterDecorator = WidgetUtility.addDecorator(fileName, Messages.PARAMETER_ERROR);
        parameterDecorator.setMarginWidth(2);

        buttonComposite = new Composite(container, SWT.NONE);
        GridData gd_composite_3 = new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1);
        gd_composite_3.heightHint = 44;
        gd_composite_3.widthHint = 450;
        buttonComposite.setLayoutData(gd_composite_3);

        Composite nameValueComposite = new Composite(container, SWT.None);
        GridData gd_nameValueComposite = new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1);
        gd_nameValueComposite.widthHint = 450;
        gd_nameValueComposite.heightHint = 251;
        nameValueComposite.setLayoutData(gd_nameValueComposite);
        GridLayout name_gd = new GridLayout(1, false);
        name_gd.marginWidth = 0;
        name_gd.marginRight = 0;
        nameValueComposite.setLayout(name_gd);

        nameValueTableViewer = new TableViewer(nameValueComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI);
        table_2 = nameValueTableViewer.getTable();
        addResizbleListner(table_2);
        GridData gd_table_2 = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
        gd_table_2.heightHint = 100;
        if (OSValidator.isMac()) {
            gd_table_2.widthHint = 507;
        } else {
            gd_table_2.widthHint = 504;
        }
        table_2.setLayoutData(gd_table_2);
        transformDialog.setTableViewer(nameValueTableViewer, nameValueComposite,
                new String[] { Messages.PROPERTY_NAME, Messages.PROPERTY_VALUE }, new ELTFilterContentProvider());
        nameValueTableViewer.setLabelProvider(new PropertyLabelProvider());
        nameValueTableViewer.setCellModifier(
                new PropertyGridCellModifier(this, nameValueTableViewer, operationClassDialogButtonBar));
        nameValueTableViewer.setInput(mappingSheetRow.getNameValueProperty());
        attachShortcutListner(nameValueTableViewer);
        table_2.getColumn(0).setWidth(259);
        table_2.getColumn(1).setWidth(262);

        int addButtonSize;
        if (OSValidator.isMac()) {
            addButtonSize = 318;
        } else {
            addButtonSize = 325;
        }
        Button addButton = widget.buttonWidget(buttonComposite, SWT.CENTER, new int[] { addButtonSize, 17, 20, 15 },
                "");
        addButton.setImage(ImagePathConstant.ADD_BUTTON.getImageFromRegistry());
        addButton.setToolTipText(Messages.ADD_KEY_SHORTCUT_TOOLTIP);
        SchemaButtonsSyncUtility.INSTANCE.buttonSize(addButton, macButtonWidth, macButtonHeight, windowButtonWidth,
                windowButtonHeight);
        addButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseUp(MouseEvent e) {
                addNewRow(nameValueTableViewer);
            }
        });

        table_2.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseDoubleClick(MouseEvent e) {
                addNewRow(nameValueTableViewer);
            }

            @Override
            public void mouseDown(MouseEvent e) {
            }
        });

        int deleteButtonSize;
        if (OSValidator.isMac()) {
            deleteButtonSize = 348;
        } else {
            deleteButtonSize = 355;
        }
        Button deleteButton = widget.buttonWidget(buttonComposite, SWT.CENTER,
                new int[] { deleteButtonSize, 17, 20, 15 }, "");
        deleteButton.setImage(ImagePathConstant.DELETE_BUTTON.getImageFromRegistry());
        deleteButton.setToolTipText(Messages.DELETE_KEY_SHORTCUT_TOOLTIP);
        SchemaButtonsSyncUtility.INSTANCE.buttonSize(deleteButton, macButtonWidth, macButtonHeight,
                windowButtonWidth, windowButtonHeight);
        deleteButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseUp(MouseEvent e) {
                deleteRow(nameValueTableViewer);
            }

        });

        int upButtonSize;
        if (OSValidator.isMac()) {
            upButtonSize = 378;
        } else {
            upButtonSize = 385;
        }
        Button upButton = widget.buttonWidget(buttonComposite, SWT.CENTER, new int[] { upButtonSize, 17, 20, 15 },
                "");
        upButton.setImage(ImagePathConstant.MOVEUP_BUTTON.getImageFromRegistry());
        upButton.setToolTipText(Messages.MOVE_UP_KEY_SHORTCUT_TOOLTIP);
        SchemaButtonsSyncUtility.INSTANCE.buttonSize(upButton, macButtonWidth, macButtonHeight, windowButtonWidth,
                windowButtonHeight);
        upButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseUp(MouseEvent e) {
                moveRowUp(nameValueTableViewer);
            }

        });

        int downButtonSize;
        if (OSValidator.isMac()) {
            downButtonSize = 408;
        } else {
            downButtonSize = 415;
        }
        Button downButton = widget.buttonWidget(buttonComposite, SWT.CENTER,
                new int[] { downButtonSize, 17, 20, 15 }, "");
        downButton.setImage(ImagePathConstant.MOVEDOWN_BUTTON.getImageFromRegistry());
        downButton.setToolTipText(Messages.MOVE_DOWN_KEY_SHORTCUT_TOOLTIP);
        SchemaButtonsSyncUtility.INSTANCE.buttonSize(downButton, macButtonWidth, macButtonHeight, windowButtonWidth,
                windowButtonHeight);
        downButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseUp(MouseEvent e) {
                moveRowDown(nameValueTableViewer);
            }

        });

        populateWidget();
        Composite errorComposite = new Composite(container, SWT.NONE);
        errorComposite.setLayout(new GridLayout(1, false));
        GridData griddata = new GridData(SWT.TOP, SWT.TOP, false, false, 1, 1);

        errorComposite.setLayoutData(griddata);

        errorLabel = new Label(errorComposite, SWT.NONE);
        errorLabel.setForeground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 0, 0));
        errorLabel.setText(Messages.EmptyFiledNotification);
        errorLabel.setVisible(false);
        checkNameValueFieldBlankOrNot();
        return container;
    }

    private void moveRowUp(TableViewer nameValueTableViewer) {

        Table table = nameValueTableViewer.getTable();
        int[] indexes = table.getSelectionIndices();
        for (int index : indexes) {

            if (index > 0) {
                Collections.swap(mappingSheetRow.getNameValueProperty(), index, index - 1);
                nameValueTableViewer.refresh();
                applyButton.setEnabled(true);
            }
        }

    }

    private void moveRowDown(TableViewer nameValueTableViewer) {
        Table table = nameValueTableViewer.getTable();
        int[] indexes = table.getSelectionIndices();
        for (int i = indexes.length - 1; i > -1; i--) {

            if (indexes[i] < mappingSheetRow.getNameValueProperty().size() - 1) {
                Collections.swap(mappingSheetRow.getNameValueProperty(), indexes[i], indexes[i] + 1);
                nameValueTableViewer.refresh();
                applyButton.setEnabled(true);

            }
        }

    }

    private void deleteRow(TableViewer nameValueTableViewer) {
        WidgetUtility.setCursorOnDeleteRow(nameValueTableViewer, mappingSheetRow.getNameValueProperty());
        nameValueTableViewer.refresh();

    }

    private void addNewRow(TableViewer nameValueTableViewer) {
        NameValueProperty nameValueProperty = new NameValueProperty();
        nameValueProperty.setPropertyName("");
        nameValueProperty.setPropertyValue("");
        if (!mappingSheetRow.getNameValueProperty().contains(nameValueProperty)) {
            mappingSheetRow.getNameValueProperty().add(nameValueProperty);
            nameValueTableViewer.refresh();
            nameValueTableViewer.editElement(
                    nameValueTableViewer.getElementAt(mappingSheetRow.getNameValueProperty().size() - 1), 0);
            applyButton.setEnabled(true);
        }
    }

    private void addResizbleListner(final Table table) {
        table.addControlListener(new ControlListener() {

            @Override
            public void controlResized(ControlEvent e) {
                table.getColumn(0).setWidth((table.getSize().x / 2) - 3);
                if (OSValidator.isMac()) {
                    table.getColumn(1).setWidth((table.getSize().x / 2) + 1);
                } else {
                    table.getColumn(1).setWidth((table.getSize().x / 2) - 2);
                }
            }

            public void controlMoved(ControlEvent e) {
                /*do nothing*/}
        });

    }

    public void pressOK() {
        okPressed();
        isYesPressed = true;
    }

    /**
     * Populate widget.
     */
    public void populateWidget() {

        if (mappingSheetRow.getOperationClassPath() != null
                && StringUtils.isNotBlank(mappingSheetRow.getOperationClassPath())) {
            fileName.setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 255));
            emptyDecorator.hide();
            mappingSheetRow.setComboBoxValue(mappingSheetRow.getComboBoxValue());
            fileName.setText(mappingSheetRow.getOperationClassPath());
            operationClasses.setText(mappingSheetRow.getComboBoxValue());
            isParameterCheckBox.setSelection(mappingSheetRow.isClassParameter());
            if (!StringUtils.equalsIgnoreCase(Messages.CUSTOM, mappingSheetRow.getComboBoxValue())) {
                fileName.setEnabled(false);
                FilterOperationClassUtility.INSTANCE.enableAndDisableButtons(false, false);
                isParameterCheckBox.setEnabled(false);
            } else {
                isParameterCheckBox.setEnabled(true);
                if (isParameterCheckBox.getSelection()) {
                    FilterOperationClassUtility.INSTANCE.enableAndDisableButtons(true, true);
                }
            }
        } else {
            FilterOperationClassUtility.INSTANCE.getOpenBtn().setEnabled(false);
            fileName.setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 204));
            operationClasses.select(0);
            isParameterCheckBox.setEnabled(false);
        }
    }

    /**
     * Create contents of the button bar.
     * 
     * @param parent
     */
    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
        cancelButton = createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);

        createApplyButton(parent);

        operationClassDialogButtonBar.setPropertyDialogButtonBar(okButton, applyButton, cancelButton);
        alphanumericDecorator.hide();
        parameterDecorator.hide();
        isParameterCheckBox.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                if (isParameterCheckBox.getSelection()) {
                    hasTextBoxAlphanumericCharactorsOnly(fileName.getText());
                    if (StringUtils.isNotBlank(fileName.getText()) && !fileName.getText().startsWith("@{")
                            && !fileName.getText().endsWith("}")) {
                        fileName.setText("@{" + fileName.getText() + "}");
                        fileName.setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 255));
                    }
                } else {
                    if (StringUtils.isNotBlank(fileName.getText()) && fileName.getText().startsWith("@{")) {
                        fileName.setText(fileName.getText().substring(2, fileName.getText().length() - 1));
                        fileName.setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 255));
                    }
                    okButton.setEnabled(true);
                    applyButton.setEnabled(true);
                    alphanumericDecorator.hide();
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
            }
        });
        fileName.addVerifyListener(new VerifyListener() {

            @Override
            public void verifyText(VerifyEvent e) {
                String currentText = ((Text) e.widget).getText();
                String textBoxValue = (currentText.substring(0, e.start) + e.text + currentText.substring(e.end))
                        .trim();
                if (isParameterCheckBox.getSelection()) {
                    if (StringUtils.isNotBlank(textBoxValue)
                            && (!textBoxValue.startsWith("@{") || !textBoxValue.endsWith("}"))) {
                        ((Text) e.widget)
                                .setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 255));
                        parameterDecorator.show();
                        emptyDecorator.hide();
                        okButton.setEnabled(false);
                        applyButton.setEnabled(false);
                    } else {
                        ((Text) e.widget)
                                .setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 204));
                        emptyDecorator.show();
                        parameterDecorator.hide();
                        okButton.setEnabled(true);
                        hasTextBoxAlphanumericCharactorsOnly(textBoxValue);
                    }
                } else {
                    if (StringUtils.isNotBlank(textBoxValue)) {
                        ((Text) e.widget)
                                .setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 255));
                        applyButton.setEnabled(true);
                        isParameterCheckBox.setEnabled(true);
                        emptyDecorator.hide();
                    } else {
                        ((Text) e.widget)
                                .setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 204));
                        isParameterCheckBox.setEnabled(false);
                        emptyDecorator.show();
                    }
                }
            }
        });

    }

    private void hasTextBoxAlphanumericCharactorsOnly(String textBoxValue) {
        if (StringUtils.isNotBlank(textBoxValue)) {
            fileName.setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 255));
            emptyDecorator.hide();
            Matcher matchs = Pattern.compile(Constants.REGEX).matcher(textBoxValue);
            if (!matchs.matches()) {
                alphanumericDecorator.show();
                okButton.setEnabled(false);
                applyButton.setEnabled(false);
            } else {
                alphanumericDecorator.hide();
                okButton.setEnabled(true);
                applyButton.setEnabled(true);
            }
        } else {
            fileName.setBackground(CustomColorRegistry.INSTANCE.getColorFromRegistry(255, 255, 204));
            emptyDecorator.show();
            alphanumericDecorator.hide();
            okButton.setEnabled(false);
            applyButton.setEnabled(false);
        }
    }

    private void createApplyButton(Composite parent) {
        applyButton = createButton(parent, IDialogConstants.NO_ID, "Apply", false);
        disableApplyButton();
        opeartionClassDialogButtonBar.setPropertyDialogButtonBar(okButton, applyButton, cancelButton);
    }

    private void disableApplyButton() {
        applyButton.setEnabled(false);
    }

    /**
     * Return the initial size of the dialog.
     */
    @Override
    protected Point getInitialSize() {
        return new Point(540, 500);
    }

    @Override
    protected void cancelPressed() {
        if (applyButton.isEnabled()) {

            if (!isNoPressed) {
                ConfirmCancelMessageBox confirmCancelMessageBox = new ConfirmCancelMessageBox(container);
                MessageBox confirmCancleMessagebox = confirmCancelMessageBox.getMessageBox();

                if (confirmCancleMessagebox.open() == SWT.OK) {
                    closeDialog = super.close();
                }
            } else {
                closeDialog = super.close();
            }

        } else {
            closeDialog = super.close();
        }
        isCancelPressed = true;
    }

    @Override
    protected void okPressed() {

        if (OSValidator.isMac()) {
            for (CellEditor cellEditor : nameValueTableViewer.getCellEditors()) {
                if (cellEditor != null) {
                    cellEditor.getControl().setEnabled(false); //Saves the existing value of CellEditor
                    cellEditor.getControl().setEnabled(true);
                }
            }
        }
        if (checkNameValueFieldBlankOrNot()) {
            mappingSheetRow = new MappingSheetRow(mappingSheetRow.getInputFields(), mappingSheetRow.getOutputList(),
                    mappingSheetRow.getOperationID(), operationClasses.getText(), fileName.getText(),
                    mappingSheetRow.getNameValueProperty(), isParameterCheckBox.getSelection(),
                    mappingSheetRow.getWholeOperationParameterValue(), mappingSheetRow.isWholeOperationParameter(),
                    (String) fileName.getData(PATH), mappingSheetRow.isExpression(), null, null,
                    mappingSheetRow.isActive());
            isOkPressed = true;
            super.okPressed();
        }
    }

    public boolean checkNameValueFieldBlankOrNot() {
        if (!mappingSheetRow.getNameValueProperty().isEmpty()) {
            for (NameValueProperty nameValueProperty : mappingSheetRow.getNameValueProperty()) {
                if (StringUtils.isBlank(nameValueProperty.getPropertyName())
                        && StringUtils.isBlank(nameValueProperty.getPropertyValue())) {
                    errorLabel.setText(Messages.EmptyFiledNotification);
                    errorLabel.setVisible(true);
                    return false;
                } else if (StringUtils.isBlank(nameValueProperty.getPropertyName())) {
                    errorLabel.setText(Messages.EmptyNameNotification);
                    errorLabel.setVisible(true);
                    return false;
                } else if (StringUtils.isBlank(nameValueProperty.getPropertyValue())) {
                    errorLabel.setText(Messages.EmptyValueNotification + "                   ");
                    errorLabel.setVisible(true);
                    return true;
                }
            }
        }
        errorLabel.setVisible(false);
        return true;
    }

    @Override
    protected void buttonPressed(int buttonId) {
        if (buttonId == 3 && checkNameValueFieldBlankOrNot()) {
            mappingSheetRow = new MappingSheetRow(mappingSheetRow.getInputFields(), mappingSheetRow.getOutputList(),
                    mappingSheetRow.getOperationID(), operationClasses.getText(), fileName.getText(),
                    mappingSheetRow.getNameValueProperty(), isParameterCheckBox.getSelection(),
                    mappingSheetRow.getWholeOperationParameterValue(), mappingSheetRow.isWholeOperationParameter(),
                    (String) fileName.getData(PATH), mappingSheetRow.isExpression(), null, null,
                    mappingSheetRow.isActive());
            applyButton.setEnabled(false);
            isApplyPressed = true;
        } else {
            super.buttonPressed(buttonId);
        }

    }

    public MappingSheetRow getMappingSheetRow() {
        return mappingSheetRow;
    }

    public String getTootlTipErrorMessage() {
        return tootlTipErrorMessage.getErrorMessage();
    }

    /**
     * 
     * returns true if ok button pressed from code
     * 
     * @return boolean
     */
    public boolean isYesPressed() {
        return isYesPressed;
    }

    public boolean isNoPressed() {
        return isNoPressed;
    }

    public boolean isOkPressed() {
        return isOkPressed;
    }

    public boolean isCancelPressed() {
        return isCancelPressed;
    }

    public boolean isApplyPressed() {
        return isApplyPressed;
    }

    @Override
    public void pressCancel() {
        isNoPressed = true;
        cancelPressed();
    }

    private void attachShortcutListner(final TableViewer nameValueTableViewer) {
        Control currentControl = table_2;

        currentControl.addKeyListener(new KeyListener() {

            @Override
            public void keyReleased(KeyEvent event) {
                if (event.keyCode == SWT.CTRL || event.keyCode == SWT.COMMAND) {
                    ctrlKeyPressed = false;
                }
            }

            @Override
            public void keyPressed(KeyEvent event) {
                if (event.keyCode == SWT.CTRL || event.keyCode == SWT.COMMAND) {
                    ctrlKeyPressed = true;
                }

                if (ctrlKeyPressed && event.keyCode == Constants.KEY_D) {
                    deleteRow(nameValueTableViewer);
                }

                else if (ctrlKeyPressed && event.keyCode == Constants.KEY_N) {
                    addNewRow(nameValueTableViewer);
                }

                else if (ctrlKeyPressed && event.keyCode == SWT.ARROW_UP) {
                    moveRowUp(nameValueTableViewer);
                }

                else if (ctrlKeyPressed && event.keyCode == SWT.ARROW_DOWN) {
                    moveRowDown(nameValueTableViewer);
                }
            }
        });
    }

    @Override
    public boolean close() {
        if (!isOkPressed) {
            cancelPressed();
            return closeDialog;
        } else {
            return super.close();
        }
    }
    /**
     * 
     * returns true if cancel button pressed from code
     * 
     * @return boolean
     */

}