001 package org.apache.myfaces.tobago.taglib.component; 002 003 /* 004 * Licensed to the Apache Software Foundation (ASF) under one or more 005 * contributor license agreements. See the NOTICE file distributed with 006 * this work for additional information regarding copyright ownership. 007 * The ASF licenses this file to You under the Apache License, Version 2.0 008 * (the "License"); you may not use this file except in compliance with 009 * the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 */ 019 020 import org.apache.myfaces.tobago.component.ComponentUtil; 021 import org.apache.myfaces.tobago.component.UIPage; 022 import org.apache.myfaces.tobago.util.Deprecation; 023 024 import javax.faces.component.UIComponent; 025 import javax.servlet.jsp.JspException; 026 import javax.servlet.jsp.tagext.BodyTag; 027 028 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_APPLICATION_ICON; 029 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_DOCTYPE; 030 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_FOCUS_ID; 031 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_HEIGHT; 032 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_LABEL; 033 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_METHOD; 034 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_STATE; 035 import static org.apache.myfaces.tobago.TobagoConstants.ATTR_WIDTH; 036 037 // Some Weblogic versions need explicit 'implements' for BodyTag 038 public class PageTag extends TobagoBodyTag 039 implements BodyTag, PageTagDeclaration { 040 041 @Deprecated 042 private String doctype; 043 044 // TODO move to renderkit 045 private String method; 046 047 private String state; 048 049 private String focusId; 050 051 private String label; 052 053 private String width; 054 055 private String height; 056 057 private String applicationIcon; 058 059 public int doEndTag() throws JspException { 060 UIPage page = (UIPage) getComponentInstance(); 061 // TODO is this required? 062 // clear popups; 063 int result = super.doEndTag(); 064 page.getPopups().clear(); 065 066 // reseting doctype and charset 067 return result; 068 } 069 070 public String getComponentType() { 071 return UIPage.COMPONENT_TYPE; 072 } 073 074 public void release() { 075 super.release(); 076 doctype = null; 077 method = null; 078 state = null; 079 focusId = null; 080 label = null; 081 width = null; 082 height = null; 083 applicationIcon = null; 084 } 085 086 protected void setProperties(UIComponent component) { 087 super.setProperties(component); 088 ComponentUtil.setStringProperty(component, ATTR_METHOD, method); 089 ComponentUtil.setStringProperty(component, ATTR_DOCTYPE, doctype); 090 ComponentUtil.setStringProperty(component, ATTR_FOCUS_ID, focusId); 091 ComponentUtil.setStringProperty(component, ATTR_LABEL, label); 092 ComponentUtil.setValueBinding(component, ATTR_STATE, state); 093 ComponentUtil.setIntegerSizeProperty(component, ATTR_WIDTH, width); 094 ComponentUtil.setIntegerSizeProperty(component, ATTR_HEIGHT, height); 095 ComponentUtil.setStringProperty(component, ATTR_APPLICATION_ICON, applicationIcon); 096 } 097 098 public void setDoctype(String doctype) { 099 Deprecation.LOG.error("The attribute 'doctype' of 'UIPage' is deprecated. " 100 + "Please refer the documentation for further information."); 101 this.doctype = doctype; 102 } 103 104 public void setMethod(String method) { 105 this.method = method; 106 } 107 108 public void setState(String state) { 109 this.state = state; 110 } 111 112 public String getFocusId() { 113 return focusId; 114 } 115 116 public void setFocusId(String focusId) { 117 this.focusId = focusId; 118 } 119 120 public String getLabel() { 121 return label; 122 } 123 124 public void setLabel(String label) { 125 this.label = label; 126 } 127 128 public String getWidth() { 129 return width; 130 } 131 132 public void setWidth(String width) { 133 this.width = width; 134 } 135 136 public String getHeight() { 137 return height; 138 } 139 140 public void setHeight(String height) { 141 this.height = height; 142 } 143 144 public void setApplicationIcon(String icon) { 145 applicationIcon = icon; 146 } 147 148 public String getApplicationIcon() { 149 return applicationIcon; 150 } 151 } 152