~ubuntu-branches/ubuntu/quantal/netbeans/quantal

« back to all changes in this revision

Viewing changes to editor/errorstripe/api/arch.xml

  • Committer: Bazaar Package Importer
  • Author(s): Marek Slama
  • Date: 2008-01-29 14:11:22 UTC
  • Revision ID: james.westby@ubuntu.com-20080129141122-fnzjbo11ntghxfu7
Tags: upstream-6.0.1
ImportĀ upstreamĀ versionĀ 6.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?><!-- -*- sgml-indent-step: 1 -*- -->
 
2
<!--
 
3
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
4
 
 
5
Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
 
6
 
 
7
 
 
8
The contents of this file are subject to the terms of either the GNU
 
9
General Public License Version 2 only ("GPL") or the Common
 
10
Development and Distribution License("CDDL") (collectively, the
 
11
"License"). You may not use this file except in compliance with the
 
12
License. You can obtain a copy of the License at
 
13
http://www.netbeans.org/cddl-gplv2.html
 
14
or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
 
15
specific language governing permissions and limitations under the
 
16
License.  When distributing the software, include this License Header
 
17
Notice in each file and include the License file at
 
18
nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
 
19
particular file as subject to the "Classpath" exception as provided
 
20
by Sun in the GPL Version 2 section of the License file that
 
21
accompanied this code. If applicable, add the following below the
 
22
License Header, with the fields enclosed by brackets [] replaced by
 
23
your own identifying information:
 
24
"Portions Copyrighted [year] [name of copyright owner]"
 
25
 
 
26
Contributor(s):
 
27
 
 
28
The Original Software is NetBeans. The Initial Developer of the Original
 
29
Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
 
30
Microsystems, Inc. All Rights Reserved.
 
31
 
 
32
If you wish your version of this file to be governed by only the CDDL
 
33
or only the GPL Version 2, indicate your decision by adding
 
34
"[Contributor] elects to include this software in this distribution
 
35
under the [CDDL or GPL Version 2] license." If you do not indicate a
 
36
single choice of license, a recipient has the option to distribute
 
37
your version of this file under either the CDDL, the GPL Version 2 or
 
38
to extend the choice of license to its licensees as provided above.
 
39
However, if you add GPL Version 2 code and therefore, elected the GPL
 
40
Version 2 license, then the option applies only if the new code is
 
41
made subject to such option by the copyright holder.
 
42
-->
 
43
<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
 
44
  <!ENTITY api-questions SYSTEM "../../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
 
45
]>
 
46
 
 
47
<api-answers
 
48
  question-version="1.25"
 
49
  author="jlahoda@netbeans.org"
 
50
>
 
51
 
 
52
  &api-questions;
 
53
 
 
54
 
 
55
<!--
 
56
        <question id="arch-what" when="init">
 
57
            What is this project good for?
 
58
            <hint>
 
59
            Please provide here a few lines describing the project, 
 
60
            what problem it should solve, provide links to documentation, 
 
61
            specifications, etc.
 
62
            </hint>
 
63
        </question>
 
64
-->
 
65
 <answer id="arch-what">
 
66
  <p>The Error Stripe shows an overview of important information of an edited source code.
 
67
     It shows this information for the whole source code (regardless of its size).
 
68
  </p>
 
69
 </answer>
 
70
 
 
71
 
 
72
 
 
73
<!--
 
74
        <question id="arch-overall" when="init">
 
75
            Describe the overall architecture. 
 
76
            <hint>
 
77
            What will be API for 
 
78
            <a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
 
79
                clients and what support API</a>? 
 
80
            What parts will be pluggable?
 
81
            How will plug-ins be registered? Please use <code>&lt;api type="export"/&gt;</code>
 
82
            to describe your general APIs.
 
83
            If possible please provide 
 
84
            simple diagrams. 
 
85
            </hint>
 
86
        </question>
 
87
-->
 
88
 <answer id="arch-overall">
 
89
<!--  <p>-->
 
90
   The Error Stripe gathers the information to show from three sources:
 
91
       <ul>
 
92
          <li>(A subset of) editor annotations. See
 
93
              <api type="export" category="stable" name="TextAPI" group="java" url="@org-openide-text@/overview-summary.html">OpenIDE Text API</api>
 
94
              for more details.
 
95
          </li>
 
96
          <li>Up-to-date status providers. This is the
 
97
              <api type="export" category="stable" group="java" name="ErrorStripeSPI" url="@TOP@index.html">public SPI provided by the Error Stripe.</api>
 
98
              The Up-to-date status provides affects the "global" status view in the Error Stripe.
 
99
          </li>
 
100
          <li><api type="export" category="private" group="java" name="ErrorStripePrivateSPI">Private mark provider SPI.</api>
 
101
          </li>
 
102
      </ul>
 
103
<!--  </p>-->
 
104
 </answer>
 
105
 
 
106
 
 
107
 
 
108
<!--
 
