1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.event;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24 import org.apache.myfaces.tobago.internal.component.AbstractUIPopup;
25 import org.apache.myfaces.tobago.util.ComponentUtils;
26
27 import javax.faces.component.StateHolder;
28 import javax.faces.context.FacesContext;
29 import javax.faces.event.ActionEvent;
30
31 public class PopupActionListener extends AbstractPopupActionListener implements StateHolder {
32
33 private static final Logger LOG = LoggerFactory.getLogger(PopupActionListener.class);
34
35 private String popupId;
36
37 public PopupActionListener() {
38 }
39
40 public PopupActionListener(String popupId) {
41 this.popupId = popupId;
42 if (LOG.isDebugEnabled()) {
43 LOG.debug("Add ActionListener: {}", popupId);
44 }
45 }
46
47 @Override
48 protected AbstractUIPopup getPopup(ActionEvent actionEvent) {
49 FacesContext facesContext = FacesContext.getCurrentInstance();
50 AbstractUIPopup popup = (AbstractUIPopup) ComponentUtils.findComponent(actionEvent.getComponent(), popupId);
51 if (popup == null) {
52 LOG.error("Found no popup for \"{}\"! Search base componentId : {}"
53 + popupId, actionEvent.getComponent().getClientId(facesContext));
54 }
55 return popup;
56 }
57
58 public boolean isTransient() {
59 return false;
60 }
61
62 public void restoreState(FacesContext context, Object state) {
63 Object[] values = (Object[]) state;
64 popupId = (String) values[0];
65 }
66
67 public Object saveState(FacesContext context) {
68 Object[] values = new Object[1];
69 values[0] = popupId;
70 return values;
71 }
72
73 public void setTransient(boolean newTransientValue) {
74
75 }
76 }