Viruz Blog
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

MultiViews en NetBeans Platform

Ir abajo

MultiViews en NetBeans Platform Empty MultiViews en NetBeans Platform

Mensaje  Admin (Viruz) Mar Dic 11, 2012 9:40 pm

Dejaremos un momento de lado el tema de los Wizard y cambiaremos por una muy interesante herramienta de la plataforma de NetBeans, estas son los Multiviews o conocidas como las multivistas. Para ello veremos un poco para que se utilizan y de que nos puede proveer.
La API de Multiviews y SPI sirve para dividir una TopComponent de varios contenedores. Como su nombre indica este método se utiliza para proporcionar más de un punto de vista de un solo DataObject. El ejemplo más común de esto es el NetBeans GUI Builder en el que el usuario cambia de la vista de origen hasta el punto de vista de diseño. Las opiniones tienen como base un .java y un .form file; Sin embargo una relación entre los puntos de vista no es obligatoria.

El SPI MultiViews como resultado puede utilizarse como un framework genérico, en lugar de uno específicamente dirigida a mostrar una sola pieza de datos. El resultado final de una multivista incluye una lista desplegable, que permite al usuario cambiar entre los diferentes puntos de vista. Opcionalmente, uno de los puntos de vista que consiste en cualquier tipo de JComponent, proporciona una barra de herramientas aparece al lado de la lista desplegable.
A lo largo de nuestros ejercicios en la aplicación hemos creado varias formas de paletas la cual hemos asociado con sus respectivos editores (TopComponent). En esta entrada veremos como crear estas multivistas en nuestros 2 editores y veremos el resultado de ellas.

Nota: Recordando que tenemos la paleta 1 que es mediante nodos y la paleta 2 que es mediante el layer.xml que reconocemos con templates.

Opcional: Vamos a crear un nuevo paquete el cual llamaremos multivistas y será ahí donde tendremos las dichas mencionadas.

Nota: Ahora tenemos que tener en cuenta que dependiendo de las multivistas que uno desee, serán los JPanel que se crearán para este ejemplo tendremos 2 paneles.


MultiViews con el editor de nodos

Pasos:

1. En el paquete nuevo damos clic derecho y en el menú escogemos New File, en el asistente vamos en la sección de categorías en Swing GUI Forms y en tipo de archivos JPanel Form.

[Tienes que estar registrado y conectado para ver esa imagen]
Seguido damos el nombre de la clase de la primera vista y finalizamos el asistente.

2. Agregaremos la dependencia MultiView Windows al módulo en el cual se esta trabajando.
[Tienes que estar registrado y conectado para ver esa imagen]
3. Ahora tenemos que realizar una implementación a MultiViewElement asi que vamos agregar la importación correspondiente y todos los métodos abstractos, quedando de la siguiente forma:


package org.prueba.modulo.multivistas;

import javax.swing.Action;
import javax.swing.JComponent;
import org.netbeans.core.spi.multiview.CloseOperationState;
import org.netbeans.core.spi.multiview.MultiViewElement;
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
import org.openide.awt.UndoRedo;
import org.openide.util.Lookup;

/**
*
* @author Viruz
*/
public class MultiVista1 extends javax.swing.JPanel implements MultiViewElement {

/**
* Creates new form MultiVista1
*/
public MultiVista1() {
initComponents();
}

@Override
public JComponent getVisualRepresentation() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public JComponent getToolbarRepresentation() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public Action[] getActions() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public Lookup getLookup() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void componentOpened() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void componentClosed() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void componentShowing() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void componentHidden() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void componentActivated() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void componentDeactivated() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public UndoRedo getUndoRedo() {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void setMultiViewCallback(MultiViewElementCallback mvec) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public CloseOperationState canCloseElement() {
throw new UnsupportedOperationException("Not supported yet.");
}
}


4. Ahora declararemos una variable de tipo MultiViewElementCallback, que es una clase que permite a las ventanas multivistas enviar las solicitudes de nuevo a los componentes que encierra y al sistema de la ventana.

Código:
private MultiViewElementCallback callback = null;

Los siguientes métodos que modificaremos serán:

@Override
public JComponent getVisualRepresentation() {
return this;
}

@Override
public Action[] getActions() {
if (callback != null) {
return callback.createDefaultActions();
} else {
return new Action[] {};
}
}

@Override
public Lookup getLookup() {
return Lookups.singleton(this);
}

@Override
public void setMultiViewCallback(MultiViewElementCallback mvec) {
callback = mvec;
}

Otros métodos que puedes modificar son:
  • El cual muestra el nombre de la pestaña al ser abierta.
Nota: Recomiendo los demás métodos dejarlos vacíos si en dado caso no pondrán código dentro de ellos para evitar errores de ejecución.

Código:
public void componentClosed() {}
public void componentShowing() {}
public void componentHidden() {}
public void componentActivated()
5. Para cada vista que se cree es necesario elaborar una clase java que tiene como punto principal la instancia de los componentes de vista gráfica el cual se crean mediante el método createElement().

Para saber que la clase es correspondiente a una vista recomiendo ponerle a lo último Descripción, por ejemplo MultiVista1Descripcion.java.

6. En esta clase se harán 2 implementaciones las cuales son las siguientes: MultiViewDescriptiony Serializable.
  • createElement(): Regresamos el panel correspondiente a la descripción.
  • preferredID(): Es un identificador de la vista.
  • getDisplayName(): Nombre que aparecerá en esta vista.
  • getIcon(): Algún tipo de icono para este tipo de vista e ira al lado del nombre.
  • getHelpCtx(): Muestra el contenido de ayuda de la vista para el usuario.

package org.prueba.modulo.multivistas;

import java.awt.Image;
import java.io.Serializable;
import org.netbeans.core.spi.multiview.MultiViewDescription;
import org.netbeans.core.spi.multiview.MultiViewElement;
import org.openide.util.HelpCtx;
import org.openide.windows.TopComponent;

/**
*
* @author Viruz
*/
public class MultiVista1Descripcion implements MultiViewDescription, Serializable {

@Override
public int getPersistenceType() {
return TopComponent.PERSISTENCE_NEVER;
}

@Override
public String getDisplayName() {
return "Vista 1";
}

@Override
public Image getIcon() {
return null;
}

@Override
public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP;
}

@Override
public String preferredID() {
return "PANEL_1";
}

@Override
public MultiViewElement createElement() {
return new MultiVista1();
}
}


7. Ahora abriremos el TopComponent del editor y en el constructor haremos un arreglo de la clase MultiViewDescription y agregamos al mismo las descripciones con las que se cuentan.

Código:
MultiViewDescription dsc[] = {
    new MultiVista1Descripcion(),
    new MultiVista2Descripcion()
};
Ahora como nuestra ventana de editor agregamos las ventanas sin tener que realizar uno nuevo.

Código:
add(MultiViewFactory.createMultiView(dsc, dsc[0]));
Y por último las abrimos:

Código:
open();
requestActive();
Tendremos el siguiente resultado en nuestro editor de la paleta 1.

[Tienes que estar registrado y conectado para ver esa imagen]
Autor: Viruz study
Enlace: MultiViews en NetBeans Platform
Admin (Viruz)
Admin (Viruz)
Admin

Mensajes : 148
Fecha de inscripción : 23/09/2012
Edad : 35
Localización : Desktop

https://viruz.foroactivo.mx

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.