You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2009/01/01 20:21:46 UTC

svn commit: r730593 - in /myfaces/tobago/branches/tobago-1.0.x: example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/ example/demo/src/main/webapp/overview/ theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborou...

Author: weber
Date: Thu Jan  1 11:21:46 2009
New Revision: 730593

URL: http://svn.apache.org/viewvc?rev=730593&view=rev
Log:
Created: (TOBAGO-736) partial rendering did not work on tx:menuRadio
<https://issues.apache.org/jira/browse/TOBAGO-736>

  first version, to show how this was meant

Modified:
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
    myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/overview/sheet.jsp
    myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java

Modified: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java?rev=730593&r1=730592&r2=730593&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java Thu Jan  1 11:21:46 2009
@@ -25,8 +25,10 @@
 import org.apache.commons.logging.LogFactory;
 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_VALUE;
 import static org.apache.myfaces.tobago.TobagoConstants.RENDERER_TYPE_IN;
+import static org.apache.myfaces.tobago.TobagoConstants.FACET_ITEMS;
 import org.apache.myfaces.tobago.component.ComponentUtil;
 import org.apache.myfaces.tobago.component.UIInput;
+import org.apache.myfaces.tobago.component.UISelectOne;
 import org.apache.myfaces.tobago.context.ResourceManagerUtil;
 import org.apache.myfaces.tobago.event.SheetStateChangeEvent;
 import org.apache.myfaces.tobago.event.TabChangeListener;
@@ -43,6 +45,7 @@
 import javax.faces.context.FacesContext;
 import javax.faces.model.SelectItem;
 import javax.faces.validator.ValidatorException;
+import javax.faces.event.ActionEvent;
 import javax.servlet.http.HttpSession;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.MutableTreeNode;
@@ -343,7 +346,7 @@
     if (value > 100) {
       value = 0;
     }
-    return solarList;
+    return filteredList == null ? solarList : filteredList;
   }
 
   public void setSolarList(List<SolarObject> solarList) {
@@ -557,6 +560,63 @@
 
   }
 
+  private List<SolarObject> filteredList;
+  private SelectItem[] orbitItems;
+  private static final String showAllOrbits = "Show all";
+
+  public void filterOrbit(ActionEvent event) {
+//    FacesContext facesContext = FacesContext.getCurrentInstance();
+    UISelectOne selectOne = (UISelectOne) event.getComponent().getFacet(FACET_ITEMS);
+    if (filteredList == null) {
+      filteredList = new ArrayList<SolarObject>();
+    } else {
+      filteredList.clear();
+    }
+
+    String filter = (String) selectOne.getValue();
+    if (showAllOrbits.equals(filter)) {
+      filteredList.addAll(solarList);
+    } else {
+      for (SolarObject solarObject : solarList) {
+        if (solarObject.getOrbit().equalsIgnoreCase(filter)) {
+          filteredList.add(solarObject);
+        }
+      }
+    }
+
+  }
+
+  public SelectItem[] getOrbitItems() {
+    if (orbitItems == null) {
+      createOrbitItems();
+    }
+    return orbitItems;
+  }
+
+  private SelectItem[] createOrbitItems() {
+    orbitItems = new SelectItem[11];
+    orbitItems[0] = new org.apache.myfaces.tobago.model.SelectItem(showAllOrbits);
+    orbitItems[1] = new org.apache.myfaces.tobago.model.SelectItem("Sun");
+    orbitItems[2] = new org.apache.myfaces.tobago.model.SelectItem("Mercury");
+    orbitItems[3] = new org.apache.myfaces.tobago.model.SelectItem("Venus");
+    orbitItems[4] = new org.apache.myfaces.tobago.model.SelectItem("Earth");
+    orbitItems[5] = new org.apache.myfaces.tobago.model.SelectItem("Mars");
+    orbitItems[6] = new org.apache.myfaces.tobago.model.SelectItem("Jupiter");
+    orbitItems[7] = new org.apache.myfaces.tobago.model.SelectItem("Saturn");
+    orbitItems[8] = new org.apache.myfaces.tobago.model.SelectItem("Uranus");
+    orbitItems[9] = new org.apache.myfaces.tobago.model.SelectItem("Neptune");
+    orbitItems[10] = new org.apache.myfaces.tobago.model.SelectItem("Pluto");
+    return orbitItems;
+  }
+
+//  public void setOrbitFilter(String orbitFilter) {
+//    this.orbitFilter = orbitFilter;
+//  }
+//
+//  public String getOrbitFilter() {
+//    return orbitFilter;
+//  }
+
   public static class Node {
 
     private String name;
@@ -590,4 +650,5 @@
   }
 
 
