/******************************************************************************* * Copyright (c) 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.pagedesigner.meta; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField; import org.eclipse.jst.pagedesigner.editors.properties.IPropertyPageDescriptor; import org.eclipse.jst.pagedesigner.meta.internal.CellEditorFactoryRegistry; import org.eclipse.jst.pagedesigner.ui.dialogfields.DialogFieldWrapper; import org.eclipse.swt.widgets.Composite; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; /** * @author mengbo * @version 1.5 */ public class DefaultEditorCreator extends EditorCreator { static IPropertyPageDescriptor _staticAttr; static IDOMElement _staticElement; //static IBindingHandler _staticHandler; static CellEditorHolder _staticHolder; /* * (non-Javadoc) * * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createCellEditor(org.eclipse.swt.widgets.Composite, * org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor, * org.w3c.dom.Element) */ public CellEditor createCellEditor(Composite parent, IPropertyPageDescriptor attr, IDOMElement element) { return CellEditorFactoryRegistry.getInstance().createCellEditor(parent, attr, element); } // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createDialogField(org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor) // */ // public DialogField createDialogField(IPropertyPageDescriptor attr) { // return CellEditorFactoryRegistry.getInstance().createDialogField(attr); // } /* * (non-Javadoc) * * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createCellEditorWithWrapper(org.eclipse.swt.widgets.Composite, * org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor, * org.w3c.dom.Element, * org.eclipse.jst.pagedesigner.meta.IBindingHandler, * org.eclipse.swt.graphics.Image) */ @SuppressWarnings("deprecation") public CellEditor createCellEditorWithWrapper(Composite parent, IPropertyPageDescriptor attr, final IDOMElement element, IBindingHandler handler1) { // final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler() // : handler1); // String uri = CMUtil.getElementNamespaceURI(element); // String tagName = element.getLocalName(); return createCellEditor(parent, attr, element); // // if (!handler.isEnabled(element, element, uri, tagName, attr)) { // // should not enabled, so directly return original cell editor // return createCellEditor(parent, attr, element); // } // try { // // since "createWrappedCellEditor()" and "getBindingImage()" is // // called from the constructor of CellEditorWrapper, at that time, // // can't reference this DefaultEditorCreator and final fields yet, // // so use static variable for it. // _staticAttr = attr; // _staticElement = element; // _staticHandler = handler; // // return new CellEditorWrapper(parent) { // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#createWrappedCellEditor(org.eclipse.swt.widgets.Composite) // */ // protected CellEditor createWrappedCellEditor(Composite cell) { // return EditorCreator.getInstance().createCellEditor(cell, // _staticAttr, _staticElement); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#openDialogBox(org.eclipse.swt.widgets.Control) // */ // protected Object openDialogBox(Control cellEditorWindow) { // return handler.handleBinding(cellEditorWindow.getShell(), // element, element, convertToString(this.getValue())); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#getBindingImage() // */ // protected Image getBindingImage() { // return _staticHandler.getImage(); // } // }; // } finally { // _staticAttr = null; // _staticElement = null; // _staticHandler = null; // _staticHolder = null; // } } /* * (non-Javadoc) * * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createCellEditorWithWrapper(org.eclipse.swt.widgets.Composite, * org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor, * org.eclipse.jst.pagedesigner.meta.EditorCreator.CellEditorHolder, * org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement, * org.eclipse.jst.pagedesigner.meta.IBindingHandler) */ @SuppressWarnings("deprecation") public CellEditor createCellEditorWithWrapper(Composite parent, IPropertyPageDescriptor attr, CellEditorHolder holder, final IDOMElement element, IBindingHandler handler1) { // final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler() // : handler1); // String uri = CMUtil.getElementNamespaceURI(element); // String tagName = element.getLocalName(); return holder.createCellEditor(parent); // if (!handler.isEnabled(element, element, uri, tagName, attr)) { // // should not enabled, so directly return original cell editor // return holder.createCellEditor(parent); // } // try { // // since "createWrappedCellEditor()" and "getBindingImage()" is // // called from the constructor of CellEditorWrapper, at that time, // // can't reference this DefaultEditorCreator and final fields yet, // // so use static variable for it. // _staticElement = element; // _staticHandler = handler; // _staticHolder = holder; // // return new CellEditorWrapper(parent) { // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#createWrappedCellEditor(org.eclipse.swt.widgets.Composite) // */ // protected CellEditor createWrappedCellEditor(Composite cell) { // return _staticHolder.createCellEditor(cell); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#openDialogBox(org.eclipse.swt.widgets.Control) // */ // protected Object openDialogBox(Control cellEditorWindow) { // return handler.handleBinding(cellEditorWindow.getShell(), // element, element, convertToString(this.getValue())); // } // // /* // * (non-Javadoc) // * // * @see org.eclipse.jst.pagedesigner.properties.celleditors.CellEditorWrapper#getBindingImage() // */ // protected Image getBindingImage() { // return _staticHandler.getImage(); // } // }; // } finally { // _staticAttr = null; // _staticElement = null; // _staticHandler = null; // _staticHolder = null; // } } /* * (non-Javadoc) * * @see org.eclipse.jst.pagedesigner.meta.EditorCreator#createDialogFieldWithWrapper(java.lang.String, * java.lang.String, * org.eclipse.jst.pagedesigner.meta.IPropertyPageDescriptor, * org.eclipse.jst.pagedesigner.meta.IBindingHandler) */ @SuppressWarnings("deprecation") public DialogField createDialogFieldWithWrapper(String uri, String tagName, IPropertyPageDescriptor attr, IBindingHandler handler1) { final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler() : handler1); DialogField field = createDialogField(attr); // if (field instanceof StringButtonDialogField) // { // ((StringButtonDialogField) field).setButtonLabel("..."); // } DialogFieldWrapper wrapper = new DialogFieldWrapper(field, handler .getImage(), handler.getDisabledImage(), uri, tagName, attr, handler); wrapper.setDatabindingEnabled(true); return wrapper; } // private String convertToString(Object value) { // if (value == null) { // return null; // } // return value.toString(); // } @SuppressWarnings("deprecation") @Override public DialogField createDialogFieldWithWrapper( IPropertyPageDescriptor attr, IBindingHandler handler1) { final IBindingHandler handler = (handler1 == null ? getSystemDefaultBindingHandler() : handler1); DialogField field = createDialogField(attr); // if (field instanceof StringButtonDialogField) // { // ((StringButtonDialogField) field).setButtonLabel("..."); // } DialogFieldWrapper wrapper = new DialogFieldWrapper(field, handler .getImage(), handler.getDisabledImage(), attr.getUri(), attr.getTagName(), attr, handler); wrapper.setDatabindingEnabled(true); return wrapper; } @Override public DialogField createDialogField(IPropertyPageDescriptor attr) { return CellEditorFactoryRegistry.getInstance().createDialogField(attr); } }