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.renderkit.html;
21  
22  import org.apache.myfaces.tobago.component.Attributes;
23  import org.apache.myfaces.tobago.internal.component.AbstractUICommandBase;
24  import org.apache.myfaces.tobago.util.ComponentUtils;
25  
26  public class Popup {
27  
28    /**
29     * Can be "open" or "close"
30     */
31    private String command;
32  
33    /**
34     * true for close immediately, false for close after submit
35     */
36    private Boolean immediate;
37  
38    private Popup(String command, Boolean immediate) {
39      this.command = command;
40      this.immediate = immediate;
41    }
42  
43    public static Popup createPopup(AbstractUICommandBase component) {
44      String command = null;
45      Boolean immediate = null;
46  
47      final String popupClose = (String) component.getAttributes().get(Attributes.POPUP_CLOSE);
48      if (popupClose != null) {
49        command = "close";
50        immediate = popupClose.equals("immediate");
51      } else {
52        boolean popupAction = ComponentUtils.containsPopupActionListener(component);
53        if (popupAction) {
54          command = "open";
55        }
56      }
57      if (command != null) {
58        return new Popup(command, immediate);
59      } else {
60        return null;
61      }
62    }
63  
64    public String getCommand() {
65      return command;
66    }
67  
68    public Boolean isImmediate() {
69      return immediate;
70    }
71  }