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 2006/11/05 23:14:52 UTC
svn commit: r471545 - in /myfaces/tobago/trunk:
core/src/main/java/org/apache/myfaces/tobago/component/
example/demo/src/main/webapp/overview/
theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/
theme/stan...
Author: weber
Date: Sun Nov 5 14:14:51 2006
New Revision: 471545
URL: http://svn.apache.org/viewvc?view=rev&rev=471545
Log:
Working on TOBAGO-167 (Enable rendering popups by ajax request)
make sheetconfig popup working with ajax and reload facet
Modified:
myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPopup.java
myfaces/tobago/trunk/example/demo/src/main/webapp/overview/sheetControl.jsp
myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java
myfaces/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPopup.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPopup.java?view=diff&rev=471545&r1=471544&r2=471545
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPopup.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/UIPopup.java Sun Nov 5 14:14:51 2006
@@ -32,6 +32,8 @@
private static final Log LOG = LogFactory.getLog(UIPopup.class);
+ public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.Popup";
+
private String width;
private String height;
private String left;
@@ -39,7 +41,9 @@
private boolean popupReset;
- public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.Popup";
+ private boolean closedOnClient;
+
+ private boolean submitted;
public void processDecodes(FacesContext facesContext) {
super.processDecodes(facesContext);
@@ -55,6 +59,8 @@
public void encodeBegin(FacesContext facesContext) throws IOException {
removeStoredRendered(facesContext);
super.encodeBegin(facesContext);
+ closedOnClient = false;
+ submitted = false;
}
public void processValidators(FacesContext context) {
@@ -64,14 +70,18 @@
private void resetAndStoreRendered(FacesContext facesContext) {
if (popupReset && isRendered()) {
- ValueBinding vb = getValueBinding(ATTR_RENDERED);
- if (vb != null) {
- vb.setValue(facesContext, false);
- } else {
- setRendered(false);
+ if (submitted || closedOnClient) {
+ ValueBinding vb = getValueBinding(ATTR_RENDERED);
+ if (vb != null) {
+ vb.setValue(facesContext, false);
+ } else {
+ setRendered(false);
+ }
+ }
+ if (!closedOnClient) {
+ Map map = facesContext.getExternalContext().getRequestMap();
+ map.put(getClientId(facesContext) + "rendered", true);
}
- Map map = facesContext.getExternalContext().getRequestMap();
- map.put(getClientId(facesContext) + "rendered", true);
}
}
@@ -153,6 +163,15 @@
public void setPopupReset(boolean popupReset) {
this.popupReset = popupReset;
+ }
+
+
+ public void closedOnClient() {
+ this.closedOnClient = true;
+ }
+
+ public void submitted() {
+ this.submitted = true;
}
private void addToPage() {
Modified: myfaces/tobago/trunk/example/demo/src/main/webapp/overview/sheetControl.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/demo/src/main/webapp/overview/sheetControl.jsp?view=diff&rev=471545&r1=471544&r2=471545
==============================================================================
--- myfaces/tobago/trunk/example/demo/src/main/webapp/overview/sheetControl.jsp (original)
+++ myfaces/tobago/trunk/example/demo/src/main/webapp/overview/sheetControl.jsp Sun Nov 5 14:14:51 2006
@@ -100,11 +100,11 @@
<tc:gridLayout columns="100px;1*;100px"
marginLeft="10px" marginRight="10px"/>
</f:facet>
- <tc:button onclick="Tobago.closePopup('page:sheetConfigPopup')"
+ <tc:button onclick="Tobago.closePopup(this)"
label="Cancel" />
<tc:cell />
- <tc:button onclick="Tobago.reloadComponent('page:sheetBox','@autoId', {});Tobago.closePopup('page:sheetConfigPopup');"
+ <tc:button onclick="Tobago.reloadComponent('page:sheetBox','@autoId', {});Tobago.closePopup(this);"
label="Ok" />
</tc:cell>
Modified: myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java?view=diff&rev=471545&r1=471544&r2=471545
==============================================================================
--- myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java (original)
+++ myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PopupRenderer.java Sun Nov 5 14:14:51 2006
@@ -27,6 +27,8 @@
import org.apache.myfaces.tobago.ajax.api.AjaxRenderer;
import org.apache.myfaces.tobago.ajax.api.AjaxUtils;
import org.apache.myfaces.tobago.component.UIPopup;
+import org.apache.myfaces.tobago.component.ComponentUtil;
+import org.apache.myfaces.tobago.component.UIPage;
import org.apache.myfaces.tobago.context.ClientProperties;
import org.apache.myfaces.tobago.context.ResourceManagerUtil;
import org.apache.myfaces.tobago.renderkit.RenderUtil;
@@ -40,15 +42,31 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import java.io.IOException;
+import java.util.Map;
public class PopupRenderer extends RendererBase implements AjaxRenderer {
private static final Log LOG = LogFactory.getLog(PopupRenderer.class);
public static final String CONTENT_ID_POSTFIX = SUBCOMPONENT_SEP + "content";
+ private static final String CLOSED = "closed";
public boolean getRendersChildren() {
return true;
+ }
+
+
+ public void decode(FacesContext facesContext, UIComponent component) {
+ super.decode(facesContext, component);
+ Map map = facesContext.getExternalContext().getRequestParameterMap();
+ String hidden = (String) map.get(component.getClientId(facesContext));
+ if (CLOSED.equals(hidden)) {
+ ((UIPopup)component).closedOnClient();
+ }
+ UIPage page = ComponentUtil.findPage(component);
+ if (page.getActionId() != null && page.getActionId().startsWith(component.getClientId(facesContext))) {
+ ((UIPopup)component).submitted();
+ }
}
public void encodeBeginTobago(
Modified: myfaces/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js?view=diff&rev=471545&r1=471544&r2=471545
==============================================================================
--- myfaces/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js (original)
+++ myfaces/tobago/trunk/theme/standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js Sun Nov 5 14:14:51 2006
@@ -691,6 +691,11 @@
*/
setupPopup: function(id, left, top) {
// alert("tobagoSetupPopup('" + id + "', '" + left + "', '"+ top + "')");
+ var hidden = Tobago.element(id + Tobago.SUB_COMPONENT_SEP + "hidden");
+ if (hidden && hidden.type == "hidden") {
+ hidden.parentNode.removeChild(hidden);
+ }
+
var contentId = id + Tobago.SUB_COMPONENT_SEP + "content";
var div = this.element(contentId);
if (div) {
@@ -758,12 +763,27 @@
* remove a popup without request
*
*/
- closePopup: function(id) {
- var div = Tobago.element(id + "parentDiv");
+ closePopup: function(element) {
+ var div;
+ var id;
+ if (typeof element == "string") {
+ id = element;
+ } else if (typeof element == "object" && element.tagName) {
+ div = Tobago.findAnchestorWithTagName(element, "DIV");
+ while (div && div.className && div.className.indexOf("tobago-popup-content") == -1) {
+ div = Tobago.findAnchestorWithTagName(div.parentNode, "DIV");
+ }
+ if (div) {
+ var re = new RegExp(Tobago.SUB_COMPONENT_SEP + "content$")
+ id = div.id.replace(re, "");
+ }
+ }
+
+ div = Tobago.element(id + "parentDiv");
if (div) {
// created by ajax
div.parentNode.removeChild(div);
- } else {
+ } else if (id) {
div = Tobago.element(id);
if (div) {
div.parentNode.removeChild(div);
@@ -776,13 +796,23 @@
if (div) {
div.parentNode.removeChild(div);
}
+ } else {
+ LOG.error("Can't close popup ");
}
+
+ var hidden = document.createElement("input");
+ hidden.id = id + Tobago.SUB_COMPONENT_SEP + "hidden";
+ hidden.name = id;
+ hidden.type = "hidden";
+ hidden.value = "closed";
+ Tobago.form.appendChild(hidden);
},
openPopupWithAction: function(popupId, actionId) {
var div = Tobago.element(popupId);
if (div) {
- // something is wrong, doing full reload
+ LOG.warn("something is wrong, doing full reload");
+// LOG.info("id = " + popupId + " type = " + div.tagName + " class = " + div.className);
Tobago.submitAction(actionId);
}