001    package org.apache.myfaces.tobago.taglib.component;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one or more
005     * contributor license agreements.  See the NOTICE file distributed with
006     * this work for additional information regarding copyright ownership.
007     * The ASF licenses this file to You under the Apache License, Version 2.0
008     * (the "License"); you may not use this file except in compliance with
009     * the License.  You may obtain a copy of the License at
010     *
011     *      http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing, software
014     * distributed under the License is distributed on an "AS IS" BASIS,
015     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ACTION_LINK;
021    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_ACTION_ONCLICK;
022    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_DISABLED;
023    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_IMMEDIATE;
024    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_JSF_RESOURCE;
025    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_RESOURCE;
026    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TRANSITION;
027    import static org.apache.myfaces.tobago.TobagoConstants.ATTR_TYPE;
028    import org.apache.myfaces.tobago.component.ComponentUtil;
029    import org.apache.myfaces.tobago.component.UICommand;
030    
031    import javax.faces.component.UIComponent;
032    
033    public abstract class AbstractCommandTag extends TobagoTag implements AbstractCommandTagDeclaration {
034    
035      private String disabled;
036      private String action;
037      private String actionListener;
038      private String type;
039      private String immediate;
040      private String onclick;
041      private String link;
042      private String resource;
043      private String jsfResource;
044      private String transition;
045    
046      public String getComponentType() {
047        return UICommand.COMPONENT_TYPE;
048      }
049    
050      protected void setProperties(UIComponent component) {
051        super.setProperties(component);
052        UICommand command = (UICommand) component;
053        ComponentUtil.setBooleanProperty(component, ATTR_DISABLED, disabled);
054        ComponentUtil.setStringProperty(component, ATTR_TYPE, type);
055    //   ComponentUtil.setBooleanProperty(component, ATTR_DEFAULT_COMMAND, defaultCommand);
056        ComponentUtil.setBooleanProperty(component, ATTR_IMMEDIATE, immediate);
057        if (component instanceof UICommand) {
058          ComponentUtil.setAction((UICommand) component, type, action);
059        }
060        ComponentUtil.setStringProperty(component, ATTR_ACTION_LINK, link);
061        ComponentUtil.setStringProperty(component, ATTR_RESOURCE, resource);
062        ComponentUtil.setBooleanProperty(component, ATTR_JSF_RESOURCE, jsfResource);
063        ComponentUtil.setStringProperty(component, ATTR_ACTION_ONCLICK, onclick);
064        ComponentUtil.setActionListener(command, actionListener);
065        ComponentUtil.setBooleanProperty(component, ATTR_TRANSITION, transition);
066      }
067    
068      public void release() {
069        super.release();
070        action = null;
071        actionListener = null;
072        type = null;
073        disabled = null;
074        immediate = null;
075        onclick = null;
076        link = null;
077        resource = null;
078        jsfResource = null;
079        transition = null;
080      }
081    
082      public String getAction() {
083        return action;
084      }
085    
086      public void setAction(String action) {
087        this.action = action;
088      }
089    
090      public void setOnclick(String onclick) {
091        this.onclick = onclick;
092      }
093    
094      public void setLink(String link) {
095        this.link = link;
096      }
097    
098      public void setResource(String resource) {
099        this.resource = resource;
100      }
101    
102      public void setJsfResource(String jsfResource) {
103        this.jsfResource = jsfResource;
104      }
105    
106      public String getActionListener() {
107        return actionListener;
108      }
109    
110      public void setActionListener(String actionListener) {
111        this.actionListener = actionListener;
112      }
113    
114      public String getType() {
115        return type;
116      }
117    
118      public void setType(String type) {
119        this.type = type;
120      }
121    
122      public String getImmediate() {
123        return immediate;
124      }
125    
126      public void setImmediate(String immediate) {
127        this.immediate = immediate;
128      }
129    
130      public void setDisabled(String disabled) {
131        this.disabled = disabled;
132      }
133    
134      public void setTransition(String transition) {
135        this.transition = transition;
136      }
137    }