org.openide.loaders 7.10.1

Datasystems API
Official

See:
          Description

Datasystems API
org.openide.actions  
org.openide.awt  
org.openide.loaders Datasystems are the logical layer between a filesystem and higher-level file-oriented operations.
org.openide.text  

 

This module provides API that works on top of file objects and gives each file a logical behaviour - icon, name, operations, etc.

What is New (see all changes)?

Use Cases

A lot of usecases is described in the javadoc. Here is the list of some faqs:
Using Scripting and Templating Languages

Often many people require ability to create a "clever" template - e.g. write piece of simple text and at the time of its processing do some advanced changes to it using either scripting or templating languages.

This traditionally used to be a bit complicated task, however since version 6.1 there are new interfaces can be registered as a services in a lookup and it is reponsible for handling the whole copy of the template file(s) to the destination folder. and can be registered as a services in a lookup and it is reponsible for providing "hints" - e.g. map mapping strings to various objects. and these interfaces allow anyone to extend the behaviour during creation of new files without writing new DataLoader and co.

Smart Templating Quick How-To
First of all create a file in your module layer located somewhere under the Templates/ folder. Make it a template by adding <attr name="template" boolvalue="true"/>. Associate this template with a scripting language, for example by <attr name="javax.script.ScriptEngine" stringvalue="freemarker"/>. Now make sure that the scripting language integration is also available by requesting a token in standard format, for freemarker just put OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker in your manifest. Also create a runtime dependency on org.netbeans.modules.templates - the module providing the templates/scripting languages integration. the module providing the templates/scripting languages integration. This tells the NetBeans module system that a module providing integration with such scripting engine has to be enabled. Now you can use regular script language tags inside of your template file. When you write your instantiate method in your wizard, you can create a Map<String,Object> and fill it with parameters collected from your wizard and then pass it to createFromTemplate(targetFolder, targetName, mapWithParameters) . This will invoke the scripting language and make the mapWithParameters values available to it. Beyond this there is few standard parameters predefined including name, user, date, time, etc. and also additional parameters are collected from all registered CreateFromTemplateAttributesProviders.

Moreover there is a built in support for scripting languages in the standard NetBeans IDE. If a template is annotated with a property that can be associated to templates that either should return real instance of ScriptEngine interface or a String name of the engine that is then used to search for it in the javax.script.ScriptEngineManager. Usually the freemarker engine is the one that is supported by the NetBeans IDE - if your module wants to use it then include a token dependency OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker in your manifest file (also accessible through project customizer GUI) to indicate to the system that you need it. then the scripting engine is then used to process the template and generate the output file. While running the engine one can rely on few predefined properties:

Other properties can indeed be provided by CreateFromTemplateAttributesProviders. After processing, the output is also sent to appropriate org.openide.text.IndentEngine associated with the mime type of the template, for formating.

How to add action to folder's popup menu?
The actions that the default folder loader shows in its popup menu are read from a layer folder Loaders/folder/any/Actions so if any module wishes to extend, hide or reorder some of them it can just register its actions there. As code like this does:
    <folder name="Loaders" >
        <folder name="folder" >
            <folder name="any" >
                <folder name="Actions" >
                    <file name="org-mymodule-MyAction.instance" >
                        <attr name="instanceCreate" stringvalue="org.mymodule.MyAction" />
                    </file>
                </folder>
            </folder>
        </folder>
    </folder>
    
As described in general actions registration tutorial.

This functionality is available since version 5.0 of the loaders module. Please use OpenIDE-Module-Module-Dependencies: org.openide.loaders > 5.0 in your module dependencies.

In version 5.8 all the standard loaders were changed to read actions from layer:

How to allow others to enhance actions of your loader?
If you want other modules to enhance or modify actions that are visible on DataObjects produced by your DataLoader and you are either using DataNode or its subclass, you can just override protected String actionsContext() method to return non-null location of context in layers from where to read the actions.

The usual value should match Loaders/mime/type/Actions scheme, for example java is using Loaders/text/x-java/Actions, but the name can be arbitrary.

This functionality is available since version 5.0 of the loaders module. Please use OpenIDE-Module-Module-Dependencies: org.openide.loaders > 5.0 in your module dependencies.

Exported Interfaces

This table lists all of the module exported APIs with defined stability classifications. It is generated based on answers to questions about the architecture of the module. Read them all...
Group of java interfaces
Interface Name In/Out Stability Specified in What Document?
LoadersAPI Exported Official .../openide/loaders/doc-files/api.html

Group of lookup interfaces
Interface Name In/Out Stability Specified in What Document?
org.openide.loaders.CreateFromTemplateHandler Exported Official .../loaders/CreateFromTemplateHandler.html

can be registered as a services in a lookup and it is reponsible for handling the whole copy of the template file(s) to the destination folder.

org.openide.loaders.CreateFromTemplateAttributesProvider Exported Official .../

can be registered as a services in a lookup and it is reponsible for providing "hints" - e.g. map mapping strings to various objects.

Group of property interfaces
Interface Name In/Out Stability Specified in What Document?
javax.script.ScriptEngine Exported Official

a property that can be associated to templates that either should return real instance of ScriptEngine interface or a String name of the engine that is then used to search for it in the javax.script.ScriptEngineManager. Usually the
freemarker engine is the one that is supported by the NetBeans IDE - if your module wants to use it then include a token dependency OpenIDE-Module-Needs: javax.script.ScriptEngine.freemarker in your manifest file (also accessible through project customizer GUI) to indicate to the system that you need it.

name Exported Stable

contains the name of the
DataObject that is being created

