Esta lección se basa en el proyecto de plug-in que ha creado en el ejercicio
5 y modificado en el ejercicio 6. En esta lección creará la clase
CustomContextProvider, que puede personalizarse para ajustarla a
al visor que desee. Por ejemplo, si desea el visor de campos, el proveedor de contextos
puede ampliar CarmaFieldsContentProvider.
Para crear la clase CARMAContextProvider:
- Compruebe que se encuentra en la perspectiva Desarrollo de
plug-ins.
En la vista Explorador de paquetes, expanda
el proyecto de plug-in com.ibm.carma.plugin.view que ha utilizado en
los ejercicios 5 y 6.
- Pulse con el botón derecho del ratón el paquete view que contiene
las clases CARMADeveloperView y CustomLabelProvider
y seleccione Nuevo >
Clase.
- En el recuadro de diálogo Clase Java nueva que se abre,
especifique CustomContextProvider en el campo de texto
Nombre.
- Pulse el botón
Examinar situado a la derecha del campo de texto
Superclase. En el recuadro de diálogo
Selección de superclase que se abre, especifique
el texto de filtro CARMATreeContentProvider.
Seleccione la
clase coincidente y pulse Aceptar.
- Marque el recuadro de selección Constructores de superclase y pulse
Finalizar. El diálogo Clase Java nueva se
cerrará y se creará la clase CustomContentProvider.
- Empiece por asegurarse de que las importaciones siguientes se han incluido en la
clase Java. Añada las que falten.
import java.util.Vector;
import com.ibm.carma.model.RepositoryInstance;
import com.ibm.carma.ui.view.CarmaTreeContentProvider;
- Deberá modificar el método getChildren para cambiar el contenido
suministrado al visor. Este método es la ubicación en la que el proveedor puede
controlar qué elementos se envían al visor al expandir el RAM. En esta guía de
aprendizaje, implementará el método getChildren para que devuelva sólo
instancias de repositorio que tengan una señal CARMA en el nombre y que no sean
una instancia de repositorio de listado, objeto o carga.
A continuación figura un pseudocódigo que muestra lo que debe hacer el método getChildren:
obtener los hijos del objeto que de devolverían normalmente;
para cada hijo
{
si(el hijo es una instancia de repositorio)
{
si(la instancia de repositorio tiene una señal CARMA y no es una instancia de repositorio de listado, objeto o carga)
añadir el hijo a la lista de hijos visualizables;
}
}
Utilice el código de ejemplo siguiente para el método getChildren:
public Object[] getChildren(Object parent)
{
Object[] children = super.getChildren(parent);
//No analizar hijos inexistentes
if(children == null)
{
return children;
}
Vector<Object> displayChildren = new Vector<Object>();
for(int i = 0; i < children.length; i++)
{
if(children[i] instanceof RepositoryInstance)
{
RepositoryInstance myContainer = (RepositoryInstance) children[i];
if (myContainer.getName().contains("CARMA"))
{
displayChildren.add(children[i]);
}
}
else
{
displayChildren.add(children[i]);
}
}
return displayChildren.toArray();
}
- Guarde el código fuente y depure los errores.