/******************************************************************************* * Copyright (c) 2005, 2012 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.bpel.ui.util; import org.eclipse.bpel.ui.Messages; import org.eclipse.bpel.ui.adapters.ILabeledElement; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.tools.CellEditorLocator; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.jface.dialogs.IInputValidator; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Text; /** * Adds an input validator to the direct edit manager. */ public class BPELDirectEditManager extends DirectEditManager { /** Validates user input. Provided by ctor. */ private IInputValidator validator; public BPELDirectEditManager(GraphicalEditPart source, Class editorType, CellEditorLocator locator, IInputValidator validator) { super(source, editorType, locator); this.validator = validator; } @Override protected void commit() { if (validator != null) { Text text = (Text) getCellEditor().getControl(); String newValue = text.getText(); String validationMessage = validator.isValid(newValue); if (validationMessage != null) { MessageBox dialog = new MessageBox(text.getShell(), SWT.ICON_ERROR | SWT.OK); String message = Messages.BPELEditManager_RenameError; dialog.setText(message); message = NLS.bind(Messages.BPELEditManager_RenameErrorMessage, (new Object[] {message, validationMessage})); dialog.setMessage(message); dialog.open(); bringDown(); return; } } super.commit(); } @Override protected void initCellEditor() { getEditPart().getFigure().validate(); Object model = getEditPart().getModel(); ILabeledElement labeledElement = BPELUtil.adapt(model, ILabeledElement.class); String initialLabelText = labeledElement.getLabel(model); getCellEditor().setValue(initialLabelText); Text text = (Text) getCellEditor().getControl(); text.selectAll(); } }