Author: Alex.Kolonitsky
Date: 2010-09-12 12:53:45 -0400 (Sun, 12 Sep 2010)
New Revision: 19160
Added:
trunk/ui/output/api/src/main/java/org/richfaces/HeaderAlignment.java
trunk/ui/output/api/src/main/java/org/richfaces/HeaderPosition.java
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/actlefttab_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/actrighttab_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab2_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab2_bottom_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab_bottom_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/close.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/close_act.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/ico.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/lefttab_bg.gif
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.ecss
Modified:
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java
trunk/examples/output-demo/src/main/webapp/WEB-INF/faces-config.xml
trunk/examples/output-demo/src/main/webapp/templates/template.xhtml
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java
trunk/ui/output/ui/src/main/resources/META-INF/pn.faces-config.xml
trunk/ui/output/ui/src/main/resources/META-INF/pn.taglib.xml
Log:
Tab Panel Renderer
Modified:
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java
===================================================================
---
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java 2010-09-12
09:15:34 UTC (rev 19159)
+++
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabPanelRenderer.java 2010-09-12
16:53:45 UTC (rev 19160)
@@ -23,6 +23,10 @@
package org.richfaces.renderkit.html;
import org.richfaces.component.AbstractTabPanel;
+import org.richfaces.component.AbstractTogglePanelTitledItem;
+import org.richfaces.component.html.HtmlTab;
+import org.richfaces.component.util.HtmlUtil;
+import org.richfaces.renderkit.RenderKitUtils;
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
@@ -31,6 +35,9 @@
import javax.faces.context.ResponseWriter;
import java.io.IOException;
+import static org.richfaces.component.util.HtmlUtil.concatClasses;
+import static org.richfaces.renderkit.RenderKitUtils.renderPassThroughAttributes;
+
/**
* @author akolonitsky
* @since 2010-08-24
@@ -40,17 +47,163 @@
@ResourceDependency(name = "jquery.js"),
@ResourceDependency(name = "richfaces.js"),
@ResourceDependency(name = "richfaces-base-component.js"),
- @ResourceDependency(name = "script/TabPanel.js") })
+ @ResourceDependency(library = "org.richfaces", name =
"tabPanel.ecss"),
+ @ResourceDependency(library = "org.richfaces", name =
"TogglePanel.js"),
+ @ResourceDependency(library = "org.richfaces", name =
"script/TabPanel.js") })
public class TabPanelRenderer extends TogglePanelRenderer {
+ private static final RenderKitUtils.Attributes HEADER_ATTRIBUTES =
RenderKitUtils.attributes()
+ .generic("style", HtmlTab.PropertyKeys.headerStyle.toString())
+ .generic("onclick", HtmlTab.PropertyKeys.onheaderclick.toString(),
"headerclick")
+ .generic("ondblclick",
HtmlTab.PropertyKeys.onheaderdblclick.toString(), "headerdblclick")
+ .generic("onmousedown",
HtmlTab.PropertyKeys.onheadermousedown.toString(), "headermousedown")
+ .generic("onmousemove",
HtmlTab.PropertyKeys.onheadermousemove.toString(), "headermousemove")
+ .generic("onmouseup", HtmlTab.PropertyKeys.onheadermouseup.toString(),
"headermouseup");
+
+ private static final String DIV = "div";
+ private static final String STYLE = "style";
+ private static final String CLASS = "class";
+
@Override
- protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
- super.doEncodeBegin(writer, context, component);
+ protected void doEncodeBegin(ResponseWriter w, FacesContext context, UIComponent
comp) throws IOException {
+// super.doEncodeBegin(writer, context, component);
+
+ // TODO id, class, user styles :) (inherit form toogle panel)
+ w.startElement(DIV, comp);
+ w.writeAttribute(STYLE, "width: 100%;", null);
+
+ w.startElement(DIV, comp);
+ w.writeAttribute(CLASS, "rftp_toptab_tabline_vis", null);
+
+ w.startElement("table", comp);
+ w.writeAttribute("class", "rftp_toptab_tabs", null);
+ w.startElement("tbody", comp);
+ w.startElement("tr", comp);
+
+ writeTopTabFirstSpacer(w, comp);
+ writeTopTabHeader(w, comp, "Tab name 1", true);
+ writeTopTabSpacer(w, comp);
+ writeTopTabHeader(w, comp, "Tab name 2", false);
+ writeTopTabSpacer(w, comp);
+ writeTopTabLastSpacer(w, comp);
+
+ w.endElement("tr");
+ w.endElement("tbody");
+ w.endElement("table");
+
+ writeTopTabsControl(w, comp, "rftp_toptab_scroll_left rftp_hidden",
"«");
+ writeTopTabsControl(w, comp, "rftp_toptab_tabslist rftp_hidden",
"↓");
+ writeTopTabsControl(w, comp, "rftp_toptab_scroll_right rftp_hidden",
"»");
+
+ w.endElement("div");
+
+ w.startElement("div", comp);
+ w.writeAttribute("class", "rftp_toptab_border", null);
+ w.endElement("div");
}
+ private void encodeTabHeader(FacesContext context, UIComponent component,
ResponseWriter writer) throws IOException {
+
+ writer.startElement("div", component);
+ writer.writeAttribute("class", concatClasses("rf-tab-hdr",
attributeAsString(component, HtmlTab.PropertyKeys.headerClass)), null);
+ writer.writeAttribute("id", component.getClientId() +
":header", null);
+ renderPassThroughAttributes(context, component, HEADER_ATTRIBUTES);
+
+ AbstractTogglePanelTitledItem titledItem = (AbstractTogglePanelTitledItem)
component;
+ boolean isActive = titledItem.isActive();
+ boolean isDisabled = titledItem.isDisabled();
+ encodeTabHeader(context, titledItem, writer,
AbstractTogglePanelTitledItem.HeaderStates.inactive, !isActive && !isDisabled);
+ encodeTabHeader(context, titledItem, writer,
AbstractTogglePanelTitledItem.HeaderStates.active, isActive && !isDisabled);
+ encodeTabHeader(context, titledItem, writer,
AbstractTogglePanelTitledItem.HeaderStates.disable, isDisabled);
+
+ writer.endElement("div");
+ }
+
+ private void encodeTabHeader(FacesContext facesContext, AbstractTogglePanelTitledItem
component, ResponseWriter writer,
+ AbstractTogglePanelTitledItem.HeaderStates state, Boolean
isDisplay) throws IOException {
+
+ writer.startElement("div", component);
+
+ if (!isDisplay) {
+ writer.writeAttribute("style", "display : none", null);
+ }
+
+ String name = "headerClass" + capitalize(state.toString());
+ writer.writeAttribute("class", concatClasses("rf-tab-hdr-" +
state.abbreviation(), attributeAsString(component, name)), null);
+
+ UIComponent headerFacet = component.getHeaderFacet(state);
+ if (headerFacet != null && headerFacet.isRendered()) {
+ headerFacet.encodeAll(facesContext);
+ } else {
+ Object headerText = component.getAttributes().get("header");
+ if (headerText != null && !headerText.equals("")) {
+ writer.writeText(headerText, null);
+ }
+ }
+
+ writer.endElement("div");
+ }
+
+
+
+ private void writeTopTabsControl(ResponseWriter w, UIComponent comp, String styles,
String text) throws IOException {
+ w.startElement("div", comp);
+ w.writeAttribute("class", styles, null);
+ w.writeText(text, null);
+ w.endElement("div");
+ }
+
+ private void writeTopTabHeader(ResponseWriter w, UIComponent comp, String text,
boolean active) throws IOException {
+ w.startElement("td", comp);
+ w.writeAttribute("class",
HtmlUtil.concatClasses("rftp_toptab", active ? "rftp_active_top" :
""), null);
+ w.startElement("div", comp);
+ w.writeAttribute("style", "white-space: nowrap;", null);
+
+ writeTopTabIcon(w, comp, "rftp_icon", "ico.gif");
+
+ w.startElement("span", comp);
+ w.writeAttribute("class", "rftp_label", null);
+ w.writeText(text, null);
+ w.endElement("span");
+
+ writeTopTabIcon(w, comp, "rftp_close", "close_act.gif");
+
+ w.endElement("div");
+ w.endElement("td");
+ }
+
+ private void writeTopTabIcon(ResponseWriter w, UIComponent comp, String styleClass,
String image) throws IOException {
+ w.startElement("img", comp);
+ w.writeAttribute("width", 16, null);
+ w.writeAttribute("height", 16, null);
+ w.writeAttribute("class", styleClass, null);
+ w.writeAttribute("src", image, null);
+ }
+
+ private void writeTopTabFirstSpacer(ResponseWriter w, UIComponent comp) throws
IOException {
+ writeTopTabSpacer_(w, comp, "padding-left: 5px;",
"rftp_toptab_spacer");
+ }
+
+ private void writeTopTabSpacer(ResponseWriter w, UIComponent comp) throws IOException
{
+ writeTopTabSpacer_(w, comp, "", "rftp_toptab_spacer
rftp_horizonttab_tabspacer_width");
+ }
+
+ private void writeTopTabLastSpacer(ResponseWriter w, UIComponent comp) throws
IOException {
+ writeTopTabSpacer_(w, comp, "padding-right: 5px; width: 100%;",
"rftp_toptab_spacer");
+ }
+
+ private void writeTopTabSpacer_(ResponseWriter w, UIComponent comp, String style,
String classStyle) throws IOException {
+ w.startElement("td", comp);
+ w.writeAttribute(STYLE, style, null);
+ w.writeAttribute(CLASS, classStyle, null);
+ w.startElement("br", comp);
+ w.endElement("td");
+ }
+
@Override
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
- super.doEncodeEnd(writer, context, component);
+ writer.endElement("div");
+// super.doEncodeEnd(writer, context, component);
}
@Override
Modified:
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java
===================================================================
---
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java 2010-09-12
09:15:34 UTC (rev 19159)
+++
branches/RF-7944/ui/output/ui/src/main/java/org/richfaces/renderkit/html/TabRenderer.java 2010-09-12
16:53:45 UTC (rev 19160)
@@ -22,7 +22,9 @@
package org.richfaces.renderkit.html;
+import org.ajax4jsf.javascript.JSObject;
import org.richfaces.component.AbstractTogglePanelTitledItem;
+import org.richfaces.renderkit.HtmlConstants;
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
@@ -30,7 +32,10 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import java.io.IOException;
+import java.util.Map;
+import static org.richfaces.component.util.HtmlUtil.concatClasses;
+
/**
* @author akolonitsky
* @since 2010-08-24
@@ -40,20 +45,71 @@
@ResourceDependency(name = "jquery.js"),
@ResourceDependency(name = "richfaces.js"),
@ResourceDependency(name = "richfaces-base-component.js"),
- @ResourceDependency(name = "script/Tab.js") })
+ @ResourceDependency(library = "org.richfaces", name =
"script/Tab.js") })
public class TabRenderer extends TogglePanelItemRenderer {
@Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
super.doEncodeBegin(writer, context, component);
+
+ encodeContentBegin(component, writer);
}
@Override
+ protected String getStyleClass(UIComponent component) {
+ return concatClasses("rf-tab", attributeAsString(component,
"styleClass"));
+ }
+
+ @Override
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
+ encodeContentEnd(component, writer);
+
super.doEncodeEnd(writer, context, component);
}
@Override
+ protected void writeJavaScript(ResponseWriter writer, FacesContext context,
UIComponent component) throws IOException {
+ Object script = getScriptObject(context, component);
+ if (script == null) {
+ return;
+ }
+
+ writer.startElement(HtmlConstants.SCRIPT_ELEM, component);
+ writer.writeAttribute(HtmlConstants.TYPE_ATTR, "text/javascript",
"type");
+ writer.writeText(script, null);
+ writer.endElement(HtmlConstants.SCRIPT_ELEM);
+ }
+
+ private void encodeContentBegin(UIComponent component, ResponseWriter writer) throws
IOException {
+ writer.startElement("div", component);
+ writer.writeAttribute("class", concatClasses("rf-tab-cnt",
attributeAsString(component, "contentClass")), null);
+ writer.writeAttribute("id", component.getClientId() +
":content", null);
+
+ AbstractTogglePanelTitledItem item = (AbstractTogglePanelTitledItem) component;
+ if (!item.isActive() || item.isDisabled()) {
+ writer.writeAttribute("style", "display: none", null);
+ }
+ }
+
+ private void encodeContentEnd(UIComponent component, ResponseWriter responseWriter)
throws IOException {
+ responseWriter.endElement("div");
+ }
+
+ @Override
+ protected JSObject getScriptObject(FacesContext context, UIComponent component) {
+ return new JSObject("RichFaces.ui.Tab", component.getClientId(),
+ getScriptObjectOptions(context, component));
+ }
+
+ @Override
+ protected Map<String, Object> getScriptObjectOptions(FacesContext context,
UIComponent component) {
+ Map<String, Object> res = super.getScriptObjectOptions(context,
component);
+ res.put("disabled", ((AbstractTogglePanelTitledItem)
component).isDisabled());
+
+ return res;
+ }
+
+ @Override
protected Class<? extends UIComponent> getComponentClass() {
return AbstractTogglePanelTitledItem.class;
}
Modified: trunk/examples/output-demo/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/WEB-INF/faces-config.xml 2010-09-12
09:15:34 UTC (rev 19159)
+++ trunk/examples/output-demo/src/main/webapp/WEB-INF/faces-config.xml 2010-09-12
16:53:45 UTC (rev 19160)
@@ -38,6 +38,10 @@
<from-outcome>collapsiblePanel</from-outcome>
<to-view-id>/examples/collapsiblePanel.xhtml</to-view-id>
</navigation-case>
+ <navigation-case>
+ <from-outcome>tabPanel</from-outcome>
+ <to-view-id>/examples/tabPanel.xhtml</to-view-id>
+ </navigation-case>
<!-- QUnit -->
<navigation-case>
@@ -60,5 +64,9 @@
<from-outcome>qunit/collapsiblePanel</from-outcome>
<to-view-id>/qunit/collapsiblePanel.xhtml</to-view-id>
</navigation-case>
+ <navigation-case>
+ <from-outcome>qunit/tabPanel</from-outcome>
+ <to-view-id>/qunit/tabPanel.xhtml</to-view-id>
+ </navigation-case>
</navigation-rule>
</faces-config>
Modified: trunk/examples/output-demo/src/main/webapp/templates/template.xhtml
===================================================================
--- trunk/examples/output-demo/src/main/webapp/templates/template.xhtml 2010-09-12
09:15:34 UTC (rev 19159)
+++ trunk/examples/output-demo/src/main/webapp/templates/template.xhtml 2010-09-12
16:53:45 UTC (rev 19160)
@@ -204,6 +204,12 @@
<li><h:commandLink value="Collapsible
Panel" action="collapsiblePanel" /></li>
</ul>
</li>
+ <li>
+ <p>Tab Panel</p>
+ <ul>
+ <li><h:commandLink value="Tab
Panel" action="tabPanel" /></li>
+ </ul>
+ </li>
</ul>
<p>QUnit</p>
<ul>
@@ -212,6 +218,7 @@
<li><h:commandLink value="accordion"
action="qunit/accordion" /></li>
<li><h:commandLink
value="accordionHeaders" action="qunit/accordionHeaders"
/></li>
<li><h:commandLink
value="collapsiblePanel" action="qunit/collapsiblePanel"
/></li>
+ <li><h:commandLink value="tabPanel"
action="qunit/tabPanel" /></li>
</ul>
</h:form>
</td>
Added: trunk/ui/output/api/src/main/java/org/richfaces/HeaderAlignment.java
===================================================================
--- trunk/ui/output/api/src/main/java/org/richfaces/HeaderAlignment.java
(rev 0)
+++ trunk/ui/output/api/src/main/java/org/richfaces/HeaderAlignment.java 2010-09-12
16:53:45 UTC (rev 19160)
@@ -0,0 +1,9 @@
+package org.richfaces;
+
+/**
+ * @author akolonitsky
+ * @since Aug 24, 2010
+ */
+public enum HeaderAlignment {
+ left, center, right, bottom, top
+}
Added: trunk/ui/output/api/src/main/java/org/richfaces/HeaderPosition.java
===================================================================
--- trunk/ui/output/api/src/main/java/org/richfaces/HeaderPosition.java
(rev 0)
+++ trunk/ui/output/api/src/main/java/org/richfaces/HeaderPosition.java 2010-09-12
16:53:45 UTC (rev 19160)
@@ -0,0 +1,9 @@
+package org.richfaces;
+
+/**
+ * @author akolonitsky
+ * @since Aug 24, 2010
+ */
+public enum HeaderPosition {
+ top, left, right, bottom
+}
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java 2010-09-12
09:15:34 UTC (rev 19159)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java 2010-09-12
16:53:45 UTC (rev 19160)
@@ -218,7 +218,7 @@
return null;
}
- public Map<String, Object> getHandledVisualOptions(AbstractPopupPanel panel) {
+ public Map<String, Object> getHandledVisualOptions(AbstractPopupPanel panel) {
String options = panel.getVisualOptions();
Map<String, Object> result;
result = prepareVisualOptions(options, panel);
Modified: trunk/ui/output/ui/src/main/resources/META-INF/pn.faces-config.xml
===================================================================
--- trunk/ui/output/ui/src/main/resources/META-INF/pn.faces-config.xml 2010-09-12 09:15:34
UTC (rev 19159)
+++ trunk/ui/output/ui/src/main/resources/META-INF/pn.faces-config.xml 2010-09-12 16:53:45
UTC (rev 19160)
@@ -11,6 +11,16 @@
</behavior>
<component>
+ <component-type>org.richfaces.TabPanel</component-type>
+
<component-class>org.richfaces.component.html.HtmlTabPanel</component-class>
+ </component>
+
+ <component>
+ <component-type>org.richfaces.Tab</component-type>
+
<component-class>org.richfaces.component.html.HtmlTab</component-class>
+ </component>
+
+ <component>
<component-type>org.richfaces.CollapsiblePanel</component-type>
<component-class>org.richfaces.component.html.HtmlCollapsiblePanel</component-class>
<property>
@@ -683,7 +693,18 @@
<renderer-type>org.richfaces.AccordionItem</renderer-type>
<renderer-class>org.richfaces.renderkit.html.AccordionItemRenderer</renderer-class>
</renderer>
+
<renderer>
+ <component-family>org.richfaces.TabPanel</component-family>
+ <renderer-type>org.richfaces.TabPanel</renderer-type>
+
<renderer-class>org.richfaces.renderkit.html.TabPanelRenderer</renderer-class>
+ </renderer>
+ <renderer>
+
<component-family>org.richfaces.TogglePanelTitledItem</component-family>
+ <renderer-type>org.richfaces.Tab</renderer-type>
+
<renderer-class>org.richfaces.renderkit.html.TabRenderer</renderer-class>
+ </renderer>
+ <renderer>
<component-family>org.richfaces.Panel</component-family>
<renderer-type>org.richfaces.PanelRenderer</renderer-type>
<renderer-class>org.richfaces.renderkit.html.PanelRenderer</renderer-class>
Modified: trunk/ui/output/ui/src/main/resources/META-INF/pn.taglib.xml
===================================================================
--- trunk/ui/output/ui/src/main/resources/META-INF/pn.taglib.xml 2010-09-12 09:15:34 UTC
(rev 19159)
+++ trunk/ui/output/ui/src/main/resources/META-INF/pn.taglib.xml 2010-09-12 16:53:45 UTC
(rev 19160)
@@ -29,6 +29,192 @@
</tag>
<tag>
+ <tag-name>tabPanel</tag-name>
+ <component>
+ <component-type>org.richfaces.TabPanel</component-type>
+ <renderer-type>org.richfaces.TabPanel</renderer-type>
+
+ </component>
+ <attribute>
+ <description></description>
+ <name>cycledSwitching</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>switchType</name>
+ <type>org.richfaces.component.SwitchType</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>activeItem</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>bypassUpdates</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>limitToList</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>data</name>
+ <type>java.lang.Object</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>status</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>execute</name>
+ <type>java.lang.Object</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>render</name>
+ <type>java.lang.Object</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>immediate</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>itemChangeListener</name>
+ <type>javax.el.MethodExpression</type>
+ </attribute>
+ <attribute>
+ <description>Long long text</description>
+ <name>id</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description>binding description</description>
+ <name>binding</name>
+ <type>javax.faces.component.UIComponent</type>
+ </attribute>
+ <attribute>
+ <description>I don't know maybe some thing
strange</description>
+ <name>rendered</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerPosition</name>
+ <type>org.richfaces.HeaderPosition</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerAlignment</name>
+ <type>org.richfaces.HeaderAlignment</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>tabHeaderClassActive</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>tabHeaderClassDisabled</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>tabHeaderClassInactive</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>tabContentClass</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>tabHeaderClass</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onitemchange</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onbeforeitemchange</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>lang</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>title</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>style</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>styleClass</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>dir</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onclick</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>ondblclick</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmousedown</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmousemove</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmouseout</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmouseover</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmouseup</name>
+ <type>java.lang.String</type>
+ </attribute>
+
+ </tag>
+
+
+ <tag>
<tag-name>collapsiblePanel</tag-name>
<component>
<component-type>org.richfaces.CollapsiblePanel</component-type>
@@ -882,6 +1068,176 @@
<name>onmouseup</name>
<type>java.lang.String</type>
</attribute>
+ </tag>
+
+ <tag>
+ <tag-name>tab</tag-name>
+ <component>
+
<component-type>org.richfaces.TogglePanelTitledItem</component-type>
+ <renderer-type>org.richfaces.Tab</renderer-type>
+ </component>
+ <attribute>
+ <description></description>
+ <name>disabled</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>header</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>name</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>switchType</name>
+ <type>org.richfaces.component.SwitchType</type>
+ </attribute>
+ <attribute>
+ <description>Long long text</description>
+ <name>id</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description>binding description</description>
+ <name>binding</name>
+ <type>javax.faces.component.UIComponent</type>
+ </attribute>
+ <attribute>
+ <description>I don't know maybe some thing
strange</description>
+ <name>rendered</name>
+ <type>boolean</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerClassActive</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerClassDisabled</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerClassInactive</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerClass</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>headerStyle</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>contentClass</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onheaderclick</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onheaderdblclick</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onheadermousedown</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onheadermousemove</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onheadermouseup</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onenter</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onleave</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>lang</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>title</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>style</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>styleClass</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>dir</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onclick</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>ondblclick</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmousedown</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmousemove</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmouseout</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmouseover</name>
+ <type>java.lang.String</type>
+ </attribute>
+ <attribute>
+ <description></description>
+ <name>onmouseup</name>
+ <type>java.lang.String</type>
+ </attribute>
</tag>
+
+
</facelet-taglib>
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/actlefttab_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/actlefttab_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/actrighttab_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/actrighttab_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab2_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab2_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab2_bottom_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab2_bottom_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab_bottom_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/acttab_bottom_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/close.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/close_act.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/close_act.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/ico.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/ico.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/lefttab_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/lefttab_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.ecss
===================================================================
--- trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.ecss
(rev 0)
+++
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/tabPanel.ecss 2010-09-12
16:53:45 UTC (rev 19160)
@@ -0,0 +1,78 @@
+*{font-family : verdana /*generalFamilyFont*/}
+.rftp_bottomtab {border : 1px solid #A6A6A6 /*panelBorderColor*/; vertical-align : top;
background : url(#{resource['org.richfaces:tab_bg.gif']})/*gradient - from
generalBackgroundColor to tabBackgroundColor*/ top repeat-x #DAE7F5
/*tabBackgroundColor*/;}
+.rftp_active_bottom {border-top : 0px; font-weight : bold; vertical-align : top;
background : url(#{resource['org.richfaces:acttab_bottom_bg.gif']})/*gradient -
from tabBackgroundColor to generalBackgroundColor*/ top repeat-x #C9DBEF
/*additionalBackgroundColor*/;}
+
+.rftp_bottomtab_tabline_vis {padding-bottom : 2px; overflow : hidden; height : 25px;
white-space : nowrap; position : relative;}
+.rftp_bottomtab_tabs {border : 0px; width : 100%; height : 100%;}
+.rftp_bottomtab_spacer {border-top : 1px solid #A6A6A6 /*panelBorderColor*/;}
+
+.rftp_bottomtab_border {border : 1px solid #A6A6A6 /*panelBorderColor*/; border-bottom :
0px; height : 2px; background : #C9DBEF /*additionalBackgroundColor*/
/*tabBackgroundColor*/;}
+.rftp_bottomtab_content {border : 1px solid #A6A6A6 /*panelBorderColor*/; border-bottom :
0px; font-family : verdana /*generalFamilyFont*/; font-size : 11px /*generalSizeFont*/;
padding : 10px; background : #ffffff /*generalBackgroundColor*/;}
+
+.rftp_bottomtab_scroll_left {background :
url(#{resource['org.richfaces:acttab_bg.gif']})/*gradient - from
tabBackgroundColor to generalBackgroundColor*/ bottom repeat-x #C9DBEF
/*additionalBackgroundColor*/; position : absolute; bottom : 1px; left : 1px; width :
15px; height : 25px; border : 1px solid #A6A6A6 /*panelBorderColor*/; font-weight : bold;
text-align : center; font-family : verdana /*generalFamilyFont*/; font-size : 11px
/*generalSizeFont*/; padding-top : 6px;}
+.rftp_bottomtab_scroll_right {background :
url(#{resource['org.richfaces:acttab_bg.gif']})/*gradient - from
tabBackgroundColor to generalBackgroundColor*/ bottom repeat-x #C9DBEF
/*additionalBackgroundColor*/; position : absolute; bottom : 1px; right : 17px; width :
15px; height : 25px; border : 1px solid #A6A6A6 /*panelBorderColor*/; font-weight : bold;
text-align : center; font-family : verdana /*generalFamilyFont*/; font-size : 11px
/*generalSizeFont*/; padding-top : 6px;}
+.rftp_bottomtab_tabslist {background :
url(#{resource['org.richfaces:acttab_bg.gif']})/*gradient - from
tabBackgroundColor to generalBackgroundColor*/ bottom repeat-x #C9DBEF
/*additionalBackgroundColor*/; position : absolute; bottom : 1px; right : 1px; width :
15px; height : 25px; border : 1px solid #A6A6A6 /*panelBorderColor*/; font-weight : bold;
text-align : center; font-family : verdana /*generalFamilyFont*/; font-size : 14px;
padding-top : 2px;}
+
+
+
+.rftp_toptab {border : 1px solid #A6A6A6 /*panelBorderColor*/; vertical-align : top;
background : url(#{resource['org.richfaces:tab_bg.gif']})/*gradient - from
generalBackgroundColor to tabBackgroundColor*/ top repeat-x #DAE7F5
/*tabBackgroundColor*/;}
+.rftp_active_top {border-bottom : 0px; font-weight : bold; vertical-align : top;
background : url(#{resource['org.richfaces:acttab_bg.gif']})/*gradient - from
tabBackgroundColor to generalBackgroundColor*/ top repeat-x #C9DBEF
/*additionalBackgroundColor*/;}
+
+.rftp_toptab_tabline_vis {padding-top : 2px; overflow : hidden; height : 25px;
white-space : nowrap; position : relative;}
+.rftp_toptab_tabs {border : 0px; width : 100%; height : 100%;}
+.rftp_toptab_spacer {border-bottom : 1px solid #A6A6A6 /*panelBorderColor*/;}
+
+.rftp_horizonttab_tabspacer_width {padding-left : 1px;}
+
+.rftp_icon {position : absolute; top : 4px; left : 4px}
+.rftp_close {position : absolute; top : 4px; right : 4px}
+.rftp_label {white-space : nowrap; font-family : verdana /*generalFamilyFont*/; font-size
: 11px /*generalSizeFont*/;}
+
+.rftp_label_container {position : relative; padding : 5px 37px 0px 22px;}
+
+.rftp_toptab_scroll_left {background :
url(#{resource['org.richfaces:acttab_bg.gif']}) top repeat-x #C9DBEF
/*additionalBackgroundColor*/; position : absolute; top : 1px; left : 1px; width : 15px;
height : 25px; border : 1px solid #A6A6A6 /*panelBorderColor*/; font-weight : bold;
text-align : center; font-family : verdana /*generalFamilyFont*/; font-size : 11px
/*generalSizeFont*/; padding-top : 6px;}
+.rftp_toptab_scroll_right {background :
url(#{resource['org.richfaces:acttab_bg.gif']}) top repeat-x #C9DBEF
/*additionalBackgroundColor*/; position : absolute; top : 1px; right : 17px; width : 15px;
height : 25px; border : 1px solid #A6A6A6 /*panelBorderColor*/; font-weight : bold;
text-align : center; font-family : verdana /*generalFamilyFont*/; font-size : 11px
/*generalSizeFont*/; padding-top : 6px;}
+.rftp_toptab_tabslist {background :
url(#{resource['org.richfaces:acttab_bg.gif']}) top repeat-x #C9DBEF
/*additionalBackgroundColor*/; position : absolute; top : 1px; right : 1px; width : 15px;
height : 25px; border : 1px solid #A6A6A6 /*panelBorderColor*/; font-weight : bold;
text-align : center; font-family : verdana /*generalFamilyFont*/; font-size : 14px;
padding-top : 2px;}
+
+.rftp_toptab_border {border : 1px solid #A6A6A6 /*panelBorderColor*/; border-top : 0px;
height : 2px; background : #C9DBEF /*additionalBackgroundColor*/;}
+.rf-tab-cnt {border : 1px solid #A6A6A6 /*panelBorderColor*/; border-top : 0px;
font-family : verdana /*generalFamilyFont*/; font-size : 11px /*generalSizeFont*/; padding
: 10px; background : #ffffff /*generalBackgroundColor*/;}
+.rftp_hidden {display : none}
+
+
+.rftp_topmultitab_tabline_vis {border-bottom : 0px; padding-top : 2px; white-space :
nowrap; position : relative;}
+.rftp_topmultitab_tabs_first { border : 0px; width : 100%; height : 100%; height : 25px}
+.rftp_topmultitab_tabs { border : 0px; width : 100%; height : 100%; height : 25px;
margin-bottom : -1px;}
+.rftp_topmultitab_spacer {border-bottom : 0px;}
+.rftp_topmultitab_border {border : 1px solid #A6A6A6 /*panelBorderColor*/; border-top :
0px; height : 3px; background : #C9DBEF /*additionalBackgroundColor*/;}
+
+.rftp_multitab_line_1 {width : 17%}
+.rftp_multitab_line_2 {width : 50%}
+
+
+.rftp_bottommultitab_tabline_vis {border : 1px solid #A6A6A6 /*panelBorderColor*/;
background :url(#{resource['org.richfaces:tabline_bg.gif']}) top repeat-x
#EEF4FB; border-top : 0px; padding-bottom : 2px; white-space : nowrap; position :
relative;}
+.rftp_bottommultitab_tabs_first { border : 0px; width : 100%; height : 100%; height :
25px}
+.rftp_bottommultitab_tabs { border : 0px; width : 100%; height : 100%; height : 25px;
margin-top : -1px;}
+.rftp_bottommultitab_spacer {border-top : 0px;}
+.rftp_bottommultitab_border {border : 1px solid #A6A6A6 /*panelBorderColor*/;
border-bottom : 0px; height : 3px; background : #C9DBEF /*additionalBackgroundColor*/;}
+
+
+.rftp_label_vert {white-space : nowrap; font-family : verdana /*generalFamilyFont*/;
font-size : 11px /*generalSizeFont*/; padding : 5px 0px 5px 0px;}
+.rftp_label_container_vert {position : relative; padding : 0px 37px 0px 22px;}
+
+
+
+.rftp_lefttab {border : 1px solid #A6A6A6 /*panelBorderColor*/; padding : 2px 0px 2px
0px; vertical-align : middle; background :
url(#{resource['org.richfaces:tab_bg.gif']}) top right repeat-x #DAE7F5;
margin-right : -1px}
+.rftp_lefttab_active {border-right : 0px; font-weight : bold; vertical-align : middle;
background : url(#{resource['org.richfaces:actlefttab_bg.gif']}) top left repeat-y
#C9DBEF /*additionalBackgroundColor*/; width : 100%;}
+.rftp_verttab_spacer {padding-top : 1px;}
+
+.rftp_lefttab_border {border : 1px solid #A6A6A6 /*panelBorderColor*/; padding-left :
2px; background : #C9DBEF /*additionalBackgroundColor*/;}
+.rftp_lefttab_content {width : 100%; border : 1px solid #A6A6A6 /*panelBorderColor*/;
border-left : 0px; font-family : verdana /*generalFamilyFont*/; font-size : 11px
/*generalSizeFont*/; padding : 10px; background : #ffffff /*generalBackgroundColor*/;
vertical-align : top;}
+
+
+.rftp_righttab {border : 1px solid #A6A6A6 /*panelBorderColor*/; padding : 2px 0px 2px
0px; vertical-align : middle; background :
url(#{resource['org.richfaces:tab_bg.gif']}) top right repeat-x #DAE7F5;
margin-left : -1px}
+.rftp_righttab_active {border-left : 0px; font-weight : bold; vertical-align : middle;
background : url(#{resource['org.richfaces:actrighttab_bg.gif']}) top right
repeat-y #C9DBEF /*additionalBackgroundColor*/; width : 100%;}
+.rftp_righttab_spacer {padding-top : 1px;}
+
+.rftp_righttab_border {border : 1px solid #A6A6A6 /*panelBorderColor*/; padding-right :
2px; background : #C9DBEF /*additionalBackgroundColor*/;}
+.rftp_righttab_content {width : 100%; border : 1px solid #A6A6A6 /*panelBorderColor*/;
border-right : 0px; font-family : verdana /*generalFamilyFont*/; font-size : 11px
/*generalSizeFont*/; padding : 10px; background : #ffffff /*generalBackgroundColor*/;
vertical-align : top;}
+