Por: Daynier Cardoso Roques
El formato de dato NetCDF es un formato de dato científico en el cual se puede almacenar gran cantidad de información. Los archivos de este tipo contienen algunas propiedades que es importante mostrar y configurar con el fin de lograr una correcta visualización. Algunas de estas propiedades son:
- Sistemas de Coordenadas, por ejemplo Longitud y Latitud
- Variable Medida, por ejemplo Temperatura, Presión, Nubosidad, etc.
- X_Dimensión
- Y_Dimensión
- Tiempo
- Altura
Añadiendo la nueva entrada
Para crear una nueva entrada en la Tabla de Contenido (TOC) es necesario crear una clase que herede de la clase abstracta AbstractTocContextMenuAction e implemente la interfaz IGenericToolBarMenuItem lo que permite añadir la nueva entrada en el TOC y en la Barra de Herramienta Genérica.
Luego en la nueva clase creada añadimos los siguientes import:
import javax.swing.Icon;
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
import org.gvsig.gui.beans.panelGroup.PanelGroupManager;
import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
import org.gvsig.raster.gui.IGenericToolBarMenuItem;
import org.gvsig.raster.util.RasterToolsUtil;
import uclv.gvsig.extsdf.raster.NetCDFRasterDataset;
import com.iver.andami.PluginServices;
import com.iver.andami.ui.mdiManager.WindowInfo;
import com.iver.cit.gvsig.fmap.layers.FLayer;
import com.iver.cit.gvsig.panelGroup.PanelGroupDialog;
import com.iver.cit.gvsig.panelGroup.loaders.PanelGroupLoaderFromExtensionPoint;
import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
La cual deberá implementar los siguientes métodos:
- boolean isVisisble(TocItem item, FLayer[] selectedItems): Método que será invocado para verificar si el ítem del menú debe ser visible o no. Este método devuelve true si la capa activa es construida a partir de un archivo NetCDF en otro caso devolverá false.
public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
if ((selectedItems == null) || (selectedItems.length != 1))
return false;
FLayer lyr = selectedItems[0];
if (lyr instanceof FLyrRasterSE) {
FLyrRasterSE fr = (FLyrRasterSE) lyr;
return fr.getDataSource().getDataset(0)[0] instanceof NetCDFRasterDataset;
}
return false;
}
- boolean isEnabled(ITocItem item, FLayer[] selectedItems): Método que será invocado para verificar si el ítem del menú debe estar habilitado o no. Este método devuelve true si la capa activa es construida a partir de un archivo NetCDF en otro caso devolverá false.
public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
if ((selectedItems == null) || (selectedItems.length != 1))
return false;
FLayer lyr = selectedItems[0];
if (lyr instanceof FLyrRasterSE) {
FLyrRasterSE fr = (FLyrRasterSE) lyr;
return fr.getDataSource().getDataset(0)[0] instanceof NetCDFRasterDataset;
}
return false;
}
- void execute(ITocItem item, FLayer[] selectedItems): Este método es el encargado de gestionar la apertura de la ventana que mostrará los paneles de propiedades del NetCDF.
public void execute(ITocItem item, FLayer[] selectedItems) {
...
FLayer lyr = getNodeLayer(item);
...
enableEvents = false;
PanelGroupManager manager = PanelGroupManager.getManager();
manager.registerPanelGroup(TabbedPanel.class);
manager.setDefaultType(TabbedPanel.class);
TabbedPanel panelGroup = (TabbedPanel)manager.getPanelGroup(lyr);
PanelGroupLoaderFromExtensionPoint loader = new PanelGroupLoaderFromExtensionPoint("NetCDFPropertiesDialog");
properties = new PanelGroupDialog(lyr.getName(), PluginServices.getText(this,"NetCDF_properties"), 550, 450, (byte) (WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE), panelGroup);
properties.loadPanels(loader);
enableEvents = true;
RasterToolsUtil.addWindow(properties);
...
}
- Icon getIcon(): Devuelve el icono del ítem del menú.
Es
importante tener en cuenta que los paneles de propiedades que serán
mostrados en la ventana deben registrarse en un nuevo punto de extensión
para que los paneles puedan ser cargados luego dentro del método execute().
// Obtiene todos los puntos de extensión del gvSIG
ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
// Creación del punto de extensión para registrar paneles en el cuadro de propiedades.
if (!extensionPoints.containsKey("NetCDFPropertiesDialog")) {
extensionPoints.put(new ExtensionPoint("NetCDFPropertiesDialog",
"NetCDF Properties registrable panels (register instances of javax.swing.JPanel)"));
}
// Añadimos el panel al cuadro de propiedades.
extensionPoints.add("NetCDFPropertiesDialog", "NetCDF",NetCDFPanel.class);
// Añadimos las entradas del menú del toc de raster
extensionPoints.add("View_TocActions", "NetCDFProperties",PropertiesNetCDFRasterTocMenuEntry.getSingleton());
// Añadimos la entrada en la Barra de Herramienta Genérica
org.gvsig.raster.util.extensionPoints.ExtensionPoint point = org.gvsig.raster.util.extensionPoints.ExtensionPoint.getExtensionPoint("GenericToolBarMenu");
point.register("NetCDFProperties",PropertiesNetCDFRasterTocMenuEntry.getSingleton());
Todos los paneles de propiedades deben implementar la clase abstracta AbstractPanel que contiene los métodos abstracto accept(), apply(), cancel(), los cuales definirán el comportamiento de dichos botones cuando se haga clic sobre ellos.
Además los paneles tendrán que implementar el método setReference(Object ref) a través del cual reciben todos los objetos relacionados con dichos paneles como es el caso de el objeto Flayer.
No hay comentarios.:
Publicar un comentario