Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 806c49d0272fbf58646918a9e2bfdf704ad57d32 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.rap.ui" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.rap.ui" id="phaselistener" name="PhaseListener"/>
      </appInfo>
      <documentation>
         The extension point is used to register a &lt;code&gt;PhaseListener&lt;/code&gt; implementation. PhaseListeners are objects that are registered to be notified at the beginning and ending of each phase of the request processing lifecycle (see &lt;code&gt;ILifeCycle&lt;/code&gt;). Extensions should provide a class that implements &lt;code&gt;org.eclipse.rap.rwt.lifecycle.PhaseListener&lt;/code&gt;.
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appInfo>
            <meta.element />
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="listener" minOccurs="1" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute translatable="true"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="listener">
      <complexType>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.rap.rwt.lifecycle.PhaseListener"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         RAP 1.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         &lt;pre&gt;
&lt;extension
    id=&quot;org.eclipse.rap.demo.phaselistenerextension&quot;
    point=&quot;org.eclipse.rap.ui.phaselistener&quot;&gt;
  &lt;entrypoint
     id=&quot;org.eclipse.rap.demo.phaselistener&quot;
        class=&quot;org.eclipse.rap.demo.DemoPhaseListener&quot; /&gt;
  &lt;/extension&gt;
&lt;/pre&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         RWT divides the life cycle of an HTTP request into different phases that are executed sequentially. Each phase has its special purpose and creates the prerequisites needed by the following phases for proper execution. A PhaseListener has to implement the &lt;code&gt;org.eclipse.rap.rwt.lifecycle.PhaseListener&lt;/code&gt; interface.

&lt;pre&gt;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.lifecycle.*;

public class DemoPhaseListener implements PhaseListener {

  public void beforePhase( final PhaseEvent event ) {
    // ...
    RWT.getLifeCycle().removePhaseListener( this );
  }

  public void afterPhase( final PhaseEvent event ) {
    // ...
  }

  public PhaseId getPhaseId() {
    return PhaseId.RENDER;
  }
}
&lt;/pre&gt;

As &lt;code&gt;PhaseListener&lt;/code&gt;s are attached to the RWT lifecycle and thus available globally, you need to make sure to remove them properly if you do not need them anymore (see &lt;code&gt;RWT.getLifeCycle().removePhaseListener()&lt;/code&gt;.

In case that the PhaseListener needs to access any UI-related objects (e.g. Widgets), you have to make sure 
that you compare the current display with the one attached to the current session.

      </documentation>
   </annotation>


   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2007, 2013 EclipseSource and others.&lt;br&gt;
All rights reserved. This program and the accompanying materials are made
available under the terms of the Eclipse Public License v1.0 which accompanies
this distribution, and is available at &lt;a 
href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>

Back to the top