+
 }

Modified: myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/overview/sheet.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/overview/sheet.jsp?rev=730593&r1=730592&r2=730593&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/overview/sheet.jsp (original)
+++ myfaces/tobago/branches/tobago-1.0.x/example/demo/src/main/webapp/overview/sheet.jsp Thu Jan  1 11:21:46 2009
@@ -134,6 +134,14 @@
           <tc:out value="#{luminary.number}" id="t_number"/>
         </tc:column>
         <tc:column label="#{overviewBundle.solarArrayOrbit}" sortable="true" id="orbit">
+          <f:facet name="menupopup">
+            <tc:menu>  
+              <tx:menuRadio actionListener="#{demo.filterOrbit}" >
+                <f:selectItems value="#{demo.orbitItems}" />
+                <tc:attribute name="renderedPartially" value=":page:sheet"/>
+              </tx:menuRadio>
+            </tc:menu>
+          </f:facet>
           <tc:out value="#{luminary.orbit}" id="t_orbit"/>
         </tc:column>
         <tc:column label="#{overviewBundle.solarArrayPopulation}" sortable="true" id="population">

Modified: myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java?rev=730593&r1=730592&r2=730593&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/SheetRenderer.java Thu Jan  1 11:21:46 2009
@@ -102,6 +102,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import static java.lang.Boolean.TRUE;
 
 public class SheetRenderer extends LayoutableRendererBase implements SheetRendererWorkaround, AjaxRenderer {
 
@@ -907,7 +908,7 @@
       menu.setId("selectorMenu");
       column.getFacets().put(FACET_MENUPOPUP, menu);
       menu.setRendererType(RENDERER_TYPE_MENUBAR);
-      menu.getAttributes().put(ATTR_MENU_POPUP, Boolean.TRUE);
+      menu.getAttributes().put(ATTR_MENU_POPUP, TRUE);
       menu.getAttributes().put(ATTR_MENU_POPUP_TYPE, "SheetSelector");
       menu.getAttributes().put(ATTR_IMAGE, "image/sheetSelectorMenu.gif");
 
@@ -976,6 +977,40 @@
       writer.writeAttribute(HtmlAttributes.ALT, "", false);
       writer.endElement(HtmlConstants.IMG);
     }
+
+    if (column.getFacet(FACET_MENUPOPUP) != null) {
+      renderFilter(facesContext, writer, column);
+    }
+  }
+
+  private void renderFilter(FacesContext facesContext, TobagoResponseWriter writer, UIComponent column) throws IOException {
+
+    UIComponent facet = column.getFacet(FACET_MENUPOPUP);
+
+    if (facet instanceof UIMenu) {
+
+      if (facet.getAttributes().get(ATTR_MENU_POPUP) != TRUE) {
+        facet.setRendererType(RENDERER_TYPE_MENUBAR);
+        facet.getAttributes().put(ATTR_MENU_POPUP, TRUE);
+        facet.getAttributes().put(ATTR_MENU_POPUP_TYPE, "SheetSelector");
+      }
+      if (StringUtils.isBlank((String) facet.getAttributes().get(ATTR_IMAGE))) {
+        facet.getAttributes().put(ATTR_IMAGE, "image/sheetSelectorMenu.gif");
+      }
+
+
+      writer.startElement(HtmlConstants.SPAN, null);
+      writer.writeIdAttribute(column.getClientId(facesContext));
+      writer.writeClassAttribute("tobago-sheet-selector-menu");
+      writer.endElement(HtmlConstants.SPAN);
+      RenderUtil.encode(facesContext, facet);
+
+    } else {
+      LOG.warn("Unknown filter component: " + facet);
+    }
+
+
+
   }
 
   private void writeDirectPagingLinks(
@@ -1081,7 +1116,7 @@
     link.setRendered(true);
     link.setId(command.getToken());
 //    link.getAttributes().put(ATTR_ACTION_STRING, command);
-    link.getAttributes().put(ATTR_INLINE, Boolean.TRUE);
+    link.getAttributes().put(ATTR_INLINE, TRUE);
     link.getAttributes().put(ATTR_DISABLED, disabled);
     return link;
   }