user Exported Stable

contains the name the user

nameAndExt Exported Stable

contains the name and extension of the file that is being created

date Exported Stable

contains String representing the current day like 23. 3. 2007

time Exported Stable

contains String the current time like 17:18:30

encoding Exported Stable

contains String the file encoding of the template instance

NetBeansAttrAssignedLoader Exported Stable

Extended attribute for holding the class of the loader that should be used to recognize a file object before the normal processing takes place.

NetBeansAttrAssignedLoaderModule Exported Private

Extended attribute which may be used in addition to EA_ASSIGNED_LOADER which indicates the code name base of the module that installed that preferred loader. If the indicated module is not installed, ignore the loader request. See #13816.

template Exported Stable

If set to Boolean.TRUE the file is recognized as template and its instantiation is allowed.

isRemoteAndSlow Exported Friend

If the file attribute isRemoteAndSlow is true on a folder, the New File wizard and folder children will avoid asking for its children.

templateWizardURL Exported Stable

Attribute that defines a template wizard description page (type URL to HTML).

templateWizardIterator Exported Stable

Attribute that defines a custom template wizard iterator (type TemplateWizard.Iterator).

originalFile Exported Stable

Path to the target file in its filesystem (type String).

originalFileSystem Exported Stable

System name of filesystem of target file (type String; default is same as that of shadow).

UseOwnName Exported Private

if true, the DataShadow name is used instead of original's name, affects DataShadows of filesystem roots only

simple Exported Stable

templates and folders under Templates/ folder can be annotated with <attr name="simple" boolvalue="false"< if they are supposed to be hidden in Template Manager. If a folder is annotated with this attribute, it is also hidden in standard New File wizard.

PartialOrders Exported Stable

Read the list of intended partial orders from disk. Each element is a string of the form a/b for a, b filenames with extension, where a should come before b. The value of the attribute must be of type Boolean; ignored unless true.

OpenIDE-Folder-SortMode Exported Private

Extended attribute for order of children. The values are "F", "N", "C", "0" (type String).

OpenIDE-Folder-Order Exported Private

Extended attribute for order of children - stores list of file names separated by '/' (type String).

EA-OpenIDE-Connection Exported Private

Extended attribute to store (ArrayList of Type and Node.Handle). Used by Java synchronization feature at least; generally, ConnectionCookie.

DataFolder.Index.reorderable Exported Friend

If set to Boolean.TRUE on a folder not in the system filesystem, make its node reorderable.

org.openide.loaders.DataFolder.lazy Exported Private

Setting this property to true or false true or false influences the kind of children used by all the folders. Either they are "lazy", which is currently a bit experimental, but in long term shall be the default. Or they are "eager", which means that shall be as reliable (and slow) as they used to be in previous releases. This is highly temporary property which will be removed as soon as we stabilize the lazy implementation.

org.openide.loaders.FolderList.refresh.interval Exported Private

The value of type integer determines the number of milliseconds between successive refreshes of contents of a folder. Can be used to tweak performance of folder refresh. Defaults to 10.

netbeans.dataobject.insecure.operation Exported Friend

If set to true, the DataObject.copy, move, createFromTemplate are executed in insecure way. That means that other threads can access the products of such operation before it finishes. This is a friend contract with projects, that need to do such strange things. Will be removed when they fix it.

wizard.anything Exported Stable

When
TemplateWizard invokes DataObject.createFromTemplate, it passes as argument all its properties to it with prefix wizard.. That way they are available to underlaying scripting and templating engines.

Group of layer interfaces
Interface Name In/Out Stability Specified in What Document?
Loaders-folder-any-Actions Exported Stable

The actions that the default folder loader shows in its popup menu are read from a layer folder Loaders/folder/any/Actions so if any module wishes to extend, hide or reorder some of them it can just register its actions there.

Loaders-text-xml-Actions Exported Stable

The actions that the standard XML loader shows in its popup menu are read from a layer folder Loaders/text/xml/Actions

Loaders-content-unknown-Actions Exported Stable

The actions that the loader for unrecognized files shows in its popup menu are read from a layer folder Loaders/content/unknown/Actions

Loaders-application-x-nbsettings-Actions Exported Stable

The actions that the loader for instance and settings files shows in its popup menu are read from a layer folder Loaders/application/x-nbsettings/Actions

Loaders-mime-type-Factories Exported Stable .../org/openide/loaders/doc-files/api.html

Loaders are registered in the layer in folder Loaders/mime/type/Factories.

PrivilegedTemplates Exported Under Development

A folder Privileged offers to other module possibility add own templates.

RecentTemplates Exported Private

A folder Recent stores a set of recently used templates, it's not open to other module.

Group of javax.swing.UIManager interfaces
Interface Name In/Out Stability Specified in What Document?
Nb.Explorer.Folder.icon Exported Under Development

Icon or Image for closed folder.

Nb.Explorer.Folder.openedIcon Exported Under Development

Icon or Image for opened folder.

Tree.openedIcon Exported Under Development

Fallback Icon or Image for opened folder.

Tree.closedIcon Exported Under Development

Fallback Icon or Image for folder.

Implementation Details

Where are the sources for the module?

The sources for the module are in the NetBeans Mercurial repositories.

What do other modules need to do to declare a dependency on this one, in addition to or instead of a plain module dependency?

XXX no answer for deploy-dependencies

Read more about the implementation in the answers to architecture questions.


org.openide.loaders 7.10.1

Built on February 22 2011.  |  Portions Copyright 1997-2011 Sun Microsystems, Inc. All rights reserved.