Java tutorial
/******************************************************************************* * Copyright (c) 2008 The University of York. * 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 * * Contributors: * Dimitrios Kolovos - initial API and implementation ******************************************************************************/ package org.eclipse.epsilon.ewl.emf; import org.eclipse.epsilon.common.dt.util.ResourceFieldEditor; import org.eclipse.epsilon.common.util.StringUtil; import org.eclipse.epsilon.emf.dt.BrowseEPackagesListener; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.preference.ListEditor; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.swt.SWT; 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.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; public class WizardsExtensionPreferenceDialog extends TitleAreaDialog { private final class SettableListEditor extends ListEditor { public SettableListEditor(String name, String label, Composite composite) { super(name, label, composite); } @Override public String createList(String[] items) { return StringUtil.concat(WizardsExtensionPreference.EXTRA_PKG_SEPARATOR, items); } @Override protected String getNewInputObject() { SyncBrowseEPackagesListener lst = new SyncBrowseEPackagesListener(); lst.handleEvent(new Event()); return lst.result; } @Override protected String[] parseString(String stringList) { return StringUtil.split(stringList, WizardsExtensionPreference.EXTRA_PKG_SEPARATOR) .toArray(new String[0]); } public void setStringValues(String[] values) { for (String value : values) { getList().add(value); } } public String getStringValue() { return createList(getList().getItems()); } } private final class SyncBrowseEPackagesListener extends BrowseEPackagesListener { private String result; @Override public void selectionChanged(String ePackageUri) { this.result = ePackageUri; } } protected StringFieldEditor extensionEditor; protected ResourceFieldEditor wizardsEditor; protected SettableListEditor extraPackagesEditor; protected WizardsExtensionPreference preference; public WizardsExtensionPreferenceDialog(Shell parentShell) { super(parentShell); } @Override protected Control createDialogArea(Composite parent) { Composite zuper = (Composite) super.createDialogArea(parent); setTitle("Configure wizards"); getShell().setText("GMF Wizards"); setMessage("Configure wizards for an EMF namespace URI"); GridLayout layout = new GridLayout(2, false); GridData fillData = new GridData(GridData.FILL_BOTH); fillData.horizontalIndent = 8; final Composite composite = new Composite(zuper, SWT.FILL); composite.setLayout(layout); composite.setLayoutData(fillData); // Main namespace URI (for activating the wizard) final Composite cNamespaceURIRow = new Composite(composite, SWT.FILL); cNamespaceURIRow.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); extensionEditor = new StringFieldEditor("", "Namespace URI", cNamespaceURIRow); extensionEditor.getTextControl(cNamespaceURIRow).setLayoutData(fillData); Button browseMetamodelUri = new Button(composite, SWT.NONE); browseMetamodelUri.setText("Browse EPackages..."); browseMetamodelUri.addListener(SWT.Selection, new BrowseEPackagesListener() { @Override public void selectionChanged(String ePackageUri) { extensionEditor.getTextControl(cNamespaceURIRow).setText(ePackageUri); } }); // EWL file picker Composite cEWLFileRow = new Composite(composite, SWT.FILL); wizardsEditor = new ResourceFieldEditor("", "Wizards", "EWL Files", "EWL files in the workspace", "ewl", cEWLFileRow); fillData = new GridData(GridData.FILL_BOTH); fillData.horizontalSpan = 2; cEWLFileRow.setLayoutData(fillData); // Extra packages picker extraPackagesEditor = new SettableListEditor("", "Extra packages:", composite); extraPackagesEditor.fillIntoGrid(composite, 2); // Read values back into the dialog extensionEditor.setStringValue(preference.getNamespaceURI()); wizardsEditor.setStringValue(preference.getWizards()); extraPackagesEditor.setStringValues(preference.getExtraPackages()); return composite; } public WizardsExtensionPreference getPreference() { return preference; } public void setPreference(WizardsExtensionPreference preference) { this.preference = preference; } @Override protected void okPressed() { preference.setNamespaceURI(extensionEditor.getStringValue()); preference.setWizards(wizardsEditor.getStringValue()); preference.setExtraPackages(extraPackagesEditor.getStringValue()); super.okPressed(); } }