109
        <question id="arch-quality" when="init">
 
110
            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
 
111
            of your code be tested and 
 
112
            how are future regressions going to be prevented?
 
113
            <hint>
 
114
            What kind of testing do
 
115
            you want to use? How much functionality, in which areas,
 
116
            should be covered by the tests? 
 
117
            </hint>
 
118
        </question>
 
119
-->
 
120
 <answer id="arch-quality">
 
121
  <p>The non-visual parts of the Error Stripe will be covered by the automatic unit tests. The visual parts
 
122
  of the Error Stripe are going to be covered by a manual test specification.</p>
 
123
 </answer>
 
124
 
 
125
 
 
126
 
 
127
<!--
 
128
        <question id="arch-time" when="init">
 
129
            What are the time estimates of the work?
 
130
            <hint>
 
131
            Please express your estimates of how long the design, implementation,
 
132
            stabilization are likely to last. How many people will be needed to
 
133
            implement this and what is the expected milestone by which the work should be 
 
134
            ready?
 
135
            </hint>
 
136
        </question>
 
137
-->
 
138
 <answer id="arch-time">
 
139
<!--  <p>The module and its providers are basically written. Apart from time for the API review,
 
140
  time will be necessary for global clean-up (2-3 working man-days), polishing of the look and feel
 
141
  (7 working man-days), and stabilization (7 working man-days).</p>
 
142
  <p>There is no expected milestone.</p>-->
 
143
  <p>Pre-API review work is mostly done. After integration, only maintanance work is awaited,
 
144
     for 20% of one developer's time.</p>
 
145
 </answer>
 
146
 
 
147
 
 
148
 
 
149
<!--
 
150
        <question id="arch-usecases" when="init">
 
151
            <hint>
 
152
                Content of this answer will be displayed as part of page at
 
153
                http://www.netbeans.org/download/dev/javadoc/usecases.html 
 
154
                You can use tags &lt;usecase name="name&gt; regular html description &lt;/usecase&gt;
 
155
                and if you want to use an URL you can prefix if with @TOP@ to begin
 
156
                at the root of your javadoc
 
157
            </hint>
 
158
        
 
159
            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
 
160
            use cases</a> of the new API. Who will use it under
 
161
            what circumstances? What kind of code would typically need to be written
 
162
            to use the module?
 
163
        </question>
 
164
-->
 
165
 <answer id="arch-usecases">
 
166
 
 
167
 <usecase id="annotations-provider" name="Augment Annotations to be shown in the Error Stripe">
 
168
     Use the <api type="export" category="stable" name="TextAPI" group="java" url="@org-openide-text@/overview-summary.html">OpenIDE Text API</api>.
 
169
 </usecase>
 
170
 
 
171
 <usecase id="up-to-date-provider" name="Provide Up-to-date Status for the Error Stripe">
 
172
 
 
173
 <p>A module in the IDE has information whether data shown in the Error Stripe
 
174
    is up-to-date or not. The Error Stripe may change the appearance according to this knowledge.
 
175
 </p>
 
176
 
 
177
 <p>Implement the <a href="@TOP@org/netbeans/spi/editor/errorstripe/UpToDateStatusProvider.html">UpToDateStatusProvider</a>
 
178
 that provides up-to-date status. Be sure that it fires PropertyChangeEvent when this status is changed.</p>
 
179
 
 
180
 <p>Implement the <a href="@TOP@org/netbeans/spi/editor/errorstripe/UpToDateStatusProviderFactory.html">UpToDateStatusProviderFactory</a>
 
181
 that creates an instance of your UpToDateStatusProvider for a given JTextComponent and install it as described
 
182
 <a href="@TOP@org/netbeans/spi/editor/errorstripe/UpToDateStatusProviderFactory.html">here</a>.</p>
 
183
 
 
184
 </usecase>
 
185
 
 
186
<!-- <usecase id="registration" name="MIME Type Based Registration">
 
187
 
 
188
 <p>An UpToDateStatusMarkProvider may provide information that can be applied to any editor type, or it may
 
189
 provide infromation that applies only to a very specific type of editor.
 
190
 </p>
 
191
 
 
192
 </usecase>-->
 
193
 
 
194
 </answer>
 
195
 
 
196
 
 
197
 
 
198
<!--
 
199
        <question id="compat-i18n" when="impl">
 
200
            Is your module correctly internationalized?
 
201
            <hint>
 
202
            Correct internationalization means that it obeys instructions 
 
203
            at <a href="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/i18n-branding.html">
 
204
            NetBeans I18N pages</a>.
 
205
            </hint>
 
206
        </question>
 
207
-->
 
208
 <answer id="compat-i18n">
 
209
  <p>
 
210
   This module should be correctly internationalized.
 
211
  </p>
 
212
 </answer>
 
213
 
 
214
 
 
215
 
 
216
<!--
 
217
        <question id="compat-standards" when="init">
 
218
            Does the module implement or define any standards? Is the 
 
