001 package org.apache.tapestry.pageload; 002 003 import org.apache.hivemind.PoolManageable; 004 import org.apache.tapestry.IComponent; 005 import org.apache.tapestry.IForm; 006 import org.apache.tapestry.IPage; 007 import org.apache.tapestry.dojo.IWidget; 008 009 /** 010 * Looks for components of type {@link org.apache.tapestry.IForm} and {@link org.apache.tapestry.dojo.IWidget} so 011 * that the appropriate javascript includes can be made on an as needed basis by {@link org.apache.tapestry.dojo.AjaxShellDelegate}. 012 */ 013 public class ComponentTypeVisitor implements IComponentVisitor, PoolManageable { 014 015 IPage _page; 016 017 public void visitComponent(IComponent component) 018 { 019 if (IPage.class.isInstance(component)) { 020 021 _page = (IPage) component; 022 return; 023 } 024 025 if (IForm.class.isInstance(component) && _page != null) { 026 027 _page.setHasFormComponents(true); 028 } 029 030 if (IWidget.class.isInstance(component) && _page != null) { 031 032 _page.setHasWidgets(true); 033 } 034 } 035 036 public void activateService() 037 { 038 _page = null; 039 } 040 041 public void passivateService() 042 { 043 _page = null; 044 } 045 }