eu.geclipse.batch.ui.dialogs.AllowedVOsDialog.java Source code

Java tutorial

Introduction

Here is the source code for eu.geclipse.batch.ui.dialogs.AllowedVOsDialog.java

Source

/******************************************************************************
 * Copyright (c) 2007-2008 g-Eclipse consortium
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Initial development of the original code was made for
 * project g-Eclipse founded by European Union
 * project number: FP6-IST-034327  http://www.geclipse.eu/
 *
 * Contributor(s):
 *     UCY (http://www.cs.ucy.ac.cy)
 *      - Harald Gjermundrod (harald@cs.ucy.ac.cy)
 *
 *****************************************************************************/

package eu.geclipse.batch.ui.dialogs;

import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

import eu.geclipse.batch.model.qdl.AllowedVirtualOrganizationsType;
import eu.geclipse.batch.ui.internal.Activator;
import eu.geclipse.batch.ui.internal.Messages;
import eu.geclipse.core.model.GridModel;
import eu.geclipse.core.model.IGridElement;
import eu.geclipse.core.reporting.ProblemException;
import eu.geclipse.ui.widgets.StoredCombo;

/**
 * @author nloulloud
 */
public class AllowedVOsDialog extends Dialog {

    //  protected AllowedVirtualOrganizationsType allowedVO = QdlFactory.eINSTANCE.createAllowedVirtualOrganizationsType();
    private static final String VONAME_STRINGS = "voname_string"; //$NON-NLS-1$

    protected String newVO = null;
    protected boolean editMode = false;
    protected Composite panel = null;
    protected Label lblVOName = null;
    protected StoredCombo txtVOName = null;

    private String title = null;

    /**
     * 
     * The AllowedVODialog Class constructor.
     * 
     * Get's as input parameters the parentShell and the Dialog Title.
     *
     * @param parentShell
     * @param title
     */
    public AllowedVOsDialog(final Shell parentShell, final String title) {

        super(parentShell);
        this.title = title;
        setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL | SWT.RESIZE | SWT.MIN | SWT.MAX);
    }

    @Override
    protected void configureShell(final Shell shell) {

        super.configureShell(shell);

        shell.setMinimumSize(300, 130);

        if (this.title != null) {
            shell.setText(this.title);
        }
    }

    @Override
    protected Control createButtonBar(final Composite parent) {

        Control btnBar = super.createButtonBar(parent);
        getButton(IDialogConstants.OK_ID).setEnabled(false);
        return btnBar;

    }

    private void enableOKButton(final boolean value) {

        getButton(IDialogConstants.OK_ID).setEnabled(value);

    } // end void enableOKButton()

    @Override
    protected Control createDialogArea(final Composite parent) {

        Composite container = (Composite) super.createDialogArea(parent);
        GridData gd = new GridData(GridData.FILL_BOTH);
        container.setLayout(new GridLayout(3, false));
        container.setLayoutData(gd);
        this.panel = new Composite(container, SWT.NONE);
        GridLayout layout = new GridLayout(3, false);
        this.panel.setLayout(layout);
        gd = new GridData(GridData.FILL_HORIZONTAL);
        this.panel.setLayoutData(gd);

        gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        gd.grabExcessHorizontalSpace = true;
        gd.horizontalSpan = 2;

        GridData gData = new GridData(GridData.FILL_HORIZONTAL);
        gData.grabExcessHorizontalSpace = true;

        this.lblVOName = new Label(this.panel, SWT.NONE);
        this.lblVOName.setText(Messages.getString("AllowedVODialog_VOName")); //$NON-NLS-1$

        Activator activator = Activator.getDefault();
        IPreferenceStore preferenceStore = activator.getPreferenceStore();
        this.txtVOName = new StoredCombo(this.panel, SWT.DROP_DOWN);
        this.txtVOName.setPreferences(preferenceStore, VONAME_STRINGS);
        this.txtVOName.setLayoutData(gData);

        /* Initial Values for Edit Operation */
        if (this.editMode) {
            this.txtVOName.setText(this.newVO);
        }

        this.txtVOName.addModifyListener(new ModifyListener() {

            public void modifyText(final ModifyEvent e) {

                AllowedVOsDialog.this.newVO = AllowedVOsDialog.this.txtVOName.getText();
                validateFields();
            }

        });

        //this.txtVOName.setLayoutData( gd );

        Dialog.applyDialogFont(container);

        addVONames();

        return parent;

    } // end void createDialogArea()

    protected void validateFields() {
        if (0 < this.txtVOName.getText().trim().length())
            enableOKButton(true);
        else
            enableOKButton(false);
    }

    /**
     * @param dialogInput
     */
    public void setInput(final String dialogInput) {

        this.newVO = dialogInput;
        this.editMode = true;

    }

    private String getDialogSettingsSectionName() {
        return IDebugUIConstants.PLUGIN_ID + ".ALLOWED_VOS_DIALOG"; //$NON-NLS-1$
    }

    /**
     * Get's the new {@link AllowedVirtualOrganizationsType}
     * 
     * @return The new {@link AllowedVirtualOrganizationsType}
     */
    public String getValue() {

        return this.newVO.trim();
    }

    @Override
    protected void okPressed() {

        super.okPressed();
    }

    @Override
    protected void cancelPressed() {
        super.cancelPressed();
    }

    @Override
    public int open() {

        applyDialogFont(this.panel);

        return super.open();
    }

    @Override
    protected IDialogSettings getDialogBoundsSettings() {

        IDialogSettings settings = Activator.getDefault().getDialogSettings();
        IDialogSettings section = settings.getSection(getDialogSettingsSectionName());
        if (section == null) {

            section = settings.addNewSection(getDialogSettingsSectionName());
        }
        return section;

    } // end IDialogSetting getDialogBoundsSettings()

    /**
     * Provides a default list of VO names in the VO name field.
     */
    private void addVONames() {
        IGridElement[] gridElements = null;
        try {
            gridElements = GridModel.getVoManager().getChildren(null);
        } catch (ProblemException e) {
            // Nothing to do
        }

        if (null != gridElements) {
            for (IGridElement element : gridElements) {
                String name = element.getName();
                if (name != null && this.txtVOName.indexOf(name) == -1) {
                    this.txtVOName.add(name);
                }
            }
        }
    }

}// end class AllowedVOsDialog