<!-- <questionid="arch-overall"when="init"> Describetheoverallarchitecture. <hint> WhatwillbeAPIfor <ahref="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi"> clientsandwhatsupportAPI</a>? Whatpartswillbepluggable? Howwillplug-insberegistered?Pleaseuse<code><apitype="export"/></code> todescribeyourgeneralAPIsandspecifytheir <ahref="http://openide.netbeans.org/tutorial/api-design.html#category-private"> stabilitycategories</a>. Ifpossiblepleaseprovidesimplediagrams. </hint> </question>
-->
<answer id="arch-overall">
<p>
<b>IMPORTANT:</b> Since NB 7.2 the Tasks window has been renamed to Action Items window. Labels in UI now refer to "action items" but the code terms used in Task List API refer to "tasks".
<br/><br/>
This is a framework for Task List window that shows tasks (errors, warnings, todos) generated
by plugable modules for selected files/folders.<br/><br/><br/>
<api type="export" name="TaskListSPI" group="java" category="official"url="@TOP@/org/netbeans/spi/tasklist/package-summary.html">
</api>
</p>
<api type="export" name="TaskListXMLLayer" group="layer" category="official" >
<p>Task List framework defines the following folders in XML layer:
<br/>
<br/>
<em>/TaskList/Scanners</em> - register your instances of task scanners here<br/>
<em>/TaskList/ScanningScopes</em> - here you can add additional scanning <a href="@TOP@/org/netbeans/spi/tasklist/TaskScanningScope.html">scopes</a> <br/>
<em>/TaskList/Groups</em> - here you can define additional task groups, for example: <br/>
<samp>
<br/>
<folder name="TaskList"> <br/>
<folder name="Groups"> <br/>
<file name="mygroup.instance"> <br/>
<attr name="instanceCreate" methodvalue="org.netbeans.spi.tasklist.Task.createGroup"/> <br/>
<api type="export" name="TaskGroups" group="layer" category="official" >
<p><a href="@TOP@/org/netbeans/spi/tasklist/Task.html">Task</a>s are organized into groups according
to their importance (error/warning/todo etc). The task group is specified when the Task is created.
Each group is identified by its unique name. The Task List framework provides the following groups:
<br/>
<br/>
<em>"nb-tasklist-error"</em> - for error-type tasks <br/>
<em>"nb-tasklist-warning"</em> - for warning-type tasks
</p> <p>Additional task groups can be specified in xml layers, see above.</p>
</api>
</answer>
<!-- <questionid="arch-quality"when="init"> Howwillthe<ahref="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a> ofyourcodebetestedand howarefutureregressionsgoingtobeprevented? <hint> Whatkindoftestingdo youwanttouse?Howmuchfunctionality,inwhichareas, shouldbecoveredbythetests?Howyoufindoutthatyour projectwassuccessful? </hint> </question>
-->
<answer id="arch-quality">
<p>
Unit-tests will be provided to ensure code quality.
</p>
</answer>
<!-- <questionid="arch-time"when="init"> Whatarethetimeestimatesofthework? <hint> Pleaseexpressyourestimatesofhowlongthedesign,implementation, stabilizationarelikelytolast.Howmanypeoplewillbeneededto implementthisandwhatistheexpectedmilestonebywhichtheworkshouldbe ready? </hint> </question>
-->
<answer id="arch-time">
<p>
Prototype is already available, 2-3 more man/days required to finish the implementation.
</p>
</answer>
<!-- <questionid="arch-usecases"when="init"> <hint> Contentofthisanswerwillbedisplayedaspartofpageat http://www.netbeans.org/download/dev/javadoc/usecases.html Youcanusetags<usecasename="name>regularhtmldescription</usecase> andifyouwanttouseanURLyoucanprefixifwith@TOP@tobegin attherootofyourjavadoc </hint> Describethemain<ahref="http://openide.netbeans.org/tutorial/api-design.html#usecase"> usecases</a>ofthenewAPI.Whowilluseitunder whatcircumstances?Whatkindofcodewouldtypicallyneedtobewritten tousethemodule? </question>
-->
<answer id="arch-usecases">
<usecase id="task-scanners" name="Task Scanners">
<p>The main feature of the Task List SPI is the ability to 'plug-in' additional task providing
modules that generate tasks for the task list window.</p>
<p>The plugable task scanners can either <a href="@TOP@/org/netbeans/spi/tasklist/PushTaskScanner.Callback.html#setTasks(org.openide.filesystems.FileObject,java.util.List)">push</a>
new <a href="@TOP@/org/netbeans/spi/tasklist/Task.html">Task</a>s to the Task List window whenever they want -
<a href="@TOP@/org/netbeans/spi/tasklist/PushTaskScanner.html">PushTaskScanner</a> - or they
can inherit from <a href="@TOP@/org/netbeans/spi/tasklist/FileTaskScanner.html">FileTaskScanner</a>
and the Task List framework will actively <a href="@TOP@/org/netbeans/spi/tasklist/FileTaskScanner.html#scan(org.openide.filesystems.FileObject)">poll</a>
them for new tasks for each file under the current scanning scope (see below).</p>
<p>Scanner instances are registered in XML layer in folder "/TaskList/Scanners". The framework keeps track of modified files
and notifies the scanners whenever a file under the scanning scope needs to be rescanned.</p>
</usecase>
<usecase id="scanning-scope" name="Task Scanning Scope">
<p>Scanning scope defines which files/folders will be scanned for tasks. The default implementation
includes scopes for currently edited file, scope for files and folders in the main project and projects
that depend on it and scope for all opened projects.</p>
<p>Additional scopes may be provided by extending
<a href="@TOP@/org/netbeans/spi/tasklist/TaskScanningScope.html">TaskScanningScope</a> class
and registering instances in folder "/TaskList/ScanningScopes" in XML layer.</p>
</usecase>
<usecase id="groups" name="Task Groups">
<p>Tasks are organized into Groups according to their importance. Each task can be in one group only.
The default implementation includes "Error", "Warning" and "TODO" groups. Additional groups can be
registered in XML layer in folder "/TaskList/Groups". Each task group is identified by its unique name.</p>
</usecase>
</answer>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
<p>
This module provides SPI for third parties that want to display some sort information for
the user in the Task List / Problems window. A typical example are Java errors, warnings, TODOs etc.
</p>
<p>Part of the integration are several implementation modules that provider task list user interface,
TODO task scanning, Java integration.</p>
</answer>
<!-- <questionid="compat-deprecation"when="init"> Howtheintroductionofyourprojectinfluencesfunctionality providedbypreviousversionoftheproduct? <hint> Ifyouareplanningtodeprecate/remove/changeanyexistingAPIs, listthemhereaccompaniedwiththereasonexplainingwhyyou aredoingso. </hint> </question>
-->
<answer id="compat-deprecation">
<p>
No APIs will be deprecated.
</p>
<p>Please note that the previous API/SPI for Suggestions framework will be still available. However part of the integration of the new
Task List/Problem List SPI is a 'TODO' integration module that will provide user's TODO tasks from source file comments. This will replace
the current 'To Do' window.</p>
</answer>
<!-- <questionid="exec-threading"when="init"> Whatthreadingmodels,ifany,doesyourmoduleadhereto?Howthe projectbehaveswithrespecttothreading? <hint> IsyourAPIthreadsafe?Canitbeaccessedfromanythreadsor justfromsomededicatedones?AnyspecialrelationtoAWTand itsEventDispatchthread?Also ifyourmodulecallsforeignAPIswhichhaveaspecificthreadingmodel, indicatehowyoucomplywiththerequirementsformultithreadedaccess (synchronization,mutexes,etc.)applicabletothoseAPIs. IfyourmoduledefinesanyAPIs,orhascomplexinternalstructures thatmightbeusedfrommultiplethreads,declarehowyouprotect dataagainstconcurrentaccess,raceconditions,deadlocks,etc., andwhethersuchrulesareenforcedbyruntimewarnings,errors,assertions,etc. Examples:aclassmightbenon-thread-safe(likeJavaCollections);might befullythread-safe(internallocking);mightrequireaccessthroughamutex (andmayormaynotautomaticallyacquirethatmutexonbehalfofaclientmethod); mightbeabletorunonlyintheeventqueue;etc. Alsodescribewhenanyeventsarefired:synchronously,asynchronously,etc. Ideas:<ahref="http://core.netbeans.org/proposals/threading/index.html#recommendations">ThreadingRecommendations</a>(inprogress) </hint> </question>
-->
<answer id="exec-threading">
<p>
A separate thread is started for the actual task scanning. Synchronization objects are used to ensure
thread-safe access from the user interface.
</p>
</answer>
<!-- <questionid="perf-progress"when="final"> Doesyourmoduleexecuteanylong-runningtasks? <hint>Longrunningtasksshouldneverblock AWTthreadasitbadlyhurtstheUI <ahref="http://performance.netbeans.org/responsiveness/issues.html"> responsiveness</a>. Taskslikeconnectingover network,computinghugeamountofdata,compilation bedoneasynchronously(forexample using<code>RequestProcessor</code>),definitivelyitshould notblockAWTthread. </hint> </question>
-->
<answer id="perf-progress">
<p>
The implementation module starts a new Thread where the source files are scanned. This is indicated to the user
in the global progress bar and the scanning process is user-cancellable.
</p>
</answer>
<!-- <questionid="resources-layer"when="final"> Doesyourmoduleprovideownlayer?Doesitcreateanyfilesor foldersinit?Whatitistryingtocommunicatebythatandwithwhich components? <hint> NetBeansallowsautomaticanddeclarativeinstallationofresources bymodulelayers.Moduleregisterfilesintoappropriateplaces andothercomponentsusethatinformationtoperformtheirtask (buildmenu,toolbar,windowlayout,listoftemplates,setof options,etc.). </hint> </question>
-->
<answer id="resources-layer">
<p>
The task list SPI adds folder "/TaskList/Providers" where the task provider instances are searched for,
folder "TaskList/ScanningScopes" where the scanning scope implementations are searched for and folder "TaskList/Groups" where the module looks for task group definitions.
</p>
</answer>
<!-- <questionid="resources-mask"when="final"> Doesyourmodulemask/hide/overrideanyresourcesprovidedbyothermodulesin theirlayers? <hint> Ifyoumaskafileprovidedbyanothermodule,youprobablydepend onthatanddonotwanttheothermoduleto(forexample)change thefile'sname.ThatmoduleshallthusmakethatfileavailableasanAPI ofsomestabilitycategory. </hint> </question>
-->
<answer id="resources-mask">
<p> 'TODO' integration module will hide the current 'To Do' window action.
</p>
</answer>
<!-- <questionid="resources-preferences"when="final"> DoesyourmoduleusespreferencesviaPreferencesAPI?DoesyourmoduleuseNbPreferencesor orregularJDKPreferences?Doesitread,writeorboth? Doesitsharepreferenceswithothermodules?Ifso,thenwhy? <hint> Youmayuse <apitype="export"group="preferences" name="preferencenodename"category="private"> descriptionofindividualkeys,whereitisused,whatit influences,whetherthemodulereads/writeit,etc. </api> DuetoXMLIDrestrictions,ratherthan/org/netbeans/modules/foogivethe"name"asorg.netbeans.modules.foo. NotethatifyouuseNbPreferencesthisnamewillthenbethesameasthecodenamebaseofthemodule. </hint> </question>
-->
<answer id="resources-preferences">
<p>
The task list framework (the UI implementation) uses NbPreferences to remember user settings
between sessions (selected scanning scope, table column widths etc) and user defined filters.
</p>
</answer>
<!-- <questionid="resources-read"when="final"> Doesyourmodulereadanyresourcesfromlayers?Forwhatpurpose? <hint> Asthisissomekindofintermoduledependency,itisakindofAPI. Pleasedescribeitandclassifyaccordingto <ahref="http://openide.netbeans.org/tutorial/api-design.html#categories"> commonstabilitycategories</a>. </hint> </question>
-->
<answer id="resources-read">
<p>
The task list frameworks reads from XML layer the list of task providers, scanning scopes
and task groups.
</p>
</answer>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.