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  package org.apache.myfaces.custom.focus;
20  
21  import javax.faces.component.UIComponent;
22  import javax.faces.component.UIInput;
23  
24  import org.apache.commons.logging.Log;
25  import org.apache.commons.logging.LogFactory;
26  
27  /**
28   * @JSFComponent
29   *   name = "s:focus"
30   *   class = "org.apache.myfaces.custom.focus.HtmlFocus"
31   *   tagClass = "org.apache.myfaces.custom.focus.HtmlFocusTag"
32   *   
33   * @author Rogerio Pereira Araujo (latest modification by $Author: skitching $)
34   * @version $Revision: 673833 $ $Date: 2008-07-03 16:58:05 -0500 (Thu, 03 Jul 2008) $
35   */
36  public abstract class AbstractHtmlFocus extends UIInput
37  {
38      public static final String COMPONENT_TYPE = "org.apache.myfaces.Focus";
39      public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.Focus";
40      public static final String COMPONENT_FAMILY = "javax.faces.Output";
41  
42      private static final boolean DEFAULT_REMEMBER_CLIENT_FOCUS = false;
43  
44      private static Log log = LogFactory.getLog(AbstractHtmlFocus.class);
45  
46      /**
47       * The JSF id of the component to receive focus.
48       * 
49       * @JSFProperty
50       */
51      public abstract String getFor();
52  
53      /**
54       * @JSFProperty
55       *   defaultValue="false"
56       */
57      public abstract boolean isRememberClientFocus();
58  
59  
60      protected UIComponent findUIComponent()
61      {
62          String forStr = getFor();
63  
64          if (forStr == null)
65          {
66              throw new IllegalArgumentException("focus@for must be specified");
67          }
68  
69          UIComponent forComp = findComponent(forStr);
70          if (forComp == null)
71          {
72              log.warn("could not find UIComponent referenced by attribute focus@for = '"
73                      + forStr + "'");
74          }
75          return forComp;
76      }
77  
78  }