List of the main features:
The library part is located under editor/lib/src folder.
It depends on the following classes from openide:
org.openide.DialogDescriptor org.openide.DialogDisplayer org.openide.ErrorManager org.openide.NotifyDescriptor org.openide.util.Lookup org.openide.util.LookupListener org.openide.util.LookupEvent org.openide.util.NbBundle org.openide.util.RequestProcessor org.openide.util.Task
The above classes should remain to be isolated in a sense that they operate without loading other openide classes (if they need an implementation class they get it from Lookup).
org.netbeans.lib.editor.hyperlink.spiallows the editors for a particular mime-type to respond to the situation when a user hovers over the text with a Ctrl key pressed.
HyperlinkProviderclass that contains a javadoc with instructions about how to register the implementation in the xml layer for the given mime-type (mentioned in the layer section here as well). Question (arch-usecases): Describe the main use cases of the new API. Who will use it under what circumstances? What kind of code would typically need to be written to use the module? Answer: No answer Question (arch-time): What are the time estimates of the work? Answer: No answer Question (arch-quality): How will the quality of your code be tested and how are future regressions going to be prevented? Answer: No answer Question (arch-where): Where one can find sources for your module? Answer:
The sources for the module are in the Apache Git repositories or in the GitHub repositories.
org-netbeans-modules-editor-lib.jar- NetBeans editor library independent of the rest of the NetBeans APIs depending on the JRE only. Question (deploy-nbm): Can you deploy an NBM via the Update Center? Answer: Yes. Question (deploy-shared): Do you need to be installed in the shared location only, or in the user directory only, or can your module be installed anywhere? Answer: Module can be installed anywhere. Question (deploy-packages): Are packages of your module made inaccessible by not declaring them public? Answer: Description of public packages:
org.netbeans.editor- core of the editor generic infrastructure; indenpendent of the NetBeans IDE.
org.netbeans.editor.ext- extra (non-essential) generic editor infrastructure; indenpendent of the NetBeans IDE.
org.netbeans.editor.ext.html- HTML editor infrastructure; independent of the NetBeans IDE.
org.netbeans.editor.ext.html.dtd- DTD parsing support for determining of the valid input at particular place of a HTML source (offered by code completion); independent of the NetBeans IDE.
org.netbeans.editor.ext.java- Java editor infrastructure; independent of the NetBeans IDE.
org.netbeans.editor.ext.plain- Plain text editor infrastructure; independent of the NetBeans IDE.
org.netbeans.editor.view.spi- A rudiment of a generic view architecture SPI though now it is only used privately in the editor module; independent of the NetBeans IDE.
XXX no answer for compat-deprecation
java.io.Filedirectly? Answer: No. Question (resources-layer): Does your module provide own layer? Does it create any files or folders in it? What it is trying to communicate by that and with which components? Answer: Question (resources-read): Does your module read any resources from layers? For what purpose? Answer: No. Question (resources-mask): Does your module mask/hide/override any resources provided by other modules in their layers? Answer: No. Question (resources-preferences): Does your module uses preferences via Preferences API? Does your module use NbPreferences or or regular JDK Preferences ? Does it read, write or both ? Does it share preferences with other modules ? If so, then why ? Answer:
XXX no answer for resources-preferences
org.openide.util.Lookupor any similar technology to find any components to communicate with? Which ones? Answer: Question (lookup-register): Do you register anything into lookup for other code to find? Answer: Question (lookup-remove): Do you remove entries of other modules from lookup? Answer: No.
System.getProperty) property? On a similar note, is there something interesting that you pass to
java.util.logging.Logger? Or do you observe what others log? Answer:
EditorKit. netbeans.debug.editor.document.undo - System property to debug undoing/redoing of the modifications done in the document.
java.awt.Graphicsof the component being rendered.
javax.swing.text.Document.getProperty()) that influence the document execution:
FileObjectfrom which the
Documentcontent was loaded.
IntUnaryOperatorwhich is invoked with a document offset and returns a minimum caret width. This overrides a constant 2 minimum caret width. Question (exec-ant-tasks): Do you define or register any ant tasks that other can use? Answer:
No.Question (exec-classloader): Does your code create its own class loader(s)? Answer: No. Question (exec-reflection): Does your code use Java Reflection to execute other code? Answer: Reflection is used for:
instanceof, work with
java.lang.Class, etc.)? Answer: No. Question (exec-threading): What threading models, if any, does your module adhere to? How the project behaves with respect to threading? Answer:
Threading model of the document model adheres to javax.swing.text.Document interface. There can be multiple reader threads accessing the document simultaneously but only one mutating thread at the time.
Document.render(Runnable) must be used for all the readonly operations accessing the document. The editor fully supports org.openide.text.NbDocument.runAtomic() and NbDocument.runAtomicAsUser() extensions that allow transactions on top of the document.
All the UI-related tasks adhere to Swing/AWT conventions i.e. they must be performed in EQ thread.Question (security-policy): Does your functionality require modifications to the standard policy file? Answer:
XXX no answer for security-policyQuestion (security-grant): Does your code grant additional rights to some other code? Answer:
XXX no answer for security-grant