| /******************************************************************************* |
| * 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.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(""); //$NON-NLS-1$ |
| 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); |
| 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, |
| EditorMessages.AddEditMapEntryDialog_NullValue, 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); |
| 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; |
| } |
| |
| } |