package org.csstudio.sds.ui.internal.layers;
import org.csstudio.sds.internal.model.Layer;
import org.csstudio.sds.internal.model.LayerSupport;
import org.eclipse.gef.commands.Command;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
public class RenameLayerAction extends AbstractLayerAction {
public RenameLayerAction() {
}
@Override
protected Command createCommand(Layer selectedLayer, LayerSupport layerSupport, IAction action) {
Command result = null;
if (layerSupport != null) {
InputDialog dialog = new InputDialog(Display.getCurrent().getActiveShell(),
"Rename",
"Please enter the new name for the selected layer:",
selectedLayer.getDescription(),
new IInputValidator() {
@Override
public String isValid(final String newText) {
if (newText.length() <= 0) {
return "Please provide at least one char for the layer name!";
}
return null;
}
});
if (Window.OK == dialog.open()) {
result = new RenameLayerCommand(layerSupport, selectedLayer, dialog.getValue());
}
}
return result;
}
@Override
protected void selectedLayerChanged(Layer layer, LayerSupport layerSupport, IAction action) {
action.setEnabled(layer != null);
}
}