blob: 80956ee189799540803dce98f9762f27f86106f0 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.gef.commands;
import org.eclipse.epf.authoring.gef.edit.NamedNodeEditPart;
import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
import org.eclipse.epf.authoring.ui.AuthoringUIResources;
import org.eclipse.epf.common.ui.util.MsgDialog;
import org.eclipse.epf.common.utils.StrUtil;
import org.eclipse.epf.diagram.model.NamedNode;
import org.eclipse.gef.commands.Command;
import org.eclipse.swt.widgets.Display;
/**
* @author Phong Nguyen Le
* @since 1.0
*/
public class ChangeNameCommand extends Command {
private NamedNode element;
private String newName, oldName;
private static final String LABEL = AuthoringUIResources.gef_changeNameCommand_label;
private static final String UNDO_MESSAGE = AuthoringUIResources.gef_changeNameCommand_undoMessage;
public ChangeNameCommand(NamedNode elem, String newName) {
super(LABEL);
element = elem;
oldName = elem.getName();
this.newName = newName.trim();
}
public boolean canExecute() {
return element != null;
}
public void execute() {
element.setName(newName);
}
public void undo() {
if (!StrUtil.isBlank(oldName)) {
element.setName(oldName);
} else {
Display.getCurrent().asyncExec(new PromptEdit(null, UNDO_MESSAGE));
}
}
static class PromptEdit implements Runnable {
private String msg;
PromptEdit(NamedNodeEditPart part, String msg) {
this.msg = msg;
}
/**
* @see java.lang.Runnable#run()
*/
public void run() {
String title = AuthoringUIResources.warningDialog_title;
MsgDialog dialog = AuthoringUIPlugin.getDefault().getMsgDialog();
dialog.displayError(title, msg, ""); //$NON-NLS-1$
}
}
}