Java tutorial
/****************************************************************************** * 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