SpanishTranslationTutorialestiposarchivos

Integración de tipos de archivos

===Ver También===
[http://platform.netbeans.org/tutorials/nbm-filetype.html File Type Integration Tutorial]

[http://news.hiperia3d.com/2008/04/netbeans-tutorial.html Quickstart Guide: Language Support Modules For Netbeans]

[[{TableOfContentsTitle=TablaDeContenidos} | {TableOfContents title='Tabla de contenidos'}]]

Introducción a la integraciòn de tipos de archivos

Los tipos de archivo son reconocidos en el IDE, con sus iconos, elementos de menú y su comportamiento. Los "archivos" son mostrados atraves de los envoltorios FileObjects alrededor de java.io.File o, en el caso de archivos de configuración, envoltorios alrededor de los datos almacenados de una u otra forma,tales como dentro de archivos XML en módulos.

Actualmente se pueden ver Nodos, que proveen funcionalidad como actiones y nombres de ubicaciones a los objetos como archivos. Entre los Nodos y FileObjects son DataObjects. Un DataObject es como un FileObject, excepto que este conoce que que sabe qué tipo de archivo está siendo demostrado, y generalmente hay diferentes tipos de DataObject de archivos con diferentes extensiones de archivos XML y con diferentes nombres.

Cada DataObject es proporcionada por un módulo diferente, cada uno de ellos implementa soporte para uno o más tipos de archivos por ejemplo, el módulo Image hace posible reconocer y abrir archivos .gif y .png.

Un módulo que reconoce un tipo de archivo instala un DataLoader-factory para un DataObject de un tipo de archivo especifico. Cuando un folder es expandido, el IDE pregunta a cada DataLoader si lo conoce, "Tu conoces que es esto?". El primero responde "si", crea el DataObject para el archivo. Para desplegar cada archivo el sistema llama a DataObject.getNodeDelegate() para cada DataObject y los nodos que son actualmente mostrados en el IDE.

Image:diagram-dataobject2_SpanishTranslationTutorialestiposarchivos.png

En ese tutorial se creara un módulo que instala un DataLoader para un imaginario archivos "Abc" ( extensión .abc). De forma predeterminada un archivo con extensión "abc!, es tratado como otro archivo que el IDE no reconoce y este es tratado como un archivo de texto, y como resultado el IDE proporciona las mismas funcionalidades que un archivo de texto.


Creando el Proyecto de Módulo

1. Elija File > New Project (Ctrl-Shift-N). Sobre Categories, seleccione NetBeans Modules. Sobre Projects, seleccione Module y haga click en el botón Next. Image:newproject_SpanishTranslationTutorialestiposarchivos.jpg

2.En el panel Name and Location , escriba AbcFileType en el Project Name. Deje el botón de radio Standalone Module seleccionado. El panel se muestra como: Image:newmodule_SpanishTranslationTutorialestiposarchivos.jpg

3. En el panel Basic Module Configuration, escriba org.avbravo.abcfiletype como el nombre Code Name Base. Seleccionar la casilla "Generate XML Layer".

Image:basicconfiguration_SpanishTranslationTutorialestiposarchivos.jpg

presionar el botón FINISH

4.El IDE crea el proyecto Abc File Type. El proyecto contiene todas las fuentes y metadatos, como script constructor Ant. El proyecto abre en el IDE. Puedes ver la estructura lógica en la ventana de Proyecto (Ctrl-1) y la estructura de archivos en la ventana Files (Ctrl-2).

Image:estructura_SpanishTranslationTutorialestiposarchivos.jpg

Reconociendo Archivos Abc

Usaremos el asistente para crear las clases necesarias para reconocer los archivos Abc como distintos de otros archivos. Necesitamos un data object y un data loader, como también una resolucón de tipos MIME , y registrar las entradas en el archivo layer.xml . El asistente New File crea esto por nosotros.

1.Click derecho en el nodo proyecto y elija

New > File Type.

Image:newfile_SpanishTranslationTutorialestiposarchivos.jpg

2. En el panel File Recognition : Escriba text/x-abc en el editor tipo MIME. Escriba .abc .ABC en la caja de texto Filename Extension. Image:tipomime_SpanishTranslationTutorialestiposarchivos.jpg


Explicación del panel File Recognition :

MIME Type. Especifica el objeto de dato unico MIME para la extensión Filename. Especifica uno o más extensiones de archivos que el IDE puede reconocer los archivos especificados MIME. La extensión de archivos puede estar precedida por un punto (.), separadores comas, espacios, o ambos. Extensiones válidas .abc,.def .abc .def abc def abc,.def ghi, .wow

Imaginese que el archivo Abc es sencible a mayúsculas y minúsculas. Por esta razon, se especifica dos tipos de archivos MIME .abc y .ABC.

XML Root Element Especifica un unico espacio de nombre que distingue el archivo XML de todos los otros archivos XML. Existen muchos archivos XML que tienen la misma extensión(xml), el IDE distingue entre ellos atraves de la raiz de los elementos XML. Más especificamente , el IDE puede distinguir entre el espacio de nombres y el primer elemento en el archivo XML.


Presionar el botón Next.

3.En el panel Name and Location , escriba Abc como Class Name Prefix y busque un archivo de imagen de 16x16 pixel como el icono para el nuevo tipo de archivo.

Image:name_SpanishTranslationTutorialestiposarchivos.jpg

Presionar el botón FINISH

El IDE crea la nueva estructura

Image:estruc2_SpanishTranslationTutorialestiposarchivos.jpg

Explicación de los archivos generados

  • AbcDataObject.java. Envuelve un FileObject. DataObjects son producidos por DataLoaders.
  • AbcResolver.xml. Mapea extensiones e .abc y .ABC a los tipos MIME .

El AbcDataLoader solo reconoce tipos MIME type.

  • AbcTemplate.abc. Proporciona la plantilla básica que es registrada en el layer.xml esta puede ser instalada con el dialogo New File como una nueva plantilla.
  • AbcDataObjectTest.java. Clases JUnit para el DataObject.

Instalando y probando la Funcionalidad

En la ventana de proyecto , de click derecho al proyecto Abc File Type y elija Install/Reload in Development IDE.

El módulo es construido y ejecutado en el IDE.

Crear una aplicación Java

  • Crear un nuevo archivo

File -> New ->Other ->Otro ->AbcFileType

Image:abcfile_SpanishTranslationTutorialestiposarchivos.jpg


Creando caracteristicas para el archivo Abc

Añadiendo un Action

1. Click derecho en el nodo del proyecto y elejir New ->Action 2.En el panel Action Type , dar click en Conditionally Enabled. Escrinir AbcDataObject, que es el nombre del objeto de datos que se genera al utilizar el asistente New File Type wizard:

Image:actiontype_SpanishTranslationTutorialestiposarchivos.jpg

3. En el panel GUI Registration , seleccionar Edit en la lista desplegable de categoría. Quitar la selección para Global Menu Item y seleccionar File Type Contect Menu Item. Y seleccionar en el Content Type de la lista desplegable el tipo de datos MIME.

Image:edit2_SpanishTranslationTutorialestiposarchivos.jpg

Image:edit4_SpanishTranslationTutorialestiposarchivos.jpg

4. En el panel Name y Location, escriba MyAction como Class Name y My Action como Display Name.

Image:myaction_SpanishTranslationTutorialestiposarchivos.jpg

Abra el archivo MyAction.java, busque el mejor performAction. Que inicialmente esta de esta manera:

 protected void performAction(Node[] activatedNodes) {
        AbcDataObject abcDataObject = activatedNodes[0].getLookup().lookup(AbcDataObject.class);
    // TODO use abcDataObject
        
    }

Modifiquelo para que quede asi:

protected void performAction(Node[] activatedNodes) {
	AbcDataObject d = (AbcDataObject) activatedNodes[0].getCookie(AbcDataObject.class);
	FileObject f = d.getPrimaryFile();
	String displayName = FileUtil.getFileDisplayName(f);
	String msg = "I am " + displayName + ". Hear me roar!"; 
        NotifyDescriptor nd = new NotifyDescriptor.Message(msg);
        DialogDisplayer.getDefault().notify(nd);
}

5. Agrege la libreria Dialogs API al proyecto.

  Desde File -> seleccionar Project Properties(AbcFileType) 
luego Libraries , y presionar el boton Add.

Agregar la biblioteca Dialogs API. o Si si esta en español API de dialogos.

6. Regresar al archivo MyAction.java dar click derecho y seleccionar Fix Import.

Seleccionar Image:fileobject_SpanishTranslationTutorialestiposarchivos.jpg


7. Instale el módulo nuevamente.

8. Ahora en el proyecto que creo nuevo, seleccione el archivo .abc, de click derecho, ahora aparece en el menú MyAction.

Image:menuaction_SpanishTranslationTutorialestiposarchivos.jpg Si damos click en My Action aparece el mensaje

Image:mensaje_SpanishTranslationTutorialestiposarchivos.jpg

Podemos crear una representación visual del archivo en el que podemos arrastrar y soltar componentes.


Abriendo el archivo en una ventana

1. Click derecho en el nodo del proyecto, elija

New > Window Component.

Image:newwindowcomponent_SpanishTranslationTutorialestiposarchivos.jpg

Seleccionamos en Windows position: editor y marcamos la casilla Open On Application Start.

Image:basicsetting_SpanishTranslationTutorialestiposarchivos.jpg

En el Class Name, escribir Abc

Image:classname_SpanishTranslationTutorialestiposarchivos.jpg

Presionar el botón FINISH

2. Abra el archivo

 AbcDataObject.java
  public AbcDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException {
        super(pf, loader);
        CookieSet cookies = getCookieSet();
        cookies.add((Node.Cookie) DataEditorSupport.create(this, getPrimaryEntry(), cookies));
       
    }

Colocar en comentario

// cookies.add((Node.Cookie) DataEditorSupport.create(this, getPrimaryEntry(), cookies));

Agregar la linea

cookies.add((Node.Cookie) new AbcOpenSupport(getPrimaryEntry()));

Quedaria de la siguiente manera

 public AbcDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException, IOException {
    super(pf, loader);
   CookieSet cookies = getCookieSet();
  // cookies.add((Node.Cookie) DataEditorSupport.create(this, getPrimaryEntry(), cookies));
  cookies.add((Node.Cookie) new AbcOpenSupport(getPrimaryEntry()));

    }

3. Crear la clase AbcOpenSupport.java

class AbcOpenSupport extends OpenSupport implements OpenCookie, CloseCookie {

    public AbcOpenSupport(AbcDataObject.Entry entry) {
        super(entry);
    }

    protected CloneableTopComponent createCloneableTopComponent() {
        AbcDataObject dobj = (AbcDataObject) entry.getDataObject();
        AbcTopComponent tc = new AbcTopComponent();
        tc.setDisplayName(dobj.getName());
        return tc;
    }
 
}

Dar click derecho en Fix Imports

4. Ajustar TopComponent para ampliar CloneableTopComponent, en lugar de TopComponent. Ajuste el TopComponent modificador de la clase, su constructor y del modificador, al público en lugar del privado.

5. Abra el archivo AbcTopComponent.java Localice el constructor

 private AbcTopComponent() 

y cambielo a publico

public AbcTopComponent() 

Busque la firma de la clase

final class AbcTopComponent extends TopComponent {

y hagalo que extienda de CloneableTopComponent

final class AbcTopComponent extends CloneableTopComponent {

De click derecho y ejecute Fix Imports.

Instale el módulo nuevamente.

Cuando un archivo Abc es abierto , la clase OpenSupport maneja el archivo abierto, de tal forma que se abre el archivo en el lugar del editor básico TopComponent que proporciona DataEditorSupport.

Ahora podemos ver el archivo en el editor, permite en un futuro implementar las funciones de arrastrar y soltar. Image:abriendo_SpanishTranslationTutorialestiposarchivos.jpg

Regresar

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