Añadir una página de propiedades al diálogo de propiedades de la Vista en gvSIG 2.1

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:

general myproperties

Un saludo a todos!

About Joaquin del Cerro

Development and software arquitecture manager at gvSIG Team. gvSIG Association
This entry was posted in development, gvSIG Association, gvSIG Desktop, gvSIG development, spanish. Bookmark the permalink.

One Response to Añadir una página de propiedades al diálogo de propiedades de la Vista en gvSIG 2.1

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s