Author: abelevich
Date: 2011-02-11 14:33:18 -0500 (Fri, 11 Feb 2011)
New Revision: 21639
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupHeaderRenderer.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/resources/META-INF/resources/org.richfaces/panelMenu.ecss
Log:
RF-10158 Panel Menu - @disabled does not disable items
Modified:
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupHeaderRenderer.java
===================================================================
---
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupHeaderRenderer.java 2011-02-11
17:06:31 UTC (rev 21638)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupHeaderRenderer.java 2011-02-11
19:33:18 UTC (rev 21639)
@@ -1,13 +1,14 @@
package org.richfaces.renderkit.html;
+import java.io.IOException;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
import org.richfaces.component.AbstractPanelMenuGroup;
import org.richfaces.renderkit.util.PanelIcons;
import org.richfaces.renderkit.util.PanelIcons.State;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import java.io.IOException;
-
class PanelMenuGroupHeaderRenderer extends
TableIconsRendererHelper<AbstractPanelMenuGroup> {
PanelMenuGroupHeaderRenderer(String cssClassPrefix) {
@@ -16,15 +17,15 @@
private PanelIcons.State getState(AbstractPanelMenuGroup group) {
if (group.isTopItem()) {
- return group.isDisabled() ? State.headerDisabled : State.header;
+ return PanelMenuItemRenderer.isParentPanelMenuDisabled(group) ||
group.isDisabled() ? State.headerDisabled : State.header;
} else {
- return group.isDisabled() ? State.commonDisabled : State.common;
+ return PanelMenuItemRenderer.isParentPanelMenuDisabled(group) ||
group.isDisabled() ? State.commonDisabled : State.common;
}
}
protected void encodeHeaderLeftIcon(ResponseWriter writer, FacesContext context,
AbstractPanelMenuGroup group) throws IOException {
- String iconCollapsed = group.isDisabled() ? group.getLeftDisabledIcon() :
group.getLeftCollapsedIcon();
- String iconExpanded = group.isDisabled() ? group.getLeftDisabledIcon() :
group.getLeftExpandedIcon();
+ String iconCollapsed = PanelMenuItemRenderer.isParentPanelMenuDisabled(group) ||
group.isDisabled() ? group.getLeftDisabledIcon() : group.getLeftCollapsedIcon();
+ String iconExpanded = PanelMenuItemRenderer.isParentPanelMenuDisabled(group) ||
group.isDisabled() ? group.getLeftDisabledIcon() : group.getLeftExpandedIcon();
if (iconCollapsed == null || iconCollapsed.trim().length() == 0) {
iconCollapsed = PanelIcons.transparent.toString();
@@ -38,8 +39,8 @@
}
protected void encodeHeaderRightIcon(ResponseWriter writer, FacesContext context,
AbstractPanelMenuGroup group) throws IOException {
- String iconCollapsed = group.isDisabled() ? group.getRightDisabledIcon() :
group.getRightCollapsedIcon();
- String iconExpanded = group.isDisabled() ? group.getRightDisabledIcon() :
group.getRightExpandedIcon();
+ String iconCollapsed = PanelMenuItemRenderer.isParentPanelMenuDisabled(group) ||
group.isDisabled() ? group.getRightDisabledIcon() : group.getRightCollapsedIcon();
+ String iconExpanded = PanelMenuItemRenderer.isParentPanelMenuDisabled(group) ||
group.isDisabled() ? group.getRightDisabledIcon() : group.getRightExpandedIcon();
if (iconCollapsed == null || iconCollapsed.trim().length() == 0) {
iconCollapsed = PanelIcons.transparent.toString();
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-11
17:06:31 UTC (rev 21638)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuGroupRenderer.java 2011-02-11
19:33:18 UTC (rev 21639)
@@ -23,7 +23,26 @@
package org.richfaces.renderkit.html;
-import com.google.common.base.Strings;
+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 static org.richfaces.renderkit.HtmlConstants.INPUT_ELEM;
+import static org.richfaces.renderkit.HtmlConstants.INPUT_TYPE_HIDDEN;
+import static org.richfaces.renderkit.HtmlConstants.NAME_ATTRIBUTE;
+import static org.richfaces.renderkit.HtmlConstants.TYPE_ATTR;
+import static org.richfaces.renderkit.HtmlConstants.VALUE_ATTRIBUTE;
+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 javax.faces.event.ActionEvent;
+
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSObject;
import org.ajax4jsf.javascript.ScriptUtils;
@@ -33,18 +52,8 @@
import org.richfaces.component.AbstractPanelMenuItem;
import org.richfaces.renderkit.HtmlConstants;
-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 com.google.common.base.Strings;
-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
@@ -118,7 +127,7 @@
writer.writeAttribute(ID_ATTRIBUTE, menuGroup.getClientId(context) +
":hdr", null);
writer.writeAttribute(CLASS_ATTRIBUTE, concatClasses(getCssClass(menuGroup,
"-hdr"),
"rf-pm-hdr-" + (menuGroup.isExpanded() ? "exp" :
"colps"),
- menuGroup.isDisabled() ? getCssClass(menuGroup, "-hdr-dis") :
null), null);
+ PanelMenuItemRenderer.isParentPanelMenuDisabled(menuGroup) ||
menuGroup.isDisabled() ? getCssClass(menuGroup, "-hdr-dis") : null), null);
(menuGroup.isTopItem() ? topHeaderRenderer : headerRenderer).encodeHeader(writer,
context, menuGroup);
@@ -147,8 +156,8 @@
return concatClasses(getCssClass(menuItem, ""),
attributeAsString(component, "styleClass"),
- menuItem.isDisabled() ? getCssClass(menuItem, "-dis") :
"",
- menuItem.isDisabled() ? attributeAsString(component,
"disabledClass") : "");
+ PanelMenuItemRenderer.isParentPanelMenuDisabled(menuItem) ||
menuItem.isDisabled() ? getCssClass(menuItem, "-dis") : "",
+ PanelMenuItemRenderer.isParentPanelMenuDisabled(menuItem) ||
menuItem.isDisabled() ? attributeAsString(component, "disabledClass") :
"");
}
@Override
@@ -188,7 +197,7 @@
options.put("ajax", getAjaxOptions(context, panelMenuGroup));
options.put("name", panelMenuGroup.getName());
options.put("mode", panelMenuGroup.getMode());
- options.put("disabled", panelMenuGroup.isDisabled());
+ options.put("disabled",
PanelMenuItemRenderer.isParentPanelMenuDisabled(panelMenuGroup) ||
panelMenuGroup.isDisabled());
options.put("expandEvent", getExpandEvent(panelMenuGroup));
options.put("collapseEvent", getCollapseEvent(panelMenuGroup));
options.put("expanded", panelMenuGroup.isExpanded());
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-11
17:06:31 UTC (rev 21638)
+++
trunk/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PanelMenuItemRenderer.java 2011-02-11
19:33:18 UTC (rev 21639)
@@ -23,27 +23,35 @@
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 javax.faces.event.ActionEvent;
+
import org.ajax4jsf.javascript.JSObject;
import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.component.AbstractPanelMenu;
import org.richfaces.component.AbstractPanelMenuItem;
+import org.richfaces.component.ComponentIterators;
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 com.google.common.base.Predicate;
-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
@@ -57,7 +65,9 @@
private static final String CSS_CLASS_PREFIX = "rf-pm-itm";
private static final String TOP_CSS_CLASS_PREFIX = "rf-pm-top-itm";
-
+
+ private static final ParentPanelMenuPredicate PARENT_PANEL_MENU_PREDICATE = new
ParentPanelMenuPredicate();
+
@Override
protected void doDecode(FacesContext context, UIComponent component) {
@@ -120,11 +130,11 @@
}
private PanelIcons.State getState(AbstractPanelMenuItem item) {
- return item.isDisabled() ? State.commonDisabled : State.common;
+ return PanelMenuItemRenderer.isParentPanelMenuDisabled(item) || item.isDisabled()
? State.commonDisabled : State.common;
}
private void encodeHeaderGroupRightIcon(ResponseWriter writer, FacesContext context,
AbstractPanelMenuItem menuItem, String classPrefix) throws IOException {
- String icon = menuItem.isDisabled() ? menuItem.getRightDisabledIcon() :
menuItem.getRightIcon();
+ String icon = PanelMenuItemRenderer.isParentPanelMenuDisabled(menuItem) ||
menuItem.isDisabled() ? menuItem.getRightDisabledIcon() : menuItem.getRightIcon();
String cssClasses = concatClasses(classPrefix + "-exp-ico",
menuItem.getLeftIconClass());
if (icon == null || icon.trim().length() == 0) {
@@ -134,7 +144,7 @@
}
private void encodeHeaderGroupLeftIcon(ResponseWriter writer, FacesContext context,
AbstractPanelMenuItem menuItem, String classPrefix) throws IOException {
- String icon = menuItem.isDisabled() ? menuItem.getLeftDisabledIcon() :
menuItem.getLeftIcon();
+ String icon = PanelMenuItemRenderer.isParentPanelMenuDisabled(menuItem) ||
menuItem.isDisabled() ? menuItem.getLeftDisabledIcon() : menuItem.getLeftIcon();
String cssClasses = concatClasses(classPrefix + "-ico",
menuItem.getLeftIconClass());
if (icon == null || icon.trim().length() == 0) {
@@ -179,8 +189,8 @@
AbstractPanelMenuItem menuItem = (AbstractPanelMenuItem) component;
return concatClasses(getCssClass(menuItem, ""),
attributeAsString(component, "styleClass"),
- menuItem.isDisabled() ? getCssClass(menuItem, "-dis") :
"",
- menuItem.isDisabled() ? attributeAsString(component,
"disabledClass") : "");
+ PanelMenuItemRenderer.isParentPanelMenuDisabled(menuItem) ||
menuItem.isDisabled() ? getCssClass(menuItem, "-dis") : "",
+ PanelMenuItemRenderer.isParentPanelMenuDisabled(menuItem) ||
menuItem.isDisabled() ? attributeAsString(component, "disabledClass") :
"");
}
public String getCssClass(AbstractPanelMenuItem item, String postfix) {
@@ -200,7 +210,7 @@
Map<String, Object> options = new HashMap<String, Object>();
//TODO nick - ajax options should not be rendered in client mode
options.put("ajax", getAjaxOptions(context, panelMenuItem));
- options.put("disabled", panelMenuItem.isDisabled());
+ options.put("disabled",
PanelMenuItemRenderer.isParentPanelMenuDisabled(panelMenuItem) ||
panelMenuItem.isDisabled());
options.put("mode", panelMenuItem.getMode());
options.put("name", panelMenuItem.getName());
options.put("selectable", panelMenuItem.isSelectable());
@@ -225,5 +235,19 @@
protected Class<? extends UIComponent> getComponentClass() {
return AbstractPanelMenuItem.class;
}
+
+ static boolean isParentPanelMenuDisabled(AbstractPanelMenuItem menuItem) {
+ AbstractPanelMenu parentPanelMenu = (AbstractPanelMenu)
ComponentIterators.getParent(menuItem, PARENT_PANEL_MENU_PREDICATE);
+ if (parentPanelMenu != null) {
+ return parentPanelMenu.isDisabled();
+ }
+ return false;
+ }
+
+ private static class ParentPanelMenuPredicate implements Predicate<UIComponent>
{
+ public boolean apply(UIComponent comp) {
+ return comp instanceof AbstractPanelMenu;
+ }
+ }
}
Modified:
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenu.ecss
===================================================================
---
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenu.ecss 2011-02-11
17:06:31 UTC (rev 21638)
+++
trunk/ui/output/ui/src/main/resources/META-INF/resources/org.richfaces/panelMenu.ecss 2011-02-11
19:33:18 UTC (rev 21639)
@@ -223,10 +223,15 @@
cursor: default;
}
-.rf-pm-itm.rf-pm-itm-dis:hover{
+.rf-pm-itm, .rf-pm-itm-dis:hover {
background-color: inherit;
}
+.rf-pm-top-itm-dis:hover {
+ background-color: inherit;
+ color: '#{richSkin.tabDisabledTextColor}';
+}
+
.rf-pm-top-gr-cnt {
}