blob: 60b65af75260627a8c2ecb0f9d2d13541a9b08ad [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2012 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0, which accompanies this distribution
* and is available at https://www.eclipse.org/legal/epl-2.0/.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.ui.internal.widgets;
import java.util.Collection;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel;
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class NewNameDialog
extends ValidatingDialog<NewNameStateObject>
{
private String description;
private Image descriptionImage;
private String descriptionTitle;
private String labelText;
private String name;
private Collection<String> names;
NewNameDialog(
Shell parentShell,
String dialogTitle,
String descriptionTitle,
Image descriptionImage,
String description,
String labelText,
String name,
Collection<String> names,
ResourceManager resourceManager) {
super(parentShell, resourceManager, dialogTitle);
this.name = name;
this.names = names;
this.labelText = labelText;
this.description = description;
this.descriptionImage = descriptionImage;
this.descriptionTitle = descriptionTitle;
}
@Override
protected DialogPane<NewNameStateObject> buildLayout(Composite container) {
return new NewNameDialogPane(this.labelText, this.getSubjectHolder(), container, this.resourceManager);
}
@Override
protected NewNameStateObject buildStateObject() {
return new NewNameStateObject(this.name, this.names);
}
@Override
public void create() {
super.create();
this.getPane().selectAll();
this.getButton(OK).setEnabled(false);
}
@Override
protected NewNameDialogPane getPane() {
return (NewNameDialogPane) super.getPane();
}
@Override
protected String getDescription() {
return this.description;
}
@Override
protected Image getDescriptionImage() {
return this.descriptionImage;
}
@Override
protected String getDescriptionTitle() {
return this.descriptionTitle;
}
/**
* Return the text field's input, which is the new name the user entered.
*/
public String getName() {
return this.getSubject().getName();
}
static class NewNameDialogPane
extends DialogPane<NewNameStateObject>
{
private final String labelText;
private Text text;
NewNameDialogPane(
String labelText,
PropertyValueModel<NewNameStateObject> subjectModel,
Composite parentComposite,
ResourceManager resourceManager) {
super(subjectModel, parentComposite, resourceManager);
this.labelText = labelText;
}
@Override
protected Composite addComposite(Composite container) {
return this.addSubPane(container, 2, 0, 0, 0, 0);
}
@Override
protected void initializeLayout(Composite container) {
this.addLabel(container, this.labelText);
this.text = this.addText(container, this.buildNameModel());
}
private ModifiablePropertyValueModel<String> buildNameModel() {
return new PropertyAspectAdapter<NewNameStateObject, String>(getSubjectHolder(), NewNameStateObject.NAME_PROPERTY) {
@Override
protected String buildValue_() {
return this.subject.getName();
}
@Override
protected void setValue_(String value) {
this.subject.setName(value);
}
};
}
void selectAll() {
this.text.selectAll();
}
}
}