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.internal.component;
21
22 import org.apache.myfaces.tobago.util.FacesVersion;
23
24 import javax.faces.component.UIComponentBase;
25 import javax.faces.component.UIViewRoot;
26 import javax.faces.context.FacesContext;
27 import javax.faces.event.ComponentSystemEvent;
28 import javax.faces.event.ListenerFor;
29 import javax.faces.event.PostAddToViewEvent;
30 import javax.faces.event.PreRenderViewEvent;
31
32
33
34
35
36
37 @ListenerFor(systemEventClass = PostAddToViewEvent.class)
38 public abstract class AbstractUIScript extends UIComponentBase {
39
40 @Override
41 public void processEvent(final ComponentSystemEvent event) {
42
43 super.processEvent(event);
44
45 if (event instanceof PreRenderViewEvent) {
46 addComponentResource();
47 } else if (event instanceof PostAddToViewEvent) {
48 if (FacesVersion.supports21() || !FacesVersion.isMyfaces()) {
49
50
51
52
53
54 getFacesContext().getViewRoot().subscribeToEvent(PreRenderViewEvent.class, this);
55 } else {
56 addComponentResource();
57 }
58 }
59 }
60
61 private void addComponentResource() {
62 final FacesContext facesContext = getFacesContext();
63 final UIViewRoot root = facesContext.getViewRoot();
64 root.addComponentResource(facesContext, this);
65 }
66
67 public abstract String getFile();
68 public abstract void setFile(String file);
69
70 public abstract String getType();
71 public abstract void setType(String type);
72 }