org.dynami.dialogs.StrategyDescriptorDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.dynami.dialogs.StrategyDescriptorDialog.java

Source

/*
 * Copyright 2013 Alessandro Atria
 *
 * 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 org.dynami.dialogs;

import org.dynami.Activator;
import org.dynami.Constants;
import org.dynami.core.descriptor.PhaseDescriptor;
import org.dynami.core.descriptor.StrategyDescriptor;
import org.dynami.core.model.Param;
import org.dynami.core.strategy.Phase;
import org.dynami.core.util.DUtils;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
import org.eclipse.wb.swt.ResourceManager;
import org.eclipse.wb.swt.SWTResourceManager;

public class StrategyDescriptorDialog extends Dialog {
    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
    private final StrategyDescriptor descriptor;
    private Label lblOwnerout;
    private Label lblVendorout;
    private Label versionOut;
    private Label lblReleasedout;
    private Label lblClassnameout;
    private Label lblDescriptionout;
    private Table paramsTable;
    private Table phasesTable;

    /**
     * Create the dialog.
     * @param parentShell
     */
    public StrategyDescriptorDialog(final Shell parentShell, final StrategyDescriptor descriptor) {
        super(parentShell);
        this.descriptor = descriptor;
    }

    /**
     * Create contents of the dialog.
     * @param parent
     */
    @Override
    protected Control createDialogArea(Composite parent) {
        Composite container = (Composite) super.createDialogArea(parent);
        container.setLayout(new FillLayout(SWT.HORIZONTAL));

        ScrolledForm scrldfrmStrategy = formToolkit.createScrolledForm(container);
        scrldfrmStrategy.setImage(ResourceManager.getPluginImage(Activator.PLUGIN_ID, Constants.ICONS.INFO));
        formToolkit.paintBordersFor(scrldfrmStrategy);
        scrldfrmStrategy.setText(descriptor.getName());
        scrldfrmStrategy.getBody().setLayout(new FillLayout(SWT.HORIZONTAL));

        CTabFolder tabFolder = new CTabFolder(scrldfrmStrategy.getBody(), SWT.BORDER | SWT.BOTTOM);
        formToolkit.adapt(tabFolder);
        formToolkit.paintBordersFor(tabFolder);
        tabFolder.setSelectionBackground(
                Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT));

        CTabItem tbtmDefinition = new CTabItem(tabFolder, SWT.NONE);
        tbtmDefinition.setText("Definition");

        Composite definitionTab = new Composite(tabFolder, SWT.NONE);
        TableWrapLayout definitionTabLayout = new TableWrapLayout();
        definitionTabLayout.numColumns = 2;
        definitionTab.setLayout(definitionTabLayout);

        tbtmDefinition.setControl(definitionTab);

        formToolkit.adapt(definitionTab);
        formToolkit.paintBordersFor(definitionTab);

        Label lblOwner = new Label(definitionTab, SWT.NONE);
        lblOwner.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1));
        formToolkit.adapt(lblOwner, true, true);
        lblOwner.setText("Owner:");

        lblOwnerout = new Label(definitionTab, SWT.NONE);
        lblOwnerout.setForeground(SWTResourceManager.getColor(SWT.COLOR_LINK_FOREGROUND));
        lblOwnerout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
        TableWrapData twd_lblOwnerout = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
        twd_lblOwnerout.grabHorizontal = true;
        lblOwnerout.setLayoutData(twd_lblOwnerout);
        formToolkit.adapt(lblOwnerout, true, true);
        lblOwnerout.setText(descriptor.getOwner());

        Label lblVendor = new Label(definitionTab, SWT.NONE);
        lblVendor.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1));
        formToolkit.adapt(lblVendor, true, true);
        lblVendor.setText("Vendor:");

        lblVendorout = new Label(definitionTab, SWT.NONE);
        lblVendorout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
        formToolkit.adapt(lblVendorout, true, true);
        lblVendorout.setText(descriptor.getVendor());

        Label lblVersion = new Label(definitionTab, SWT.NONE);
        lblVersion.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1));
        formToolkit.adapt(lblVersion, true, true);
        lblVersion.setText("Version:");

        versionOut = new Label(definitionTab, SWT.NONE);
        versionOut.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
        formToolkit.adapt(versionOut, true, true);
        versionOut.setText(String.valueOf(descriptor.getVersion()));

        Label lblReleased = new Label(definitionTab, SWT.NONE);
        lblReleased.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1));
        formToolkit.adapt(lblReleased, true, true);
        lblReleased.setText("Released:");

        lblReleasedout = formToolkit.createLabel(definitionTab, "", SWT.NONE);
        lblReleasedout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
        lblReleasedout.setText(DUtils.DATE_FORMAT.format(descriptor.getReleased()));

        Label lblClassName = new Label(definitionTab, SWT.NONE);
        lblClassName.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1));
        formToolkit.adapt(lblClassName, true, true);
        lblClassName.setText("Class name:");

        lblClassnameout = formToolkit.createLabel(definitionTab, "classnameOut", SWT.NONE);
        lblClassnameout.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD));
        lblClassnameout.setText(descriptor.getClassName());

        Label lblDescription = new Label(definitionTab, SWT.NONE);
        lblDescription.setLayoutData(new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP, 1, 1));
        formToolkit.adapt(lblDescription, true, true);
        lblDescription.setText("Description:");

        lblDescriptionout = formToolkit.createLabel(definitionTab, "descriptionOut", SWT.WRAP);
        lblDescriptionout.setForeground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_BORDER));
        TableWrapData twd_lblDescriptionout = new TableWrapData(TableWrapData.FILL, TableWrapData.FILL_GRAB, 1, 1);
        twd_lblDescriptionout.heightHint = 139;
        lblDescriptionout.setLayoutData(twd_lblDescriptionout);
        lblDescriptionout.setText(descriptor.getDescription());

        CTabItem tbtmParameters = new CTabItem(tabFolder, SWT.NONE);
        tbtmParameters.setText("Parameters");
        Composite parametersTab = new Composite(tabFolder, SWT.NONE);
        tbtmParameters.setControl(parametersTab);
        formToolkit.adapt(parametersTab);
        formToolkit.paintBordersFor(parametersTab);
        parametersTab.setLayout(new FillLayout(SWT.HORIZONTAL));

        TableViewer paramsTableViewer = new TableViewer(parametersTab, SWT.BORDER | SWT.FULL_SELECTION);
        paramsTableViewer.setContentProvider(ArrayContentProvider.getInstance());
        paramsTable = paramsTableViewer.getTable();
        paramsTable.setLinesVisible(true);
        paramsTable.setHeaderVisible(true);
        formToolkit.paintBordersFor(paramsTable);

        TableViewerColumn tableViewerColumn = new TableViewerColumn(paramsTableViewer, SWT.NONE);
        TableColumn tblclmnName = tableViewerColumn.getColumn();
        tblclmnName.setWidth(62);
        tblclmnName.setText("Name");
        tableViewerColumn.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                Param p = (Param) cell.getElement();
                cell.setText(p.getName());
            }
        });

        TableViewerColumn tableViewerColumn_1 = new TableViewerColumn(paramsTableViewer, SWT.NONE);
        TableColumn tblclmnType = tableViewerColumn_1.getColumn();
        tblclmnType.setWidth(58);
        tblclmnType.setText("Type");
        tableViewerColumn_1.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                Param p = (Param) cell.getElement();
                cell.setText(p.getType());
            }
        });

        TableViewerColumn tableViewerColumn_2 = new TableViewerColumn(paramsTableViewer, SWT.NONE);
        TableColumn tblclmnDefault = tableViewerColumn_2.getColumn();
        tblclmnDefault.setWidth(100);
        tblclmnDefault.setText("Default");
        tableViewerColumn_2.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                Param p = (Param) cell.getElement();
                cell.setText(String.valueOf(p.get_default()));
            }
        });

        TableViewerColumn tableViewerColumn_3 = new TableViewerColumn(paramsTableViewer, SWT.NONE);
        TableColumn tblclmnDescription = tableViewerColumn_3.getColumn();
        tblclmnDescription.setWidth(202);
        tblclmnDescription.setText("Description");
        tableViewerColumn_3.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                Param p = (Param) cell.getElement();
                cell.setText(p.getDescription());
            }
        });

        CTabItem tbtmPhases = new CTabItem(tabFolder, SWT.NONE);
        tbtmPhases.setText("Phases");
        Composite phasesTab = new Composite(tabFolder, SWT.NONE);
        tbtmPhases.setControl(phasesTab);
        formToolkit.adapt(phasesTab);
        formToolkit.paintBordersFor(phasesTab);
        phasesTab.setLayout(new FillLayout(SWT.HORIZONTAL));

        TableViewer phasesTableViewer = new TableViewer(phasesTab, SWT.BORDER | SWT.FULL_SELECTION);
        phasesTableViewer.setContentProvider(ArrayContentProvider.getInstance());
        phasesTable = phasesTableViewer.getTable();
        phasesTable.setLinesVisible(true);
        phasesTable.setHeaderVisible(true);
        formToolkit.paintBordersFor(phasesTable);

        TableViewerColumn tableViewerColumn_4 = new TableViewerColumn(phasesTableViewer, SWT.NONE);
        TableColumn tblclmnName_1 = tableViewerColumn_4.getColumn();
        tblclmnName_1.setWidth(109);
        tblclmnName_1.setText("Name");
        tableViewerColumn_4.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                PhaseDescriptor p = (PhaseDescriptor) cell.getElement();
                cell.setText(p.getName());
            }
        });

        TableViewerColumn tableViewerColumn_5 = new TableViewerColumn(phasesTableViewer, SWT.NONE);
        TableColumn tblclmnClassName = tableViewerColumn_5.getColumn();
        tblclmnClassName.setWidth(204);
        tblclmnClassName.setText("Class Name");
        tableViewerColumn_5.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                PhaseDescriptor p = (PhaseDescriptor) cell.getElement();
                cell.setText(p.getClassName());
            }
        });

        TableViewerColumn tableViewerColumn_6 = new TableViewerColumn(phasesTableViewer, SWT.NONE);
        TableColumn tblclmnDescription_1 = tableViewerColumn_6.getColumn();
        tblclmnDescription_1.setWidth(298);
        tblclmnDescription_1.setText("Description");
        tableViewerColumn_6.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                PhaseDescriptor p = (PhaseDescriptor) cell.getElement();
                cell.setText(p.getDescription());
            }
        });

        CTabItem tbtmPermissions = new CTabItem(tabFolder, SWT.NONE);
        tbtmPermissions.setText("Permissions");
        Composite permissionsTab = new Composite(tabFolder, SWT.NONE);
        tbtmPermissions.setControl(permissionsTab);
        formToolkit.adapt(permissionsTab);
        formToolkit.paintBordersFor(permissionsTab);
        permissionsTab.setLayout(new FillLayout(SWT.HORIZONTAL));

        TreeViewer permissionsTreeViewer = new TreeViewer(permissionsTab, SWT.BORDER);
        //permissionsTreeViewer.setContentProvider(ArrayContentProvider.getInstance());
        Tree permissionsTree = permissionsTreeViewer.getTree();
        permissionsTree.setLinesVisible(true);
        permissionsTree.setHeaderVisible(true);
        formToolkit.paintBordersFor(permissionsTree);

        TreeViewerColumn treeViewerColumn = new TreeViewerColumn(permissionsTreeViewer, SWT.NONE);
        TreeColumn trclmnPhase = treeViewerColumn.getColumn();
        trclmnPhase.setWidth(100);
        trclmnPhase.setText("Phase");
        treeViewerColumn.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                Phase p = (Phase) cell.getElement();
                cell.setText(p.getName());
            }
        });

        TreeViewerColumn treeViewerColumn_1 = new TreeViewerColumn(permissionsTreeViewer, SWT.NONE);
        TreeColumn trclmnPermission = treeViewerColumn_1.getColumn();
        trclmnPermission.setWidth(185);
        trclmnPermission.setText("Permission");

        TreeViewerColumn treeViewerColumn_2 = new TreeViewerColumn(permissionsTreeViewer, SWT.NONE);
        TreeColumn trclmnValue = treeViewerColumn_2.getColumn();
        trclmnValue.setWidth(310);
        trclmnValue.setText("Value");

        CTabItem tbtmDependencies = new CTabItem(tabFolder, SWT.NONE);
        tbtmDependencies.setText("Dependencies");
        Composite dependenciesTab = new Composite(tabFolder, SWT.NONE);
        TableWrapLayout dependenciesTabLayout = new TableWrapLayout();
        dependenciesTabLayout.numColumns = 2;
        dependenciesTab.setLayout(dependenciesTabLayout);
        tbtmDependencies.setControl(dependenciesTab);
        formToolkit.adapt(dependenciesTab);
        formToolkit.paintBordersFor(dependenciesTab);

        paramsTableViewer.setInput(descriptor.getSettings().getParams());
        phasesTableViewer.setInput(descriptor.getPhases());
        return container;
    }

    /**
     * Create contents of the button bar.
     * @param parent
     */
    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
    }

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