219
            implementation exact or does it deviate somehow?
 
220
        </question>
 
221
-->
 
222
 <answer id="compat-standards">
 
223
  <p>
 
224
   This module does neither define nor implement any standard.
 
225
  </p>
 
226
 </answer>
 
227
 
 
228
 
 
229
 
 
230
<!--
 
231
        <question id="compat-version" when="impl">
 
232
            Can your module coexist with earlier and future
 
233
            versions of itself? Can you correctly read all old settings? Will future
 
234
            versions be able to read your current settings? Can you read
 
235
            or politely ignore settings stored by a future version?
 
236
            
 
237
            <hint>
 
238
            Very helpful for reading settings is to store version number
 
239
            there, so future versions can decide whether how to read/convert
 
240
            the settings and older versions can ignore the new ones.
 
241
            </hint>
 
242
        </question>
 
243
-->
 
244
 <answer id="compat-version">
 
245
  <p>
 
246
      The module does not have any settings. The module was distributed through
 
247
      the autoupdate and manual uninstallation may be necessary for upgrade.
 
248
  </p>
 
249
 </answer>
 
250
 
 
251
 
 
252
 
 
253
<!--
 
254
        <question id="dep-jre" when="final">
 
255
            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
 
256
            <hint>
 
257
            It is expected that if your module runs on 1.x that it will run 
 
258
            on 1.x+1 if no, state that please. Also describe here cases where
 
259
            you run different code on different versions of JRE and why.
 
260
            </hint>
 
261
        </question>
 
262
-->
 
263
 <answer id="dep-jre">
 
264
  <p>
 
265
   JRE1.4
 
266
  </p>
 
267
 </answer>
 
268
 
 
269
 
 
270
 
 
271
<!--
 
272
        <question id="dep-jrejdk" when="final">
 
273
            Do you require the JDK or is the JRE enough?
 
274
        </question>
 
275
-->
 
276
 <answer id="dep-jrejdk">
 
277
  <p>
 
278
   JRE is enough.
 
279
  </p>
 
280
 </answer>
 
281
 
 
282
 
 
283
 
 
284
<!--
 
285
        <question id="dep-nb" when="init">
 
286
            What other NetBeans projects and modules does this one depend on?
 
287
            <hint>
 
288
            If you want, describe such projects as imported APIs using
 
289
            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
 
290
            </hint>
 
291
        </question>
 
292
-->
 
293
 <answer id="dep-nb">
 
294
  <p>
 
295
   The Error Stripe module depends on the 
 
296
   <api name="Editor" type="import" category="friend" url="@org-netbeans-modules-editor@" group="java">
 
297
   editor API</api>. It uses this dependency to add the overview component to the editor window,
 
298
   to use various editor utilities and to gather the information about the Annotations.
 
299
  </p>
 
300
 </answer>
 
301
 
 
302
 
 
303
 
 
304
<!--
 
305
        <question id="dep-non-nb" when="init">
 
306
            What other projects outside NetBeans does this one depend on?
 
307
            
 
308
            <hint>
 
309
            Some non-NetBeans projects are packaged as NetBeans modules
 
310
            (see <a href="http://libs.netbeans.org/">libraries</a>) and
 
311
            it is preferred to use this approach when more modules may
 
312
            depend on such third-party library.
 
313
            </hint>
 
314
        </question>
 
315
-->
 
316
 <answer id="dep-non-nb">
 
317
  <p>
 
318
   This module does not depend on any non-NetBeans projects (except the JRE).
 
319
  </p>
 
320
 </answer>
 
321
 
 
322
 
 
323
 
 
324
<!--
 
325
        <question id="dep-platform" when="init">
 
326
            On which platforms does your module run? Does it run in the same
 
327
            way on each?
 
328
            <hint>
 
329
            If your module is using JNI or deals with special differences of
 
330
            OSes like filesystems, etc. please describe here what they are.
 
331
            </hint>
 
332
        </question>
 
333
-->
 
334
 <answer id="dep-platform">
 
335
  <p>
 
336
   This module runs on any platform that provides the required JRE.
 
337
  </p>
 
338
 </answer>
 
339
 
 
340
 
 
341
 
 
342
 <answer id="deploy-dependencies">
 
343
Nothing.
 
344
 </answer>
 
345
 
 
346
 
 
347
 
 
348
<!--
 
349
        <question id="deploy-jar" when="impl">
 
350
            Do you deploy just module JAR file(s) or other files as well?
 
351
            <hint>
 
352
            Usually a module consist of one JAR file (perhaps with Class-Path
 
353
            extensions) and also a configuration file that enables it. If you
 
354
            have any other files, use
 
355
            &lt;api group="java.io.File" name="yourname" type="export" category="friend"&gt;...&lt;/api&gt;
 
356
            to define the location, name and stability of your files (of course
 
357
            changing "yourname" and "friend" to suit your needs).
 
358
            
 
359
            If it uses more than one JAR, describe where they are located, how
 
360
            they refer to each other. 
 
361
            If it consist of module JAR(s) and other files, please describe
 
362
            what is their purpose, why other files are necessary. Please 
 
363
            make sure that installation/uninstallation leaves the system 
 
364
            in state as it was before installation.
 
365
            </hint>
 
366
        </question>
 
367
-->
 
368
 <answer id="deploy-jar">
 
369
  <p>The Error Stripe requires only standard NetBeans module files.</p>
 
370
 </answer>
 
371
 
 
372
 
 
373
 
 
374
<!--
 
375
        <question id="deploy-nbm" when="impl">
 
376
            Can you deploy an NBM via the Update Center?
 
377
            <hint>
 
378
            If not why?
 
379
            </hint>
 
380
        </question>
 
381
-->
 
382
 <answer id="deploy-nbm">
 
383
  <p>
 
384
   The NBM can be deployed via the Update Center.
 
385
  </p>
 
386
 </answer>
 
387
 
 
388
 
 
389
 
 
390
<!--
 
391
        <question id="deploy-packages" when="init">
 
392
            Are packages of your module made inaccessible by not declaring them
 
393
            public?
 
394
            
 
395
            <hint>
 
396
            NetBeans module system allows restriction of access rights to
 
397
            public classes of your module from other modules. This prevents
 
398
            unwanted dependencies of others on your code and should be used
 
399
            whenever possible (<a href="http://www.netbeans.org/download/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html#3.4-public-packages">
 
400
            public packages
 
401
            </a>). If you do not restrict access to your classes you are
 
402
            making it too easy for other people to misuse your implementation
 
403
            details, that is why you should have good reason for not 
 
404
            restricting package access.
 
405
            </hint>
 
406
        </question>
 
407
-->
 
408
 <answer id="deploy-packages">
 
409
  <p>
 
410
   The Error Stripe module provides a public package <code>org.netbeans.spi.editor.errorstripe</code>
 
411
   which provides the
 
412
   <api type="export" category="stable" group="java" name="ErrorStripeSPI" url="@TOP@index.html">Error Stripe SPI</api>.
 
413
  </p>
 
414
 </answer>
 
415
 
 
416
 
 
417
 
 
418
<!--
 
419
        <question id="deploy-shared" when="final">
 
420
            Do you need to be installed in the shared location only, or in the user directory only,
 
421
            or can your module be installed anywhere?
 
422
            <hint>
 
423
            Installation location shall not matter, if it does explain why.
 
424
            Consider also whether <code>InstalledFileLocator</code> can help.
 
425
            </hint>
 
426
        </question>
 
427
-->
 
428
 <answer id="deploy-shared">
 
429
  <p>
 
430
   This module does not depend on installation directory.
 
431
  </p>
 
432
 </answer>
 
433
 
 
434
 
 
435
 
 
436
<!--
 
437
        <question id="exec-ant-tasks" when="impl">
 
438
            Do you define or register any ant tasks that other can use?
 
439
            
 
440
            <hint>
 
441
            If you provide an ant task that users can use, you need to be very
 
442
            careful about its syntax and behaviour, as it most likely forms an
 
443
                  API for end users and as there is a lot of end users, their reaction
 
444
            when such API gets broken can be pretty strong.
 
445
            </hint>
 
446
        </question>
 
447
-->
 
448
 <answer id="exec-ant-tasks">
 
449
  <p>
 
450
   This module does not define any ant tasks.
 
451
  </p>
 
452
 </answer>
 
453
 
 
454
 
 
455
 
 
456
<!--
 
457
        <question id="exec-classloader" when="impl">
 
458
            Does your code create its own class loader(s)?
 
459
            <hint>
 
460
            A bit unusual. Please explain why and what for.
 
461
            </hint>
 
462
        </question>
 
463
-->
 
464
 <answer id="exec-classloader">
 
465
  <p>
 
466
   No.
 
467
  </p>
 
468
 </answer>
 
469
 
 
470
 
 
471
 
 
472
<!--
 
473
        <question id="exec-component" when="impl">
 
474
            Is execution of your code influenced by any (string) property
 
475
            of any of your components?
 
476
            
 
477
            <hint>
 
478
            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
 
479
            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
 
480
            a behavior of some code. This of course forms an interface that should
 
481
            be documented. Also if one depends on some interface that an object
 
482
            implements (<code>component instanceof Runnable</code>) that forms an
 
483
            API as well.
 
484
            </hint>
 
485
        </question>
 
486
-->
 
487
 <answer id="exec-component">
 
488
  <p>
 
489
   No.
 
490
  </p>
 
491
 </answer>
 
492
 
 
493
 
 
494
 
 
495
<!--
 
496
        <question id="exec-introspection" when="impl">
 
497
            Does your module use any kind of runtime type information (<code>instanceof</code>,
 
498
            work with <code>java.lang.Class</code>, etc.)?
 
499
            <hint>
 
500
            Check for cases when you have an object of type A and you also
 
501
            expect it to (possibly) be of type B and do some special action. That
 
502
            should be documented. The same applies on operations in meta-level
 
503
            (Class.isInstance(...), Class.isAssignableFrom(...), etc.).
 
504
            </hint>
 
505
        </question>
 
506
-->
 
507
 <answer id="exec-introspection">
 
508
  <p>
 
509
   <code>instanceof</code> is used to detect <code>BaseDocument</code> in the <code>JTextPane</code>.
 
510
  </p>
 
511
 </answer>
 
512
 
 
513
 
 
514
 
 
515
<!--
 
516
        <question id="exec-privateaccess" when="final">
 
517
            Are you aware of any other parts of the system calling some of 
 
518
            your methods by reflection?
 
519
            <hint>
 
520
            If so, describe the "contract" as an API. Likely private or friend one, but
 
521
            still API and consider rewrite of it.
 
522
            </hint>
 
523
        </question>
 
524
-->
 
525
 <answer id="exec-privateaccess">
 
526
  <p>
 
527
   No.
 
528
  </p>
 
529
 </answer>
 
530
 
 
531
 
 
532
 
 
533
<!--
 
534
        <question id="exec-process" when="impl">
 
535
            Do you execute an external process from your module? How do you ensure
 
536
            that the result is the same on different platforms? Do you parse output?
 
537
            Do you depend on result code?
 
538
            <hint>
 
539
            If you feed an input, parse the output please declare that as an API.
 
540
            </hint>
 
541
        </question>
 
542
-->
 
543
 <answer id="exec-process">
 
544
  <p>
 
545
   No.
 
546
  </p>
 
547
 </answer>
 
548
 
 
549
 
 
550
 
 
551
<!--
 
552
        <question id="exec-property" when="impl">
 
553
            Is execution of your code influenced by any environment or
 
554
            Java system (<code>System.getProperty</code>) property?
 
555
            
 
556
            <hint>
 
557
            If there is a property that can change the behavior of your 
 
558
            code, somebody will likely use it. You should describe what it does 
 
559
            and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
 
560
            of this API. You may use
 
561
            <pre>
 
562
                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
 
563
                    description of the property, where it is used, what it influence, etc.
 
564
                &lt;/api&gt;            
 
565
            </pre>
 
566
            </hint>
 
567
        </question>
 
568
-->
 
569
 <answer id="exec-property">
 
570
  <p>
 
571
   <api type="export" group="property" name="org.netbeans.modules.editor.errorstripe.AnnotationView" category="private" >
 
572
    This property sets the logging level. See org.openide.ErrorManager.getInstance for more details.
 
573
   </api>
 
574
  </p>
 
575
 </answer>
 
576
 
 
577
 
 
578
 
 
579
<!--
 
580
        <question id="exec-reflection" when="impl">
 
581
            Does your code use Java Reflection to execute other code?
 
582
            <hint>
 
583
            This usually indicates a missing or insufficient API in the other
 
584
            part of the system. If the other side is not aware of your dependency
 
585
            this contract can be easily broken.
 
586
            </hint>
 
587
        </question>
 
588
-->
 
589
 <answer id="exec-reflection">
 
590
  <p>
 
591
   No.
 
592
  </p>
 
593
 </answer>
 
594
 
 
595
 
 
596
 
 
597
<!--
 
598
        <question id="exec-threading" when="impl">
 
599
            What threading models, if any, does your module adhere to?
 
600
            <hint>
 
601
                If your module calls foreign APIs which have a specific threading model,
 
602
                indicate how you comply with the requirements for multithreaded access
 
603
                (synchronization, mutexes, etc.) applicable to those APIs.
 
604
                If your module defines any APIs, or has complex internal structures
 
605
                that might be used from multiple threads, declare how you protect
 
606
                data against concurrent access, race conditions, deadlocks, etc.,
 
607
                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
 
608
                Examples: a class might be non-thread-safe (like Java Collections); might
 
609
                be fully thread-safe (internal locking); might require access through a mutex
 
610
                (and may or may not automatically acquire that mutex on behalf of a client method);
 
611
                might be able to run only in the event queue; etc.
 
612
                Also describe when any events are fired: synchronously, asynchronously, etc.
 
613
                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
 
614
            </hint>
 
615
        </question>
 
616
-->
 
617
 <answer id="exec-threading">
 
618
  <p>
 
619
      The Error Stripe conforms to Swing threading for interaction with Swing. It accepts changes
 
620
      of annotations from any thread.
 
621
  </p>
 
622
 </answer>
 
623
 
 
624
 
 
625
 
 
626
<!--
 
627
        <question id="format-clipboard" when="impl">
 
628
            Which data flavors (if any) does your code read from or insert to
 
629
            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
 
630
            
 
631
            <hint>
 
632
            Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
 
633
            Check your code for overriding these methods.
 
634
            </hint>
 
635
        </question>
 
636
-->
 
637
 <answer id="format-clipboard">
 
638
  <p>
 
639
   This module does not work with clipboard.
 
640
  </p>
 
641
 </answer>
 
642
 
 
643
 
 
644
 
 
645
<!--
 
646
        <question id="format-dnd" when="impl">
 
647
            Which protocols (if any) does your code understand during Drag &amp; Drop?
 
648
            <hint>
 
649
            Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>. 
 
650
            Check your code for overriding these methods. Btw. if they are not overridden, they
 
651
            by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
 
652
            </hint>
 
653
        </question>
 
654
-->
 
655
 <answer id="format-dnd">
 
656
  <p>
 
657
   The error stripe does not use Drag &amp; Drop.
 
658
  </p>
 
659
 </answer>
 
660
 
 
661
 
 
662
 
 
663
<!--
 
664
        <question id="format-types" when="impl">
 
665
            Which protocols and file formats (if any) does your module read or write on disk,
 
666
            or transmit or receive over the network? Do you generate an ant build script?
 
667
            Can it be edited and modified? 
 
668
            
 
669
            <hint>
 
670
            <p>
 
671
            Files can be read and written by other programs, modules and users. If they influence
 
672
            your behaviour, make sure you either document the format or claim that it is a private
 
673
            api (using the &lt;api&gt; tag). 
 
674
            </p>
 
675
            
 
676
            <p>
 
677
            If you generate an ant build file, this is very likely going to be seen by end users and
 
678
            they will be attempted to edit it. You should be ready for that and provide here a link
 
679
            to documentation that you have for such purposes and also describe how you are going to
 
680
            understand such files during next release, when you (very likely) slightly change the 
 
681
            format.
 
682
            </p>
 
683
            </hint>
 
684
        </question>
 
685
-->
 
686
 <answer id="format-types">
 
687
  <p>
 
688
   No files are read or written.
 
689
  </p>
 
690
 </answer>
 
691
 
 
692
 
 
693
 
 
694
<!--
 
695
        <question id="lookup-lookup" when="init">
 
696
            Does your module use <code>org.openide.util.Lookup</code>
 
697
            or any similar technology to find any components to communicate with? Which ones?
 
698
            
 
699
            <hint>
 
700
            Please describe the interfaces you are searching for, where 
 
701
            are defined, whether you are searching for just one or more of them,
 
702
            if the order is important, etc. Also classify the stability of such
 
703
            API contract. For that use &lt;api group=&amp;lookup&amp; /&gt; tag.
 
704
            </hint>
 
705
        </question>
 
706
-->
 
707
 <answer id="lookup-lookup">
 
708
  <p>The module does not use the global lookup. The module uses the lookup internally
 
709
  to access UpToDateStatusProviderFactories.</p>
 
710
 </answer>
 
711
 
 
712
 
 
713
 
 
714
<!--
 
715
        <question id="lookup-register" when="final">
 
716
            Do you register anything into lookup for other code to find?
 
717
            <hint>
 
718
            Do you register using layer file or using <code>META-INF/services</code>?
 
719
            Who is supposed to find your component?
 
720
            </hint>
 
721
        </question>
 
722
-->
 
723
 <answer id="lookup-register">
 
724
  <p>
 
725
   Internally, the <code>FolderLookup</code> is used to register providers of the
 
726
   <api type="export" category="private" group="java" name="ErrorStripePrivateSPI">private mark provider SPI.</api>
 
727
  </p>
 
728
 </answer>
 
729
 
 
730
 
 
731
 
 
732
<!--
 
733
        <question id="lookup-remove" when="final">
 
734
            Do you remove entries of other modules from lookup?
 
735
            <hint>
 
736
            Why? Of course, that is possible, but it can be dangerous. Is the module
 
737
            your are masking resource from aware of what you are doing?
 
738
            </hint>
 
739
        </question>
 
740
-->
 
741
 <answer id="lookup-remove">
 
742
  <p>
 
743
   This module does not mask any Lookup entries.
 
744
  </p>
 
745
 </answer>
 
746
 
 
747
 
 
748
 
 
749
<!--
 
750
        <question id="perf-exit" when="final">
 
751
            Does your module run any code on exit?
 
752
        </question>
 
753
-->
 
754
 <answer id="perf-exit">
 
755
  <p>
 
756
   No.
 
757
  </p>
 
758
 </answer>
 
759
 
 
760
 
 
761
 
 
762
<!--
 
763
        <question id="perf-huge_dialogs" when="final">
 
764
            Does your module contain any dialogs or wizards with a large number of
 
765
            GUI controls such as combo boxes, lists, trees, or text areas?
 
766
        </question>
 
767
-->
 
768
 <answer id="perf-huge_dialogs">
 
769
  <p>
 
770
   No.
 
771
  </p>
 
772
 </answer>
 
773
 
 
774
 
 
775
 
 
776
<!--
 
777
        <question id="perf-limit" when="init">
 
778
            Are there any hard-coded or practical limits in the number or size of
 
779
            elements your code can handle?
 
780
        </question>
 
781
-->
 
782
 <answer id="perf-limit">
 
783
  <p>
 
784
   There are not hardcoded limits. But, the number of Marks shown in the Error Stripe should be held as low
 
785
   as possible (while still being usefull), because the user would get confused by too many shown Marks.
 
786
   Also the performance of the redrawing of the Error Stripe degrades rapidly when there are many marks (~1000).
 
787
  </p>
 
788
 </answer>
 
789
 
 
790
 
 
791
 
 
792
<!--
 
793
        <question id="perf-mem" when="final">
 
794
            How much memory does your component consume? Estimate
 
795
            with a relation to the number of windows, etc.
 
796
        </question>
 
797
-->
 
798
 <answer id="perf-mem">
 
799
  <p>There is one component per opened JTextComponent. If no providers are registered
 
800
  through the
 
801
  <api type="export" category="private" group="java" name="ErrorStripePrivateSPI">private mark provider SPI</api>,
 
802
  the memory consumption of each component should be constant.
 
803
  </p>
 
804
 </answer>
 
805
 
 
806
 
 
807
 
 
808
<!--
 
809
        <question id="perf-menus" when="final">
 
810
            Does your module use dynamically updated context menus, or
 
811
            context-sensitive actions with complicated and slow enablement logic?
 
812
            <hint>
 
813
                If you do a lot of tricks when adding actions to regular or context menus, you can significantly
 
814
                slow down display of the menu, even when the user is not using your action. Pay attention to
 
815
                actions you add to the main menu bar, and to context menus of foreign nodes or components. If
 
816
                the action is conditionally enabled, or changes its display dynamically, you need to check the
 
817
                impact on performance. In some cases it may be more appropriate to make a simple action that is
 
818
                always enabled but does more detailed checks in a dialog if it is actually run.
 
819
            </hint>
 
820
        </question>
 
821
-->
 
822
 <answer id="perf-menus">
 
823
  <p>
 
824
   This module does not use any context menus.
 
825
  </p>
 
826
 </answer>
 
827
 
 
828
 
 
829
 
 
830
<!--
 
831
        <question id="perf-progress" when="final">
 
832
            Does your module execute any long-running tasks?
 
833
            
 
834
            <hint>Long running tasks should never block 
 
835
            AWT thread as it badly hurts the UI
 
836
            <a href="http://performance.netbeans.org/responsiveness/issues.html">
 
837
            responsiveness</a>.
 
838
            Tasks like connecting over
 
839
            network, computing huge amount of data, compilation
 
840
            be done asynchronously (for example
 
841
            using <code>RequestProcessor</code>), definitively it should 
 
842
            not block AWT thread.
 
843
            </hint>
 
844
        </question>
 
845
-->
 
846
 <answer id="perf-progress">
 
847
  <p>
 
848
   No.
 
849
  </p>
 
850
 </answer>
 
851
 
 
852
 
 
853
 
 
854
<!--
 
855
        <question id="perf-scale" when="init">
 
856
            Which external criteria influence the performance of your
 
857
            program (size of file in editor, number of files in menu, 
 
858
            in source directory, etc.) and how well your code scales?
 
859
            <hint>
 
860
            Please include some estimates, there are other more detailed 
 
861
            questions to answer in later phases of implementation. 
 
862
            </hint>
 
863
        </question>
 
864
-->
 
865
 <answer id="perf-scale">
 
866
  <p>
 
867
     The performance of the Error Stripe module should depend mostly only on the number of showed
 
868
     annotations/marks. There is also an implied dependency on the number of lines in the document through
 
869
     variable utility methods.
 
870
  </p>
 
871
 </answer>
 
872
 
 
873
 
 
874
 
 
875
<!--
 
876
        <question id="perf-spi" when="init">
 
877
            How the performance of the plugged in code will be enforced?
 
878
            <hint>
 
879
            If you allow foreign code to be plugged into your own module, how
 
880
            do you enforce that it will behave correctly and quickly and will not
 
881
            negatively influence the performance of your own module?
 
882
            </hint>
 
883
        </question>
 
884
-->
 
885
 <answer id="perf-spi">
 
886
  <p>Currently, there is no way to enforce the performance of the plugged in code.</p>
 
887
 </answer>
 
888
 
 
889
 
 
890
 
 
891
<!--
 
892
        <question id="perf-startup" when="final">
 
893
            Does your module run any code on startup?
 
894
        </question>
 
895
-->
 
896
 <answer id="perf-startup">
 
897
  <p>
 
898
   No.
 
899
  </p>
 
900
 </answer>
 
901
 
 
902
 
 
903
 
 
904
<!--
 
905
        <question id="perf-wakeup" when="final">
 
906
            Does any piece of your code wake up periodically and do something
 
907
            even when the system is otherwise idle (no user interaction)?
 
908
        </question>
 
909
-->
 
910
 <answer id="perf-wakeup">
 
911
  <p>
 
912
   No.
 
913
  </p>
 
914
 </answer>
 
915
 
 
916
 
 
917
 
 
918
<!--
 
919
        <question id="resources-file" when="final">
 
920
            Does your module use <code>java.io.File</code> directly?
 
921
            
 
922
            <hint>
 
923
            NetBeans provide a logical wrapper over plain files called 
 
924
            <code>org.openide.filesystems.FileObject</code> that
 
925
            provides uniform access to such resources and is the preferred
 
926
            way that should be used. But of course there can be situations when
 
927
            this is not suitable.
 
928
            </hint>
 
929
        </question>
 
930
-->
 
931
 <answer id="resources-file">
 
932
  <p>
 
933
   No.
 
934
  </p>
 
935
 </answer>
 
936
 
 
937
 
 
938
 
 
939
<!--
 
940
        <question id="resources-layer" when="final">
 
941
            Does your module provide own layer? Does it create any files or
 
942
            folders in it? What it is trying to communicate by that and with which 
 
943
            components?
 
944
            
 
945
            <hint>
 
946
            NetBeans allows automatic and declarative installation of resources 
 
947
            by module layers. Module register files into appropriate places
 
948
            and other components use that information to perform their task
 
949
            (build menu, toolbar, window layout, list of templates, set of
 
950
            options, etc.). 
 
951
            </hint>
 
952
        </question>
 
953
-->
 
954
 <answer id="resources-layer">
 
955
<!-- <p>-->
 
956
   The module uses layers for two purposes:
 
957
       <ul>
 
958
           <li>To register the sidebar component throught the
 
959
               <api name="Editor" type="import" category="friend" group="java">Editor API</api>.
 
960
           </li>
 
961
           <li>To register providers of the <api type="export" category="private" group="java" name="ErrorStripePrivateSPI">private mark provider SPI.</api>
 
962
           </li>
 
963
       </ul>
 
964
<!--  </p>-->
 
965
 </answer>
 
966
 
 
967
 
 
968
 
 
969
<!--
 
970
        <question id="resources-mask" when="final">
 
971
            Does your module mask/hide/override any resources provided by other modules in
 
972
            their layers?
 
973
            
 
974
            <hint>
 
975
            If you mask a file provided by another module, you probably depend
 
976
            on that and do not want the other module to (for example) change
 
977
            the file's name. That module shall thus make that file available as an API
 
978
            of some stability category.
 
979
            </hint>
 
980
        </question>
 
981
-->
 
982
 <answer id="resources-mask">
 
983
  <p>
 
984
   No.
 
985
  </p>
 
986
 </answer>
 
987
 
 
988
 
 
989
 
 
990
<!--
 
991
        <question id="resources-read" when="final">
 
992
            Does your module read any resources from layers? For what purpose?
 
993
            
 
994
            <hint>
 
995
            As this is some kind of intermodule dependency, it is a kind of API.
 
996
            Please describe it and classify according to 
 
997
            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
 
998
            common stability categories</a>.
 
999
            </hint>
 
1000
        </question>
 
1001
-->
 
1002
 <answer id="resources-read">
 
1003
  <p>
 
1004
      The Error Stripe reads providers of the <api type="export" category="private" group="java" name="ErrorStripePrivateSPI">private mark provider SPI</api>
 
1005
      from the layer.
 
1006
  </p>
 
1007
 </answer>
 
1008
 
 
1009
 
 
1010
 
 
1011
<!--
 
1012
        <question id="security-grant" when="final">
 
1013
            Does your code grant additional rights to some other code?
 
1014
            <hint>Avoid using a class loader that adds extra
 
1015
            permissions to loaded code unless really necessary.
 
1016
            Also note that your API implementation
 
1017
            can also expose unneeded permissions to enemy code by
 
1018
            calling AccessController.doPrivileged().</hint>
 
1019
        </question>
 
1020
-->
 
1021
 <answer id="security-grant">
 
1022
  <p>
 
1023
   No.
 
1024
  </p>
 
1025
 </answer>
 
1026
 
 
1027
 
 
1028
 
 
1029
<!--
 
1030
        <question id="security-policy" when="final">
 
1031
            Does your functionality require modifications to the standard policy file?
 
1032
            <hint>Your code might pass control to third-party code not
 
1033
            coming from trusted domains. This could be code downloaded over the
 
1034
            network or code coming from libraries that are not bundled
 
1035
            with NetBeans. Which permissions need to be granted to which domains?</hint>
 
1036
        </question>
 
1037
-->
 
1038
 <answer id="security-policy">
 
1039
  <p>
 
1040
   The module uses <code>org.netbeans.modules.editor.errorstripe</code> and
 
1041
   <code>org.netbeans.spi.editor.errorstripe</code> and does not need any special priviledges.
 
1042
  </p>
 
1043
 </answer>
 
1044
 
 
1045
</api-answers>