blob: d69d66daf55b550161dd280b58d32445a64b81e4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2005 Sybase, Inc. 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:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.facesconfig.ui.dialog;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldBase;
import org.eclipse.jst.jsf.common.ui.internal.guiutils.SWTUtils;
import org.eclipse.jst.jsf.facesconfig.ui.EditorMessages;
import org.eclipse.jst.jsf.facesconfig.ui.IFacesConfigConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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;
/**
* This dialog is used to edit managed bean's property. if the
* bDefinitionEditable is true, the property's name, class type, and initial
* value can be edit and changed. otherwise, only initial value can be changed.
*
* @author Xiao-guang Zhang, sfshi
*/
public class EditValueDialog extends Dialog {
/** default dialog width and height */
private static final int VALUE_WIDTH = 380;
private static final int VALUE_HEIGHT = 220;
private String value;
/** property's initla value text control */
private Text valueText;
private Button nullValueTypeButton;
private boolean isNullButtonShown;
private boolean isNullValue;
/**
* Equivilent to EditValueDialog(parentShell, false, false, value)
*
* @param parentShell
* @param value
*/
public EditValueDialog(Shell parentShell, String value) {
this(parentShell, false, false, value);
this.value = value;
this.isNullButtonShown = false;
}
/**
* @param parentShell
* @param isNullButtonShown
* @param isNullValue
* @param value
*/
public EditValueDialog(Shell parentShell, boolean isNullButtonShown,
boolean isNullValue, String value) {
super(parentShell);
this.isNullValue = isNullValue;
this.value = value;
this.isNullButtonShown = isNullButtonShown;
}
/*
* (non-Javadoc)
*
* @see Dialog#createDialogArea(Composite)
*/
protected Control createDialogArea(Composite parent) {
GridLayout gridLayout;
Composite container = (Composite) super.createDialogArea(parent);
gridLayout = new GridLayout();
gridLayout.numColumns = 1;
gridLayout.marginHeight = 10;
gridLayout.marginWidth = 10;
container.setLayout(gridLayout);
GridData gd = new GridData(GridData.FILL_BOTH);
container.setLayoutData(gd);
if (this.isNullButtonShown) {
nullValueTypeButton = SWTUtils.createCheckBox(container,
IFacesConfigConstants.NULL_VALUE, 2);
nullValueTypeButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
valueText.setEnabled(!nullValueTypeButton.getSelection());
isNullValue = nullValueTypeButton.getSelection();
}
});
}
DialogField valueTitle = new DialogFieldBase();
// ManagedBeansPage.ManagedBeanInitializationSection.MapTable.Title =
// Values:
valueTitle
.setLabelText(EditorMessages.ManagedBeanPropertyEditDialog_Value);
valueTitle.doFillIntoGrid(null, container, 1);
gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = VALUE_WIDTH;
gd.heightHint = VALUE_HEIGHT;
valueText = new Text(container, SWT.MULTI | SWT.BORDER);
valueText.setLayoutData(gd);
initFields();
return container;
}
private void initFields() {
if (isNullButtonShown && isNullValue) {
nullValueTypeButton.setSelection(true);
valueText.setEnabled(false);
} else if (value != null) {
valueText.setText(value);
}
}
/**
* create a inital value group
*
* @param container -
* parent composite control
*/
protected void createValueSection(Composite container) {
Composite valueSection = new Composite(container, SWT.NONE);
GridLayout gl = new GridLayout();
// gl.marginHeight = 20;
gl.numColumns = 2;
valueSection.setLayout(gl);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
valueSection.setLayoutData(gd);
Label lblValue = new Label(valueSection, SWT.LEFT);
gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gd.widthHint = 100;
lblValue.setLayoutData(gd);
// ManagedBeanPropertyEditDialog.Value = Value:
lblValue
.setText(EditorMessages.ManagedBeanPropertyEditDialog_Value);
gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL
| GridData.FILL_HORIZONTAL);
gd.widthHint = 200;
valueText = new Text(valueSection, SWT.BORDER);
valueText.setLayoutData(gd);
}
/*
* (non-Javadoc)
*
* @see Dialog#createButtonsForButtonBar(Composite)
*/
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
true);
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, false);
}
/*
* (non-Javadoc)
*
* @see Dialog#configureShell(Shell)
*/
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(EditorMessages.ValueEditDialog_Title);
}
/*
* (non-Javadoc)
*
* @see Dialog#buttonPressed(int)
*/
protected void buttonPressed(int buttonId) {
if (buttonId == IDialogConstants.CANCEL_ID) {
setReturnCode(CANCEL);
close();
return;
} else if (buttonId == IDialogConstants.OK_ID) {
value = valueText.getText();
setReturnCode(OK);
close();
return;
}
super.buttonPressed(buttonId);
}
/**
* @return the result data
*/
public Object getResultData() {
return value;
}
/**
* @return tru if isNullButtonShown and isNullValue are both true
*/
public boolean isNullValue() {
return this.isNullButtonShown && isNullValue;
}
}