1 /*******************************************************************************
\r
2 * Copyright (c) 2006 Sybase, Inc. and others.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * Sybase, Inc. - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.eclipse.jst.pagedesigner.meta;
\r
14 import org.eclipse.core.resources.IProject;
\r
15 import org.eclipse.jst.pagedesigner.PDPlugin;
\r
16 import org.eclipse.jst.pagedesigner.utils.StructuredModelUtil;
\r
17 import org.eclipse.swt.graphics.Image;
\r
18 import org.eclipse.swt.widgets.Shell;
\r
19 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
\r
20 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
\r
21 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
\r
28 public class BindingHandlerDelegate implements IBindingHandler {
\r
29 private static final String BINDING_DISABLED_IMAGE_FILE = "PD_Binding_disabled.gif"; //$NON-NLS-1$
\r
30 private static final String BINDING_IMAGE_FILE = "PD_Binding.gif"; //$NON-NLS-1$
\r
35 * @see org.eclipse.jst.pagedesigner.meta.IBindingHandler#handleBinding(org.eclipse.swt.widgets.Shell,
\r
36 * org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode,
\r
37 * org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement,
\r
40 public String handleBinding(Shell shell, IDOMNode ancester,
\r
41 IDOMElement element, String currentValue) {
\r
42 IBindingHandler handler = getDelegatedHandler(ancester, element);
\r
43 if (handler != null) {
\r
45 .handleBinding(shell, ancester, element, currentValue);
\r
53 * @see org.eclipse.jst.pagedesigner.meta.IBindingHandler#isEnabled(org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode,
\r
54 * org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement)
\r
56 // public boolean isEnabled(IDOMNode ancester, IDOMElement element)
\r
58 // IBindingHandler handler = getDelegatedHandler(ancester, element);
\r
59 // return (handler == null) ? false : handler.isEnabled(ancester, element);
\r
64 * @see org.eclipse.jst.pagedesigner.meta.IBindingHandler#isEnabled(org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode,
\r
65 * org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement,
\r
66 * java.lang.String, java.lang.String,
\r
67 * org.eclipse.jst.pagedesigner.meta.IAttributeDescriptor)
\r
69 public boolean isEnabled(IDOMNode ancester, IDOMElement element,
\r
70 String uri, String tagName, IAttributeDescriptor attr) {
\r
71 IBindingHandler handler = getDelegatedHandler(ancester, element);
\r
72 return (handler == null) ? false : handler.isEnabled(ancester, element,
\r
73 uri, tagName, attr);
\r
76 // public boolean isEnabled(IDOMNode ancester, IDOMElement element,
\r
77 // IPropertyPageDescriptor attr) {
\r
78 // IBindingHandler handler = getDelegatedHandler(ancester, element);
\r
79 // return (handler == null) ? false : handler.isEnabled(ancester, element,
\r
87 * @see org.eclipse.jst.pagedesigner.meta.IBindingHandler#getImage()
\r
89 public Image getImage() {
\r
90 return PDPlugin.getDefault().getImage(BINDING_IMAGE_FILE);
\r
93 public Image getDisabledImage() {
\r
94 return PDPlugin.getDefault().getImage(BINDING_DISABLED_IMAGE_FILE);
\r
97 private IBindingHandler getDelegatedHandler(IDOMNode ancester,
\r
98 IDOMElement element) {
\r
99 IProject project = getProject(ancester, element);
\r
100 if (project != null) {
\r
101 Object obj = project.getAdapter(IBindingHandler.class);
\r
102 if (obj instanceof IBindingHandler) {
\r
103 return (IBindingHandler) obj;
\r
110 private IProject getProject(IDOMNode ancester, IDOMElement element) {
\r
111 IDOMModel model = getModel(ancester, element);
\r
112 if (model != null) {
\r
113 return StructuredModelUtil.getProjectFor(model);
\r
118 private IDOMModel getModel(IDOMNode ancester, IDOMElement element) {
\r
119 if (ancester != null) {
\r
120 return ancester.getModel();
\r
121 } else if (element != null) {
\r
122 return element.getModel();
\r