/* * � Copyright IBM Corp. 2010 * * Licensed 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 com.ibm.xsp.extlib.component.dojo.layout; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import com.ibm.commons.util.StringUtil; import com.ibm.xsp.component.UIViewRootEx; /** * Dojo Content Pane. * * The content pane can be: * 1- A simple panel with its content rendered while the panel is rendered * 2- A panel with its content rendered "on demand", when the panel is displayed (partial refresh) * 2- A panel with a url pointing to its content * * @author Philippe Riand */ public class UIDojoContentPane extends UIDojoLayout { public static final String COMPONENT_FAMILY = "javax.faces.Panel"; //$NON-NLS-1$ public static final String RENDERER_TYPE = "com.ibm.xsp.extlib.dojo.layout.ContentPane"; //$NON-NLS-1$ private String href; private Boolean extractContent; private Boolean parseOnLoad; private Boolean preventCache; private Boolean preload; private Boolean refreshOnShow; private String loadingMessage; private String errorMessage; private String onLoad; private String onUnload; private String onDownloadStart; private String onContentError; private String onDownloadError; private String onDownloadEnd; // XPages extension private Boolean partialRefresh; public UIDojoContentPane() { setRendererType(RENDERER_TYPE); } public String getHref() { if (null != this.href) { return this.href; } ValueBinding _vb = getValueBinding("href"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setHref(String href) { this.href = href; } public boolean isExtractContent() { if (null != this.extractContent) { return this.extractContent; } ValueBinding _vb = getValueBinding("extractContent"); //$NON-NLS-1$ if (_vb != null) { Boolean val = (Boolean) _vb.getValue(FacesContext.getCurrentInstance()); if(val!=null) { return val; } } return false; } public void setExtractContent(boolean extractContent) { this.extractContent = extractContent; } public boolean isParseOnLoad() { if (null != this.parseOnLoad) { return this.parseOnLoad; } ValueBinding _vb = getValueBinding("parseOnLoad"); //$NON-NLS-1$ if (_vb != null) { Boolean val = (Boolean) _vb.getValue(FacesContext.getCurrentInstance()); if(val!=null) { return val; } } return true; } public void setParseOnLoad(boolean parseOnLoad) { this.parseOnLoad = parseOnLoad; } public boolean isPreventCache() { if (null != this.preventCache) { return this.preventCache; } ValueBinding _vb = getValueBinding("preventCache"); //$NON-NLS-1$ if (_vb != null) { Boolean val = (Boolean) _vb.getValue(FacesContext.getCurrentInstance()); if(val!=null) { return val; } } return false; } public void setPreventCache(boolean preventCache) { this.preventCache = preventCache; } public boolean isPreload() { if (null != this.preload) { return this.preload; } ValueBinding _vb = getValueBinding("preload"); //$NON-NLS-1$ if (_vb != null) { Boolean val = (Boolean) _vb.getValue(FacesContext.getCurrentInstance()); if(val!=null) { return val; } } return false; } public void setPreload(boolean preload) { this.preload = preload; } public boolean isRefreshOnShow() { if (null != this.refreshOnShow) { return this.refreshOnShow; } ValueBinding _vb = getValueBinding("refreshOnShow"); //$NON-NLS-1$ if (_vb != null) { Boolean val = (Boolean) _vb.getValue(FacesContext.getCurrentInstance()); if(val!=null) { return val; } } return false; } public void setRefreshOnShow(boolean refreshOnShow) { this.refreshOnShow = refreshOnShow; } public String getLoadingMessage() { if (null != this.loadingMessage) { return this.loadingMessage; } ValueBinding _vb = getValueBinding("loadingMessage"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setLoadingMessage(String loadingMessage) { this.loadingMessage = loadingMessage; } public String getErrorMessage() { if (null != this.errorMessage) { return this.errorMessage; } ValueBinding _vb = getValueBinding("errorMessage"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } public String getOnLoad() { if (null != this.onLoad) { return this.onLoad; } ValueBinding _vb = getValueBinding("onLoad"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setOnLoad(String onLoad) { this.onLoad = onLoad; } public String getOnUnload() { if (null != this.onUnload) { return this.onUnload; } ValueBinding _vb = getValueBinding("onUnload"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setOnUnload(String onUnload) { this.onUnload = onUnload; } public String getOnDownloadStart() { if (null != this.onDownloadStart) { return this.onDownloadStart; } ValueBinding _vb = getValueBinding("onDownloadStart"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setOnDownloadStart(String onDownloadStart) { this.onDownloadStart = onDownloadStart; } public String getOnContentError() { if (null != this.onContentError) { return this.onContentError; } ValueBinding _vb = getValueBinding("onContentError"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setOnContentError(String onContentError) { this.onContentError = onContentError; } public String getOnDownloadError() { if (null != this.onDownloadError) { return this.onDownloadError; } ValueBinding _vb = getValueBinding("onDownloadError"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setOnDownloadError(String onDownloadError) { this.onDownloadError = onDownloadError; } public String getOnDownloadEnd() { if (null != this.onDownloadEnd) { return this.onDownloadEnd; } ValueBinding _vb = getValueBinding("onDownloadEnd"); //$NON-NLS-1$ if (_vb != null) { return (java.lang.String) _vb.getValue(FacesContext.getCurrentInstance()); } else { return null; } } public void setOnDownloadEnd(String onDownloadEnd) { this.onDownloadEnd = onDownloadEnd; } public boolean isPartialRefresh() { if (null != this.partialRefresh) { return this.partialRefresh; } ValueBinding _vb = getValueBinding("partialRefresh"); //$NON-NLS-1$ if (_vb != null) { Boolean val = (Boolean) _vb.getValue(FacesContext.getCurrentInstance()); if(val!=null) { return val; } } return false; } public void setPartialRefresh(boolean partialRefresh) { this.partialRefresh = partialRefresh; } // State management @Override public void restoreState(FacesContext _context, Object _state) { Object _values[] = (Object[]) _state; super.restoreState(_context, _values[0]); this.href = (String)_values[1]; this.extractContent = (Boolean)_values[2]; this.parseOnLoad = (Boolean)_values[3]; this.preventCache = (Boolean)_values[4]; this.preload= (Boolean)_values[5]; this.refreshOnShow = (Boolean)_values[6]; this.loadingMessage = (String)_values[7]; this.errorMessage = (String)_values[8]; this.onLoad = (String)_values[9]; this.onUnload = (String)_values[10]; this.onDownloadStart = (String)_values[11]; this.onContentError = (String)_values[12]; this.onDownloadError = (String)_values[13]; this.onDownloadEnd = (String)_values[14]; this.partialRefresh = (Boolean)_values[15]; } @Override public Object saveState(FacesContext _context) { Object _values[] = new Object[16]; _values[0] = super.saveState(_context); _values[1] = href; _values[2] = extractContent; _values[3] = parseOnLoad; _values[4] = preventCache; _values[5] = preload; _values[6] = refreshOnShow; _values[7] = loadingMessage; _values[8] = errorMessage; _values[9] = onLoad; _values[10] = onUnload; _values[11] = onDownloadStart; _values[12] = onContentError; _values[13] = onDownloadError; _values[14] = onDownloadEnd; _values[15] = partialRefresh; return _values; } public String getAjaxUrl(FacesContext context) { UIViewRootEx root = (UIViewRootEx)context.getViewRoot(); // Compute a partial refresh URL... StringBuilder b = new StringBuilder(); String actionURL = context.getApplication().getViewHandler().getActionURL(context, root.getViewId()); b.append(actionURL); b.append("?$$ajaxid="); // $NON-NLS-1$ b.append(getClientId(context)); b.append("&$$ajaxinner=content"); // $NON-NLS-1$ String uniqueId = root.getUniqueViewId(); if(StringUtil.isNotEmpty(uniqueId)) { b.append("&$$viewid="); // $NON-NLS-1$ b.append(uniqueId); } return b.toString(); } }