You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2008/02/07 06:25:27 UTC
svn commit: r619273 - in
/myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane:
AbstractHtmlPanelTab.java AbstractHtmlPanelTabbedPane.java
Author: lu4242
Date: Wed Feb 6 21:25:27 2008
New Revision: 619273
URL: http://svn.apache.org/viewvc?rev=619273&view=rev
Log:
Created Abstract base classes
Added:
myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java (with props)
myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java (with props)
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java?rev=619273&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java Wed Feb 6 21:25:27 2008
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.custom.tabbedpane;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.html.HtmlPanelGroup;
+
+import org.apache.myfaces.component.UserRoleAware;
+import org.apache.myfaces.component.UserRoleUtils;
+
+/**
+ * Manage a stack of JSF components and allow for one child component to be choosen for rendering. The behaviour
+ * is similar to the CardLayout of Java Swing. Property <code>selectedPanel</code> defines the id of the child
+ * to be rendered. If no child panel is selected or if the selected panel can not be found the first child is rendered.
+ *
+ * @author <a href="mailto:oliver@rossmueller.com">Oliver Rossmueller</a>
+ * @version $Revision$ $Date$
+ */
+abstract class AbstractHtmlPanelTab extends HtmlPanelGroup implements NamingContainer,UserRoleAware
+{
+
+ public boolean isRendered()
+ {
+ if (!UserRoleUtils.isVisibleOnUserRole(this)) {
+ return false;
+ }
+ return super.isRendered();
+ }
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java?rev=619273&view=auto
==============================================================================
--- myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java (added)
+++ myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java Wed Feb 6 21:25:27 2008
@@ -0,0 +1,199 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.custom.tabbedpane;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.MethodBinding;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.FacesEvent;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public abstract class AbstractHtmlPanelTabbedPane extends HtmlPanelGroup
+{
+
+ //private static final Log log = LogFactory.getLog(HtmlPanelTabbedPane.class);
+
+ private static final int DEFAULT_BORDER = Integer.MIN_VALUE;
+
+
+ public void decode(FacesContext context)
+ {
+ super.decode(context); //To change body of overridden methods use File | Settings | File Templates.
+ }
+
+ public abstract int getSelectedIndex();
+
+ public abstract void setSelectedIndex(int selectedIndex);
+
+ public void processDecodes(javax.faces.context.FacesContext context)
+ {
+ if (context == null) throw new NullPointerException("context");
+ decode(context);
+
+ int tabIdx = 0;
+ int selectedIndex = getSelectedIndex();
+
+ Iterator it = getFacetsAndChildren();
+
+ while (it.hasNext())
+ {
+ UIComponent childOrFacet = getUIComponent((UIComponent) it.next());
+ if (childOrFacet instanceof HtmlPanelTab) {
+ if (isClientSide() || selectedIndex == tabIdx) {
+ childOrFacet.processDecodes(context);
+ }
+ tabIdx++;
+ } else {
+ childOrFacet.processDecodes(context);
+ }
+ }
+ }
+
+ public void processValidators(FacesContext context)
+ {
+ if (context == null) throw new NullPointerException("context");
+ if (!isRendered()) return;
+
+ int tabIdx = 0;
+ int selectedIndex = getSelectedIndex();
+
+ Iterator it = getFacetsAndChildren();
+
+ while (it.hasNext())
+ {
+ UIComponent childOrFacet = getUIComponent((UIComponent) it.next());
+ if (childOrFacet instanceof HtmlPanelTab) {
+ if (isClientSide() || selectedIndex == tabIdx) {
+ childOrFacet.processValidators(context);
+ }
+ tabIdx++;
+ } else {
+ childOrFacet.processValidators(context);
+ }
+ }
+ }
+
+ public void processUpdates(FacesContext context)
+ {
+ if (context == null) throw new NullPointerException("context");
+ if (!isRendered()) return;
+
+ int tabIdx = 0;
+ int selectedIndex = getSelectedIndex();
+
+ Iterator it = getFacetsAndChildren();
+
+ while (it.hasNext())
+ {
+ UIComponent childOrFacet = getUIComponent((UIComponent) it.next());
+ if (childOrFacet instanceof HtmlPanelTab) {
+ if (isClientSide() || selectedIndex == tabIdx) {
+ childOrFacet.processUpdates(context);
+ }
+ tabIdx++;
+ } else {
+ childOrFacet.processUpdates(context);
+ }
+ }
+ }
+
+ private UIComponent getUIComponent(UIComponent uiComponent)
+ {
+ /*todo: checking for UIForm is not enough - Trinidad form, etc.*/
+ if (uiComponent instanceof UINamingContainer || uiComponent instanceof UIForm)
+ {
+ List children = uiComponent.getChildren();
+ for (int i = 0, len = children.size(); i < len; i++)
+ {
+ uiComponent = getUIComponent((UIComponent)children.get(i));
+ }
+ }
+ return uiComponent;
+ }
+
+ public void addTabChangeListener(TabChangeListener listener)
+ {
+ addFacesListener(listener);
+ }
+
+ public void removeTabChangeListener(TabChangeListener listener)
+ {
+ removeFacesListener(listener);
+ }
+
+ public abstract MethodBinding getTabChangeListener();
+
+ public void broadcast(FacesEvent event) throws AbortProcessingException
+ {
+ if (event instanceof TabChangeEvent)
+ {
+ TabChangeEvent tabChangeEvent = (TabChangeEvent)event;
+ if (tabChangeEvent.getComponent() == this)
+ {
+ setSelectedIndex(tabChangeEvent.getNewTabIndex());
+ getFacesContext().renderResponse();
+ }
+ }
+ super.broadcast(event);
+
+ MethodBinding tabChangeListenerBinding = getTabChangeListener();
+ if (tabChangeListenerBinding != null)
+ {
+ try
+ {
+ tabChangeListenerBinding.invoke(getFacesContext(), new Object[]{event});
+ }
+ catch (EvaluationException e)
+ {
+ Throwable cause = e.getCause();
+ if (cause != null && cause instanceof AbortProcessingException)
+ {
+ throw (AbortProcessingException)cause;
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ }
+ }
+
+ /**
+ * Write out information about the toggling mode - the component might
+ * be toggled server side or client side.
+ */
+ public boolean isClientSide()
+ {
+ return !isServerSideTabSwitch();
+ }
+
+ public abstract boolean isServerSideTabSwitch();
+
+}
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: myfaces/tomahawk/branches/1_2_0/core/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTabbedPane.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL