forked from eclipse-tea/tea-website
-
Notifications
You must be signed in to change notification settings - Fork 0
/
overview.html
288 lines (278 loc) · 14.4 KB
/
overview.html
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Eclipse TEA</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description"
content="The website of Eclipse TEA, an open-source framework for development of IDE extensions that can be run from everywhere">
<meta name="author" content="Markus Duft">
<link rel="shortcut icon" href="images/favicon.png">
<link href="css/bootstrap.css" rel="stylesheet" type="text/css">
<link href="css/bootstrap-responsive.css" rel="stylesheet" type="text/css">
<link href="css/shield-responsive.css" rel="stylesheet" type="text/css">
<link href="css/fonts.css" rel="stylesheet" type="text/css">
<link href="css/prettyPhoto.css" rel="stylesheet" media="screen" type="text/css">
<link href="css/prettify.css" type="text/css" rel="stylesheet"/>
<link href="css/style.css" rel="stylesheet" type="text/css">
<link href="css/coverflow.css" rel="stylesheet" type="text/css">
</head>
<body>
<header class="site-header">
<!-- Navbar -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse"
data-target=".nav-collapse"> <span class="icon-bar"></span> <span
class="icon-bar"></span> <span class="icon-bar"></span>
</a> <a class="brand" href="index.html"></a>
<div class="nav-collapse collapse" style="height: 0px;">
<ul class="nav">
<li ><a href="download.html">Download</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="overview.html">Overview</a></li>
<li><a href="getting-started.html">Getting Started</a></li>
</ul>
</li>
<li ><a href="https://www.eclipse.org/forums/index.php/f/370/" target="_blank">Forums</a></li>
<li ><a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=Tea" target="_blank">Bug Tracker</a></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Navbar End -->
</header>
<img style="position: fixed; top: 0; right: 0; margin-top: 65px; z-index:1000; border: 0; " src="images/incubation.png"/>
<div id="tea-arch" class="modal fade" style="display: none;" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3 class="modal-title">TEA Architecture Overview</h3>
</div>
<div class="modal-body">
<img class="img-responsive" src="images/tea-arch.png"/>
</div>
</div>
</div>
</div>
<div id="page">
<div class="container">
<div class="row">
<div class="span12">
<h2>Documentation</h2>
<p>
This page contains an architecture overview of TEA along with a description of each component.
</p>
</div>
</div>
<div class="row">
<div class="span12">
<h3>TEA Components</h3>
</div>
</div>
<div class="row">
<div class="span9">
<p>
TEA is built up of various building blocks depending on each other. The image shows a layer model of the TEA architecture. These are the components (more thorough description below):
<ul>
<li><em>TEA Core</em>: The core components of TEAs task execution engine. Everything in here is independent of any UI component.
Although a basic headless application is included, the actual product for headless execution (which also allows to access UI bundles
through the <em>headless presentation engine</em>) is included in <em>TEA Core UI</em>.</li>
<li><em>TEA Core UI</em>: Contains integration into the Eclipse IDE (UI parts) as well as the headless execution product.</li>
<li><em>TEA LiveView</em>: Contains a view that allows visualization of progress and status (errors, warnings, ...) of <em>TaskChain</em>s and individual <em>Task</em>s.</li>
<li><em>TEA EASE Integration</em>: Integrates Eclipse TEA and Eclipse EASE projects in both directions. It is possible to execute
EASE scripts as TEA <em>Task</em>s, as well as executing TEA <em>TaskChain</em>s from EASE Scripts. Along with the E4 Event Bridge
in the <em>TEA Core UI</em> component, arbitrarily complex interactions between TEA and EASE are possible.</li>
<li><em>TEA Build Library</em>: A collection of <em>Task</em>s and <em>TaskChain</em>s which integrate JDT/PDE/Maven and add build orchestration on top of all that.
The included <code class="prettyprint">CleanBuildAllProjects</code> <em>TaskChain</em> can be used out of the box to build any
workspace containing plug-in projects. Note that the default implementation ignores <em>Package-Import</em> dependencies between
bundles though.</li>
<li><em>TEA Build Library <a href="https://github.com/mduft/lcdsl" target="_blank">LcDsl</a> Integration</em>: Contains a collection of <em>Task</em>s and <em>TaskChain</em>s that allow to generate
various P2 related artifacts from <a href="https://github.com/mduft/lcdsl" target="_blank">LcDsl</a> launch configurations. For instance the contents of a feature can be derived from
the (automatically generated) list of dependencies from an <a href="https://github.com/mduft/lcdsl" target="_blank">LcDsl</a> launch configuration.</li>
</ul>
</p>
</div>
<div class="span3">
<span class="pull-right">
<a class="thumbnail" style="max-width: 250px;" href="#" data-toggle='modal' data-target='#tea-arch'><img src="images/tea-arch.png" alt="TEA Architecture Overview"/></a> </span>
</div>
</div>
<div class="row">
<div class="span12">
<h3>TEA Core</h3>
</div>
</div>
<div class="row">
<div class="span12">
<p>
TEA Core contains support for basic <em>Task</em> and <em>TaskChain</em> concepts.
These are the classes and areas clients using TEA will most likely get in touch, or can use as starting points.
Note that a lot of those classes contain nested annotations related directly to that class/interface.
<ul>
<li>Task Execution Control
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.TaskExecutionContext</code>: All <em>Task</em>s need to be added to an execution context by a <em>TaskChain</em> implementation</li>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskChain</code>: Service interface that needs to be implemented by all <em>TaskChain</em>s.
Note that <b>all</b> <em>TaskChain</em>s <b>must</b> be registered as OSGi service to be picked up by TEA. The easiest way to achieve this
is to use declarative services through the <code class="prettyprint">@Component</code> annotation</li>
<li>All annotations in <code class="prettyprint">org.eclipse.tea.core.annotations</code>: Relevant for implementing <em>TaskChain</em>s mostly.</li>
</ul>
</li>
<li>Headless application & Lifecycle
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskingLifeCycleListener</code>: Allows to react to general <em>Task</em> and <em>TaskChain</em> related events.</li>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskingHeadlessLifeCycle</code>: Allows to react to events relevant only for headless execution</li>
<li>All annotations in <code class="prettyprint">org.eclipse.tea.core.annotations.lifecycle</code>: Relevant for implementing lifecycle extensions which can react to TEA events in the system.</li>
</ul>
</li>
<li>Configuration
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskingConfigurationExtension</code>: Service interface to be implemented by all configuration extensions. A configuration extension
is a POJO that is available for injection with all annotated fields automatically prefilled from either a <em>headless.properties</em> file or the Eclipse preferences of the used
Eclipse (<em>headless.properties</em> has precedence if present).</li>
</ul>
</li>
<li>Statistics
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskingStatisticsContribution</code>: Allows to contribute
additional data to statistics that are reported (if configured) to a specific server. Statistics are reported by <em>POST</em>ing (HTTP)
statistics as JSON serialized objects.</li>
</ul>
</li>
<li>Logging
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskingLog</code>: The destination for all log messages that <em>Task</em> implementations wish to write.
The output is redirected either to stdout in the headless case or the <em>Tasking Console</em> in the Eclipse Console View when used in the IDE</li>
</ul>
</li>
<li>Progress Tracking
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.services.TaskProgressTracker</code>: Allows to explicitly influence progress reporting as well as cancellation
checks by <em>Task</em>s. TEA defaults to estimating the progress of a <em>Task</em> based on historic execution times if <em>TEA Core UI</em> is available</li>
</ul>
</li>
</ul>
</p>
</div>
</div>
<div class="row">
<div class="span12">
<h3>TEA Core UI</h3>
</div>
</div>
<div class="row">
<div class="span12">
<p>
TEA Core UI contains extended support for <em>Task</em> and <em>TaskChain</em> concepts related directly or indirectly
to UI. For instance the headless application/product allows to access Eclipse UI bundles even without real UI (still
requires an X11 display to be set though).
These are the classes and areas clients using TEA will most likely get in touch, or can use as starting points.
Note that a lot of those classes contain nested annotations related directly to that class/interface.
<ul>
<li>Dynamic IDE Menu
<ul>
<li><code class="prettyprint">org.eclipse.tea.core.ui.annotations.TaskChainUiInit</code>: a <em>TaskChain</em> may contain a method with this annotation
to provide UI to the user in case the <em>TaskChain</em> is run from the IDE. Can be used to dynamically configure <em>Task</em>s in the <em>TaskChain</em></li>
<li>The Dynamic Menu represents a Tree of <em>TaskChain</em>s based on the metadata (description, icon, etc.) annotated on the <em>TaskChain</em> using
the annotations provided in <em>TEA Core</em></li>
</ul>
</li>
<li>Advanced Headless Application
<ul>
<li>The advanced appliation and the associated product (use the product if in doubt!) provide headless execution capabilities for code that
is otherwise actually UI bound. Some of Eclipse' functionality that is handy in a headless environment is UI bound for various reasons.</li>
<li>There is no way/need to interact from code with this advanced application, it is a seemless extension to <em>TEA Core</em>s basic headless application.</li>
</ul>
</li>
<li>E4 Event Bridge
<ul>
<li>The event bridge converts all lifecycle events fired by <em>TEA Core</em> to E4 events (topic: org/eclipse/tea/*)</li>
<li>The events can be used by any other Eclipse component. For instance it is possible to run EASE scripts as reaction to TEA lifecycle events.</li>
</ul>
</li>
<li>TEA Console
<ul>
<li>The TEA Console is a special console in the standard Eclipse Console View, which allows to display any output produced by TEA <em>Task</em>s.</li>
</ul>
</li>
<li>Eclipse Preference Integration
<ul>
<li>Provides a preference page in the Eclipse Preferences dialog which allows to change (and store) values for
<code class="prettyprint">org.eclipse.tea.core.services.TaskingConfigurationExtension</code> implementations</li>
<li>Use both when running <em>Task</em>s from the IDE as well as when running headlessly as a fallback to the <em>headless.properties</em> file.</li>
</ul>
</li>
<li>Progress Estimation
<ul>
<li>Service that automatically estimates the progress of <em>Task</em>s based on historical execution time data. If available, this
is the default for all <em>Task</em>s, and must be explicitly overruled - see <em>TEA Core</em></li>
</ul>
</li>
</ul>
</p>
</div>
</div>
</div>
</div>
<footer class="site-footer">
<div id="extra">
<div class="inner">
<div class="container">
<div class="row">
<div class="span12">
<h3 class="footer-links-header">Quick Links</h3>
<ul class="footer-links clearfix">
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/legal/">Legal</a></li>
</ul>
<ul class="footer-links clearfix">
<li><a href="http://www.eclipse.org">Eclipse Home</a></li>
<li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
<li><a href="http://live.eclipse.org/">Eclipse Live</a></li>
<li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.easing.1.3.js" type="text/javascript"></script>
<script src="js/jquery.prettyPhoto.js" type="text/javascript"></script>
<script src="js/prettify.js" type="text/javascript"></script>
<script src="js/lang-common.js" type="text/javascript"></script>
<script src="js/custom.js" type="text/javascript"></script>
<script src="js/coverflow.min.js" type="text/javascript"></script>
<script>
$(function() {
$('#coverflow').coverflow({
active : 1,
visibleAside: 2,
overlap : 0.5,
scale : 0.9,
angle : 20,
trigger : {
"itemfocus" : true,
"swipe" : true,
"mousewheel" : false
}
});
$('#coverflow :hidden').toggle();
$(window).resize(function() {
$('#coverflow').coverflow();
});
});
</script>
</footer>
</body>
</html>