View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  
20  package org.apache.myfaces.tobago.internal.taglib.component;
21  
22  import org.apache.myfaces.tobago.apt.annotation.Behavior;
23  import org.apache.myfaces.tobago.apt.annotation.Tag;
24  import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
25  import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
26  import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
27  import org.apache.myfaces.tobago.component.ClientBehaviors;
28  import org.apache.myfaces.tobago.component.RendererTypes;
29  import org.apache.myfaces.tobago.internal.taglib.declaration.HasAction;
30  import org.apache.myfaces.tobago.internal.taglib.declaration.HasActionListener;
31  import org.apache.myfaces.tobago.internal.taglib.declaration.HasConfirmation;
32  import org.apache.myfaces.tobago.internal.taglib.declaration.HasFragment;
33  import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
34  import org.apache.myfaces.tobago.internal.taglib.declaration.HasLink;
35  import org.apache.myfaces.tobago.internal.taglib.declaration.HasOutcome;
36  import org.apache.myfaces.tobago.internal.taglib.declaration.HasTarget;
37  import org.apache.myfaces.tobago.internal.taglib.declaration.IsDisabledBySecurity;
38  import org.apache.myfaces.tobago.internal.taglib.declaration.IsImmediateCommand;
39  import org.apache.myfaces.tobago.internal.taglib.declaration.IsOmit;
40  import org.apache.myfaces.tobago.internal.taglib.declaration.IsTransition;
41  
42  import javax.el.ValueExpression;
43  import javax.faces.component.UICommand;
44  
45  /**
46   * Add an event behavior to the component.
47   * It can contain f:ajax and tc:operation tags.
48   */
49  @Tag(name = "event")
50  @UIComponentTag(uiComponent = "org.apache.myfaces.tobago.component.UIEvent",
51      uiComponentFacesClass = "javax.faces.component.UICommand",
52      componentFamily = UICommand.COMPONENT_FAMILY,
53      rendererType = RendererTypes.EVENT,
54      interfaces = {
55          // As long as no behavior event names are defined, ClientBehaviorHolder must be implemented for Mojarra.
56          "javax.faces.component.behavior.ClientBehaviorHolder"
57      },
58      behaviors = {
59          @Behavior(name = ClientBehaviors.CHANGE),
60          @Behavior(
61              name = ClientBehaviors.CLICK,
62              description = "Behavior of a click event.",
63              isDefault = true),
64          @Behavior(name = ClientBehaviors.DBLCLICK),
65          @Behavior(name = ClientBehaviors.FOCUS),
66          @Behavior(name = ClientBehaviors.BLUR),
67          @Behavior(name = ClientBehaviors.MOUSEOUT),
68          @Behavior(name = ClientBehaviors.MOUSEOVER),
69          @Behavior(name = ClientBehaviors.COMPLETE),
70          @Behavior(name = ClientBehaviors.LOAD),
71          @Behavior(name = ClientBehaviors.RELOAD),
72          @Behavior(name = ClientBehaviors.RESIZE)
73      },
74      faceletHandler = "org.apache.myfaces.tobago.facelets.EventHandler")
75  public interface EventTagDeclaration
76      extends HasIdBindingAndRendered, HasAction, HasActionListener, IsImmediateCommand, HasConfirmation,
77      HasLink, HasOutcome, HasFragment, IsTransition, HasTarget, IsDisabledBySecurity, IsOmit {
78  
79    /**
80     * The name of the event as an instance of {@link org.apache.myfaces.tobago.component.ClientBehaviors}
81     * This will be also overwrite events of possible f:ajax children.
82     */
83    @TagAttribute
84    @UIComponentTagAttribute(type = "org.apache.myfaces.tobago.component.ClientBehaviors")
85    void setEvent(final ValueExpression event);
86  
87  }