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