Initialize
[sdk/ide/product.git] / org.eclipse.jst.pagedesigner / src / org / eclipse / jst / pagedesigner / meta / BindingHandlerDelegate.java
1 /*******************************************************************************\r
2  * Copyright (c) 2006 Sybase, Inc. and others.\r
3  *\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
8  *\r
9  * Contributors:\r
10  *     Sybase, Inc. - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.eclipse.jst.pagedesigner.meta;\r
13 \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
22 \r
23 /**\r
24  * @author mengbo\r
25  * @version 1.5\r
26  * @deprecated\r
27  */\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
31 \r
32         /*\r
33          * (non-Javadoc)\r
34          * \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
38          *      java.lang.String)\r
39          */\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
44                         return handler\r
45                                         .handleBinding(shell, ancester, element, currentValue);\r
46                 }\r
47         return null;\r
48         }\r
49 \r
50         /*\r
51          * (non-Javadoc)\r
52          * \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
55          */\r
56         // public boolean isEnabled(IDOMNode ancester, IDOMElement element)\r
57         // {\r
58         // IBindingHandler handler = getDelegatedHandler(ancester, element);\r
59         // return (handler == null) ? false : handler.isEnabled(ancester, element);\r
60         // }\r
61         /*\r
62          * (non-Javadoc)\r
63          * \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
68          */\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
74         }\r
75 \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
80 //                              attr);\r
81 //      }\r
82         \r
83         \r
84         /*\r
85          * (non-Javadoc)\r
86          * \r
87          * @see org.eclipse.jst.pagedesigner.meta.IBindingHandler#getImage()\r
88          */\r
89         public Image getImage() {\r
90                 return PDPlugin.getDefault().getImage(BINDING_IMAGE_FILE);\r
91         }\r
92 \r
93         public Image getDisabledImage() {\r
94                 return PDPlugin.getDefault().getImage(BINDING_DISABLED_IMAGE_FILE);\r
95         }\r
96 \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
104                         }\r
105                 }\r
106 \r
107                 return null;\r
108         }\r
109 \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
114                 }\r
115         return null;\r
116         }\r
117 \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
123                 } else {\r
124                         return null;\r
125                 }\r
126         }\r
127 \r
128 }\r