You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2007/01/04 19:42:18 UTC

svn commit: r492676 - in /myfaces/tobago/trunk: contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/ core/src/main/java/org/apache/myfaces/tobago/taglib/component/ example/demo/src/main/webapp/overview/

Author: bommel
Date: Thu Jan  4 10:42:13 2007
New Revision: 492676

URL: http://svn.apache.org/viewvc?view=rev&rev=492676
Log:
(TOBAGO-217) Create a popup ref tag

Added:
    myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/PopupReferenceTag.java
Modified:
    myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AbstractTobagoTagLibrary.java
    myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp

Modified: myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AbstractTobagoTagLibrary.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AbstractTobagoTagLibrary.java?view=diff&rev=492676&r1=492675&r2=492676
==============================================================================
--- myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AbstractTobagoTagLibrary.java (original)
+++ myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/AbstractTobagoTagLibrary.java Thu Jan  4 10:42:13 2007
@@ -31,6 +31,7 @@
     super(namespace);
     addTagHandler("attribute", AttributeHandler.class);
     addTagHandler("tabChangeListener", TabChangeListenerHandler.class);
+    addTagHandler("popupReference", PopupReferenceHandler.class);
     addTagHandler("loadBundle", LoadBundleHandler.class);
     addTagHandler("converter", ConverterHandler.class);
   }

Added: myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java?view=auto&rev=492676
==============================================================================
--- myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java (added)
+++ myfaces/tobago/trunk/contrib/facelets/src/main/java/org/apache/myfaces/tobago/facelets/PopupReferenceHandler.java Thu Jan  4 10:42:13 2007
@@ -0,0 +1,61 @@
+package org.apache.myfaces.tobago.facelets;
+
+/*
+ * 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.
+ */
+
+import com.sun.facelets.tag.TagHandler;
+import com.sun.facelets.tag.TagConfig;
+import com.sun.facelets.tag.TagAttribute;
+import com.sun.facelets.tag.TagException;
+import com.sun.facelets.FaceletContext;
+
+import javax.el.ELException;
+import javax.faces.FacesException;
+import javax.faces.component.ActionSource;
+import javax.faces.component.UIComponent;
+import java.io.IOException;
+
+import org.apache.myfaces.tobago.event.PopupActionListener;
+
+/*
+ * Created by IntelliJ IDEA.
+ * User: bommel
+ * Date: Jan 4, 2007
+ * Time: 6:25:09 PM
+ */
+public class PopupReferenceHandler extends TagHandler {
+
+  private final TagAttribute _for;
+
+  public PopupReferenceHandler(TagConfig config) {
+    super(config);
+    _for = getAttribute("for");
+  }
+
+  public void apply(FaceletContext faceletContext, UIComponent parent)
+      throws IOException, FacesException, ELException {
+    if (parent instanceof ActionSource) {
+      // only process if parent was just created
+      if (parent.getParent() == null) {
+        ActionSource actionSource = (ActionSource) parent;
+        actionSource.addActionListener(new PopupActionListener(_for.getValue()));
+      }
+    } else {
+      throw new TagException(tag, "Parent is not of type ActionSource, type is: " + parent);
+    }
+  }
+}

Added: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/PopupReferenceTag.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/PopupReferenceTag.java?view=auto&rev=492676
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/PopupReferenceTag.java (added)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/PopupReferenceTag.java Thu Jan  4 10:42:13 2007
@@ -0,0 +1,88 @@
+package org.apache.myfaces.tobago.taglib.component;
+
+/*
+ * 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.
+ */
+
+import org.apache.myfaces.tobago.apt.annotation.Tag;
+import org.apache.myfaces.tobago.apt.annotation.BodyContent;
+import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
+import org.apache.myfaces.tobago.event.PopupActionListener;
+
+import javax.servlet.jsp.tagext.TagSupport;
+import javax.servlet.jsp.JspException;
+import javax.faces.webapp.UIComponentTag;
+import javax.faces.component.UIComponent;
+import javax.faces.component.ActionSource;
+
+/*
+ * Created by IntelliJ IDEA.
+ * User: bommel
+ * Date: Jan 3, 2007
+ * Time: 10:42:11 PM
+ */
+
+/**
+ * Register an PopupActionListener instance on the UIComponent
+ * associated with the closest parent UIComponent.
+ */
+@Tag(name = "popupReference", bodyContent = BodyContent.EMPTY)
+public class PopupReferenceTag extends TagSupport {
+  private String _for;
+
+  /**
+   * The id of a Popup.
+   */
+  @TagAttribute
+  public void setFor(String popupId) {
+    this._for = popupId;
+  }
+
+  public int doStartTag() throws JspException {
+
+    // Locate our parent UIComponentTag
+    UIComponentTag tag =
+        UIComponentTag.getParentUIComponentTag(pageContext);
+    if (tag == null) {
+      // TODO Message resource i18n
+      throw new JspException("Not nested in faces tag");
+    }
+
+    if (!tag.getCreated()) {
+      return (SKIP_BODY);
+    }
+
+    UIComponent component = tag.getComponentInstance();
+    if (component == null) {
+      // TODO Message resource i18n
+      throw new JspException("Component Instance is null");
+    }
+    if (!(component instanceof ActionSource)) {
+      // TODO Message resource i18n
+      throw new JspException("Component "+ component.getClass().getName() + " is not instanceof ActionSource");
+    }
+    ActionSource actionSource = (ActionSource) component;
+    actionSource.addActionListener(new PopupActionListener(_for));
+    return (SKIP_BODY);
+  }
+
+  /**
+   * <p>Release references to any acquired resources.
+   */
+  public void release() {
+    this._for = null;
+  }
+}

Modified: myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp?view=diff&rev=492676&r1=492675&r2=492676
==============================================================================
--- myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp (original)
+++ myfaces/tobago/trunk/example/demo/src/main/webapp/overview/toolbar.jsp Thu Jan  4 10:42:13 2007
@@ -98,8 +98,8 @@
         <tc:toolBarCommand id="popupButton2"
             actionListener="#{overviewController.click}"
             label="#{overviewBundle.toolbar_popupButtonAction}">
-
-          <f:facet name="popup">
+           <tc:popupReference for=":page:popup" />
+          <%--f:facet name="popup">
             <tc:popup width="200" height="100" id="popup2" >
 
               <f:facet name="layout">
@@ -114,7 +114,7 @@
               </tc:button>
 
             </tc:popup>
-          </f:facet>
+          </f:facet--%>
         </tc:toolBarCommand>
 
         <tc:toolBarCommand id="DropDown2" action="overview/toolbar"