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 static org.apache.myfaces.tobago.TobagoConstants.ATTR_ACTION_LINK;
023    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ACTION_ONCLICK;
024    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_DISABLED;
025    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_IMMEDIATE;
026    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_JSF_RESOURCE;
027    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_RESOURCE;
028    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TRANSITION;
029    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TYPE;
030    import org.apache.myfaces.tobago.component.ComponentUtil;
031    import org.apache.myfaces.tobago.component.UICommand;
032    
033    import javax.faces.component.UIComponent;
034    
035    public abstract class AbstractCommandTag extends TobagoTag implements AbstractCommandTagDeclaration {
036    
037      private String disabled;
038      private String action;
039      private String actionListener;
040      private String type;
041      private String immediate;
042      private String onclick;
043      private String link;
044      private String resource;
045      private String jsfResource;
046      private String transition;
047    
048      public String getComponentType() {
049        return UICommand.COMPONENT_TYPE;
050      }
051    
052      protected void setProperties(UIComponent component) {
053        super.setProperties(component);
054        UICommand command = (UICommand) component;
055        ComponentUtil.setBooleanProperty(component, ATTR_DISABLED, disabled);
056        ComponentUtil.setStringProperty(component, ATTR_TYPE, type);
057    //   ComponentUtil.setBooleanProperty(component, ATTR_DEFAULT_COMMAND, defaultCommand);
058        ComponentUtil.setBooleanProperty(component, ATTR_IMMEDIATE, immediate);
059        if (component instanceof UICommand) {
060          ComponentUtil.setAction((UICommand) component, type, action);
061        }
062        ComponentUtil.setStringProperty(component, ATTR_ACTION_LINK, link);
063        ComponentUtil.setStringProperty(component, ATTR_RESOURCE, resource);
064        ComponentUtil.setBooleanProperty(component, ATTR_JSF_RESOURCE, jsfResource);
065        ComponentUtil.setStringProperty(component, ATTR_ACTION_ONCLICK, onclick);
066        ComponentUtil.setActionListener(command, actionListener);
067        ComponentUtil.setBooleanProperty(component, ATTR_TRANSITION, transition);
068      }
069    
070      public void release() {
071        super.release();
072        action = null;
073        actionListener = null;
074        type = null;
075        disabled = null;
076        immediate = null;
077        onclick = null;
078        link = null;
079        resource = null;
080        jsfResource = null;
081        transition = null;
082      }
083    
084      public String getAction() {
085        return action;
086      }
087    
088      public void setAction(String action) {
089        this.action = action;
090      }
091    
092      public void setOnclick(String onclick) {
093        this.onclick = onclick;
094      }
095    
096      public void setLink(String link) {
097        this.link = link;
098      }
099    
100      public void setResource(String resource) {
101        this.resource = resource;
102      }
103    
104      public void setJsfResource(String jsfResource) {
105        this.jsfResource = jsfResource;
106      }
107    
108      public String getActionListener() {
109        return actionListener;
110      }
111    
112      public void setActionListener(String actionListener) {
113        this.actionListener = actionListener;
114      }
115    
116      public String getType() {
117        return type;
118      }
119    
120      public void setType(String type) {
121        this.type = type;
122      }
123    
124      public String getImmediate() {
125        return immediate;
126      }
127    
128      public void setImmediate(String immediate) {
129        this.immediate = immediate;
130      }
131    
132      public void setDisabled(String disabled) {
133        this.disabled = disabled;
134      }
135    
136      public void setTransition(String transition) {
137        this.transition = transition;
138      }
139    }