MoreDeclarativeRegistrationUsingAnnotations

(Difference between revisions)
(Navigator panels)
(Navigator panels)
Line 99: Line 99:
=Navigator panels=
=Navigator panels=
-
Registered per MIME type. Should be simple.
+
[https://netbeans.org/bugzilla/show_bug.cgi?id=206954 bug #206954] {{Check mark}}
-
[https://netbeans.org/bugzilla/show_bug.cgi?id=206954 bug #206954]
+
=Task list providers=
=Task list providers=

Revision as of 14:16, 12 January 2012

Background: DeclarativeRegistrationUsingAnnotations#Potential_Layer_Annotations

In addition to new annotations, we need more editor hints to replace old layer.xml registrations - only a few cases (actions, templates) are currently covered, and even then not fully.

Contents

MIME resolvers

Easy: link to an XML file in the current DTD, similar to @HelpSetRegistration.

Trickier: provide similar functionality entirely in annotations.

Should be possible to register also on a nondeclarative resolver.


(To JGlick, I'am not very confident with the way to handle the wiki, please fill free to "optimize". (EBarboni)

The easy part may be handled this way:

@ServiceMimeRegistration(id = "resolver-id", label = "#mylabel", position = XXX, resource = "myresolver.xml")

This annotation is not related to a class but may be a good things to be able to allow it in the user DataLoader where the mimetype is handled.


I was thinking of the trickiest generator but there is lots subpart to deals with.


8 annotations instead of 75 lines
/*
for the php resolver
*/

@MimeResolverPattern(id="lookforphpin4000",value="<?php",range=4000)

@ServiceMimeRegistration(mimetype="text/x-php5",entry={

 @ServiceMimeRegistrationEntry(extensions={"php","phtml"}),
 @ServiceMimeRegistrationEntry(extensions={"java","rb","rhtml"},ignore=true),
 @ServiceMimeRegistrationEntry(patterns={
  @MimeResolverPattern(value="<?php",range=255),
  @MimeResolverPattern(value="<HTML>",range=255,ignorecase=true,subpattern="#lookforphpin4000"),
  @MimeResolverPattern(value="<!DOCTYPE HTML",range=255,ignorecase=true,subpattern="#lookforphpin4000")
 })
 
})

five annotations instead of 69 lines
/*
for editor codetemplate
*/
@XMLResolver(id="publicidforcodetemplate",publicID="-//NetBeans//DTD Editor Code Templates settings 1.0//EN")
@XMLResolver(id="rootforcodetemplate",element="codetemplates")

@ServiceMimeRegistration(mimetype="text/x-nbeditor-codetemplatesettings",entry={
 @ServiceMimeRegistrationEntry(extensions={"xml"},xmlresolver="publicidforcodetemplate"),
 @ServiceMimeRegistrationEntry(extensions={"xml"},xmlresolver="rootforcodetemplate")
})

)

Data loaders

For traditional DataLoader-extending modules:

@DataObject.Factory.Registration(mimeTypes="text/html", label="#PROP_HtmlLoader_Name",
                                 icon="org/netbeans/modules/html/htmlObject.png")
public class HtmlLoader extends UniFileLoader {...}

For those skipping the loader and using DataLoaderPool.factory:

@DataObject.Factory.Registration(mimeTypes="text/html", label="#PROP_HtmlLoader_Name",
                                 icon="org/netbeans/modules/html/htmlObject.png")
public class HtmlDataObject extends MultiDataObject {...}

(

Does the plural form (mimeTypes) means that this annoation may register several factories?

May a notion of position be usefull like in other part of layer?

)

Loader actions

TBD how to handle context menu actions. See DeclarativeRegistrationUsingAnnotations#Problems_with_actions for discussion.

Startup tasks

Most simply: an annotation to register ModuleInstall implementations.

More ambitiously, an annotation to cover parallelizable startup tasks, perhaps replacing ModuleInstall as well as other hooks: #200636.

Either would supersede #163937 (refactoring hook).

Navigator panels

bug #206954 Template:Check mark

Task list providers

Two kinds of provider, both should be simple to register.

Quick search providers

Should be simple.

Palette items

Probably straightforward as package annotations.

XML catalogs, schemas, DTDs

May be tricky. See #192595 for discussion.

Project type registration

See #193549.

Repeating annotations

JEP 120 proposes repeating annotations, which would allow us to write the more natural

@ActionID(...)
@ActionRegistration(...)
@ActionReference(path="Menu/File")
@ActionReference(path="Toolbars/File")
public class A implements ActionListener {...}

rather than the current awkward

@ActionID(...)
@ActionRegistration(...)
@ActionReferences({
  @ActionReference(path="Menu/File")
  @ActionReference(path="Toolbars/File")
}
public class A implements ActionListener {...}

Of course this has to wait for JDK 8 (or whenever the JEP is implemented).

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo