| /******************************************************************************* |
| * 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.core.resources.IProject; |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.ClassButtonDialogField; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.IStringButtonAdapter; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.LayoutUtil; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringButtonDialogField; |
| import org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField; |
| import org.eclipse.jst.jsf.facesconfig.ui.EditorMessages; |
| import org.eclipse.jst.jsf.facesconfig.ui.EditorPlugin; |
| import org.eclipse.jst.jsf.facesconfig.ui.IFacesConfigConstants; |
| import org.eclipse.jst.jsf.facesconfig.ui.page.IFacesConfigPage; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.graphics.Point; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.swt.widgets.TabFolder; |
| import org.eclipse.swt.widgets.TabItem; |
| |
| /** |
| * @author Bryan Yang |
| * |
| */ |
| public class AddEditRendererDialog extends Dialog { |
| |
| private static final int MIN_DIALOG_WIDTH = 300; |
| |
| private StringDialogField rendererNameField; |
| |
| private ClassButtonDialogField rendererClassField; |
| |
| private StringButtonDialogField componentFamilyField; |
| |
| private StringDialogField renderTypeField; |
| |
| private IProject project; |
| |
| private String rendererName; |
| |
| private String rendererClass; |
| |
| private String componentFamily; |
| |
| private String rendererType; |
| |
| private boolean isNew; |
| |
| private IFacesConfigPage page; |
| |
| /** |
| * @param parentShell |
| * @param page |
| * @param isNew |
| */ |
| public AddEditRendererDialog(Shell parentShell, IFacesConfigPage page, |
| boolean isNew) { |
| super(parentShell); |
| this.page = page; |
| this.isNew = isNew; |
| } |
| |
| /** |
| * |
| * @param parentShell |
| * @param rendererName |
| * @param rendererClass |
| * @param componentFamily |
| * @param renderType |
| */ |
| public AddEditRendererDialog(Shell parentShell, String rendererName, |
| String rendererClass, String componentFamily, String renderType) { |
| super(parentShell); |
| this.rendererName = rendererName; |
| this.rendererClass = rendererClass; |
| this.componentFamily = componentFamily; |
| this.rendererType = renderType; |
| 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) |
| newShell.setText(EditorMessages.RendererSection_Dialog_Title_Add); |
| else |
| newShell.setText(EditorMessages.RendererSection_Dialog_Title_Edit); |
| } |
| |
| /* |
| * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) |
| */ |
| protected Control createDialogArea(Composite parent) { |
| Composite container = new Composite(parent, SWT.FILL); |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = 2; |
| layout.marginWidth = layout.marginHeight = 5; |
| container.setLayout(layout); |
| GridData gd = new GridData(GridData.FILL_BOTH); |
| container.setLayoutData(gd); |
| |
| TabFolder tabFolder = new TabFolder(container, SWT.FILL); |
| tabFolder.setLayoutData(gd); |
| TabItem generalTabItem = new TabItem(tabFolder, SWT.NONE); |
| generalTabItem |
| .setText(EditorMessages.RendererSection_Dialog_Tab_General); |
| Control control = createGeneralTabControl(generalTabItem.getParent()); |
| generalTabItem.setControl(control); |
| return container; |
| } |
| |
| /** |
| * @param parent |
| * @return |
| */ |
| private Control createGeneralTabControl(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NONE); |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = 5; |
| composite.setLayout(layout); |
| GridData gd = new GridData(GridData.FILL_BOTH); |
| composite.setLayoutData(gd); |
| composite.setFont(parent.getFont()); |
| |
| rendererNameField = new StringDialogField(); |
| rendererNameField |
| .setLabelText(EditorMessages.RendererSection_Dialog_DisplayName); |
| |
| rendererClassField = new ClassButtonDialogField(getProject()); |
| // rendererClassField.setRequired(true); |
| rendererClassField |
| .setLabelText(EditorMessages.RendererSection_Dialog_RendererClass);//$NON-NLS-1$ |
| rendererClassField.setProject(getProject()); |
| rendererClassField.setSuperClassName(IFacesConfigConstants.RENDERER_SUPER_CLASS); |
| rendererClassField.setAutoOpenResource(false); |
| |
| componentFamilyField = new StringButtonDialogField( |
| new IStringButtonAdapter() { |
| public void changeControlPressed(DialogField field) { |
| Shell shell = EditorPlugin.getActiveShell(); |
| ComponentListDialog dialog = new ComponentListDialog( |
| shell, |
| page, |
| page.getInput(), |
| EditorMessages.RendererSection_Dialog_ComponentFamilyCaption, |
| EditorMessages.RendererSection_Dialog_ComponentFamilyLabel); |
| if (dialog.open() == Dialog.OK) { |
| componentFamilyField.setText(dialog.getValue()); |
| } |
| } |
| }); |
| componentFamilyField |
| .setLabelText(EditorMessages.RendererSection_Dialog_ComponentFamilyValue); |
| // componentFamilyField.setRequired(true); |
| |
| renderTypeField = new StringDialogField(); |
| // renderTypeField.setRequired(true); |
| renderTypeField |
| .setLabelText(EditorMessages.RendererSection_Dialog_TypeValue); |
| |
| GridData data = new GridData(GridData.FILL_BOTH); |
| composite.setLayoutData(data); |
| |
| int numberOfColumns = 4; |
| GridLayout gl = new GridLayout(numberOfColumns, false); |
| composite.setLayout(gl); |
| |
| rendererNameField.doFillIntoGrid(null, composite, numberOfColumns); |
| |
| componentFamilyField.doFillIntoGrid(null, composite, numberOfColumns); |
| |
| renderTypeField.doFillIntoGrid(null, composite, numberOfColumns); |
| |
| rendererClassField.doFillIntoGrid(null, composite, numberOfColumns); |
| |
| LayoutUtil.setHorizontalGrabbing(rendererClassField.getTextControl( |
| null, composite)); |
| |
| // set the initial value for these fields. |
| rendererNameField.setText(rendererName); |
| rendererClassField.setText(rendererClass); |
| componentFamilyField.setText(componentFamily); |
| renderTypeField.setText(rendererType); |
| |
| return composite; |
| } |
| |
| /* |
| * @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); |
| } |
| |
| /** |
| * @return the associated project |
| */ |
| public IProject getProject() { |
| return project; |
| } |
| |
| /** |
| * |
| */ |
| protected void okPressed() { |
| rendererName = rendererNameField.getText(); |
| rendererClass = rendererClassField.getText(); |
| componentFamily = componentFamilyField.getText(); |
| rendererType = renderTypeField.getText(); |
| |
| super.okPressed(); |
| } |
| |
| /** |
| * @return the renderer clas |
| */ |
| public String getRendererClass() { |
| return rendererClass; |
| } |
| |
| /** |
| * @param rendererClass |
| */ |
| public void setRendererClass(String rendererClass) { |
| this.rendererClass = rendererClass; |
| } |
| |
| /** |
| * @return the renderer name |
| */ |
| public String getRendererName() { |
| return rendererName; |
| } |
| |
| /** |
| * @param rendererName |
| */ |
| public void setRendererName(String rendererName) { |
| this.rendererName = rendererName; |
| } |
| |
| /** |
| * @return the component family |
| */ |
| public String getComponentFamily() { |
| return componentFamily; |
| } |
| |
| /** |
| * @param componentFamily |
| */ |
| public void setComponentFamily(String componentFamily) { |
| this.componentFamily = componentFamily; |
| } |
| |
| /** |
| * @return the renderer type |
| */ |
| public String getRendererType() { |
| return rendererType; |
| } |
| |
| /** |
| * @param rendererType |
| */ |
| public void setRendererType(String rendererType) { |
| this.rendererType = rendererType; |
| } |
| |
| /** |
| * @param project |
| */ |
| public void setProject(IProject project) { |
| this.project = project; |
| } |
| |
| } |