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.
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.
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:
3. En el panel Basic Module Configuration, escriba org.avbravo.abcfiletype como el nombre Code Name Base. Seleccionar la casilla "Generate XML Layer".
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).
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.
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.
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.
Presionar el botón FINISH
El IDE crea la nueva estructura
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
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:
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.
4. En el panel Name y Location, escriba MyAction como Class Name y My Action como Display Name.
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.
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.
Si damos click en My Action
aparece el mensaje
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.
Seleccionamos en Windows position: editor y marcamos la casilla Open On Application Start.
En el Class Name, escribir Abc
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.

















