Author: Alex.Kolonitsky
Date: 2011-02-04 07:33:53 -0500 (Fri, 04 Feb 2011)
New Revision: 21448
Added:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItemInterface.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AjaxProps.java
Modified:
trunk/examples/output-demo/src/main/java/org/richfaces/ModalPanel.java
trunk/examples/output-demo/src/main/webapp/examples/tabPanel.xhtml
trunk/examples/output-demo/src/main/webapp/qunit/accordionHeaders.xhtml
trunk/examples/output-demo/src/main/webapp/qunit/panelMenu.xhtml
trunk/examples/output-demo/src/main/webapp/qunit/tabPanel.xhtml
trunk/examples/output-demo/src/main/webapp/qunit/togglePanel.xhtml
trunk/examples/output-demo/src/main/webapp/qunit/togglePanelItem.xhtml
trunk/ui/output/api/pom.xml
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordionItem.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractDivPanel.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenuItem.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTab.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItem.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelTitledItem.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTooltip.java
trunk/ui/output/ui/src/main/java/org/richfaces/component/behavior/ToggleControl.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemHeaderRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/DivPanelRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuItemRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelItemRenderer.java
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuGroup.js
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuItem.js
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.js
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/togglePanel.js
trunk/ui/output/ui/src/test/java/org/richfaces/component/AbstractAccordionTest.java
Log:
RF-10384: Redesign of switchable panels
Modified: trunk/examples/output-demo/src/main/java/org/richfaces/ModalPanel.java
===================================================================
--- trunk/examples/output-demo/src/main/java/org/richfaces/ModalPanel.java 2011-02-04
11:28:10 UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/java/org/richfaces/ModalPanel.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -4,6 +4,7 @@
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
+import java.util.Date;
@ManagedBean
@SessionScoped
@@ -27,6 +28,7 @@
private boolean resizeable;
private String inputTextTest;
private String domElementAttachment;
+ private Date date;
public String getInputTextTest() {
return inputTextTest;
@@ -213,4 +215,13 @@
public void action() {
System.out.println("ModalPanel.action");
}
+
+ public Date getDate() {
+ date = new Date();
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
}
\ No newline at end of file
Modified: trunk/examples/output-demo/src/main/webapp/examples/tabPanel.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/examples/tabPanel.xhtml 2011-02-04 11:28:10
UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/webapp/examples/tabPanel.xhtml 2011-02-04 12:33:53
UTC (rev 21448)
@@ -14,15 +14,18 @@
<ui:define name="body">
<p>Page</p>
+ <h:outputText id="date-t1" value="Current date-t1
#{modalPanel.date}" /><br />
+ <h:outputText id="date-t2" value="Current date-t2
#{modalPanel.date}" /><br />
+
<h:form id="f">
<pn:tabPanel id="panel" switchType="ajax"
tabDisabledHeaderClass="myClass_01"
itemChangeListener="#{togglePanelBean.itemChangeActionListener}">
- <pn:tab header="tab1 header"
headerDisabledClass="myClass_02" onenter="alert('onenter
01')">
+ <pn:tab header="tab1 header"
headerDisabledClass="myClass_02" onenter="alert('onenter 01')"
execute="date-t1" render="date-t1">
Content will be here. Content will be here. Content will be here.
Content will be here. Content will be here. Content will be here. Content will be here.
Content will be here. Content will be here. Content will be here. Content will be here.
Content will be here. Content will be here. Content will be here.
</pn:tab>
<pn:tab header="tab 1a (disabled) header"
disabled="true">
Disabled tab content
</pn:tab>
- <pn:tab header="tab2 header"
onenter="alert('onenter 02')">
+ <pn:tab header="tab2 header"
onenter="alert('onenter 02')" execute="date-t2"
render="date-t2">
He he
</pn:tab>
</pn:tabPanel>
Modified: trunk/examples/output-demo/src/main/webapp/qunit/accordionHeaders.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/qunit/accordionHeaders.xhtml 2011-02-04
11:28:10 UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/webapp/qunit/accordionHeaders.xhtml 2011-02-04
12:33:53 UTC (rev 21448)
@@ -3,8 +3,7 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
-
xmlns:pn="http://richfaces.org/pn"
-
xmlns:ou="http://richfaces.org/output">
+
xmlns:pn="http://richfaces.org/output">
<body>
<ui:composition template="/templates/template.xhtml">
@@ -45,22 +44,22 @@
</pn:accordion>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="@first" event="click"/>
+ <pn:toggleControl targetPanel="panel"
targetItem="@first" event="click"/>
|< first
</h:outputLink>
|
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="@prev" event="click"/>
+ <pn:toggleControl targetPanel="panel"
targetItem="@prev" event="click"/>
<- prev
</h:outputLink>
|
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="@next" event="click"/>
+ <pn:toggleControl targetPanel="panel"
targetItem="@next" event="click"/>
next ->
</h:outputLink>
|
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="@last" event="click"/>
+ <pn:toggleControl targetPanel="panel"
targetItem="@last" event="click"/>
last >|
</h:outputLink>
Modified: trunk/examples/output-demo/src/main/webapp/qunit/panelMenu.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/qunit/panelMenu.xhtml 2011-02-04 11:28:10
UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/webapp/qunit/panelMenu.xhtml 2011-02-04 12:33:53
UTC (rev 21448)
@@ -45,12 +45,16 @@
<ui:define name="body">
<p>Page</p>
+ <h:outputText id="date-g1" value="Current date-g1
#{modalPanel.date}" /><br />
+ <h:outputText id="date-i" value="Current date-i
#{modalPanel.date}" /><br />
+ <h:outputText id="date-p" value="Current date-p
#{modalPanel.date}" /><br />
+
<h:form id="f" style="border:blue solid thin;">
<pn:panelMenu
id="panelMenu"
expandSingle="true"
- itemMode="server"
- groupMode="server"
+ itemMode="ajax"
+ groupMode="ajax"
activeItem="myFavariteIten"
itemDisabledLeftIcon="disc"
groupDisabledLeftIcon="disc"
@@ -59,12 +63,13 @@
itemChangeListener="#{modalPanel.itemChangeEventListener}"
expandEvent="dblclick"
collapseEvent="dblclick"
+ execute="date-p" render="date-p"
- <pn:panelMenuGroup label="Group 1"
selectable="true">
- <pn:panelMenuItem>Item 1.1</pn:panelMenuItem>
- <pn:panelMenuItem>Item 1.2</pn:panelMenuItem>
- <pn:panelMenuItem>Item 1.3</pn:panelMenuItem>
+ <pn:panelMenuGroup label="Group 1"
selectable="true" execute="date-g1" render="date-g1">
+ <pn:panelMenuItem execute="date-i"
render="date-i">Item 1.1</pn:panelMenuItem>
+ <pn:panelMenuItem execute="date-i"
render="date-i">Item 1.2</pn:panelMenuItem>
+ <pn:panelMenuItem execute="date-i"
render="date-i">Item 1.3</pn:panelMenuItem>
</pn:panelMenuGroup>
<pn:panelMenuGroup
label="Group 2"
Modified: trunk/examples/output-demo/src/main/webapp/qunit/tabPanel.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/qunit/tabPanel.xhtml 2011-02-04 11:28:10
UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/webapp/qunit/tabPanel.xhtml 2011-02-04 12:33:53
UTC (rev 21448)
@@ -3,7 +3,7 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
-
xmlns:pn="http://richfaces.org/pn">
+
xmlns:pn="http://richfaces.org/output">
<body>
<ui:composition template="/templates/template.xhtml">
Modified: trunk/examples/output-demo/src/main/webapp/qunit/togglePanel.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/qunit/togglePanel.xhtml 2011-02-04 11:28:10
UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/webapp/qunit/togglePanel.xhtml 2011-02-04 12:33:53
UTC (rev 21448)
@@ -3,8 +3,7 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
-
xmlns:pn="http://richfaces.org/pn"
-
xmlns:ou="http://richfaces.org/output">
+
xmlns:pn="http://richfaces.org/output">
<body>
<ui:composition template="/templates/template.xhtml">
@@ -30,15 +29,15 @@
</pn:togglePanel>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="name1" event="click" />
+ <pn:toggleControl targetPanel="panel"
targetItem="name1" event="click" />
name1
</h:outputLink>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="name2" event="click" />
+ <pn:toggleControl targetPanel="panel"
targetItem="name2" event="click" />
name2
</h:outputLink>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="name3" event="click" />
+ <pn:toggleControl targetPanel="panel"
targetItem="name3" event="click" />
name3
</h:outputLink>
</h:form>
Modified: trunk/examples/output-demo/src/main/webapp/qunit/togglePanelItem.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/qunit/togglePanelItem.xhtml 2011-02-04
11:28:10 UTC (rev 21447)
+++ trunk/examples/output-demo/src/main/webapp/qunit/togglePanelItem.xhtml 2011-02-04
12:33:53 UTC (rev 21448)
@@ -3,8 +3,7 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
-
xmlns:pn="http://richfaces.org/pn"
-
xmlns:ou="http://richfaces.org/output">
+
xmlns:pn="http://richfaces.org/output">
<body>
<ui:composition template="/templates/template.xhtml">
@@ -30,15 +29,15 @@
</pn:togglePanel>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="name1" event="click" />
+ <pn:toggleControl targetPanel="panel"
targetItem="name1" event="click" />
name1
</h:outputLink>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="name2" event="click" />
+ <pn:toggleControl targetPanel="panel"
targetItem="name2" event="click" />
name2
</h:outputLink>
<h:outputLink>
- <ou:toggleControl targetPanel="panel"
targetItem="name3" event="click" />
+ <pn:toggleControl targetPanel="panel"
targetItem="name3" event="click" />
name3
</h:outputLink>
</h:form>
Modified: trunk/ui/output/api/pom.xml
===================================================================
--- trunk/ui/output/api/pom.xml 2011-02-04 11:28:10 UTC (rev 21447)
+++ trunk/ui/output/api/pom.xml 2011-02-04 12:33:53 UTC (rev 21448)
@@ -1,3 +1,4 @@
+
<?xml version="1.0" encoding="UTF-8"?>
<!--
Modified: trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordion.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -103,40 +103,4 @@
@Attribute(events = @EventName("beforeitemchange"))
public abstract String getOnbeforeitemchange();
- @Attribute
- public abstract String getLang();
-
- @Attribute
- public abstract String getTitle();
-
- @Attribute
- public abstract String getStyle();
-
- @Attribute
- public abstract String getStyleClass();
-
- @Attribute
- public abstract String getDir();
-
- @Attribute(events = @EventName("click"))
- public abstract String getOnclick();
-
- @Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
-
- @Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
-
- @Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
-
- @Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
-
- @Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
-
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordionItem.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordionItem.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractAccordionItem.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -23,8 +23,8 @@
package org.richfaces.component;
import org.richfaces.cdk.annotations.*;
-import org.richfaces.component.behavior.ToggleControl;
+import javax.faces.component.UIComponent;
import javax.faces.component.behavior.ClientBehaviorHolder;
/**
@@ -32,13 +32,15 @@
* @since 2010-08-13
*/
@JsfComponent(tag = @Tag(type = TagType.Facelets), renderer = @JsfRenderer(type =
"org.richfaces.AccordionItemRenderer"))
-public abstract class AbstractAccordionItem extends AbstractTogglePanelTitledItem
implements ClientBehaviorHolder {
+public abstract class AbstractAccordionItem extends AbstractTogglePanelItem implements
AbstractTogglePanelTitledItem, ClientBehaviorHolder {
public static final String COMPONENT_TYPE = "org.richfaces.AccordionItem";
public static final String COMPONENT_FAMILY =
"org.richfaces.AccordionItem";
enum Properties {
+ header,
+
contentClass,
leftActiveIcon,
leftInactiveIcon,
@@ -56,11 +58,31 @@
setRendererType("org.richfaces.AccordionItemRenderer");
}
+ @Override
+ public AbstractAccordion getParentPanel() {
+ return ComponentIterators.getParent(this, AbstractAccordion.class);
+ }
+
public AbstractAccordion getAccordion() {
- return (AbstractAccordion) ToggleControl.getEnclosedPanel(this);
+ return getParentPanel();
}
- @Attribute(defaultValue = "getAccordion().getItemActiveLeftIcon()",
generate = false)
+ public UIComponent getHeaderFacet(Enum<?> state) {
+ return AbstractTab.getHeaderFacet(this, state);
+ }
+
+ // ------------------------------------------------ Component Attributes
+
+ @Attribute(generate = false)
+ public String getHeader() {
+ return (String) getStateHelper().eval(Properties.header, getName());
+ }
+
+ public void setHeader(String header) {
+ getStateHelper().put(Properties.header, header);
+ }
+
+ @Attribute(generate = false)
public String getLeftActiveIcon() {
return (String) getStateHelper().eval(Properties.leftActiveIcon,
getAccordion().getItemActiveLeftIcon());
}
@@ -69,7 +91,7 @@
getStateHelper().put(Properties.leftActiveIcon, leftActiveIcon);
}
- @Attribute(defaultValue = "getAccordion().getItemDisabledLeftIcon()",
generate = false)
+ @Attribute(generate = false)
public String getLeftDisabledIcon() {
return (String) getStateHelper().eval(Properties.leftDisabledIcon,
getAccordion().getItemDisabledLeftIcon());
}
@@ -79,7 +101,7 @@
}
- @Attribute(defaultValue = "getAccordion().getItemInactiveLeftIcon()",
generate = false)
+ @Attribute(generate = false)
public String getLeftInactiveIcon() {
return (String) getStateHelper().eval(Properties.leftInactiveIcon,
getAccordion().getItemInactiveLeftIcon());
}
@@ -88,7 +110,7 @@
getStateHelper().put(Properties.leftInactiveIcon, leftInactiveIcon);
}
- @Attribute(defaultValue = "getAccordion().getItemActiveRightIcon()",
generate = false)
+ @Attribute(generate = false)
public String getRightActiveIcon() {
return (String) getStateHelper().eval(Properties.rightActiveIcon,
getAccordion().getItemActiveRightIcon());
}
@@ -97,7 +119,7 @@
getStateHelper().put(Properties.rightActiveIcon, rightActiveIcon);
}
- @Attribute(defaultValue = "getAccordion().getItemDisabledRightIcon()",
generate = false)
+ @Attribute(generate = false)
public String getRightDisabledIcon() {
return (String) getStateHelper().eval(Properties.rightDisabledIcon,
getAccordion().getItemDisabledRightIcon());
}
@@ -106,16 +128,16 @@
getStateHelper().put(Properties.rightDisabledIcon, rightDisabledIcon);
}
- @Attribute(defaultValue = "getAccordion().getItemInactiveRightIcon()",
generate = false)
- public String getRightInactiveIcon() {
+ @Attribute(generate = false)
+ public String getInactiveRightIcon() {
return (String) getStateHelper().eval(Properties.rightInactiveIcon,
getAccordion().getItemInactiveRightIcon());
}
- public void setInactiveRightIcon(String rightInactiveIcon) {
- getStateHelper().put(Properties.rightInactiveIcon, rightInactiveIcon);
+ public void setInactiveRightIcon(String inactiveRightIcon) {
+ getStateHelper().put(Properties.rightInactiveIcon, inactiveRightIcon);
}
- @Attribute(defaultValue = "getAccordion().getItemHeaderActiveClass()",
generate = false)
+ @Attribute(generate = false)
public String getHeaderActiveClass() {
return (String) getStateHelper().eval(Properties.headerActiveClass,
getAccordion().getItemActiveHeaderClass());
}
@@ -124,7 +146,7 @@
getStateHelper().put(Properties.headerActiveClass, headerActiveClass);
}
- @Attribute(defaultValue = "getAccordion().getItemDisabledHeaderClass()",
generate = false)
+ @Attribute(generate = false)
public String getHeaderDisabledClass() {
return (String) getStateHelper().eval(Properties.headerDisabledClass,
getAccordion().getItemDisabledHeaderClass());
}
@@ -133,7 +155,7 @@
getStateHelper().put(Properties.headerDisabledClass, headerDisabledClass);
}
- @Attribute(defaultValue = "getAccordion().getItemInactiveHeaderClass()",
generate = false)
+ @Attribute(generate = false)
public String getHeaderInactiveClass() {
return (String) getStateHelper().eval(Properties.headerInactiveClass,
getAccordion().getItemInactiveHeaderClass());
}
@@ -151,9 +173,6 @@
getStateHelper().put(Properties.headerClass, headerClass);
}
- @Attribute
- public abstract String getHeaderStyle();
-
@Attribute(defaultValue = "getAccordion().getItemContentClass()")
public String getContentClass() {
return (String) getStateHelper().eval(Properties.contentClass,
getAccordion().getItemContentClass());
@@ -162,63 +181,5 @@
public void setContentClass(String contentClass) {
getStateHelper().put(Properties.contentClass, contentClass);
}
-
- @Attribute(events = @EventName("headerclick"))
- public abstract String getOnheaderclick();
-
- @Attribute(events = @EventName("headerdblclick"))
- public abstract String getOnheaderdblclick();
-
- @Attribute(events = @EventName("headermousedown"))
- public abstract String getOnheadermousedown();
-
- @Attribute(events = @EventName("headermousemove"))
- public abstract String getOnheadermousemove();
-
- @Attribute(events = @EventName("headermouseup"))
- public abstract String getOnheadermouseup();
-
- @Attribute(events = @EventName("enter"))
- public abstract String getOnenter();
-
- @Attribute(events = @EventName("leave"))
- public abstract String getOnleave();
-
- @Attribute
- public abstract String getLang();
-
- @Attribute
- public abstract String getTitle();
-
- @Attribute
- public abstract String getStyle();
-
- @Attribute
- public abstract String getStyleClass();
-
- @Attribute
- public abstract String getDir();
-
- @Attribute(events = @EventName("click"))
- public abstract String getOnclick();
-
- @Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
-
- @Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
-
- @Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
-
- @Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
-
- @Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
-
}
Modified: trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractDivPanel.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractDivPanel.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractDivPanel.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -25,63 +25,46 @@
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.EventName;
-import javax.faces.component.UIOutput;
-
/**
* @author akolonitsky
* @version 1.0
*
*/
-public abstract class AbstractDivPanel extends UIOutput {
+public interface AbstractDivPanel {
- public static final String COMPONENT_TYPE = "org.richfaces.DivPanel";
-
- public static final String COMPONENT_FAMILY = "org.richfaces.DivPanel";
-
- protected AbstractDivPanel() {
- setRendererType("org.richfaces.DivPanelRenderer");
- }
-
- @Override
- public String getFamily() {
- return COMPONENT_FAMILY;
- }
-
- // ------------------------------------------------ Html Attributes
-
@Attribute
- public abstract String getLang();
+ String getLang();
@Attribute
- public abstract String getTitle();
+ String getTitle();
@Attribute
- public abstract String getStyle();
+ String getStyle();
@Attribute
- public abstract String getStyleClass();
+ String getStyleClass();
@Attribute
- public abstract String getDir();
+ String getDir();
@Attribute(events = @EventName("click"))
- public abstract String getOnclick();
+ String getOnclick();
@Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
+ String getOndblclick();
@Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
+ String getOnmousedown();
@Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
+ String getOnmousemove();
@Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
+ String getOnmouseout();
@Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
+ String getOnmouseover();
@Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
+ String getOnmouseup();
}
Modified: trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenu.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -110,8 +110,6 @@
protected void setEventPhase(FacesEvent event) {
if (isImmediate()) {
event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
- } else if (isBypassUpdates()) {
- event.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
} else {
event.setPhaseId(PhaseId.INVOKE_APPLICATION);
}
@@ -121,8 +119,7 @@
public void broadcast(FacesEvent event) throws AbortProcessingException {
super.broadcast(event);
- //TODO nick - check for (isBypassUpdates() || isImmediate()) can be removed
- if (event instanceof ItemChangeEvent && (isBypassUpdates() ||
isImmediate())) {
+ if (event instanceof ItemChangeEvent) {
getFacesContext().renderResponse();
}
}
@@ -195,24 +192,6 @@
@Attribute
public abstract MethodExpression getItemChangeListener();
- @Attribute
- public abstract boolean isBypassUpdates();
-
- @Attribute
- public abstract boolean isLimitRender();
-
- @Attribute
- public abstract Object getData();
-
- @Attribute
- public abstract String getStatus();
-
- @Attribute
- public abstract Object getExecute();
-
- @Attribute
- public abstract Object getRender();
-
// ------------------------------------------------ Html Attributes
enum Properties {
itemRightIcon,
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenuItem.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenuItem.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractPanelMenuItem.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -23,6 +23,7 @@
package org.richfaces.component;
+import com.google.common.base.Predicate;
import org.richfaces.PanelMenuMode;
import org.richfaces.cdk.annotations.*;
@@ -33,12 +34,14 @@
* @since 2010-10-25
*/
@JsfComponent(tag = @Tag(type = TagType.Facelets))
-public abstract class AbstractPanelMenuItem extends AbstractActionComponent {
+public abstract class AbstractPanelMenuItem extends AbstractActionComponent implements
AjaxProps {
public static final String COMPONENT_TYPE = "org.richfaces.PanelMenuItem";
public static final String COMPONENT_FAMILY =
"org.richfaces.PanelMenuItem";
+ private static final ParentItemPredicate PARENT_ITEM_PREDICATE = new
ParentItemPredicate();
+
protected AbstractPanelMenuItem() {
setRendererType("org.richfaces.PanelMenuItemRenderer");
}
@@ -47,33 +50,12 @@
return getParentItem() instanceof AbstractPanelMenu;
}
- //TODO nick - this can be replaced with ComponentIterators.parents(UIComponent) +
Iterators.find(...)
- public AbstractPanelMenu getPanelMenu() { // TODO refactor
- UIComponent parentItem = getParent();
- while (parentItem != null) {
- if (parentItem instanceof AbstractPanelMenu) {
- return (AbstractPanelMenu) parentItem;
- }
-
- parentItem = parentItem.getParent();
- }
-
- return null;
+ public AbstractPanelMenu getPanelMenu() {
+ return ComponentIterators.getParent(this, AbstractPanelMenu.class);
}
- //TODO nick - this can be replaced with ComponentIterators.parents(UIComponent) +
Iterators.find(...)
public UIComponent getParentItem() {
- UIComponent parentItem = getParent();
- while (parentItem != null) {
- if (parentItem instanceof AbstractPanelMenuGroup
- || parentItem instanceof AbstractPanelMenu) {
- return parentItem;
- }
-
- parentItem = parentItem.getParent();
- }
-
- return null;
+ return ComponentIterators.getParent(this, PARENT_ITEM_PREDICATE);
}
@Override
@@ -107,24 +89,22 @@
@Attribute
public abstract boolean isDisabled();
- @Attribute
- public abstract boolean isLimitRender();
+ @Attribute(generate = false)
+ public Object getExecute() {
+ Object execute = getStateHelper().eval(Properties.execute);
+ if (execute == null) {
+ execute = "";
+ }
+ return execute + " " + getPanelMenu().getId();
+ }
- @Attribute
- public abstract Object getData();
+ public void setExecute(Object execute) {
+ getStateHelper().put(Properties.execute, execute);
+ }
- @Attribute
- public abstract String getStatus();
-
- @Attribute
- public abstract Object getExecute();
-
- @Attribute
- public abstract Object getRender();
-
// ------------------------------------------------ Html Attributes
enum Properties {
- leftIcon, leftDisabledIcon, iconRight, rightDisabledIcon, styleClass,
disabledClass, name
+ leftIcon, leftDisabledIcon, iconRight, rightDisabledIcon, styleClass,
disabledClass, execute, name
}
@@ -197,12 +177,6 @@
getStateHelper().put(Properties.styleClass, styleClass);
}
- @Attribute(events = @EventName("beforedomupdate"))
- public abstract String getOnbeforedomupdate();
-
- @Attribute(events = @EventName("complete"))
- public abstract String getOncomplete();
-
@Attribute(events = @EventName("click"))
public abstract String getOnclick();
@@ -232,4 +206,10 @@
@Attribute(events = @EventName("beforeselect"))
public abstract String getOnbeforeselect();
+
+ private static class ParentItemPredicate implements Predicate<UIComponent> {
+ public boolean apply(UIComponent comp) {
+ return comp instanceof AbstractPanelMenuGroup || comp instanceof
AbstractPanelMenu;
+ }
+ }
}
Modified: trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTab.java
===================================================================
--- trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTab.java 2011-02-04
11:28:10 UTC (rev 21447)
+++ trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTab.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -23,7 +23,9 @@
package org.richfaces.component;
import org.richfaces.cdk.annotations.*;
+import org.richfaces.renderkit.html.DivPanelRenderer;
+import javax.faces.component.UIComponent;
import javax.faces.component.behavior.ClientBehaviorHolder;
/**
@@ -31,7 +33,7 @@
* @since 2010-10-19
*/
@JsfComponent(tag = @Tag(type = TagType.Facelets), renderer = @JsfRenderer(type =
"org.richfaces.TabRenderer"))
-public abstract class AbstractTab extends AbstractTogglePanelTitledItem implements
ClientBehaviorHolder {
+public abstract class AbstractTab extends AbstractActionComponent implements
AbstractTogglePanelTitledItem, AjaxProps, ClientBehaviorHolder {
public static final String COMPONENT_TYPE = "org.richfaces.Tab";
@@ -41,14 +43,9 @@
setRendererType("org.richfaces.TabRenderer");
}
- public AbstractTabPanel getTabPanel() {
- return (AbstractTabPanel) this.getParent();
- }
-
// ------------------------------------------------ Html Attributes
enum Properties {
- headerDisabledClass, headerInactiveClass, headerClass, contentClass,
headerActiveClass
-
+ headerDisabledClass, headerInactiveClass, headerClass, contentClass, execute,
headerActiveClass, header
}
@Attribute(generate = false)
@@ -108,10 +105,6 @@
getStateHelper().put(Properties.headerClass, headerClass);
}
-
- @Attribute
- public abstract String getHeaderStyle();
-
@Attribute(generate = false)
public String getContentClass() {
String value = (String) getStateHelper().eval(Properties.contentClass);
@@ -126,62 +119,78 @@
getStateHelper().put(Properties.contentClass, contentClass);
}
- @Attribute(events = @EventName("headerclick"))
- public abstract String getOnheaderclick();
+ @Attribute(generate = false)
+ public Object getExecute() {
+ Object execute = getStateHelper().eval(Properties.execute);
+ if (execute == null) {
+ execute = "";
+ }
+ return execute + " " + getTabPanel().getId();
+ }
- @Attribute(events = @EventName("headerdblclick"))
- public abstract String getOnheaderdblclick();
+ public void setExecute(Object execute) {
+ getStateHelper().put(Properties.execute, execute);
+ }
- @Attribute(events = @EventName("headermousedown"))
- public abstract String getOnheadermousedown();
- @Attribute(events = @EventName("headermousemove"))
- public abstract String getOnheadermousemove();
+ /////////////////////////////////////////////////////////////////////////
- @Attribute(events = @EventName("headermouseup"))
- public abstract String getOnheadermouseup();
+ public UIComponent getHeaderFacet(Enum<?> state) {
+ return getHeaderFacet(this, state);
+ }
- @Attribute(events = @EventName("enter"))
- public abstract String getOnenter();
+ public static UIComponent getHeaderFacet(UIComponent component, Enum<?> state)
{
+ UIComponent headerFacet = null;
+ if (state != null) {
+ headerFacet = component.getFacet("header" +
DivPanelRenderer.capitalize(state.toString()));
+ }
- @Attribute(events = @EventName("leave"))
- public abstract String getOnleave();
+ if (headerFacet == null) {
+ headerFacet = component.getFacet("header");
+ }
+ return headerFacet;
+ }
- @Attribute
- public abstract String getLang();
+ // ------------------------------------------------ Component Attributes
- @Attribute
- public abstract String getTitle();
+ @Attribute(generate = false)
+ public String getHeader() {
+ return (String) getStateHelper().eval(Properties.header, getName());
+ }
- @Attribute
- public abstract String getStyle();
+ public void setHeader(String header) {
+ getStateHelper().put(Properties.header, header);
+ }
- @Attribute
- public abstract String getStyleClass();
+ // ------------------------------------------------ AbstractTogglePanelItemInterface
- @Attribute
- public abstract String getDir();
+ public AbstractTabPanel getParentPanel() {
+ return ComponentIterators.getParent(this, AbstractTabPanel.class);
+ }
- @Attribute(events = @EventName("click"))
- public abstract String getOnclick();
+ public AbstractTabPanel getTabPanel() {
+ return getParentPanel();
+ }
- @Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
+ public boolean isActive() {
+ return getTabPanel().isActiveItem(this);
+ }
- @Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
+ public boolean shouldProcess() {
+ return isActive() || getSwitchType() == SwitchType.client;
+ }
- @Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
+ @Attribute(generate = false)
+ public String getName() {
+ return (String) getStateHelper().eval(AbstractTogglePanelItem.NAME, getId());
+ }
- @Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
+ public void setName(String name) {
+ getStateHelper().put(AbstractTogglePanelItem.NAME, name);
+ }
- @Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
-
+ public String toString() {
+ return "TogglePanelItem {name: " + getName() + ", switchType:
" + getSwitchType() + '}';
+ }
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanel.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -33,6 +33,7 @@
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
import javax.faces.component.UpdateModelException;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
@@ -65,7 +66,7 @@
*/
@JsfComponent(tag = @Tag(type = TagType.Facelets, handler =
"org.richfaces.view.facelets.html.TogglePanelTagHandler"),
renderer = @JsfRenderer(type = "org.richfaces.TogglePanelRenderer"))
-public abstract class AbstractTogglePanel extends AbstractDivPanel implements
ItemChangeSource {
+public abstract class AbstractTogglePanel extends UIOutput implements AbstractDivPanel,
ItemChangeSource {
public static final String COMPONENT_TYPE = "org.richfaces.TogglePanel";
@@ -153,15 +154,15 @@
@Override
public void encodeBegin(FacesContext context) throws IOException {
- AbstractTogglePanelItem item = null;
+ AbstractTogglePanelItemInterface item = null;
String activeItem = getActiveItem();
if (!Strings.isNullOrEmpty(activeItem)) {
item = this.getItem(activeItem);
}
- if (item == null || !item.isRendered()) {
- List<AbstractTogglePanelItem> renderedItems = this.getRenderedItems();
+ if (item == null || !((UIComponent) item).isRendered()) {
+ List<AbstractTogglePanelItemInterface> renderedItems =
this.getRenderedItems();
if (!renderedItems.isEmpty()) {
setActiveItem(renderedItems.get(0).getName());
}
@@ -484,15 +485,15 @@
return null;
}
- if (!(item instanceof AbstractTogglePanelItem)) {
+ if (!(item instanceof AbstractTogglePanelItemInterface)) {
throw new IllegalArgumentException();
}
- return ((AbstractTogglePanelItem) item).getName();
+ return ((AbstractTogglePanelItemInterface) item).getName();
}
- public AbstractTogglePanelItem getItemByIndex(final int index) {
- List<AbstractTogglePanelItem> children = getRenderedItems();
+ public AbstractTogglePanelItemInterface getItemByIndex(final int index) {
+ List<AbstractTogglePanelItemInterface> children = getRenderedItems();
if (index < 0 || index >= children.size()) {
return null;
} else if (isCycledSwitching()) {
@@ -503,22 +504,22 @@
}
}
- public List<AbstractTogglePanelItem> getRenderedItems() {
+ public List<AbstractTogglePanelItemInterface> getRenderedItems() {
return getItems(false);
}
- public List<AbstractTogglePanelItem> getItems(boolean isRendered) {
- List<AbstractTogglePanelItem> res = new
ArrayList<AbstractTogglePanelItem>(getChildCount());
+ public List<AbstractTogglePanelItemInterface> getItems(boolean isRendered) {
+ List<AbstractTogglePanelItemInterface> res = new
ArrayList<AbstractTogglePanelItemInterface>(getChildCount());
for (UIComponent child : getChildren()) {
- if ((isRendered || child.isRendered()) && child instanceof
AbstractTogglePanelItem) {
- res.add((AbstractTogglePanelItem) child);
+ if ((isRendered || child.isRendered()) && child instanceof
AbstractTogglePanelItemInterface) {
+ res.add((AbstractTogglePanelItemInterface) child);
}
}
return res;
}
- public AbstractTogglePanelItem getItem(String name) {
+ public AbstractTogglePanelItemInterface getItem(String name) {
if (META_NAME_FIRST.equals(name)) {
return getFirstItem();
} else if (META_NAME_PREV.equals(name)) {
@@ -532,27 +533,27 @@
}
}
- public AbstractTogglePanelItem getFirstItem() {
+ public AbstractTogglePanelItemInterface getFirstItem() {
return getItemByIndex(0);
}
- public AbstractTogglePanelItem getPrevItem() {
+ public AbstractTogglePanelItemInterface getPrevItem() {
return getPrevItem(getActiveItem());
}
- public AbstractTogglePanelItem getPrevItem(String name) {
+ public AbstractTogglePanelItemInterface getPrevItem(String name) {
return getItemByIndex(getChildIndex(name) - 1);
}
- public AbstractTogglePanelItem getNextItem() {
+ public AbstractTogglePanelItemInterface getNextItem() {
return getNextItem(getActiveItem());
}
- public AbstractTogglePanelItem getNextItem(String name) {
+ public AbstractTogglePanelItemInterface getNextItem(String name) {
return getItemByIndex(getChildIndex(name) + 1);
}
- public AbstractTogglePanelItem getLastItem() {
+ public AbstractTogglePanelItemInterface getLastItem() {
return getItemByIndex(getRenderedItems().size() - 1);
}
@@ -561,7 +562,7 @@
throw new IllegalArgumentException("Name is required parameter.");
}
- List<AbstractTogglePanelItem> items = getRenderedItems();
+ List<AbstractTogglePanelItemInterface> items = getRenderedItems();
for (int ind = 0; ind < items.size(); ind++) {
if (name.equals(items.get(ind).getName())) {
return ind;
@@ -647,42 +648,6 @@
@Attribute(events = @EventName("beforeitemchange"))
public abstract String getOnbeforeitemchange();
- @Attribute
- public abstract String getLang();
-
- @Attribute
- public abstract String getTitle();
-
- @Attribute
- public abstract String getStyle();
-
- @Attribute
- public abstract String getStyleClass();
-
- @Attribute
- public abstract String getDir();
-
- @Attribute(events = @EventName("click"))
- public abstract String getOnclick();
-
- @Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
-
- @Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
-
- @Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
-
- @Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
-
- @Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
-
// ------------------------------------------------ Event Processing Methods
public void addItemChangeListener(ItemChangeListener listener) {
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItem.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItem.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItem.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -23,12 +23,13 @@
package org.richfaces.component;
import org.richfaces.cdk.annotations.Attribute;
-import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.annotations.TagType;
+import javax.faces.component.UIOutput;
+
/**
* @author akolonitsky
* @version 1.0
@@ -36,12 +37,12 @@
@JsfComponent(
tag = @Tag(type = TagType.Facelets),
renderer = @JsfRenderer(type =
"org.richfaces.TogglePanelItemRenderer"))
-public abstract class AbstractTogglePanelItem extends AbstractDivPanel {
+public abstract class AbstractTogglePanelItem extends UIOutput implements
AbstractTogglePanelItemInterface {
public static final String COMPONENT_TYPE =
"org.richfaces.TogglePanelItem";
public static final String COMPONENT_FAMILY =
"org.richfaces.TogglePanelItem";
- private static final String NAME = "name";
+ protected static final String NAME = "name";
protected AbstractTogglePanelItem() {
setRendererType("org.richfaces.TogglePanelItemRenderer");
@@ -52,13 +53,6 @@
return COMPONENT_FAMILY;
}
-/*
- @Override
- public AbstractTogglePanel getParent() {
- return (AbstractTogglePanel) super.getParent();
- }
-*/
-
public AbstractTogglePanel getParentPanel() {
return ComponentIterators.getParent(this, AbstractTogglePanel.class);
}
@@ -67,9 +61,13 @@
return getParentPanel().isActiveItem(this);
}
+ public boolean shouldProcess() {
+ return isActive() || getSwitchType() == SwitchType.client;
+ }
+
// ------------------------------------------------ Component Attributes
- @Attribute(defaultValue = "getId()", generate = false)
+ @Attribute(generate = false)
public String getName() {
return (String) getStateHelper().eval(NAME, getId());
}
@@ -78,54 +76,6 @@
getStateHelper().put(NAME, name);
}
- @Attribute(defaultValue = "getParentPanel().getSwitchType()")
- public abstract SwitchType getSwitchType();
-
- // ------------------------------------------------ Html Attributes
-
- @Attribute(events = @EventName("enter"))
- public abstract String getOnenter();
-
- @Attribute(events = @EventName("leave"))
- public abstract String getOnleave();
-
- @Attribute
- public abstract String getLang();
-
- @Attribute
- public abstract String getTitle();
-
- @Attribute
- public abstract String getStyle();
-
- @Attribute
- public abstract String getStyleClass();
-
- @Attribute
- public abstract String getDir();
-
- @Attribute(events = @EventName("click"))
- public abstract String getOnclick();
-
- @Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
-
- @Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
-
- @Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
-
- @Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
-
- @Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
-
-
public String toString() {
return "TogglePanelItem {name: " + getName() + ", switchType:
" + getSwitchType() + '}';
}
Added:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItemInterface.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItemInterface.java
(rev 0)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelItemInterface.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -0,0 +1,28 @@
+package org.richfaces.component;
+
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+
+public interface AbstractTogglePanelItemInterface extends AbstractDivPanel {
+
+ AbstractTogglePanel getParentPanel();
+
+ boolean isActive();
+
+ boolean shouldProcess();
+
+ // ------------------------------------------------ Component Attributes
+
+ String getName();
+
+ @Attribute(defaultValue = "getParentPanel().getSwitchType()")
+ SwitchType getSwitchType();
+
+ // ------------------------------------------------ Html Attributes
+
+ @Attribute(events = @EventName("enter"))
+ String getOnenter();
+
+ @Attribute(events = @EventName("leave"))
+ String getOnleave();
+}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelTitledItem.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelTitledItem.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTogglePanelTitledItem.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -24,22 +24,15 @@
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.EventName;
-import org.richfaces.renderkit.html.DivPanelRenderer;
-import javax.faces.component.UIComponent;
-
import static org.richfaces.renderkit.html.DivPanelRenderer.capitalize;
/**
* @author akolonitsky
* @since 2010-08-05
*/
-public abstract class AbstractTogglePanelTitledItem extends AbstractTogglePanelItem {
+public interface AbstractTogglePanelTitledItem extends AbstractTogglePanelItemInterface
{
- public static final String COMPONENT_TYPE =
"org.richfaces.TogglePanelTitledItem";
-
- public static final String COMPONENT_FAMILY =
"org.richfaces.TogglePanelTitledItem";
-
public enum HeaderStates {
active("act"),
inactive("inact"),
@@ -63,43 +56,13 @@
}
}
- @Override
- public String getFamily() {
- return COMPONENT_FAMILY;
- }
-
- public UIComponent getHeaderFacet(Enum<?> state) {
- return getHeaderFacet(this, state);
- }
-
- public static UIComponent getHeaderFacet(UIComponent component, Enum<?> state)
{
- UIComponent headerFacet = null;
- if (state != null) {
- headerFacet = component.getFacet("header" +
DivPanelRenderer.capitalize(state.toString()));
- }
-
- if (headerFacet == null) {
- headerFacet = component.getFacet("header");
- }
- return headerFacet;
- }
-
// ------------------------------------------------ Component Attributes
- enum Properties {
- header
- }
@Attribute
- public abstract boolean isDisabled();
+ boolean isDisabled();
- @Attribute(generate = false)
- public String getHeader() {
- return (String) getStateHelper().eval(Properties.header, getName());
- }
+ String getHeader();
- public void setHeader(String header) {
- getStateHelper().put(Properties.header, header);
- }
// ------------------------------------------------ Html Attributes
@Attribute
@@ -134,47 +97,4 @@
@Attribute(events = @EventName("headermouseup"))
public abstract String getOnheadermouseup();
-
- @Attribute(events = @EventName("enter"))
- public abstract String getOnenter();
-
- @Attribute(events = @EventName("leave"))
- public abstract String getOnleave();
-
- @Attribute
- public abstract String getLang();
-
- @Attribute
- public abstract String getTitle();
-
- @Attribute
- public abstract String getStyle();
-
- @Attribute
- public abstract String getStyleClass();
-
- @Attribute
- public abstract String getDir();
-
- @Attribute(events = @EventName("click"))
- public abstract String getOnclick();
-
- @Attribute(events = @EventName("dblclick"))
- public abstract String getOndblclick();
-
- @Attribute(events = @EventName("mousedown"))
- public abstract String getOnmousedown();
-
- @Attribute(events = @EventName("mousemove"))
- public abstract String getOnmousemove();
-
- @Attribute(events = @EventName("mouseout"))
- public abstract String getOnmouseout();
-
- @Attribute(events = @EventName("mouseover"))
- public abstract String getOnmouseover();
-
- @Attribute(events = @EventName("mouseup"))
- public abstract String getOnmouseup();
-
}
Modified: trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTooltip.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTooltip.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/AbstractTooltip.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -25,6 +25,7 @@
import java.io.IOException;
import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
import javax.faces.component.visit.VisitCallback;
import javax.faces.component.visit.VisitContext;
import javax.faces.component.visit.VisitResult;
@@ -48,7 +49,7 @@
*/
@JsfComponent(tag = @Tag(type = TagType.Facelets),
renderer = @JsfRenderer(type = "org.richfaces.TooltipRenderer"),
attributes = {"tooltip-props.xml", "ajax-props.xml"})
-public abstract class AbstractTooltip extends AbstractDivPanel implements
MetaComponentResolver, MetaComponentEncoder {
+public abstract class AbstractTooltip extends UIOutput implements AbstractDivPanel,
MetaComponentResolver, MetaComponentEncoder {
public static final String COMPONENT_TYPE = "org.richfaces.Tooltip";
Added: trunk/ui/output/ui/src/main/java/org/richfaces/component/AjaxProps.java
===================================================================
--- trunk/ui/output/ui/src/main/java/org/richfaces/component/AjaxProps.java
(rev 0)
+++ trunk/ui/output/ui/src/main/java/org/richfaces/component/AjaxProps.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -0,0 +1,31 @@
+package org.richfaces.component;
+
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+
+public interface AjaxProps {
+
+ @Attribute
+ Object getExecute();
+
+ @Attribute
+ Object getRender();
+
+ @Attribute(defaultValue = "false")
+ boolean isLimitRender();
+
+ @Attribute
+ String getStatus();
+
+ @Attribute
+ Object getData();
+
+ @Attribute(events = @EventName("begin"))
+ String getOnbegin();
+
+ @Attribute(events = @EventName("beforedomupdate"))
+ String getOnbeforedomupdate();
+
+ @Attribute(events = @EventName("complete"))
+ String getOncomplete();
+}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/component/behavior/ToggleControl.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/component/behavior/ToggleControl.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/component/behavior/ToggleControl.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -31,6 +31,7 @@
import org.ajax4jsf.component.behavior.ClientBehavior;
import org.richfaces.cdk.annotations.*;
import org.richfaces.component.AbstractTogglePanel;
+import org.richfaces.component.ComponentIterators;
import org.richfaces.renderkit.util.RendererUtils;
/**
@@ -119,17 +120,13 @@
return null;
}
- UIComponent control = comp;
- while (control != null) {
- if (control instanceof AbstractTogglePanel) {
- return (AbstractTogglePanel) control;
- }
-
- control = control.getParent();
+ AbstractTogglePanel panel = ComponentIterators.getParent(comp,
AbstractTogglePanel.class);
+ if (panel == null) {
+ throw new FacesException("Parent panel for control (id="
+ + comp.getClientId(FacesContext.getCurrentInstance()) + ") has
not been found.");
}
-
- throw new FacesException("Parent panel for control (id="
- + comp.getClientId(FacesContext.getCurrentInstance()) + ") has not
been found.");
+
+ return panel;
}
@Override
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemHeaderRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemHeaderRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemHeaderRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -27,7 +27,7 @@
}
protected void encodeHeaderRightIcon(ResponseWriter writer, FacesContext context,
AbstractAccordionItem panel) throws IOException {
- String iconInactive = panel.isDisabled() ? panel.getRightDisabledIcon() :
panel.getRightInactiveIcon();
+ String iconInactive = panel.isDisabled() ? panel.getRightDisabledIcon() :
panel.getInactiveRightIcon();
String iconActive = panel.isDisabled() ? panel.getRightDisabledIcon() :
panel.getRightActiveIcon();
//TODO nick - should this be "-ico-exp"? also why expanded icon state
is connected with right icon alignment?
@@ -63,9 +63,9 @@
}
}
- private static void encodeHeader(ResponseWriter writer, FacesContext context,
AbstractTogglePanelTitledItem component,
+ private static void encodeHeader(ResponseWriter writer, FacesContext context,
AbstractAccordionItem component,
AbstractTogglePanelTitledItem.HeaderStates state)
throws IOException {
- writer.startElement(DIV_ELEM, component);
+ writer.startElement(DIV_ELEM, null);
writer.writeAttribute(CLASS_ATTRIBUTE,
HtmlUtil.concatClasses("rf-ac-itm-lbl-" + state.abbreviation(),
attributeAsString(component, state.headerClass())), null);
writeFacetOrAttr(writer, context, component, "header",
component.getHeaderFacet(state));
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/AccordionItemRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -166,7 +166,7 @@
@Override
protected Class<? extends UIComponent> getComponentClass() {
- return AbstractTogglePanelTitledItem.class;
+ return AbstractAccordionItem.class;
}
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/DivPanelRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/DivPanelRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/DivPanelRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -22,28 +22,26 @@
package org.richfaces.renderkit.html;
-import static org.richfaces.renderkit.HtmlConstants.CLASS_ATTRIBUTE;
-import static org.richfaces.renderkit.HtmlConstants.ID_ATTRIBUTE;
-import static org.richfaces.renderkit.RenderKitUtils.attributes;
-import static org.richfaces.renderkit.RenderKitUtils.renderPassThroughAttributes;
+import org.richfaces.renderkit.HtmlConstants;
+import org.richfaces.renderkit.RenderKitUtils;
+import org.richfaces.renderkit.RendererBase;
-import java.io.IOException;
-import java.util.Map;
-
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+import java.util.Map;
-import org.richfaces.component.AbstractDivPanel;
-import org.richfaces.renderkit.HtmlConstants;
-import org.richfaces.renderkit.RenderKitUtils;
-import org.richfaces.renderkit.RendererBase;
+import static org.richfaces.renderkit.HtmlConstants.CLASS_ATTRIBUTE;
+import static org.richfaces.renderkit.HtmlConstants.ID_ATTRIBUTE;
+import static org.richfaces.renderkit.RenderKitUtils.attributes;
+import static org.richfaces.renderkit.RenderKitUtils.renderPassThroughAttributes;
/**
* @author akolonitsky
*
*/
-public class DivPanelRenderer extends RendererBase {
+public abstract class DivPanelRenderer extends RendererBase {
private static final RenderKitUtils.Attributes PASS_THROUGH_ATTRIBUTES = attributes(
"lang",
@@ -155,10 +153,5 @@
protected Map<String, Object> getScriptObjectOptions(FacesContext context,
UIComponent component) {
return null;
}
-
- @Override
- protected Class<? extends UIComponent> getComponentClass() {
- return AbstractDivPanel.class;
- }
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -86,7 +86,7 @@
context.getPartialViewContext().getRenderIds().add(clientId);
//TODO nick - this should be done on encode, not on decode
- PanelMenuRenderer.addOnCompleteParam(context, clientId);
+ PanelMenuItemRenderer.addOnCompleteParam(context, clientId);
}
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuItemRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuItemRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuItemRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -23,29 +23,27 @@
package org.richfaces.renderkit.html;
-import static org.richfaces.renderkit.HtmlConstants.CLASS_ATTRIBUTE;
-import static org.richfaces.renderkit.HtmlConstants.TBODY_ELEMENT;
-import static org.richfaces.renderkit.HtmlConstants.TD_ELEM;
-import static org.richfaces.renderkit.HtmlConstants.TR_ELEMENT;
-import static org.richfaces.renderkit.html.TogglePanelRenderer.addEventOption;
-import static org.richfaces.renderkit.html.TogglePanelRenderer.getAjaxOptions;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
import org.ajax4jsf.javascript.JSObject;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.component.AbstractPanelMenuItem;
+import org.richfaces.context.ExtendedPartialViewContext;
import org.richfaces.renderkit.HtmlConstants;
import org.richfaces.renderkit.RenderKitUtils;
import org.richfaces.renderkit.util.PanelIcons;
import org.richfaces.renderkit.util.PanelIcons.State;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.richfaces.renderkit.HtmlConstants.*;
+import static org.richfaces.renderkit.html.TogglePanelRenderer.addEventOption;
+import static org.richfaces.renderkit.html.TogglePanelRenderer.getAjaxOptions;
+
/**
* @author akolonitsky
* @since 2010-10-25
@@ -61,6 +59,33 @@
private static final String TOP_CSS_CLASS_PREFIX = "rf-pm-top-itm";
@Override
+ protected void doDecode(FacesContext context, UIComponent component) {
+
+ Map<String, String> requestMap =
+ context.getExternalContext().getRequestParameterMap();
+
+ String compClientId = component.getClientId(context);
+ if (requestMap.get(compClientId) != null) {
+ AbstractPanelMenuItem panelItem = (AbstractPanelMenuItem) component;
+ new ActionEvent(panelItem).queue();
+
+ if (context.getPartialViewContext().isPartialRequest()) {
+
+ //TODO nick - why render item by default?
+
context.getPartialViewContext().getRenderIds().add(panelItem.getClientId(context));
+
+ //TODO nick - this should be done on encode, not on decode
+ addOnCompleteParam(context, panelItem.getClientId(context));
+ }
+ }
+ }
+
+ protected static void addOnCompleteParam(FacesContext context, String itemId) {
+ ExtendedPartialViewContext.getInstance(context).appendOncomplete(new
StringBuilder()
+
.append("RichFaces.$('").append(itemId).append("').onCompleteHandler();").toString());
+ }
+
+ @Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
super.doEncodeBegin(writer, context, component);
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -26,8 +26,6 @@
import org.ajax4jsf.javascript.JSObject;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.component.AbstractPanelMenu;
-import org.richfaces.component.AbstractPanelMenuItem;
-import org.richfaces.context.ExtendedPartialViewContext;
import org.richfaces.renderkit.HtmlConstants;
import javax.faces.application.ResourceDependencies;
@@ -35,7 +33,6 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import javax.faces.event.ActionEvent;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -71,31 +68,8 @@
if (newValue != null) {
panelMenu.setSubmittedActiveItem(newValue);
}
-
- //TODO nick - I suggest to get this code moved to item renderer
- String compClientId = component.getClientId(context);
- if (requestMap.get(compClientId) != null) {
- AbstractPanelMenuItem panelItem = panelMenu.getItem(newValue);
- if (panelItem != null) {
- new ActionEvent(panelItem).queue();
-
- if (context.getPartialViewContext().isPartialRequest()) {
-
- //TODO nick - why render item by default?
-
context.getPartialViewContext().getRenderIds().add(panelItem.getClientId(context));
-
- //TODO nick - this should be done on encode, not on decode
- addOnCompleteParam(context, panelItem.getClientId(context));
- }
- }
- }
}
- protected static void addOnCompleteParam(FacesContext context, String itemId) {
- ExtendedPartialViewContext.getInstance(context).appendOncomplete(new
StringBuilder()
-
.append("RichFaces.$('").append(itemId).append("').onCompleteHandler();").toString());
- }
-
@Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
super.doEncodeBegin(writer, context, component);
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -46,11 +46,9 @@
import org.ajax4jsf.javascript.JSObject;
import org.richfaces.cdk.annotations.JsfRenderer;
-import org.richfaces.component.AbstractTabPanel;
-import org.richfaces.component.AbstractTogglePanel;
-import org.richfaces.component.AbstractTogglePanelItem;
-import org.richfaces.component.AbstractTogglePanelTitledItem;
+import org.richfaces.component.*;
import org.richfaces.component.util.HtmlUtil;
+import org.richfaces.context.ExtendedPartialViewContext;
import org.richfaces.renderkit.HtmlConstants;
import org.richfaces.renderkit.RenderKitUtils;
@@ -82,6 +80,42 @@
private static final String STYLE = STYLE_ATTRIBUTE;
private static final String CLASS = CLASS_ATTRIBUTE;
+// @Override
+// protected void doDecode(FacesContext context, UIComponent component) {
+// AbstractTogglePanel panel = (AbstractTogglePanel) component;
+//
+// Map<String, String> requestMap =
+// context.getExternalContext().getRequestParameterMap();
+//
+// // Don't overwrite the value unless you have to!
+// String newValue = requestMap.get(getValueRequestParamName(context,
component));
+// if (newValue != null) {
+// panel.setSubmittedActiveItem(newValue);
+// }
+//
+// String tabClientId = component.getClientId(context);
+// if (requestMap.get(tabClientId) != null) {
+// new ActionEvent(component).queue();
+//
+// if (context.getPartialViewContext().isPartialRequest()) {
+// //TODO nick - why render item by default?
+// context.getPartialViewContext().getRenderIds().add(tabClientId);
+//
+// //TODO nick - this should be done on encode, not on decode
+// AbstractTab tab = (AbstractTab) component;
+// addOnCompleteParam(context, tab.getName(),
tab.getTabPanel().getClientId(context));
+// }
+// }
+// }
+
+ protected static void addOnCompleteParam(FacesContext context, String newValue,
String panelId) {
+ StringBuilder onComplete = new StringBuilder();
+ onComplete.append("RichFaces.$('").append(panelId)
+
.append("').onCompleteHandler('").append(newValue).append("');");
+
+
ExtendedPartialViewContext.getInstance(context).appendOncomplete(onComplete.toString());
+ }
+
@Override
protected void doEncodeBegin(ResponseWriter w, FacesContext context, UIComponent
component) throws IOException {
super.doEncodeBegin(w, context, component);
@@ -108,8 +142,8 @@
writeTopTabFirstSpacer(w, comp);
- for (AbstractTogglePanelItem item : ((AbstractTogglePanel)
comp).getRenderedItems()) {
- AbstractTogglePanelTitledItem tab = (AbstractTogglePanelTitledItem) item;
+ for (AbstractTogglePanelItemInterface item : ((AbstractTogglePanel)
comp).getRenderedItems()) {
+ AbstractTab tab = (AbstractTab) item;
writeTopTabHeader(context, w, tab);
writeTopTabSpacer(w, comp);
}
@@ -137,7 +171,7 @@
return HtmlUtil.concatClasses("rf-tbp", attributeAsString(component,
"styleClass"));
}
- private void writeTopTabHeader(FacesContext context, ResponseWriter writer,
AbstractTogglePanelTitledItem tab) throws IOException {
+ private void writeTopTabHeader(FacesContext context, ResponseWriter writer,
AbstractTab tab) throws IOException {
boolean isActive = tab.isActive();
boolean isDisabled = tab.isDisabled();
@@ -147,7 +181,7 @@
}
- private void encodeTabHeader(FacesContext context, AbstractTogglePanelTitledItem tab,
ResponseWriter writer,
+ private void encodeTabHeader(FacesContext context, AbstractTab tab, ResponseWriter
writer,
AbstractTogglePanelTitledItem.HeaderStates state, Boolean
isDisplay) throws IOException {
Modified: trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -22,24 +22,21 @@
package org.richfaces.renderkit.html;
-import static org.richfaces.renderkit.HtmlConstants.CLASS_ATTRIBUTE;
-import static org.richfaces.renderkit.HtmlConstants.DIV_ELEM;
-import static org.richfaces.renderkit.HtmlConstants.ID_ATTRIBUTE;
+import org.ajax4jsf.javascript.JSObject;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.component.AbstractTab;
+import org.richfaces.component.AbstractTogglePanelItemInterface;
+import org.richfaces.renderkit.HtmlConstants;
-import java.io.IOException;
-import java.util.Map;
-
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+import java.util.Map;
-import org.ajax4jsf.javascript.JSObject;
-import org.richfaces.cdk.annotations.JsfRenderer;
-import org.richfaces.component.AbstractTab;
-import org.richfaces.component.AbstractTogglePanelTitledItem;
-import org.richfaces.renderkit.HtmlConstants;
+import static org.richfaces.renderkit.HtmlConstants.*;
/**
* @author akolonitsky
@@ -76,7 +73,7 @@
AbstractTab tab = (AbstractTab) component;
- if (!tab.isDisabled()) {
+ if (tab.shouldProcess() && !tab.isDisabled()) {
super.doEncodeChildren(writer, context, tab);
}
}
@@ -122,15 +119,15 @@
protected Map<String, Object> getScriptObjectOptions(FacesContext context,
UIComponent component) {
Map<String, Object> res = super.getScriptObjectOptions(context,
component);
res.put("disabled", ((AbstractTab) component).isDisabled());
- res.put("enter", ((AbstractTab) component).getOnenter());
- res.put("leave", ((AbstractTab) component).getOnleave());
+ res.put("enter", ((AbstractTogglePanelItemInterface)
component).getOnenter());
+ res.put("leave", ((AbstractTogglePanelItemInterface)
component).getOnleave());
return res;
}
@Override
protected Class<? extends UIComponent> getComponentClass() {
- return AbstractTogglePanelTitledItem.class;
+ return AbstractTab.class;
}
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelItemRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelItemRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelItemRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -22,22 +22,22 @@
package org.richfaces.renderkit.html;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
+import org.ajax4jsf.javascript.JSObject;
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.component.AbstractTogglePanel;
+import org.richfaces.component.AbstractTogglePanelItem;
+import org.richfaces.component.AbstractTogglePanelItemInterface;
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
-import org.ajax4jsf.javascript.JSObject;
-import org.richfaces.cdk.annotations.JsfRenderer;
-import org.richfaces.component.AbstractTogglePanel;
-import org.richfaces.component.AbstractTogglePanelItem;
-import org.richfaces.component.SwitchType;
-import org.richfaces.component.util.HtmlUtil;
+import static org.richfaces.renderkit.HtmlConstants.*;
/**
* @author akolonitsky
@@ -57,15 +57,15 @@
private static final String ENTER = "enter";
private final boolean hideInactiveItems;
-
+
public TogglePanelItemRenderer() {
this(true);
}
-
+
protected TogglePanelItemRenderer(boolean hideInactiveItems) {
this.hideInactiveItems = hideInactiveItems;
}
-
+
@Override
protected String getStyleClass(UIComponent component) {
return concatClasses("rf-tgp-itm", attributeAsString(component,
"styleClass"));
@@ -79,16 +79,15 @@
@Override
protected Map<String, Object> getScriptObjectOptions(FacesContext context,
UIComponent component) {
- AbstractTogglePanelItem panelItem = (AbstractTogglePanelItem) component;
+ AbstractTogglePanelItemInterface panelItem = (AbstractTogglePanelItemInterface)
component;
Map<String, Object> options = new HashMap<String, Object>();
options.put("name", panelItem.getName());
- options.put("togglePanelId",
panelItem.getParent().getClientId(context));
+ options.put("togglePanelId",
component.getParent().getClientId(context));
options.put("switchMode", panelItem.getSwitchType());
- AbstractTogglePanelItem item = (AbstractTogglePanelItem) component;
- AbstractTogglePanel panel = item.getParentPanel();
- options.put("index", panel.getChildIndex(item.getName()));
+ AbstractTogglePanel panel = panelItem.getParentPanel();
+ options.put("index", panel.getChildIndex(panelItem.getName()));
TogglePanelRenderer.addEventOption(context, component, options, LEAVE);
TogglePanelRenderer.addEventOption(context, component, options, ENTER);
@@ -106,27 +105,21 @@
return true;
}
- protected void encodePlaceHolderWithJs(FacesContext context, AbstractTogglePanelItem
item) throws IOException {
+ protected void encodePlaceHolderWithJs(FacesContext context, UIComponent item) throws
IOException {
ResponseWriter writer = context.getResponseWriter();
- writer.startElement("div", null);
- writer.writeAttribute("id", item.getClientId(context), null);
- writer.writeAttribute("style", "display:none;", null);
+ writer.startElement(DIV_ELEM, null);
+ writer.writeAttribute(ID_ATTRIBUTE, item.getClientId(context), null);
+ writer.writeAttribute(STYLE_ATTRIBUTE, "display:none;", null);
writeJavaScript(writer, context, item);
- writer.endElement("div");
+ writer.endElement(DIV_ELEM);
}
- private boolean shouldEncodeItem(FacesContext context, AbstractTogglePanelItem item)
{
- return item.isActive() || item.getSwitchType() == SwitchType.client;
- }
-
@Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
- AbstractTogglePanelItem item = (AbstractTogglePanelItem) component;
-
- if (shouldEncodeItem(context, item)) {
+ if (((AbstractTogglePanelItemInterface) component).shouldProcess()) {
doEncodeItemBegin(writer, context, component);
}
}
@@ -135,29 +128,25 @@
protected void doEncodeChildren(ResponseWriter writer, FacesContext context,
UIComponent component)
throws IOException {
- AbstractTogglePanelItem item = (AbstractTogglePanelItem) component;
-
- if (shouldEncodeItem(context, item)) {
+ if (((AbstractTogglePanelItemInterface) component).shouldProcess()) {
renderChildren(context, component);
}
}
@Override
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
- AbstractTogglePanelItem item = (AbstractTogglePanelItem) component;
-
- if (shouldEncodeItem(context, item)) {
+ if (((AbstractTogglePanelItemInterface) component).shouldProcess()) {
doEncodeItemEnd(writer, context, component);
} else {
- encodePlaceHolderWithJs(context, item);
+ encodePlaceHolderWithJs(context, component);
}
}
@Override
protected String getStyle(UIComponent component) {
String attributeStyle = super.getStyle(component);
- if (hideInactiveItems && !((AbstractTogglePanelItem)
component).isActive()) {
- return HtmlUtil.concatStyles(attributeStyle, "display: none");
+ if (hideInactiveItems && !((AbstractTogglePanelItemInterface)
component).isActive()) {
+ return concatStyles(attributeStyle, "display: none");
} else {
return attributeStyle;
}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TogglePanelRenderer.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -22,22 +22,12 @@
package org.richfaces.renderkit.html;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.faces.application.ResourceDependencies;
-import javax.faces.application.ResourceDependency;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSObject;
import org.ajax4jsf.javascript.JSReference;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.component.AbstractTogglePanel;
-import org.richfaces.component.AbstractTogglePanelItem;
+import org.richfaces.component.AbstractTogglePanelItemInterface;
import org.richfaces.component.util.HtmlUtil;
import org.richfaces.context.ExtendedPartialViewContext;
import org.richfaces.renderkit.AjaxOptions;
@@ -46,16 +36,25 @@
import org.richfaces.renderkit.util.FormUtil;
import org.richfaces.renderkit.util.HandlersChain;
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @author akolonitsky
*/
@ResourceDependencies({
- @ResourceDependency(library = "javax.faces", name = "jsf.js"),
- @ResourceDependency(name = "jquery.js"),
- @ResourceDependency(name = "richfaces.js"),
- @ResourceDependency(name = "richfaces-event.js"),
- @ResourceDependency(name = "richfaces-base-component.js"),
- @ResourceDependency(library = "org.richfaces", name =
"togglePanel.js") })
+ @ResourceDependency(library = "javax.faces", name =
"jsf.js"),
+ @ResourceDependency(name = "jquery.js"),
+ @ResourceDependency(name = "richfaces.js"),
+ @ResourceDependency(name = "richfaces-event.js"),
+ @ResourceDependency(name = "richfaces-base-component.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"togglePanel.js")})
@JsfRenderer(type = "org.richfaces.TogglePanelRenderer", family =
AbstractTogglePanel.COMPONENT_FAMILY)
public class TogglePanelRenderer extends DivPanelRenderer {
@@ -68,9 +67,9 @@
@Override
protected void doDecode(FacesContext context, UIComponent component) {
AbstractTogglePanel panel = (AbstractTogglePanel) component;
-
+
Map<String, String> requestMap =
- context.getExternalContext().getRequestParameterMap();
+ context.getExternalContext().getRequestParameterMap();
// Don't overwrite the value unless you have to!
String newValue = requestMap.get(getValueRequestParamName(context, component));
@@ -79,22 +78,22 @@
}
String compClientId = component.getClientId(context);
- String clientId = requestMap.get(compClientId);
- if (clientId != null && clientId.equals(compClientId)) {
- AbstractTogglePanelItem panelItem = panel.getItem(newValue);
- if (panelItem != null) {
-
context.getPartialViewContext().getRenderIds().add(panelItem.getClientId(context));
-
- //TODO nick - this should be done on encode, not on decode
- addOnCompleteParam(context, newValue, panel.getClientId(context));
- }
+// String clientId = requestMap.get(compClientId);
+// if (clientId != null && clientId.equals(compClientId)) {
+ AbstractTogglePanelItemInterface panelItem = panel.getItem(newValue);
+ if (panelItem != null) {
+ context.getPartialViewContext().getRenderIds().add(((UIComponent)
panelItem).getClientId(context));
+
+ //TODO nick - this should be done on encode, not on decode
+ addOnCompleteParam(context, newValue, panel.getClientId(context));
}
+// }
}
protected static void addOnCompleteParam(FacesContext context, String newValue,
String panelId) {
StringBuilder onComplete = new StringBuilder();
onComplete.append("RichFaces.$('").append(panelId)
-
.append("').onCompleteHandler('").append(newValue).append("');");
+
.append("').onCompleteHandler('").append(newValue).append("');");
ExtendedPartialViewContext.getInstance(context).appendOncomplete(onComplete.toString());
}
@@ -140,7 +139,7 @@
@Override
protected JSObject getScriptObject(FacesContext context, UIComponent component) {
return new JSObject("RichFaces.ui.TogglePanel",
- component.getClientId(context), getScriptObjectOptions(context, component));
+ component.getClientId(context), getScriptObjectOptions(context,
component));
}
@Override
@@ -159,7 +158,7 @@
}
public static void addEventOption(FacesContext context, UIComponent component,
Map<String, Object> options,
- String eventName) {
+ String eventName) {
HandlersChain handlersChain = new HandlersChain(context, component);
handlersChain.addInlineHandlerFromAttribute(ON + eventName);
@@ -169,7 +168,7 @@
String handler = handlersChain.toScript();
if (handler != null) {
options.put(ON + eventName,
- new JSFunctionDefinition(JSReference.EVENT).addToBody(handler));
+ new JSFunctionDefinition(JSReference.EVENT).addToBody(handler));
}
}
Modified:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuGroup.js
===================================================================
---
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuGroup.js 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuGroup.js 2011-02-04
12:33:53 UTC (rev 21448)
@@ -129,6 +129,7 @@
var menuGroup = this;
if (!this.options.selectable) {
+
//TODO nick - this can be replaced by jQuery.delegate on menu itself
if (this.options.expandEvent == this.options.collapseEvent) {
this.__header().bind(this.options.expandEvent, function () {
Modified:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuItem.js
===================================================================
---
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuItem.js 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenuItem.js 2011-02-04
12:33:53 UTC (rev 21448)
@@ -78,7 +78,7 @@
execAjax : function (item) {
var oldItem = item.__changeState();
//TODO nick - check for interaction with queue
- rf.ajax(item.__panelMenu().id, null, $.extend({},
item.options["ajax"], {}));
+ rf.ajax(item.id, null, $.extend({}, item.options["ajax"], {}));
item.__restoreState(oldItem);
return true;
Modified:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.js
===================================================================
---
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.js 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.js 2011-02-04
12:33:53 UTC (rev 21448)
@@ -24,6 +24,110 @@
rf.ui = rf.ui || {};
+ var ITEMS_SWITCHER = {
+
+ /**
+ * @param {TogglePanelItem} oldPanel
+ * @param {TogglePanelItem} newPanel
+ *
+ * @return {void}
+ * */
+ exec : function (oldPanel, newPanel) {
+ if (newPanel.switchMode == "server") {
+ return this.execServer(oldPanel, newPanel);
+ } else if (newPanel.switchMode == "ajax") {
+ return this.execAjax(oldPanel, newPanel);
+ } else if (newPanel.switchMode == "client") {
+ return this.execClient(oldPanel, newPanel);
+ } else {
+ rf.log.error("SwitchItems.exec : unknown switchMode (" +
newPanel.switchMode + ")");
+ }
+ },
+
+ /**
+ * @protected
+ * @param {TogglePanelItem} oldPanel
+ * @param {TogglePanelItem} newPanel
+ *
+ * @return {Boolean} false
+ * */
+ execServer : function (oldPanel, newPanel) {
+ if (oldPanel) {
+ var continueProcess = oldPanel.__leave();
+ if (!continueProcess) {
+ return false;
+ }
+ }
+
+ this.__setActiveItem(newPanel);
+
+ rf.submitForm(this.__getParentForm(newPanel));
+
+ return false;
+ },
+
+ /**
+ * @protected
+ * @param {TogglePanelItem} oldPanel
+ * @param {TogglePanelItem} newPanel
+ *
+ * @return {Boolean} false
+ * */
+ execAjax : function (oldPanel, newPanel) {
+ var options = $.extend({},
newPanel.getTogglePanel().options["ajax"], {});
+
+ this.__setActiveItem(newPanel);
+ rf.ajax(newPanel.id, null, options);
+
+ if (oldPanel) {
+ this.__setActiveItem(oldPanel);
+ }
+
+ return false;
+ },
+
+ /**
+ * @protected
+ * @param {TogglePanelItem} oldPanel
+ * @param {TogglePanelItem} newPanel
+ *
+ * @return {undefined}
+ * - false - if process has been terminated
+ * - true - in other cases
+ * */
+ execClient : function (oldPanel, newPanel) {
+ if (oldPanel) {
+ var continueProcess = oldPanel.__leave();
+ if (!continueProcess) {
+ return false;
+ }
+ }
+
+ this.__setActiveItem(newPanel);
+
+ newPanel.__enter();
+ newPanel.getTogglePanel().__fireItemChange(oldPanel, newPanel);
+
+ return true;
+ },
+
+ /**
+ * @private
+ * */
+ __getParentForm : function (comp) {
+ return $(rf.getDomElement(comp.id)).parents('form:first');
+ },
+
+ /**
+ * @private
+ * */
+ __setActiveItem : function (item) {
+ rf.getDomElement(item.togglePanelId + "-value").value =
item.getName(); // todo it is should be toogle panel method
+ item.getTogglePanel().activeItem = item.getName();
+ }
+ };
+
+
rf.ui.TabPanel = rf.ui.TogglePanel.extendClass({
// class name
name:"TabPanel",
@@ -41,6 +145,11 @@
this.items = [];
this.isKeepHeight = options["isKeepHeight"] || false
+ },
+
+ __itemsSwitcher : function () {
+ return ITEMS_SWITCHER;
}
+
});
})(jQuery, RichFaces);
Modified:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/togglePanel.js
===================================================================
---
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/togglePanel.js 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/togglePanel.js 2011-02-04
12:33:53 UTC (rev 21448)
@@ -201,7 +201,7 @@
return false
}
- return new SwitchItems(this).exec(oldPanel, newPanel);
+ return this.__itemsSwitcher().exec(oldPanel, newPanel);
},
/**
@@ -233,7 +233,7 @@
var newItem = this.__getItemByName(newItemName);
// Don't do like this and remove it ASAP
- new SwitchItems(this).execClient(oldItem, newItem);
+ this.__itemsSwitcher().execClient(oldItem, newItem);
},
/**
@@ -320,6 +320,10 @@
/********************* Methods *************************/
+ __itemsSwitcher : function () {
+ return new SwitchItems(this);
+ },
+
__ITEMS_META_NAMES : (function () {
function goFrom (comp, ind, step) {
var res = ind;
Modified:
trunk/ui/output/ui/src/test/java/org/richfaces/component/AbstractAccordionTest.java
===================================================================
---
trunk/ui/output/ui/src/test/java/org/richfaces/component/AbstractAccordionTest.java 2011-02-04
11:28:10 UTC (rev 21447)
+++
trunk/ui/output/ui/src/test/java/org/richfaces/component/AbstractAccordionTest.java 2011-02-04
12:33:53 UTC (rev 21448)
@@ -43,9 +43,9 @@
private static final String ITEM3 = "item3";
private AbstractAccordion accordion;
- private AbstractTogglePanelTitledItem item1;
- private AbstractTogglePanelTitledItem item2;
- private AbstractTogglePanelTitledItem item3;
+ private AbstractAccordionItem item1;
+ private AbstractAccordionItem item2;
+ private AbstractAccordionItem item3;
@Before
public void setUp () {
@@ -72,8 +72,8 @@
Assert.assertEquals(ITEM2, accordion.getActiveItem());
}
- private static AbstractTogglePanelTitledItem createItem(String name) {
- AbstractTogglePanelTitledItem item =
createNiceMock(AbstractTogglePanelTitledItem.class); //new
AbstractTogglePanelTitledItem();
+ private static AbstractAccordionItem createItem(String name) {
+ AbstractAccordionItem item = createNiceMock(AbstractAccordionItem.class);
expect(item.getName()).andReturn(name);
return item;