Hola a todos…
Aquí estoy de nuevo para contaros alguna cosilla mas.
Un compañero me ha preguntado cómo podía hacer para añadir una pestaña a la ventana de propiedades de la Vista. Pues bien, es bastante sencillo. En gvSIG Desktop hay un mecanismo que nos permite añadir fácilmente pestañas al cuadro de diálogo de propiedades de la vista, tabla, capa o el proyecto. Para todos estos cuadros de diálogo se usa el mismo mecanismo.
Tenemos que implementar dos interfaces, por ejemplo:
- MyViewPropertiesPage, que sería nuestra página a añadir a las
propiedades de la Vista. - MyViewPropertiesPageFactory, que sería la factoría que construye nuestras páginas de propiedades.
Y registrar nuestra factoría en el PropertiesPageManager .
Vamos a ver como quedarían estas clases:
public static class MyViewPropertiesPage implements PropertiesPage {
private JPanel panel = null;
private ViewDocument viewDocument = null;
public MyViewPropertiesPage(ViewDocument viewDocument) {
this.viewDocument = viewDocument;
this.panel = createPanel();
}
public String getTitle() {
// label of the tab.
I18nManager i18nManager = ToolsLocator.getI18nManager();
return i18nManager.getTranslation("My properties");
}
public int getPriority() {
// Position of tab, when less the tab is rightmost
return 10;
}
public boolean whenAccept() {
// Get values from panel and apply to the viewDocument
return true;
}
public boolean whenApply() {
// Get values from panel and apply to the viewDocument
return true;
}
public boolean whenCancel() {
return true;
}
public JComponent asJComponent() {
return this.panel;
}
private JPanel createPanel() {
JPanel p = new JPanel();
// Add the conponents to the panel
p.setLayout(new BorderLayout());
p.add(new JLabel("Demmo"),BorderLayout.CENTER);
return p;
}
}
Con esto definiríamos nuestra página de propiedades, y ahora veamos como podría ser la factoría:
public class MyViewPropertiesPageFactory implements PropertiesPageFactory {
public String getGroupID() {
return ViewDocument.VIEW_PROPERTIES_PAGE_GROUP;
}
public boolean isVisible(Object obj) {
return true;
}
public PropertiesPage create(Object obj) {
return new MyViewPropertiesPage((ViewDocument) obj);
}
}
En la factoría, hay que tener especial interés en:
- El valor de retorno de getGroupID debe corresponderse con el diálogo al que queremos añadir nuestra pagina de propiedades. Si retorna ViewDocument.VIEW_PROPERTIES_PAGE_GROUP, se añadirá al diálogo de propiedades de la Vista, pero si, por ejemplo, quisiésemos añadir nuestra página al diálogo de propiedades del proyecto retornaríamos Project.PROJECT_PROPERTIES_PAGE_GROUP.
- El método isVisible recibe, en nuestro caso, la Vista que está asociada al diálogo de propiedades, y devolbera true si se debe mostrar esta página para ese documento Vista. Si estuviésemos añadiendo la página a las propiedades del proyecto recibiríamos un objeto de tipo Project.
- El método create, recibirá el objeto ViewDocument asociado al diálogo.Si ya tenemos estas dos clases listas, solo nos faltara registrar nuestra factoría:
PropertiesPageManager manager = MapControlLocator.getPropertiesPageManager(); manager.registerFactory(new MyViewPropertiesPageFactory());
El resultado de este código seria algo como:
Un saludo a todos!






Pingback: Añadir una página de propiedades al diálogo de propiedades de la Vista en gvSIG 2.1 | Geo-How-To News