Commit 7c2d851ad077a468106e2d2dd486d6bcc6cc8a78
1 parent
b08cfa90
JavaScript updates and some more cosmetics.
Showing
11 changed files
with
387 additions
and
130 deletions
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 | <superclass>org.richfaces.component.UINotify</superclass> |
14 | 14 | <description> |
15 | 15 | <![CDATA[ |
16 | - ]]> | |
16 | + ]]> | |
17 | 17 | </description> |
18 | 18 | <renderer generate="false" override="true"> |
19 | 19 | <name>org.richfaces.NotifyRenderer</name> |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 | <superclassname>org.ajax4jsf.tests.AbstractJspTestCase</superclassname> |
32 | 32 | </test> |
33 | 33 | --> |
34 | - | |
34 | + | |
35 | 35 | </tag> |
36 | 36 | &ui_component_attributes; |
37 | 37 | &ajax_output_attributes; |
... | ... | @@ -50,8 +50,8 @@ |
50 | 50 | </description> |
51 | 51 | <defaultvalue>""</defaultvalue> |
52 | 52 | </property> |
53 | - | |
54 | - | |
53 | + | |
54 | + | |
55 | 55 | <property> |
56 | 56 | <name>styleClass</name> |
57 | 57 | <classname>java.lang.String</classname> | ... | ... |
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 | <superclass>org.richfaces.component.UINotifyMessages</superclass> |
14 | 14 | <description> |
15 | 15 | <![CDATA[ |
16 | - ]]> | |
16 | + ]]> | |
17 | 17 | </description> |
18 | 18 | <renderer generate="false" override="true"> |
19 | 19 | <name>org.richfaces.NotifyMessagesRenderer</name> |
... | ... | @@ -31,7 +31,7 @@ |
31 | 31 | <superclassname>org.ajax4jsf.tests.AbstractJspTestCase</superclassname> |
32 | 32 | </test> |
33 | 33 | --> |
34 | - | |
34 | + | |
35 | 35 | </tag> |
36 | 36 | &ui_component_attributes; |
37 | 37 | &ajax_output_attributes; | ... | ... |
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | -<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" "http://labs.jboss.com/jbossrichfaces/component-config.dtd" > | |
2 | +<!DOCTYPE components PUBLIC "-//AJAX4JSF//CDK Generator config/EN" | |
3 | + "http://labs.jboss.com/jbossrichfaces/component-config.dtd" > | |
3 | 4 | <components> |
4 | 5 | <component> |
5 | 6 | <name>org.richfaces.NotifyStack</name> |
... | ... | @@ -8,7 +9,7 @@ |
8 | 9 | <superclass>org.richfaces.component.UINotifyStack</superclass> |
9 | 10 | <description> |
10 | 11 | <![CDATA[ |
11 | - ]]> | |
12 | + ]]> | |
12 | 13 | </description> |
13 | 14 | <renderer generate="false" override="false"> |
14 | 15 | <name>org.richfaces.NotifyStackRenderer</name> |
... | ... | @@ -26,7 +27,7 @@ |
26 | 27 | <superclassname>org.ajax4jsf.tests.AbstractJspTestCase</superclassname> |
27 | 28 | </test> |
28 | 29 | --> |
29 | - | |
30 | + | |
30 | 31 | </tag> |
31 | 32 | &ui_component_attributes; |
32 | 33 | <property> | ... | ... |
1 | +/* | |
2 | + * JBoss, Home of Professional Open Source | |
3 | + * Copyright , Red Hat, Inc. and individual contributors | |
4 | + * by the @authors tag. See the copyright.txt in the distribution for a | |
5 | + * full listing of individual contributors. | |
6 | + * | |
7 | + * This is free software; you can redistribute it and/or modify it | |
8 | + * under the terms of the GNU Lesser General Public License as | |
9 | + * published by the Free Software Foundation; either version 2.1 of | |
10 | + * the License, or (at your option) any later version. | |
11 | + * | |
12 | + * This software is distributed in the hope that it will be useful, | |
13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | + * Lesser General Public License for more details. | |
16 | + * | |
17 | + * You should have received a copy of the GNU Lesser General Public | |
18 | + * License along with this software; if not, write to the Free | |
19 | + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
20 | + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | |
21 | + */ | |
22 | + | |
1 | 23 | package org.richfaces.component; |
2 | 24 | |
25 | +import org.richfaces.cdk.annotations.Attribute; | |
26 | + | |
3 | 27 | public interface NotifyAttributes { |
4 | 28 | |
5 | - public abstract boolean isSticky(); | |
29 | + @Attribute | |
30 | + boolean isSticky(); | |
6 | 31 | |
7 | - public abstract void setSticky(boolean sticky); | |
32 | + void setSticky(boolean sticky); | |
8 | 33 | |
9 | - public abstract Integer getStayTime(); | |
34 | + @Attribute | |
35 | + Integer getStayTime(); | |
10 | 36 | |
11 | - public abstract void setStayTime(Integer time); | |
37 | + void setStayTime(Integer time); | |
12 | 38 | |
13 | - public abstract Integer getDelay(); | |
39 | + @Attribute | |
40 | + Integer getDelay(); | |
14 | 41 | |
15 | - public abstract void setDelay(Integer delay); | |
42 | + void setDelay(Integer delay); | |
16 | 43 | |
17 | - public abstract String getStyleClass(); | |
44 | + @Attribute | |
45 | + String getStyleClass(); | |
18 | 46 | |
19 | - public abstract void setStyleClass(String styleClass); | |
47 | + void setStyleClass(String styleClass); | |
20 | 48 | |
21 | - public abstract String getAppearAnimation(); | |
49 | + @Attribute | |
50 | + String getAppearAnimation(); | |
22 | 51 | |
23 | - public abstract void setAppearAnimation(String appearAnimation); | |
52 | + void setAppearAnimation(String appearAnimation); | |
24 | 53 | |
25 | - public abstract String getHideAnimation(); | |
54 | + @Attribute | |
55 | + String getHideAnimation(); | |
26 | 56 | |
27 | - public abstract void setHideAnimation(String hideAnimation); | |
57 | + void setHideAnimation(String hideAnimation); | |
28 | 58 | |
29 | - public abstract Integer getAnimationSpeed(); | |
59 | + @Attribute | |
60 | + Integer getAnimationSpeed(); | |
30 | 61 | |
31 | - public abstract void setAnimationSpeed(Integer animationSpeed); | |
62 | + void setAnimationSpeed(Integer animationSpeed); | |
32 | 63 | |
33 | - public abstract boolean isShowHistory(); | |
64 | + @Attribute | |
65 | + boolean isShowHistory(); | |
34 | 66 | |
35 | - public abstract void setShowHistory(boolean showHistory); | |
67 | + void setShowHistory(boolean showHistory); | |
36 | 68 | |
37 | - public abstract boolean isNonblocking(); | |
69 | + @Attribute | |
70 | + boolean isNonblocking(); | |
38 | 71 | |
39 | - public abstract void setNonblocking(boolean nonblocking); | |
72 | + void setNonblocking(boolean nonblocking); | |
40 | 73 | |
41 | - public abstract boolean isShowShadow(); | |
74 | + @Attribute | |
75 | + boolean isShowShadow(); | |
42 | 76 | |
43 | - public abstract void setShowShadow(boolean showShadow); | |
77 | + void setShowShadow(boolean showShadow); | |
44 | 78 | |
45 | - public abstract boolean isShowCloseButton(); | |
79 | + @Attribute(defaultValue = "true") | |
80 | + boolean isShowCloseButton(); | |
46 | 81 | |
47 | - public abstract void setShowCloseButton(boolean showCloseButton); | |
82 | + void setShowCloseButton(boolean showCloseButton); | |
48 | 83 | |
49 | - public abstract Double getNonblockingOpacity(); | |
84 | + @Attribute | |
85 | + Double getNonblockingOpacity(); | |
50 | 86 | |
51 | - public abstract void setNonblockingOpacity(Double nonblockingOpacity); | |
87 | + void setNonblockingOpacity(Double nonblockingOpacity); | |
52 | 88 | |
53 | - public abstract String getStack(); | |
89 | + @Attribute | |
90 | + String getStack(); | |
54 | 91 | |
55 | - public abstract void setStack(String stack); | |
92 | + void setStack(String stack); | |
56 | 93 | } | ... | ... |
... | ... | @@ -7,6 +7,8 @@ public abstract class UINotify extends UIComponentBase implements NotifyAttribut |
7 | 7 | public static final String COMPONENT_TYPE = "org.richfaces.Notify"; |
8 | 8 | public static final String COMPONENT_FAMILY = "org.richfaces.Notify"; |
9 | 9 | |
10 | + public static final double DEFAULT_NONBLOCKING_OPACITY = .2; | |
11 | + | |
10 | 12 | public abstract String getTitle(); |
11 | 13 | |
12 | 14 | public abstract void setTitle(String title); | ... | ... |
1 | 1 | package org.richfaces.component; |
2 | 2 | |
3 | -import javax.faces.component.UIMessages; | |
4 | 3 | import org.ajax4jsf.component.AjaxOutput; |
5 | 4 | |
5 | +import javax.faces.component.UIMessages; | |
6 | + | |
6 | 7 | public abstract class UINotifyMessages extends UIMessages implements AjaxOutput, NotifyAttributes { |
7 | 8 | |
8 | 9 | public static final String COMPONENT_TYPE = "org.richfaces.NotifyMessages"; | ... | ... |
1 | +/* | |
2 | + * JBoss, Home of Professional Open Source | |
3 | + * Copyright , Red Hat, Inc. and individual contributors | |
4 | + * by the @authors tag. See the copyright.txt in the distribution for a | |
5 | + * full listing of individual contributors. | |
6 | + * | |
7 | + * This is free software; you can redistribute it and/or modify it | |
8 | + * under the terms of the GNU Lesser General Public License as | |
9 | + * published by the Free Software Foundation; either version 2.1 of | |
10 | + * the License, or (at your option) any later version. | |
11 | + * | |
12 | + * This software is distributed in the hope that it will be useful, | |
13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | + * Lesser General Public License for more details. | |
16 | + * | |
17 | + * You should have received a copy of the GNU Lesser General Public | |
18 | + * License along with this software; if not, write to the Free | |
19 | + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
20 | + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | |
21 | + */ | |
22 | + | |
1 | 23 | package org.richfaces.renderkit.html; |
2 | 24 | |
25 | +import org.ajax4jsf.renderkit.RendererUtils; | |
26 | +import org.ajax4jsf.renderkit.RendererUtils.HTML; | |
27 | +import org.richfaces.component.UINotify; | |
28 | +import org.richfaces.component.UINotifyMessages; | |
29 | + | |
30 | +import javax.faces.application.FacesMessage; | |
3 | 31 | import javax.faces.component.UIComponent; |
4 | 32 | import javax.faces.context.FacesContext; |
33 | +import javax.faces.context.ResponseWriter; | |
5 | 34 | import java.io.IOException; |
6 | 35 | import java.util.Iterator; |
7 | -import javax.faces.application.FacesMessage; | |
8 | -import javax.faces.context.ResponseWriter; | |
9 | -import org.ajax4jsf.renderkit.RendererUtils.HTML; | |
10 | -import org.richfaces.component.UINotify; | |
11 | -import org.richfaces.component.UINotifyMessages; | |
12 | 36 | |
13 | 37 | public class NotifyMessagesRenderer extends NotifyRenderer { |
14 | 38 | |
... | ... | @@ -17,7 +41,7 @@ public class NotifyMessagesRenderer extends NotifyRenderer { |
17 | 41 | UINotifyMessages messagesComponent = (UINotifyMessages) component; |
18 | 42 | ResponseWriter writer = context.getResponseWriter(); |
19 | 43 | writer.startElement(HTML.DIV_ELEM, null); |
20 | - writer.writeAttribute(HTML.id_ATTRIBUTE, getUtils().clientId(context, component), "type"); | |
44 | + writer.writeAttribute(HTML.id_ATTRIBUTE, RendererUtils.getInstance().clientId(context, component), "type"); | |
21 | 45 | Integer delay = messagesComponent.getDelay(); |
22 | 46 | if (delay == null) { |
23 | 47 | delay = 0; |
... | ... | @@ -27,10 +51,12 @@ public class NotifyMessagesRenderer extends NotifyRenderer { |
27 | 51 | interval = 0; |
28 | 52 | } |
29 | 53 | |
30 | - Iterator<FacesMessage> messages = messagesComponent.isGlobalOnly() ? context.getMessages(null) : context.getMessages(); | |
54 | + Iterator<FacesMessage> messages = messagesComponent.isGlobalOnly() | |
55 | + ? context.getMessages(null) : context.getMessages(); | |
31 | 56 | while (messages.hasNext()) { |
32 | 57 | FacesMessage msg = messages.next(); |
33 | - UINotify notify = (UINotify) context.getApplication().createComponent(UINotify.COMPONENT_TYPE); | |
58 | + UINotify notify = (UINotify) context.getApplication() | |
59 | + .createComponent(UINotify.COMPONENT_TYPE); | |
34 | 60 | notify.setAnimationSpeed(messagesComponent.getAnimationSpeed()); |
35 | 61 | notify.setAppearAnimation(messagesComponent.getAppearAnimation()); |
36 | 62 | notify.setDelay(delay); |
... | ... | @@ -50,7 +76,7 @@ public class NotifyMessagesRenderer extends NotifyRenderer { |
50 | 76 | notify.setText(msg.getDetail()); |
51 | 77 | } |
52 | 78 | String styleClass = messagesComponent.getStyleClass(); |
53 | - if(styleClass == null) { | |
79 | + if (styleClass == null) { | |
54 | 80 | styleClass = ""; |
55 | 81 | } |
56 | 82 | if (FacesMessage.SEVERITY_INFO.equals(msg.getSeverity())) { | ... | ... |
1 | +/* | |
2 | + * JBoss, Home of Professional Open Source | |
3 | + * Copyright , Red Hat, Inc. and individual contributors | |
4 | + * by the @authors tag. See the copyright.txt in the distribution for a | |
5 | + * full listing of individual contributors. | |
6 | + * | |
7 | + * This is free software; you can redistribute it and/or modify it | |
8 | + * under the terms of the GNU Lesser General Public License as | |
9 | + * published by the Free Software Foundation; either version 2.1 of | |
10 | + * the License, or (at your option) any later version. | |
11 | + * | |
12 | + * This software is distributed in the hope that it will be useful, | |
13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | + * Lesser General Public License for more details. | |
16 | + * | |
17 | + * You should have received a copy of the GNU Lesser General Public | |
18 | + * License along with this software; if not, write to the Free | |
19 | + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
20 | + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | |
21 | + */ | |
22 | + | |
1 | 23 | package org.richfaces.renderkit.html; |
2 | 24 | |
3 | -import javax.faces.component.UIComponent; | |
4 | -import javax.faces.context.FacesContext; | |
5 | -import javax.faces.context.ResponseWriter; | |
6 | -import java.io.IOException; | |
7 | -import java.util.*; | |
8 | 25 | import org.ajax4jsf.javascript.JSFunction; |
9 | 26 | import org.ajax4jsf.renderkit.HeaderResourcesRendererBase; |
10 | 27 | import org.ajax4jsf.renderkit.RendererUtils.HTML; |
... | ... | @@ -12,24 +29,37 @@ import org.ajax4jsf.resource.InternetResource; |
12 | 29 | import org.richfaces.component.UINotify; |
13 | 30 | import org.richfaces.component.UINotifyStack; |
14 | 31 | |
32 | +import javax.faces.component.UIComponent; | |
33 | +import javax.faces.context.FacesContext; | |
34 | +import javax.faces.context.ResponseWriter; | |
35 | +import java.io.IOException; | |
36 | +import java.util.Collection; | |
37 | +import java.util.Collections; | |
38 | +import java.util.HashMap; | |
39 | +import java.util.Map; | |
40 | + | |
15 | 41 | public class NotifyRenderer extends HeaderResourcesRendererBase { |
16 | 42 | |
17 | - private static final Map<String, Object> defaults = new HashMap<String, Object>(); | |
43 | + private static final Map<String, Object> DEFAULTS; | |
18 | 44 | |
19 | - { | |
20 | - defaults.put("pnotify_addclass", ""); | |
21 | - defaults.put("pnotify_nonblock", false); | |
22 | - defaults.put("pnotify_nonblock_opacity", .2); | |
23 | - defaults.put("pnotify_history", true); | |
24 | - defaults.put("pnotify_animate_speed", "slow"); | |
25 | - defaults.put("pnotify_opacity", 1); | |
26 | - defaults.put("pnotify_shadow", false); | |
27 | - defaults.put("pnotify_closer", true); | |
28 | - defaults.put("pnotify_hide", true); | |
29 | - defaults.put("pnotify_delay", 8000); | |
45 | + static { | |
46 | + Map<String, Object> defaults = new HashMap<String, Object>(); | |
47 | + defaults.put("styleClass", ""); | |
48 | + defaults.put("nonblocking", false); | |
49 | + defaults.put("nonblockingOpacity", UINotify.DEFAULT_NONBLOCKING_OPACITY); | |
50 | + defaults.put("showHistory", true); | |
51 | + defaults.put("animationSpeed", "slow"); | |
52 | + defaults.put("opacity", 1); | |
53 | + defaults.put("showShadow", false); | |
54 | + defaults.put("showCloseButton", true); | |
55 | + defaults.put("appearAnimation", "fade"); | |
56 | + defaults.put("hideAnimation", "fade"); | |
57 | + defaults.put("sticky", false); | |
58 | + defaults.put("stayTime", 8000); | |
30 | 59 | defaults.put("delay", 0); |
31 | - | |
60 | + DEFAULTS = Collections.unmodifiableMap(defaults); | |
32 | 61 | } |
62 | + | |
33 | 63 | private final InternetResource[] scripts = { |
34 | 64 | getResource("/org/richfaces/renderkit/html/scripts/jquery-1.4.2.js"), |
35 | 65 | getResource("/org/richfaces/renderkit/html/scripts/jquery.pnotify.js"), |
... | ... | @@ -60,29 +90,29 @@ public class NotifyRenderer extends HeaderResourcesRendererBase { |
60 | 90 | * Include only attributes that are actually set. |
61 | 91 | */ |
62 | 92 | Map<String, Object> options = new HashMap<String, Object>(); |
63 | - addOptionIfSetAndNotDefault("pnotify_title", notify.getTitle(), options); | |
64 | - addOptionIfSetAndNotDefault("pnotify_text", notify.getText(), options); | |
65 | - addOptionIfSetAndNotDefault("pnotify_hide", !notify.isSticky(), options); | |
66 | - addOptionIfSetAndNotDefault("pnotify_delay", notify.getStayTime(), options); | |
93 | + addOptionIfSetAndNotDefault("title", notify.getTitle(), options); | |
94 | + addOptionIfSetAndNotDefault("text", notify.getText(), options); | |
95 | + addOptionIfSetAndNotDefault("sticky", notify.isSticky(), options); | |
96 | + addOptionIfSetAndNotDefault("stayTime", notify.getStayTime(), options); | |
67 | 97 | Map<String, Object> animationOptions = new HashMap<String, Object>(); |
68 | - addOptionIfSetAndNotDefault("effect_in", notify.getAppearAnimation(), animationOptions); | |
69 | - addOptionIfSetAndNotDefault("effect_out", notify.getHideAnimation(), animationOptions); | |
70 | - addOptionIfSetAndNotDefault("pnotify_animation", animationOptions, options); | |
71 | - addOptionIfSetAndNotDefault("pnotify_animate_speed", notify.getAnimationSpeed(), options); | |
72 | - addOptionIfSetAndNotDefault("pnotify_nonblock", notify.isNonblocking(), options); | |
73 | - addOptionIfSetAndNotDefault("pnotify_nonblock_opacity", notify.getNonblockingOpacity(), options); | |
74 | - addOptionIfSetAndNotDefault("pnotify_history", notify.isShowHistory(), options); | |
75 | - addOptionIfSetAndNotDefault("pnotify_shadow", notify.isShowShadow(), options); | |
76 | - addOptionIfSetAndNotDefault("pnotify_closer", notify.isShowCloseButton(), options); | |
98 | + addOptionIfSetAndNotDefault("appearAnimation", notify.getAppearAnimation(), animationOptions); | |
99 | + addOptionIfSetAndNotDefault("hideAnimation", notify.getHideAnimation(), animationOptions); | |
100 | + addOptionIfSetAndNotDefault("animation", animationOptions, options); | |
101 | + addOptionIfSetAndNotDefault("animationSpeed", notify.getAnimationSpeed(), options); | |
102 | + addOptionIfSetAndNotDefault("nonblocking", notify.isNonblocking(), options); | |
103 | + addOptionIfSetAndNotDefault("nonblockingOpacity", notify.getNonblockingOpacity(), options); | |
104 | + addOptionIfSetAndNotDefault("showHistory", notify.isShowHistory(), options); | |
105 | + addOptionIfSetAndNotDefault("showShadow", notify.isShowShadow(), options); | |
106 | + addOptionIfSetAndNotDefault("showCloseButton", notify.isShowCloseButton(), options); | |
77 | 107 | UINotifyStack stack = getStackComponent(context, notify); |
78 | 108 | if (stack != null) { |
79 | - addOptionIfSetAndNotDefault("pnotify_stack", getUtils().clientId(context, stack), options); | |
109 | + addOptionIfSetAndNotDefault("stack", getUtils().clientId(context, stack), options); | |
80 | 110 | } |
81 | 111 | String styleClass = notify.getStyleClass(); |
82 | 112 | if (styleClass == null) { |
83 | 113 | styleClass = ""; |
84 | 114 | } |
85 | - addOptionIfSetAndNotDefault("pnotify_addclass", getStackStyleClass(context, notify) + " " + styleClass, options); | |
115 | + addOptionIfSetAndNotDefault("styleClass", getStackStyleClass(context, notify) + " " + styleClass, options); | |
86 | 116 | addOptionIfSetAndNotDefault("delay", notify.getDelay(), options); |
87 | 117 | return options; |
88 | 118 | } |
... | ... | @@ -93,7 +123,10 @@ public class NotifyRenderer extends HeaderResourcesRendererBase { |
93 | 123 | } |
94 | 124 | |
95 | 125 | protected void addOptionIfSetAndNotDefault(String optionName, Object value, Map<String, Object> options) { |
96 | - if (value != null && value != "" && !value.equals(defaults.get(optionName))) { | |
126 | + if (value != null && !"".equals(value) | |
127 | + && !value.equals(DEFAULTS.get(optionName)) | |
128 | + && !(value instanceof Collection && ((Collection) value).size() == 0) | |
129 | + && !(value instanceof Map && ((Map) value).size() == 0)) { | |
97 | 130 | options.put(optionName, value); |
98 | 131 | } |
99 | 132 | } | ... | ... |
1 | +/* | |
2 | + * JBoss, Home of Professional Open Source | |
3 | + * Copyright , Red Hat, Inc. and individual contributors | |
4 | + * by the @authors tag. See the copyright.txt in the distribution for a | |
5 | + * full listing of individual contributors. | |
6 | + * | |
7 | + * This is free software; you can redistribute it and/or modify it | |
8 | + * under the terms of the GNU Lesser General Public License as | |
9 | + * published by the Free Software Foundation; either version 2.1 of | |
10 | + * the License, or (at your option) any later version. | |
11 | + * | |
12 | + * This software is distributed in the hope that it will be useful, | |
13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | + * Lesser General Public License for more details. | |
16 | + * | |
17 | + * You should have received a copy of the GNU Lesser General Public | |
18 | + * License along with this software; if not, write to the Free | |
19 | + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
20 | + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | |
21 | + */ | |
22 | + | |
1 | 23 | package org.richfaces.renderkit.html; |
2 | 24 | |
25 | +import org.ajax4jsf.javascript.JSFunction; | |
26 | +import org.ajax4jsf.renderkit.HeaderResourcesRendererBase; | |
27 | +import org.ajax4jsf.renderkit.RendererUtils; | |
28 | +import org.ajax4jsf.resource.InternetResource; | |
29 | +import org.richfaces.component.UINotifyStack; | |
3 | 30 | |
4 | 31 | import javax.faces.component.UIComponent; |
5 | 32 | import javax.faces.context.FacesContext; |
... | ... | @@ -7,11 +34,6 @@ import javax.faces.context.ResponseWriter; |
7 | 34 | import java.io.IOException; |
8 | 35 | import java.util.HashMap; |
9 | 36 | import java.util.Map; |
10 | -import org.ajax4jsf.javascript.JSFunction; | |
11 | -import org.ajax4jsf.renderkit.HeaderResourcesRendererBase; | |
12 | -import org.ajax4jsf.renderkit.RendererUtils.HTML; | |
13 | -import org.ajax4jsf.resource.InternetResource; | |
14 | -import org.richfaces.component.UINotifyStack; | |
15 | 37 | |
16 | 38 | public class NotifyStackRenderer extends HeaderResourcesRendererBase { |
17 | 39 | |
... | ... | @@ -25,12 +47,15 @@ public class NotifyStackRenderer extends HeaderResourcesRendererBase { |
25 | 47 | return; |
26 | 48 | } |
27 | 49 | ResponseWriter writer = context.getResponseWriter(); |
28 | - writer.startElement(HTML.SCRIPT_ELEM, null); | |
29 | - writer.writeText(new JSFunction("RichFaces.NotifyStack.register", getUtils().clientId(context, component), getOptions(context, (UINotifyStack) component)), null); | |
30 | - writer.endElement(HTML.SCRIPT_ELEM); | |
50 | + writer.startElement(RendererUtils.HTML.SCRIPT_ELEM, null); | |
51 | + writer.writeText(new JSFunction("RichFaces.NotifyStack.register", | |
52 | + RendererUtils.getInstance().clientId(context, component), | |
53 | + getOptions((UINotifyStack) component) | |
54 | + ), null); | |
55 | + writer.endElement(RendererUtils.HTML.SCRIPT_ELEM); | |
31 | 56 | } |
32 | 57 | |
33 | - protected Map<String, Object> getOptions(FacesContext context, UINotifyStack stack) throws IOException { | |
58 | + protected Map<String, Object> getOptions(UINotifyStack stack) throws IOException { | |
34 | 59 | /** |
35 | 60 | * Include only attributes that are actually set. |
36 | 61 | */ |
... | ... | @@ -42,7 +67,7 @@ public class NotifyStackRenderer extends HeaderResourcesRendererBase { |
42 | 67 | } |
43 | 68 | |
44 | 69 | protected void addOptionIfSet(String optionName, Object value, Map<String, Object> options) { |
45 | - if (value != null && value != "") { | |
70 | + if (value != null && !"".equals(value)) { | |
46 | 71 | options.put(optionName, value); |
47 | 72 | } |
48 | 73 | } | ... | ... |
1 | +/* | |
2 | + * JBoss, Home of Professional Open Source | |
3 | + * Copyright , Red Hat, Inc. and individual contributors | |
4 | + * by the @authors tag. See the copyright.txt in the distribution for a | |
5 | + * full listing of individual contributors. | |
6 | + * | |
7 | + * This is free software; you can redistribute it and/or modify it | |
8 | + * under the terms of the GNU Lesser General Public License as | |
9 | + * published by the Free Software Foundation; either version 2.1 of | |
10 | + * the License, or (at your option) any later version. | |
11 | + * | |
12 | + * This software is distributed in the hope that it will be useful, | |
13 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | + * Lesser General Public License for more details. | |
16 | + * | |
17 | + * You should have received a copy of the GNU Lesser General Public | |
18 | + * License along with this software; if not, write to the Free | |
19 | + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
20 | + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. | |
21 | + */ | |
22 | + | |
1 | 23 | window.RichFaces = window.RichFaces || {}; |
2 | -RichFaces.NotifyStack = (function(){ | |
24 | +RichFaces.NotifyStack = (function() { | |
3 | 25 | var stacks = {}; |
4 | 26 | return { |
5 | - register: function(id,stack) { | |
27 | + register: function(id, stack) { | |
6 | 28 | var existingStack = stacks[id]; |
7 | - if(existingStack != null) { | |
8 | - stack = jQuery.extend(existingStack,stack); | |
29 | + if (existingStack != null) { | |
30 | + stack = jQuery.extend(existingStack, stack); | |
9 | 31 | delete stack.addpos1; |
10 | 32 | delete stack.addpos2; |
11 | 33 | delete stack.animation; |
... | ... | @@ -14,13 +36,14 @@ RichFaces.NotifyStack = (function(){ |
14 | 36 | delete stack.nextpos1; |
15 | 37 | delete stack.nextpos2; |
16 | 38 | } |
39 | + stack.id = id; | |
17 | 40 | stacks[id] = stack; |
18 | 41 | }, |
19 | 42 | getStack: function(id) { |
20 | 43 | var stack = stacks[id]; |
21 | - if(stack == null) { | |
22 | - stack = {}; | |
23 | - stacks[id] = stack; | |
44 | + if (stack == null) { | |
45 | + stack = jQuery.extend({}, jQuery.pnotify.defaults.pnotify_stack); | |
46 | + this.register(id, stack); | |
24 | 47 | } |
25 | 48 | return stack; |
26 | 49 | } |
... | ... | @@ -28,16 +51,124 @@ RichFaces.NotifyStack = (function(){ |
28 | 51 | })(); |
29 | 52 | |
30 | 53 | RichFaces.Notify = function(options) { |
31 | - if(options!=null && typeof options.pnotify_stack == "string") { | |
32 | - options.pnotify_stack = RichFaces.NotifyStack.getStack(options.pnotify_stack); | |
54 | + /** | |
55 | + * Copies attributes from one objects to other object, but | |
56 | + * can change the name of target attributes. | |
57 | + */ | |
58 | + function extend(target, source, translation) { | |
59 | + for (var attr in source) { | |
60 | + var targetAttr = translation[attr] != null ? translation[attr] : attr; | |
61 | + target[targetAttr] = source[attr]; | |
62 | + if (attr != 'stack' && target[targetAttr] instanceof Object) { | |
63 | + target[targetAttr] = extend({}, target[targetAttr], translation); | |
64 | + } | |
65 | + } | |
66 | + return target; | |
67 | + } | |
68 | + | |
69 | + options = jQuery.extend({stack:'default'}, options); | |
70 | + if (options != null && typeof options.stack == "string") { | |
71 | + options.stack = RichFaces.NotifyStack.getStack(options.stack); | |
72 | + } | |
73 | + var delegateOptions = extend({}, options, { | |
74 | + 'title':'pnotify_title' , | |
75 | + 'text': 'pnotify_text', | |
76 | + 'styleClass': 'pnotify_addclass', | |
77 | + 'nonblocking': 'pnotify_nonblock', | |
78 | + 'nonblockingOpacity': 'pnotify_nonblock_opacity', | |
79 | + 'showHistory': 'pnotify_history', | |
80 | + 'animation': 'pnotify_animation', | |
81 | + 'appearAnimation': 'effect_in', | |
82 | + 'hideAnimation': 'effect_out', | |
83 | + 'animationSpeed': 'pnotify_animate_speed', | |
84 | + 'opacity': 'pnotify_opacity', | |
85 | + 'showShadow': 'pnotify_shadow', | |
86 | + 'showCloseButton': 'pnotify_closer', | |
87 | + 'sticky': 'pnotify_hide', | |
88 | + 'stayTime': 'pnotify_delay', | |
89 | + 'stack': 'pnotify_stack' | |
90 | + }); | |
91 | + if (options.sticky !== null) { | |
92 | + delegateOptions.pnotify_hide = !options.sticky; | |
33 | 93 | } |
34 | 94 | jQuery(document).ready(function() { |
35 | - if(options.delay) { | |
36 | - setTimeout(function(){ | |
37 | - jQuery.pnotify(options); | |
38 | - },options.delay); | |
95 | + if (options.delay) { | |
96 | + setTimeout(function() { | |
97 | + jQuery.pnotify(delegateOptions); | |
98 | + }, options.delay); | |
39 | 99 | } else { |
40 | - jQuery.pnotify(options); | |
100 | + jQuery.pnotify(delegateOptions); | |
101 | + } | |
102 | + }); | |
103 | +}; | |
104 | + | |
105 | +//TODO remove this fix when it gets in to jquery.js | |
106 | +(function() { | |
107 | + var safariCompatMode; | |
108 | + var getCompatMode = function() { | |
109 | + var compatMode = document.compatMode; | |
110 | + if (!compatMode && jQuery.browser.safari) { | |
111 | + if (!safariCompatMode) { | |
112 | + //detect compatMode as described in http://code.google.com/p/doctype/wiki/ArticleCompatMode | |
113 | + var width = jQuery(document.createElement("div")).attr('style', 'position:absolute;width:0;height:0;width:1') | |
114 | + .css('width'); | |
115 | + safariCompatMode = compatMode = (width == '1px' ? 'BackCompat' : 'CSS1Compat'); | |
116 | + } else { | |
117 | + compatMode = safariCompatMode; | |
118 | + } | |
41 | 119 | } |
120 | + | |
121 | + return compatMode; | |
122 | + }; | |
123 | + | |
124 | + | |
125 | + // Create innerHeight, innerWidth, outerHeight and outerWidth methods | |
126 | + jQuery.each([ "Height", "Width" ], function(i, name) { | |
127 | + | |
128 | + var tl = i ? "Left" : "Top", // top or left | |
129 | + br = i ? "Right" : "Bottom", // bottom or right | |
130 | + lower = name.toLowerCase(); | |
131 | + | |
132 | + // innerHeight and innerWidth | |
133 | + jQuery.fn["inner" + name] = function() { | |
134 | + return this[0] ? | |
135 | + jQuery.css(this[0], lower, false, "padding") : | |
136 | + null; | |
137 | + }; | |
138 | + | |
139 | + // outerHeight and outerWidth | |
140 | + jQuery.fn["outer" + name] = function(margin) { | |
141 | + return this[0] ? | |
142 | + jQuery.css(this[0], lower, false, margin ? "margin" : "border") : | |
143 | + null; | |
144 | + }; | |
145 | + | |
146 | + var type = name.toLowerCase(); | |
147 | + | |
148 | + jQuery.fn[ type ] = function(size) { | |
149 | + // Get window width or height | |
150 | + return this[0] == window ? | |
151 | + // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode | |
152 | + getCompatMode() == "CSS1Compat" && document.documentElement[ "client" + name ] || | |
153 | + document.body[ "client" + name ] : | |
154 | + | |
155 | + // Get document width or height | |
156 | + this[0] == document ? | |
157 | + // Either scroll[Width/Height] or offset[Width/Height], whichever is greater | |
158 | + Math.max( | |
159 | + document.documentElement["client" + name], | |
160 | + document.body["scroll" + name], document.documentElement["scroll" + name], | |
161 | + document.body["offset" + name], document.documentElement["offset" + name] | |
162 | + ) : | |
163 | + | |
164 | + // Get or set width or height on the element | |
165 | + size === undefined ? | |
166 | + // Get width or height on the element | |
167 | + (this.length ? jQuery.css(this[0], type) : null) : | |
168 | + | |
169 | + // Set the width or height on the element (default to pixels if value is unitless) | |
170 | + this.css(type, typeof size === "string" ? size : size + "px"); | |
171 | + }; | |
172 | + | |
42 | 173 | }); |
43 | -} | |
174 | +}()); | |
\ No newline at end of file | ... | ... |
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | -<f:root | |
3 | - xmlns:f="http://jsf.exadel.com/template" | |
4 | - xmlns:vcp=" http://jsf.exadel.com/vcp" | |
5 | - xmlns:ui=" http://jsf.exadel.com/ui" | |
6 | - xmlns:x=" http://jsf.exadel.com/vcp" | |
7 | - xmlns:u="http://jsf.exadel.com/util" | |
8 | - xmlns:h="http://jsf.exadel.com/header" | |
9 | - component="org.richfaces.component.UINotify" | |
10 | - baseclass="org.ajax4jsf.renderkit.HeaderResourcesRendererBase" | |
11 | - class="org.richfaces.renderkit.html.NotifyRenderer"> | |
2 | +<f:root | |
3 | + xmlns:f="http://jsf.exadel.com/template" | |
4 | + xmlns:vcp=" http://jsf.exadel.com/vcp" | |
5 | + xmlns:ui=" http://jsf.exadel.com/ui" | |
6 | + xmlns:x=" http://jsf.exadel.com/vcp" | |
7 | + xmlns:u="http://jsf.exadel.com/util" | |
8 | + xmlns:h="http://jsf.exadel.com/header" | |
9 | + component="org.richfaces.component.UINotify" | |
10 | + baseclass="org.ajax4jsf.renderkit.HeaderResourcesRendererBase" | |
11 | + class="org.richfaces.renderkit.html.NotifyRenderer"> | |
12 | 12 | <jsp:directive.page import="javax.faces.application.FacesMessage"/> |
13 | 13 | |
14 | 14 | <h:scripts>/org/richfaces/renderkit/html/scripts/jquery-1.4.2.js, |
15 | - /org/richfaces/renderkit/html/scripts/jquery.pnotify.js</h:scripts> | |
15 | + /org/richfaces/renderkit/html/scripts/jquery.pnotify.js</h:scripts> | |
16 | 16 | <h:styles>/org/richfaces/renderkit/html/css/jquery.pnotify.xcss</h:styles> |
17 | 17 | <f:clientid var="clientId"/> |
18 | + | |
18 | 19 | <div id="#{clientId}"> |
19 | 20 | <jsp:scriptlet> |
20 | 21 | <![CDATA[ |
21 | - variables.setVariable("details",component.getDetails()); | |
22 | - variables.setVariable("summary",component.getSummary()); | |
23 | - variables.setVariable("showHistory",component.isShowHistory()); | |
24 | - variables.setVariable("nonblocking",component.isNonblocking()); | |
25 | - variables.setVariable("shadow",component.isShowShadow()); | |
26 | - variables.setVariable("closeButton",component.isShowCloseButton()); | |
27 | - variables.setVariable("nonblockingOpacity",component.getNonblockingOpacity()); | |
28 | - variables.setVariable("appearAnimation",component.getAppearAnimation()); | |
29 | - variables.setVariable("hideAnimation",component.getHideAnimation()); | |
30 | - variables.setVariable("animationSpeed",component.getAnimationSpeed()); | |
31 | - variables.setVariable("stackDirVertical",component.getStackDirVertical()); | |
32 | - variables.setVariable("stackDirHorizontal",component.getStackDirHorizontal()); | |
33 | - variables.setVariable("stackPush",component.getStackPush()); | |
34 | - variables.setVariable("time",component.getStayTime()!=null ? component.getStayTime() : 0); | |
35 | - variables.setVariable("styleClass",component.getStyleClass()==null?"":component.getStyleClass()); | |
22 | + variables.setVariable("details", component.getDetails()); | |
23 | + variables.setVariable("summary", component.getSummary()); | |
24 | + variables.setVariable("showHistory", component.isShowHistory()); | |
25 | + variables.setVariable("nonblocking", component.isNonblocking()); | |
26 | + variables.setVariable("shadow", component.isShowShadow()); | |
27 | + variables.setVariable("closeButton", component.isShowCloseButton()); | |
28 | + variables.setVariable("nonblockingOpacity", component.getNonblockingOpacity()); | |
29 | + variables.setVariable("appearAnimation", component.getAppearAnimation()); | |
30 | + variables.setVariable("hideAnimation", component.getHideAnimation()); | |
31 | + variables.setVariable("animationSpeed", component.getAnimationSpeed()); | |
32 | + variables.setVariable("stackDirVertical", component.getStackDirVertical()); | |
33 | + variables.setVariable("stackDirHorizontal", component.getStackDirHorizontal()); | |
34 | + variables.setVariable("stackPush", component.getStackPush()); | |
35 | + variables.setVariable("time", component.getStayTime() != null ? component.getStayTime() : 0); | |
36 | + variables.setVariable("styleClass", component.getStyleClass() == null ? "" : component.getStyleClass()); | |
36 | 37 | ]]> |
37 | 38 | </jsp:scriptlet> |
38 | 39 | <script type="text/javascript"> | ... | ... |
Please
register
or
login
to post a comment