1 20 21 package com.methodhead.shim; 22 23 import javax.servlet.jsp.JspException ; 24 import javax.servlet.jsp.tagext.TagSupport ; 25 import java.util.Map ; 26 import java.io.IOException ; 27 import java.util.HashMap ; 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 import org.apache.struts.util.MessageResources; 31 import org.apache.struts.Globals; 32 import com.methodhead.sitecontext.SiteContext; 33 34 public class PanelTag 35 extends 36 TagSupport { 37 38 40 42 44 46 public int doStartTag() 47 throws 48 JspException { 49 50 try { 51 52 Map map = 56 ( Map )pageContext.getRequest().getAttribute( 57 ShimGlobals.PANELMAP_KEY ); 58 59 if ( map != null ) { 60 61 if ( map.containsKey( getName() ) ) 65 return SKIP_BODY; 66 67 PanelConfig panelConfig = new PanelConfig(); 71 panelConfig.setName( getName() ); 72 73 if ( getDefaultModule().equals( "" ) ) 74 panelConfig.setDefaultModule( ShimGlobals.DEFAULT_MODULE ); 75 else 76 panelConfig.setDefaultModule( getDefaultModule() ); 77 78 map.put( panelConfig.getName(), panelConfig ); 79 80 return SKIP_BODY; 81 } 82 83 String mode = 87 ( String )pageContext.getSession().getAttribute( ShimGlobals.MODE_KEY ); 88 89 Page page = 90 ( Page )pageContext.getRequest().getAttribute( ShimGlobals.PAGE_KEY ); 91 92 Module module = null; 93 Panel panel = ( Panel )page.getPanels().get( name_ ); 94 if ( panel != null ) 95 module = panel.getModule(); 96 97 MessageResources messageResources = 98 ( MessageResources )pageContext.getServletContext().getAttribute( 99 Globals.MESSAGES_KEY ); 100 101 if ( pageContext.getRequest().getAttribute( 105 ShimGlobals.EDITPANEL_KEY ) != null ) { 106 107 if ( name_.equals( 111 pageContext.getRequest().getAttribute( 112 ShimGlobals.EDITPANEL_KEY ) ) ) { 113 114 pageContext.getOut().println( "<div id=\"editableDiv\">" ); 115 116 if ( module == null ) 117 pageContext.getOut().println( 118 messageResources.getMessage( "shim.panelNotSet" ) ); 119 else 120 module.display( 121 ( HttpServletRequest )pageContext.getRequest(), 122 ( HttpServletResponse )pageContext.getResponse(), 123 pageContext.getOut() ); 124 125 pageContext.getOut().println( "</div>" ); 126 } 127 else { 128 129 if ( module == null ) 133 pageContext.getOut().println( 134 messageResources.getMessage( "shim.panelNotSet" ) ); 135 else 136 module.display( 137 ( HttpServletRequest )pageContext.getRequest(), 138 ( HttpServletResponse )pageContext.getResponse(), 139 pageContext.getOut() ); 140 } 141 } 142 143 else if ( ShimGlobals.MODE_EDIT.equals( mode ) && 147 ( pageContext.getRequest().getAttribute( 148 ShimGlobals.PREVIEW_KEY ) == null ) ) { 149 150 String headerResource = null; 151 String footerResource = null; 152 153 if ( ShimUtils.displayEditElements( 154 ( HttpServletRequest )pageContext.getRequest() ) ) { 155 if ( module == null ) { 159 headerResource = "shim.editPage.panelHeaderPanel"; 160 footerResource = "shim.editPage.panelFooterPanel"; 161 } 162 else if ( module.isConfigurable() && !module.isEditable() ) { 163 headerResource = "shim.editPage.panelHeaderPanelConfigure"; 164 footerResource = "shim.editPage.panelFooterPanelConfigure"; 165 } 166 else if ( !module.isConfigurable() && module.isEditable() ) { 167 headerResource = "shim.editPage.panelHeaderPanelEdit"; 168 footerResource = "shim.editPage.panelFooterPanelEdit"; 169 } 170 else if ( module.isConfigurable() && module.isEditable() ) { 171 headerResource = "shim.editPage.panelHeaderPanelConfigureEdit"; 172 footerResource = "shim.editPage.panelFooterPanelConfigureEdit"; 173 } 174 175 if ( headerResource != null ) { 179 180 pageContext.getOut().println( 184 messageResources.getMessage( 185 headerResource, 186 "" + page.getInt( "id" ), 187 name_ ) ); 188 } 189 } 190 191 if ( module == null ) 195 pageContext.getOut().println( 196 messageResources.getMessage( "shim.panelNotSet" ) ); 197 else 198 module.display( 199 ( HttpServletRequest )pageContext.getRequest(), 200 ( HttpServletResponse )pageContext.getResponse(), 201 pageContext.getOut() ); 202 203 if ( ShimUtils.displayEditElements( 204 ( HttpServletRequest )pageContext.getRequest() ) ) { 205 if ( footerResource != null ) { 209 pageContext.getOut().println( 210 messageResources.getMessage( 211 footerResource, 212 "" + page.getInt( "id" ), 213 name_ ) ); 214 } 215 } 216 } 217 218 else { 222 if ( module == null ) 223 pageContext.getOut().println( 224 messageResources.getMessage( "shim.panelNotSet" ) ); 225 else 226 module.display( 227 ( HttpServletRequest )pageContext.getRequest(), 228 ( HttpServletResponse )pageContext.getResponse(), 229 pageContext.getOut() ); 230 } 231 } 232 catch ( IOException e ) { 233 throw new JspException ( 234 "Unexpected IOException when displaying panel \"" + name_ + 235 "\": " + e.toString() ); 236 } 237 238 return SKIP_BODY; 239 } 240 241 243 public String getName() { 244 return name_; 245 } 246 247 public void setName( String name ) { 248 name_ = name; 249 } 250 251 public String getDefaultModule() { 252 return defaultModule_; 253 } 254 255 public void setDefaultModule( String defaultModule ) { 256 defaultModule_ = defaultModule; 257 } 258 259 261 private String name_ = ""; 262 263 private String defaultModule_ = ""; 264 } 265 | Popular Tags |