blob: ceb56c8192271f287839fb08eb2bee981c09bcd6 [file] [log] [blame]
/*
* Copyright (c) 2015 Eike Stepper (Berlin, Germany) 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.explorer.ui;
import org.eclipse.emf.cdo.common.util.CDORenameContext;
import org.eclipse.emf.cdo.explorer.ui.bundle.OM;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Point;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
/**
* @author Eike Stepper
*/
public class RenameDialog extends TitleAreaDialog
{
private final CDORenameContext renameContext;
private String name;
private Text nameText;
public RenameDialog(Shell parentShell, CDORenameContext renameContext)
{
super(parentShell);
this.renameContext = renameContext;
name = renameContext.getName();
setShellStyle(SWT.CLOSE | SWT.RESIZE | SWT.TITLE | SWT.APPLICATION_MODAL);
}
public String getName()
{
return name;
}
@Override
protected Control createDialogArea(Composite parent)
{
String title = "Rename " + renameContext.getType();
getShell().setText(title);
setTitle(title);
setTitleImage(OM.getImage("icons/wiz/rename.gif"));
setMessage("Enter the new " + getAttributeName() + " of the " + renameContext.getType().toLowerCase() + ".");
Composite area = (Composite)super.createDialogArea(parent);
Composite container = new Composite(area, SWT.NONE);
container.setLayoutData(new GridData(GridData.FILL_BOTH));
GridLayout containerGridLayout = new GridLayout(2, false);
containerGridLayout.marginWidth = 10;
containerGridLayout.marginHeight = 10;
container.setLayout(containerGridLayout);
Label oldLabel = new Label(container, SWT.NONE);
oldLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
oldLabel.setText("Current " + getAttributeName() + ":");
Text oldNameText = new Text(container, SWT.BORDER | SWT.READ_ONLY);
oldNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
oldNameText.setText(name);
Label newLabel = new Label(container, SWT.NONE);
newLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
newLabel.setText("New " + getAttributeName() + ":");
nameText = new Text(container, SWT.BORDER);
nameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
nameText.setText(name);
nameText.setFocus();
nameText.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
name = nameText.getText();
String error = renameContext.validateName(name);
setErrorMessage(error);
Button button = getButton(IDialogConstants.OK_ID);
if (button != null)
{
button.setEnabled(error == null);
}
}
});
int lastDot = name.lastIndexOf('.');
if (lastDot != -1)
{
nameText.setSelection(0, lastDot);
}
else
{
nameText.selectAll();
}
return area;
}
protected String getAttributeName()
{
return "name";
}
@Override
protected Point getInitialSize()
{
return new Point(450, 250);
}
}