Java tutorial
/******************************************************************************* * Copyright (c) 2011, 2012 Red Hat, Inc. * All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation * * @author Bob Brodt ******************************************************************************/ package org.eclipse.bpmn2.modeler.ui.property.dialogs; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IInputValidator; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.osgi.util.NLS; 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.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** * @author Bob Brodt * */ public class NamespacesEditingDialog extends InputDialog { Text namespaceText; String namespace; Text namespaceErrorText; Map<String, String> map; public NamespacesEditingDialog(Shell shell, String title, final Map<String, String> map, final String prefix, String namespace) { super(shell, title, Messages.NamespacesEditingDialog_Prefix, prefix, new IInputValidator() { @Override public String isValid(String newText) { if (newText == null || newText.isEmpty()) return Messages.NamespacesEditingDialog_Invalid_Empty_Prefix; if (newText.equals(prefix)) return null; if (map.containsKey(newText)) return NLS.bind(Messages.NamespacesEditingDialog_Invalid_Duplicate_Prefix, newText); return null; } }); this.namespace = namespace; this.map = map; } @Override protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); composite.getChildren(); if (namespace != null) { Label label = new Label(composite, SWT.WRAP); label.setText(Messages.NamespacesEditingDialog_Namespace); GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); label.setLayoutData(data); label.setFont(parent.getFont()); namespaceText = new Text(composite, getInputTextStyle()); namespaceText.setText(namespace); namespaceText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); namespaceText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { validateInput(); } }); namespaceErrorText = new Text(composite, SWT.READ_ONLY | SWT.WRAP); namespaceErrorText .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); namespaceErrorText .setBackground(namespaceErrorText.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); } return composite; } protected void validateInput() { super.validateInput(); if (namespaceText != null) { String msg = null; String ns = namespaceText.getText(); if (ns == null || ns.isEmpty()) msg = Messages.NamespacesEditingDialog_Invalid_Empty_Namespace; try { URI uri = URI.createURI(ns); } catch (Exception e) { msg = Messages.NamespacesEditingDialog_Invalid_Namespace_URI; } namespaceErrorText.setText(msg == null ? "" : msg); //$NON-NLS-1$ Control button = getButton(IDialogConstants.OK_ID); if (button != null) { if (button.isEnabled()) button.setEnabled(msg == null); } } } @Override protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { namespace = namespaceText.getText(); } else { namespace = null; } super.buttonPressed(buttonId); } public String getPrefix() { return getValue(); } public String getNamespace() { return namespace; } }