View Javadoc

1   package org.weda.tapestry.component;
2   
3   import org.apache.tapestry.IMarkupWriter;
4   import org.apache.tapestry.IRequestCycle;
5   import org.apache.tapestry.IScript;
6   import org.apache.tapestry.PageRenderSupport;
7   import org.apache.tapestry.TapestryUtils;
8   import org.apache.tapestry.annotations.ComponentClass;
9   import org.apache.tapestry.annotations.InjectScript;
10  import org.apache.tapestry.annotations.Parameter;
11  import org.apache.tapestry.form.AbstractFormComponent;
12  import static org.weda.Constants.*;
13  
14  /**Компонент отображающий действие в качестве кнопки.
15   *
16   * @author tim
17   */
18  @ComponentClass(allowBody=false,allowInformalParameters=false)
19  public abstract class Action extends AbstractAction {
20      @Parameter(required=true)
21      public abstract boolean isRenderAsLink();
22      @InjectScript("Action.script")
23      public abstract IScript getScript();
24      
25      public String getOnClickHandler(){
26          AbstractFormComponent comp = (AbstractFormComponent) 
27              (isRenderAsLink() ? getComponent("link") : getComponent("button"));
28          return String.format(
29                  "setFormTarget('%s','%s')"
30                  , comp.getForm().getName()
31                  , getActionState().getTargetFrame());
32      }
33      
34      public String getActionParameterClass(){
35          return ACTION_PARAMETER_CLASS;
36      }
37      
38      public String getEditorClass(){
39          return getActionState().isEnabled() 
40                      ? EDITOR_CLASS : EDITOR_DISABLED_CLASS;
41      }
42      
43      public String getActionLinkClass(){
44          return getActionState().isEnabled()? ACTION_LINK_CLASS : "";
45      }
46      
47      public String getActionLinkTextClass(){
48          return getActionState().isEnabled()? "" : ACTION_LINK_DISABLED_CLASS;
49      }
50      
51      public String getActionButtonClass(){
52          return getActionState().isEnabled()?
53                      ACTION_BUTTON_CLASS : ACTION_BUTTON_DISABLED_CLASS; 
54      }
55      
56      public String getAccessKey(){
57          String accessKey = 
58                  getActionState().getActionDescriptor().getAccessKey();
59          return accessKey==null? "": accessKey;  
60      }
61  
62      protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
63          PageRenderSupport pageRenderSupport = 
64                  TapestryUtils.getPageRenderSupport(cycle, this);
65          getScript().execute(cycle, pageRenderSupport, null);
66          super.renderComponent(writer, cycle);        
67      }        
68         
69  }