1 package org.rcfaces.core.internal.taglib;
2
3 import javax.faces.application.Application;
4 import javax.faces.component.UIComponent;
5 import org.rcfaces.core.internal.component.Properties;
6 import javax.el.ValueExpression;
7 import javax.faces.component.UIViewRoot;
8 import org.apache.commons.logging.Log;
9 import javax.servlet.jsp.tagext.Tag;
10 import org.apache.commons.logging.LogFactory;
11 import org.rcfaces.core.component.ToolFolderComponent;
12 import org.rcfaces.core.internal.tools.ListenersTools1_2;
13 import org.rcfaces.core.internal.tools.ListenersTools;
14 import javax.faces.context.FacesContext;
15
16 public class ToolFolderTag extends AbstractBasicTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(ToolFolderTag.class);
20
21 private ValueExpression initListeners;
22 private ValueExpression mouseOutListeners;
23 private ValueExpression mouseOverListeners;
24 private ValueExpression doubleClickListeners;
25 private ValueExpression verticalAlignment;
26 private ValueExpression borderType;
27 public String getComponentType() {
28 return ToolFolderComponent.COMPONENT_TYPE;
29 }
30
31 public final void setInitListener(ValueExpression initListeners) {
32 this.initListeners = initListeners;
33 }
34
35 public final void setMouseOutListener(ValueExpression mouseOutListeners) {
36 this.mouseOutListeners = mouseOutListeners;
37 }
38
39 public final void setMouseOverListener(ValueExpression mouseOverListeners) {
40 this.mouseOverListeners = mouseOverListeners;
41 }
42
43 public final void setDoubleClickListener(ValueExpression doubleClickListeners) {
44 this.doubleClickListeners = doubleClickListeners;
45 }
46
47 public final void setVerticalAlignment(ValueExpression verticalAlignment) {
48 this.verticalAlignment = verticalAlignment;
49 }
50
51 public final void setBorderType(ValueExpression borderType) {
52 this.borderType = borderType;
53 }
54
55 protected void setProperties(UIComponent uiComponent) {
56 if (LOG.isDebugEnabled()) {
57 if (ToolFolderComponent.COMPONENT_TYPE==getComponentType()) {
58 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
59 }
60 LOG.debug(" verticalAlignment='"+verticalAlignment+"'");
61 LOG.debug(" borderType='"+borderType+"'");
62 }
63 if ((uiComponent instanceof ToolFolderComponent)==false) {
64 if (uiComponent instanceof UIViewRoot) {
65 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
66 }
67 throw new IllegalStateException("Component specified by tag is not instanceof of 'ToolFolderComponent'.");
68 }
69
70 super.setProperties(uiComponent);
71
72 ToolFolderComponent component = (ToolFolderComponent) uiComponent;
73 FacesContext facesContext = getFacesContext();
74
75 if (initListeners != null) {
76 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.INIT_LISTENER_TYPE, initListeners);
77 }
78
79 if (mouseOutListeners != null) {
80 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.MOUSE_OUT_LISTENER_TYPE, mouseOutListeners);
81 }
82
83 if (mouseOverListeners != null) {
84 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.MOUSE_OVER_LISTENER_TYPE, mouseOverListeners);
85 }
86
87 if (doubleClickListeners != null) {
88 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.DOUBLE_CLICK_LISTENER_TYPE, doubleClickListeners);
89 }
90
91 if (verticalAlignment != null) {
92 if (verticalAlignment.isLiteralText()==false) {
93 component.setValueExpression(Properties.VERTICAL_ALIGNMENT, verticalAlignment);
94
95 } else {
96 component.setVerticalAlignment(verticalAlignment.getExpressionString());
97 }
98 }
99
100 if (borderType != null) {
101 if (borderType.isLiteralText()==false) {
102 component.setValueExpression(Properties.BORDER_TYPE, borderType);
103
104 } else {
105 component.setBorderType(borderType.getExpressionString());
106 }
107 }
108 }
109
110 public void release() {
111 initListeners = null;
112 mouseOutListeners = null;
113 mouseOverListeners = null;
114 doubleClickListeners = null;
115 verticalAlignment = null;
116 borderType = null;
117
118 super.release();
119 }
120
121 }