blob: c50e9362fc16092777f23f3b45b09448e1a81617 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2006 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.jst.jsf.common.ui.internal.dialogfield.LayoutUtil;
import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField;
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.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.Shell;
/**
* The dialog is for adding and editing map-entry.
*
* @author sfshi
*
*/
public class AddEditMapEntryDialog extends Dialog {
private static final int MIN_DIALOG_WIDTH = 300;
private static final int VALUE_DEFAULT_LINENUMS = 10;
private boolean isNew;
private StringDialogField keyField;
private Button nullValueTypeButton;
private StringDialogField valueField;
private String key;
private String value;
private boolean isNullValue;
/**
* @param parentShell
* @param isNew
*/
public AddEditMapEntryDialog(Shell parentShell, boolean isNew) {
super(parentShell);
this.isNew = isNew;
}
/**
*
* @param parentShell
* @param attributeName
* @param attributeClass
* @param defaultValue
* @param suggestedValue
*/
public AddEditMapEntryDialog(Shell parentShell, String attributeName,
String attributeClass, String defaultValue, String suggestedValue) {
super(parentShell);
this.isNew = false;
}
/*
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
if (isNew)
// TODO change it to "add"
newShell.setText(EditorMessages.MapEntryEditPage_Title);
else
newShell.setText(EditorMessages.MapEntryEditPage_Title);
}
/*
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
Composite container = new Composite(parent, SWT.FILL);
GridData gd = new GridData(GridData.FILL_BOTH);
container.setLayoutData(gd);
GridLayout gl = new GridLayout();
gl.verticalSpacing = 0;
gl.numColumns = 1;
container.setLayout(gl);
layoutKeySection(container);
layoutValueSection(container);
if (!isNew) {
initFields();
}
return container;
}
private void initFields() {
keyField.setText(key);
if (this.isNullValue) {
nullValueTypeButton.setSelection(true);
valueField.setText("");
valueField.setEnabled(false);
} else {
nullValueTypeButton.setSelection(false);
valueField.setEnabled(true);
valueField.setText(value);
}
}
/**
* @param parent
*/
public void layoutKeySection(Composite parent) {
keyField = new StringDialogField();
keyField.setLabelText(EditorMessages.MapEntryEditGroup_Key); //$NON-NLS-1$
Composite
keySection = SWTUtils.createComposite(parent, SWT.NONE);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
keySection.setLayoutData(gd);
int numberOfColumns = 3;
GridLayout gl = new GridLayout(numberOfColumns, false);
keySection.setLayout(gl);
keyField.doFillIntoGrid(null, keySection, numberOfColumns);
LayoutUtil.setGrabHorizontal(keyField.getTextControl(null, keySection),
true);
}
/**
* @param parent
*/
public void layoutValueSection(Composite parent) {
Composite valueSection = SWTUtils.createComposite(parent, SWT.NONE);
GridData gd = new GridData(GridData.FILL_BOTH);
valueSection.setLayoutData(gd);
int numberOfColumns = 3;
GridLayout gl = new GridLayout(numberOfColumns, false);
gl.verticalSpacing = 10;
gl.marginHeight = 10;
valueSection.setLayout(gl);
nullValueTypeButton = SWTUtils.createCheckBox(valueSection,
IFacesConfigConstants.NULL_VALUE, 2);
nullValueTypeButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
valueField.setEnabled(!nullValueTypeButton.getSelection());
}
});
valueField = new StringDialogField(VALUE_DEFAULT_LINENUMS);
valueField.setLabelText(EditorMessages.ValueEditGroup_Value); //$NON-NLS-1$
valueField.doFillIntoGrid(null, valueSection, numberOfColumns);
gd = (GridData) valueField.getLabelControl(null, valueSection)
.getLayoutData();
gd.verticalAlignment = gd.verticalAlignment | GridData.GRAB_VERTICAL;
LayoutUtil.setHorizontalGrabbing(valueField.getTextControl(null,
valueSection));
gd = (GridData) valueField.getTextControl(null, valueSection)
.getLayoutData();
gd.verticalAlignment = gd.verticalAlignment | GridData.FILL_VERTICAL;
}
/*
* @see org.eclipse.jface.window.Window#getInitialSize()
*/
protected Point getInitialSize() {
Point shellSize = super.getInitialSize();
return new Point(Math.max(
convertHorizontalDLUsToPixels(MIN_DIALOG_WIDTH), shellSize.x),
shellSize.y);
}
/**
*
*/
protected void okPressed() {
key = this.keyField.getText().trim();
value = this.valueField.getText().trim();
isNullValue = nullValueTypeButton.getSelection();
super.okPressed();
}
/**
* @return true if is null
*/
public boolean isNullValue() {
return isNullValue;
}
/**
* @param isNullValue
*/
public void setNullValue(boolean isNullValue) {
this.isNullValue = isNullValue;
}
/**
* @return the key
*/
public String getKey() {
return key;
}
/**
* @param key
*/
public void setKey(String key) {
this.key = key;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value
*/
public void setValue(String value) {
this.value = value;
}
}