Problema hipervínculos en capas PostGis

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Problema hipervínculos en capas PostGis

Rubén Sanabrias-2
Hola.

Desde que la versión 1.2.1 de Kosmo me he encontrado con el problema de que los hipervínculos no se pueden configurar en capas PostGis (no se si exclusivamente en este tipo de capas, pero he observado que con shp sí que funciona).

El problema es que en el diálogo de config de hiperenlace la lista de atributos de la capa aparece vacía.

Adjunto captura de un ejemplo en que se puede ver que la capa tiene atributos (está abierta la ventana de tabla de atributos) pero que en el diálogo de hiperenlace aparece la lista de atributos en blanco.

También copio aquí el log de kosmo.
Me llama la atención la última línea, pero la capa tiene clave primaria definida en la BD (gid) de tipo numérico (int4) y el usuario con que se accede tiene permisos suficientes para hacer de todo.

05/03/2009 12:32:34  INFO JUMPWorkbench:334 - Iniciando la aplicación Kosmo - Sistema Abierto de Información Geográfica 1.2.1 (20081021) - 05-mar-2009 12:32:34
05/03/2009 12:32:34  INFO JUMPWorkbench:340 - Versión de Java : 1.6.0_11
05/03/2009 12:32:34  INFO JUMPWorkbench:342 - SO : Windows Vista (6.0)
05/03/2009 12:32:34  INFO JUMPWorkbench:484 - Usando L&F com.sun.java.swing.plaf.windows.WindowsLookAndFeel
05/03/2009 12:32:46  INFO DataBaseConnectionFactory:131 - Connexió creada per a *************
05/03/2009 12:34:25  WARN AbstractJDBCDataSource:1504 - No se ha encontrado ninguna clave para la tabla _foto_modelo

El hiperenlace era una función muy importante para nosotros y nos es vital que vuelva a funcionar.
Ruego que si conocen una solución al problema nos indiquen cómo solventarlo sin tener que esperar a una próxima versión (no nos importa modificar nosotros mismos el código).

Gracias.   :)

--
-----------------------------------------------------------
Rubén Sanabrias
Sent from: Alicante Comunidad Valenciana España.
_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo

kosmo_link_capt.jpg (199K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Problema hipervínculos en capas PostGis

Sergio Baños Calvo
Buenas tardes Rubén.

¿Puedes enviarme la sentencia CREATE TABLE de tu capa de hiperenlaces?
Creo tener detectado el problema pero necesito confirmarlo antes de
poder indicarte cualquier solución al respecto.

Un cordial saludo,

Rubén Sanabrias escribió:

> Hola.
>
> Desde que la versión 1.2.1 de Kosmo me he encontrado con el problema
> de que los hipervínculos no se pueden configurar en capas PostGis (no
> se si exclusivamente en este tipo de capas, pero he observado que con
> shp sí que funciona).
>
> El problema es que en el diálogo de config de hiperenlace la lista de
> atributos de la capa aparece vacía.
>
> Adjunto captura de un ejemplo en que se puede ver que la capa tiene
> atributos (está abierta la ventana de tabla de atributos) pero que en
> el diálogo de hiperenlace aparece la lista de atributos en blanco.
>
> También copio aquí el log de kosmo.
> Me llama la atención la última línea, pero la capa tiene clave
> primaria definida en la BD (gid) de tipo numérico (int4) y el usuario
> con que se accede tiene permisos suficientes para hacer de todo.
>
>     05/03/2009 12:32:34  INFO JUMPWorkbench:334 - Iniciando la
>     aplicación Kosmo - Sistema Abierto de Información Geográfica 1.2.1
>     (20081021) - 05-mar-2009 12:32:34
>     05/03/2009 12:32:34  INFO JUMPWorkbench:340 - Versión de Java :
>     1.6.0_11
>     05/03/2009 12:32:34  INFO JUMPWorkbench:342 - SO : Windows Vista (6.0)
>     05/03/2009 12:32:34  INFO JUMPWorkbench:484 - Usando L&F
>     com.sun.java.swing.plaf.windows.WindowsLookAndFeel
>     05/03/2009 12:32:46  INFO DataBaseConnectionFactory:131 - Connexió
>     creada per a *************
>     05/03/2009 12:34:25  WARN AbstractJDBCDataSource:1504 - No se ha
>     encontrado ninguna clave para la tabla _foto_modelo
>
>
> El hiperenlace era una función muy importante para nosotros y nos es
> vital que vuelva a funcionar.
> Ruego que si conocen una solución al problema nos indiquen cómo
> solventarlo sin tener que esperar a una próxima versión (no nos
> importa modificar nosotros mismos el código).
>
> Gracias.   :)
>
> --
> -----------------------------------------------------------
> Rubén Sanabrias
> Sent from: Alicante Comunidad Valenciana España.
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Kosmo mailing list
> [hidden email]
> http://lists.saig.es/mailman/listinfo/kosmo
>  

--

Sergio Baños Calvo

Jefe de desarrollos
Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
Tlfno. móvil: 685005960
Tlfno. fijo: (+34) 954788876

E-mail: [hidden email]

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo
Reply | Threaded
Open this post in threaded view
|

Re: Problema hipervínculos en capas PostGis

Rubén Sanabrias-2
Hola, Sergio.

Las sentencias SQL para definir la tabla son:

CREATE TABLE "public"."_foto_modelo"(
"foto" varchar(100) ,
"gid" int4 NOT NULL ,
"modelo" varchar(15) ,
"geometry" geometry ,
PRIMARY KEY ("gid")
)  WITHOUT OIDS;

CREATE INDEX "ndx_modelos_geometry" ON "public"."_foto_modelo" USING gist ("geometry");


No se que buscas.
Pero porsiaca añado que lo he probado en otras tablas con nombres distintos, por si era por tener un "_" delante.
Vete a saber, cosas más raras se ven todos los días.  :)

Gracias por tu pronta respuesta.

Un saludo.


2009/3/5 Sergio Baños Calvo <[hidden email]>
Buenas tardes Rubén.

¿Puedes enviarme la sentencia CREATE TABLE de tu capa de hiperenlaces? Creo tener detectado el problema pero necesito confirmarlo antes de poder indicarte cualquier solución al respecto.

Un cordial saludo,

Rubén Sanabrias escribió:
Hola.

Desde que la versión 1.2.1 de Kosmo me he encontrado con el problema de que los hipervínculos no se pueden configurar en capas PostGis (no se si exclusivamente en este tipo de capas, pero he observado que con shp sí que funciona).

El problema es que en el diálogo de config de hiperenlace la lista de atributos de la capa aparece vacía.

Adjunto captura de un ejemplo en que se puede ver que la capa tiene atributos (está abierta la ventana de tabla de atributos) pero que en el diálogo de hiperenlace aparece la lista de atributos en blanco.

También copio aquí el log de kosmo.
Me llama la atención la última línea, pero la capa tiene clave primaria definida en la BD (gid) de tipo numérico (int4) y el usuario con que se accede tiene permisos suficientes para hacer de todo.

   05/03/2009 12:32:34  INFO JUMPWorkbench:334 - Iniciando la
   aplicación Kosmo - Sistema Abierto de Información Geográfica 1.2.1
   (20081021) - 05-mar-2009 12:32:34
   05/03/2009 12:32:34  INFO JUMPWorkbench:340 - Versión de Java :
   1.6.0_11
   05/03/2009 12:32:34  INFO JUMPWorkbench:342 - SO : Windows Vista (6.0)
   05/03/2009 12:32:34  INFO JUMPWorkbench:484 - Usando L&F
   com.sun.java.swing.plaf.windows.WindowsLookAndFeel
   05/03/2009 12:32:46  INFO DataBaseConnectionFactory:131 - Connexió
   creada per a *************
   05/03/2009 12:34:25  WARN AbstractJDBCDataSource:1504 - No se ha
   encontrado ninguna clave para la tabla _foto_modelo


El hiperenlace era una función muy importante para nosotros y nos es vital que vuelva a funcionar.
Ruego que si conocen una solución al problema nos indiquen cómo solventarlo sin tener que esperar a una próxima versión (no nos importa modificar nosotros mismos el código).

Gracias.   :)

--
-----------------------------------------------------------
Rubén Sanabrias
Sent from: Alicante Comunidad Valenciana España.
------------------------------------------------------------------------

------------------------------------------------------------------------

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo
 

--

Sergio Baños Calvo

Jefe de desarrollos
Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
Tlfno. móvil: 685005960
Tlfno. fijo: (+34) 954788876

E-mail: [hidden email]

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo




--
-----------------------------------------------------------
Rubén Sanabrias

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo
Reply | Threaded
Open this post in threaded view
|

Re: Problema hipervínculos en capas PostGis

Sergio Baños Calvo
Buenos días Rubén.

Te pedía la sentencia CREATE TABLE para confirmar el tipo de datos del
campo donde está almacenado el hiperenlace.

Te adjunto la clase del diálogo de configuración del hiperenlace con el
cambio introducido para que admita este tipo de campos como campo de
hiperenlace. En el método "createSimplePanel()", línea 204, tienes el
cambio que he introducido.

Cualquier duda al respecto ya me comentas.

Un cordial saludo,

Rubén Sanabrias escribió:

> Hola, Sergio.
>
> Las sentencias SQL para definir la tabla son:
>
> CREATE TABLE "public"."_foto_modelo"(
> "foto" varchar(100) ,
> "gid" int4 NOT NULL ,
> "modelo" varchar(15) ,
> "geometry" geometry ,
> PRIMARY KEY ("gid")
> )  WITHOUT OIDS;
>
> CREATE INDEX "ndx_modelos_geometry" ON "public"."_foto_modelo" USING
> gist ("geometry");
>
>
> No se que buscas.
> Pero porsiaca añado que lo he probado en otras tablas con nombres
> distintos, por si era por tener un "_" delante.
> Vete a saber, cosas más raras se ven todos los días.  :)
>
> Gracias por tu pronta respuesta.
>
> Un saludo.
>
>
> 2009/3/5 Sergio Baños Calvo <[hidden email] <mailto:[hidden email]>>
>
>     Buenas tardes Rubén.
>
>     ¿Puedes enviarme la sentencia CREATE TABLE de tu capa de
>     hiperenlaces? Creo tener detectado el problema pero necesito
>     confirmarlo antes de poder indicarte cualquier solución al respecto.
>
>     Un cordial saludo,
>
>     Rubén Sanabrias escribió:
>
>         Hola.
>
>         Desde que la versión 1.2.1 de Kosmo me he encontrado con el
>         problema de que los hipervínculos no se pueden configurar en
>         capas PostGis (no se si exclusivamente en este tipo de capas,
>         pero he observado que con shp sí que funciona).
>
>         El problema es que en el diálogo de config de hiperenlace la
>         lista de atributos de la capa aparece vacía.
>
>         Adjunto captura de un ejemplo en que se puede ver que la capa
>         tiene atributos (está abierta la ventana de tabla de
>         atributos) pero que en el diálogo de hiperenlace aparece la
>         lista de atributos en blanco.
>
>         También copio aquí el log de kosmo.
>         Me llama la atención la última línea, pero la capa tiene clave
>         primaria definida en la BD (gid) de tipo numérico (int4) y el
>         usuario con que se accede tiene permisos suficientes para
>         hacer de todo.
>
>            05/03/2009 12:32:34  INFO JUMPWorkbench:334 - Iniciando la
>            aplicación Kosmo - Sistema Abierto de Información
>         Geográfica 1.2.1
>            (20081021) - 05-mar-2009 12:32:34
>            05/03/2009 12:32:34  INFO JUMPWorkbench:340 - Versión de Java :
>            1.6.0_11
>            05/03/2009 12:32:34  INFO JUMPWorkbench:342 - SO : Windows
>         Vista (6.0)
>            05/03/2009 12:32:34  INFO JUMPWorkbench:484 - Usando L&F
>            com.sun.java.swing.plaf.windows.WindowsLookAndFeel
>            05/03/2009 12:32:46  INFO DataBaseConnectionFactory:131 -
>         Connexió
>            creada per a *************
>            05/03/2009 12:34:25  WARN AbstractJDBCDataSource:1504 - No
>         se ha
>            encontrado ninguna clave para la tabla _foto_modelo
>
>
>         El hiperenlace era una función muy importante para nosotros y
>         nos es vital que vuelva a funcionar.
>         Ruego que si conocen una solución al problema nos indiquen
>         cómo solventarlo sin tener que esperar a una próxima versión
>         (no nos importa modificar nosotros mismos el código).
>
>         Gracias.   :)
>
>         --
>         -----------------------------------------------------------
>         Rubén Sanabrias
>         Sent from: Alicante Comunidad Valenciana España.
>         ------------------------------------------------------------------------
>
>         ------------------------------------------------------------------------
>
>         _______________________________________________
>         Kosmo mailing list
>         [hidden email] <mailto:[hidden email]>
>         http://lists.saig.es/mailman/listinfo/kosmo
>          
>
>
>     --
>
>     Sergio Baños Calvo
>
>     Jefe de desarrollos
>     Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
>     Tlfno. móvil: 685005960
>     Tlfno. fijo: (+34) 954788876
>
>     E-mail: [hidden email] <mailto:[hidden email]>
>
>     _______________________________________________
>     Kosmo mailing list
>     [hidden email] <mailto:[hidden email]>
>     http://lists.saig.es/mailman/listinfo/kosmo
>
>
>
>
> --
> -----------------------------------------------------------
> Rubén Sanabrias
> ------------------------------------------------------------------------
>
> _______________________________________________
> Kosmo mailing list
> [hidden email]
> http://lists.saig.es/mailman/listinfo/kosmo
>  
--

Sergio Baños Calvo

Jefe de desarrollos
Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
Tlfno. móvil: 685005960
Tlfno. fijo: (+34) 954788876

E-mail: [hidden email]


/*
 * Kosmo - Sistema Abierto de Información Geográfica
 * Kosmo - Open Geographical Information System
 *
 * http://www.saig.es
 * (C) 2006, SAIG S.L.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 * For more information, contact:
 *
 * Sistemas Abiertos de Información Geográfica, S.L.
 * Avnda. República Argentina, 28
 * Edificio Domocenter Planta 2ª Oficina 7
 * C.P.: 41930 - Bormujos (Sevilla)
 * España / Spain
 *
 * Teléfono / Phone Number
 * +34 954 788876
 *
 * Correo electrónico / Email
 * [hidden email]
 *
 */
package org.saig.jump.widgets.hiperlink;

import java.awt.CardLayout;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.saig.core.gui.swing.sldeditor.util.FormUtils;
import org.saig.core.model.data.Table;
import org.saig.core.model.feature.Attribute;
import org.saig.jump.lang.I18N;

import com.vividsolutions.jump.feature.AttributeType;
import com.vividsolutions.jump.feature.FeatureSchema;
import com.vividsolutions.jump.feature.HiperLink;
import com.vividsolutions.jump.feature.HiperLinkCompound;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.Layerable;
import com.vividsolutions.jump.workbench.ui.GUIUtil;
import com.vividsolutions.jump.workbench.ui.OKCancelPanel;

/**
 *
 *
 * <p>
 *
 * </p>
 * @author
 * @since 1.0.0
 */
public class HiperLinkConfigurationDialog extends JDialog {

        private static final int HIPERLINK_SIMPLE = 0;

        private static final int HIPERLINK_COMPOUND = 1;

        private int hiperLinkType = HIPERLINK_SIMPLE;

        private WorkbenchContext context;

        private JPanel cardPanel;

        private JComboBox sourceHiperLinkFieldComboBox;

        private JComboBox sourceKeysFieldComboBox;

        private JComboBox tableComboBox;
       
        private JComboBox descriptionFieldTableComboBox;

        private JComboBox fieldTargetKeysComboBox;

        private JComboBox targetHiperLinkFieldComboBox;
       
        private JComboBox descriptionHiperLinkFieldComboBox;
       
        private JCheckBox simple,compound;
       
        private JButton desactivarJButton = new JButton(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.Off")); //$NON-NLS-1$
       
        private boolean deactivate = false;

        private Layer layer;

        private boolean exitOk = false;
       
        private static final String NO_DESCRIPTION_VALUE = "---------"; //$NON-NLS-1$

        public HiperLinkConfigurationDialog(JFrame parent,
                        WorkbenchContext context, boolean modal, HiperLink hiperlink) {
                super(parent, modal);
                this.context = context;
                setTitle(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-configuration")); //$NON-NLS-1$
                JPanel mainPanel = new JPanel();
                mainPanel.setLayout(new GridBagLayout());
                Layerable[] layers = context.getLayerNamePanel().getSelectedLayers();
                if (layers != null)
                        layer = (Layer) layers[0];
                JPanel selectorPanel = createSelectorPanel(hiperlink);
                cardPanel = createCardLayoutPanel(hiperlink);
                OKCancelPanel okCancelPanel = createOKcancelPanel();
                okCancelPanel.add(desactivarJButton);
                desactivarJButton.addActionListener(new ActionListener(){
                        public void actionPerformed(ActionEvent arg0) {
                                deactivate = true;
                                exitOk = true;
                                setVisible(false);
                        }
                });
                FormUtils.addRowInGBL(mainPanel, 0, 0, selectorPanel);
                FormUtils.addRowInGBL(mainPanel, 1, 0, cardPanel);
                FormUtils.addRowInGBL(mainPanel, 2, 0, okCancelPanel);
                setContentPane(mainPanel);
                pack();
                if (hiperlink instanceof HiperLinkCompound){
                        compound.setSelected(true);
                        compound.getActionListeners()[0].actionPerformed(null);
                } else {
                        simple.setSelected(true);
                }
                GUIUtil.centreOnScreen(this);
                setVisible(true);

        }

        private JPanel createSelectorPanel(HiperLink hiperlink) {
                JPanel selectorPanel = new JPanel();
                selectorPanel.setLayout(new GridBagLayout());
                selectorPanel.setBorder(BorderFactory
                                .createTitledBorder(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-type"))); //$NON-NLS-1$
                ButtonGroup agrupacion = new ButtonGroup();
                simple = new JCheckBox(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.basic-hiperlink")); //$NON-NLS-1$
                simple.addActionListener(new ActionListener() {

                        public void actionPerformed(ActionEvent arg0) {
                                CardLayout cl = (CardLayout) (cardPanel.getLayout());
                                cl.show(cardPanel, "SIMPLE"); //$NON-NLS-1$
                                hiperLinkType = HIPERLINK_SIMPLE;

                        }
                });
                compound = new JCheckBox(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.compound-hiperlink")); //$NON-NLS-1$
                compound.addActionListener(new ActionListener() {

                        public void actionPerformed(ActionEvent arg0) {
                                CardLayout cl = (CardLayout) (cardPanel.getLayout());
                                cl.show(cardPanel, "COMPOUND"); //$NON-NLS-1$
                                hiperLinkType = HIPERLINK_COMPOUND;

                        }
                });
                if (context.getDataManager().size() == 0){
                        compound.setEnabled(false);
                }
                agrupacion.add(simple);
                agrupacion.add(compound);

                simple.setSelected(true);
                FormUtils.addRowInGBL(selectorPanel, 0, 0, simple);
                FormUtils.addRowInGBL(selectorPanel, 1, 0, compound);

                return selectorPanel;
        }

        private JPanel createSimplePanel(HiperLink hiperlink) {
                JPanel simplePanel = new JPanel();
                simplePanel.setLayout(new GridBagLayout());
               
        FeatureSchema schema = layer.getFeatureSchema();
                List attributeNames = new ArrayList();
                for (int i = 0; i < schema.getAttributeCount(); i++) {
                        Attribute element = schema.getAttribute(i);
                        if (element.getType().toJavaClass().equals(String.class) && !element.isPrimaryKey()) {
                attributeNames.add(element.getName());
                        }
                }
        Collections.sort(attributeNames);
        sourceHiperLinkFieldComboBox = new JComboBox(attributeNames.toArray());
        attributeNames.add(NO_DESCRIPTION_VALUE);
        Collections.sort(attributeNames);
        descriptionHiperLinkFieldComboBox = new JComboBox(attributeNames.toArray());
        JLabel hiperLinkLabel =
        new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
                FormUtils.addRowInGBL(simplePanel, 0, 0, hiperLinkLabel,
                                sourceHiperLinkFieldComboBox);
                JLabel descriptionLabel
                        = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.Description-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
                FormUtils.addRowInGBL(simplePanel,1,0,descriptionLabel,
                                descriptionHiperLinkFieldComboBox);
                FormUtils.addFiller(simplePanel,2,0);
               
                if (hiperlink!=null){
                        sourceHiperLinkFieldComboBox.setSelectedItem(hiperlink.getFieldWithHiperLink());
                        descriptionHiperLinkFieldComboBox.setSelectedItem(hiperlink.getFieldDescription());
                }
                return simplePanel;
        }

        private JPanel createCompoundPanel(HiperLink hiperlink) {
                JPanel compoundPanel = new JPanel();
                compoundPanel.setLayout(new GridBagLayout());

                JLabel sourceKeyLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.layer-key-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
        fieldTargetKeysComboBox = new JComboBox();
        targetHiperLinkFieldComboBox = new JComboBox();
        descriptionFieldTableComboBox = new JComboBox();
       
        FeatureSchema layerSchema = layer.getFeatureSchema();        
        List attributeNames = new ArrayList();
        for (int i = 0; i < layerSchema.getAttributeCount(); i++) {
            Attribute element = layerSchema.getAttribute(i);
            if (!element.getType().equals(AttributeType.GEOMETRY)) {
                attributeNames.add(element.getName());
            }
        }
        Collections.sort(attributeNames);
                sourceKeysFieldComboBox = new JComboBox(attributeNames.toArray());

                FormUtils.addRowInGBL(compoundPanel, 0, 0, sourceKeyLabel,
                                sourceKeysFieldComboBox);

                JLabel tableLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.table") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
       
                // Obtenemos todas las tablas con las que podemos enganchar
                List tables = context.getDataManager().getRealTables();
                tableComboBox = new JComboBox(tables.toArray());
                tableComboBox.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent arg0) {
                                Table selectedTable = (Table) tableComboBox
                                                .getSelectedItem();
                               
                                FeatureSchema schema = selectedTable.getSchema();
                List validFieldTargetKeysAttrNames = new ArrayList();
                List validTargetHiperLinkFieldAttrNames = new ArrayList();

                                for (int i = 0; i < schema.getAttributeCount(); i++) {
                                        Attribute element = schema.getAttribute(i);
                                        if (!element.getType().equals(AttributeType.GEOMETRY)) {
                                                validFieldTargetKeysAttrNames.add(element.getName());
                                        }
                                        if (element.getType().toJavaClass().equals(String.class)) {
                                                validTargetHiperLinkFieldAttrNames.add(element.getName());
                                        }
                                }
               

                Collections.sort(validFieldTargetKeysAttrNames);
                Collections.sort(validTargetHiperLinkFieldAttrNames);
               
                fieldTargetKeysComboBox.removeAllItems();
                descriptionFieldTableComboBox.removeAllItems();
                descriptionFieldTableComboBox.addItem(NO_DESCRIPTION_VALUE);
                for( Iterator iter = validFieldTargetKeysAttrNames.iterator(); iter.hasNext(); ) {
                    String name = (String) iter.next();
                    fieldTargetKeysComboBox.addItem(name);
                    descriptionFieldTableComboBox.addItem(name);
                }
                targetHiperLinkFieldComboBox.removeAllItems();
                for( Iterator iter = validTargetHiperLinkFieldAttrNames.iterator(); iter.hasNext(); ) {
                    String name = (String) iter.next();
                    targetHiperLinkFieldComboBox.addItem(name);
                }
                        }

                });
               
               
                if (tables.size() > 0) {
                        Table selectedTable = (Table) tables.get(0);
            FeatureSchema tableSchema = selectedTable.getSchema();
            List validFieldTargetKeysAttrNames = new ArrayList();
            List validTargetHiperLinkFieldAttrNames = new ArrayList();

            for (int i = 0; i < tableSchema.getAttributeCount(); i++) {
                Attribute element = tableSchema.getAttribute(i);
                if (!element.getType().equals(AttributeType.GEOMETRY)) {
                    validFieldTargetKeysAttrNames.add(element.getName());
                }
                if (element.getType().toJavaClass().equals(String.class)) {
                    validTargetHiperLinkFieldAttrNames.add(element.getName());
                }
            }
           
            Collections.sort(validFieldTargetKeysAttrNames);
            Collections.sort(validTargetHiperLinkFieldAttrNames);
           
            fieldTargetKeysComboBox = new JComboBox(validFieldTargetKeysAttrNames.toArray());
            targetHiperLinkFieldComboBox = new JComboBox(validTargetHiperLinkFieldAttrNames.toArray());
            validTargetHiperLinkFieldAttrNames.add(NO_DESCRIPTION_VALUE);
            Collections.sort(validTargetHiperLinkFieldAttrNames);
            descriptionFieldTableComboBox = new JComboBox(validTargetHiperLinkFieldAttrNames.toArray());
           
                }
       
                FormUtils.addRowInGBL(compoundPanel, 1, 0, tableLabel, tableComboBox);
                JLabel fieldTargetKeyLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.table-key-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
                FormUtils.addRowInGBL(compoundPanel, 2, 0, fieldTargetKeyLabel,
                                fieldTargetKeysComboBox);
                JLabel hiperLinkLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
                FormUtils.addRowInGBL(compoundPanel, 3, 0, hiperLinkLabel,
                                targetHiperLinkFieldComboBox);
                JLabel descrptionLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.Description-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
                FormUtils.addRowInGBL(compoundPanel,4,0,descrptionLabel,descriptionFieldTableComboBox);
               
                if (hiperlink != null){
                        if (hiperlink instanceof HiperLinkCompound){
                                HiperLinkCompound hc = (HiperLinkCompound)hiperlink;
                                fieldTargetKeysComboBox.setSelectedItem(hc.getKeyFieldTarget());
                                targetHiperLinkFieldComboBox.setSelectedItem(hc.getFieldWithHiperLink());
                                descriptionFieldTableComboBox.setSelectedItem(hc.getFieldDescription());
                                sourceHiperLinkFieldComboBox.setSelectedItem(hc.getKeyFieldSource());
                                sourceKeysFieldComboBox.setSelectedItem(hc.getKeyFieldSource());
                        }
                }
               
                return compoundPanel;
        }

        private JPanel createCardLayoutPanel(HiperLink hiperlink) {
                cardPanel = new JPanel();
                cardPanel.setLayout(new CardLayout());
                cardPanel.add(createSimplePanel(hiperlink), "SIMPLE"); //$NON-NLS-1$
                cardPanel.add(createCompoundPanel(hiperlink), "COMPOUND"); //$NON-NLS-1$
                return cardPanel;
        }

        private OKCancelPanel createOKcancelPanel() {
                final OKCancelPanel okCancelPanel = new OKCancelPanel();
                GridBagLayout gbPaneOKCancel = new GridBagLayout();
                okCancelPanel.setLayout(gbPaneOKCancel);
                okCancelPanel.addActionListener(new ActionListener() {

                        public void actionPerformed(ActionEvent arg0) {
                                if (okCancelPanel.wasOKPressed()) {
                                        exitOk = true;
                                } else {
                                        exitOk = false;
                                }
                                setVisible(false);
                        }
                });
                return okCancelPanel;
        }

        public boolean isOk() {
                return exitOk;
        }

        public HiperLink getHiperLink() {
                if (deactivate)
                        return null;
                HiperLink hiperLink = null;
                switch (hiperLinkType) {
                case HIPERLINK_SIMPLE:
                        if (sourceHiperLinkFieldComboBox
                                        .getSelectedItem() == null ||((String) sourceHiperLinkFieldComboBox
                                        .getSelectedItem()).equals("")) { //$NON-NLS-1$
                                return null;
                        }
                        String descriptionFieldValue = (String) descriptionHiperLinkFieldComboBox.getSelectedItem();
                        if (descriptionFieldValue == NO_DESCRIPTION_VALUE)
                                descriptionFieldValue = null;
                        hiperLink = new HiperLink((String) sourceHiperLinkFieldComboBox
                                        .getSelectedItem());
                        hiperLink.setFieldDescription(descriptionFieldValue);
                        break;
                case HIPERLINK_COMPOUND:
                        if (targetHiperLinkFieldComboBox.getSelectedItem() == null ||
                                ((String) targetHiperLinkFieldComboBox.getSelectedItem()).equals("")){ //$NON-NLS-1$
                                return null;
                        }
                        String descriptionTableFieldValue =
                                (String) descriptionFieldTableComboBox.getSelectedItem();
                        if (descriptionTableFieldValue == NO_DESCRIPTION_VALUE)
                                descriptionTableFieldValue = null;
                        HiperLinkCompound compound = new HiperLinkCompound(
                                        (String) targetHiperLinkFieldComboBox.getSelectedItem(),
                                        (String) sourceKeysFieldComboBox.getSelectedItem(),
                                        (String) fieldTargetKeysComboBox.getSelectedItem());
                        compound.setFieldDescription(descriptionTableFieldValue);
                        compound.setTable((Table) tableComboBox.getSelectedItem());
                        hiperLink = compound;
                        break;
                default:
                        break;
                }
                return hiperLink;
        }

        public Layer getLayer() {
                return this.layer;
        }

}

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo
Reply | Threaded
Open this post in threaded view
|

Re: Problema hipervínculos en capas PostGis

Rubén Sanabrias-2
Gracias, Sergio.

No deja de sorprenderme lo que nos mimais en esta lista. :D

Un saludo.

2009/3/6 Sergio Baños Calvo <[hidden email]>
Buenos días Rubén.

Te pedía la sentencia CREATE TABLE para confirmar el tipo de datos del campo donde está almacenado el hiperenlace.

Te adjunto la clase del diálogo de configuración del hiperenlace con el cambio introducido para que admita este tipo de campos como campo de hiperenlace. En el método "createSimplePanel()", línea 204, tienes el cambio que he introducido.

Cualquier duda al respecto ya me comentas.


Un cordial saludo,

Rubén Sanabrias escribió:
Hola, Sergio.


Las sentencias SQL para definir la tabla son:

CREATE TABLE "public"."_foto_modelo"(
"foto" varchar(100) ,
"gid" int4 NOT NULL ,
"modelo" varchar(15) ,
"geometry" geometry ,
PRIMARY KEY ("gid")
)  WITHOUT OIDS;

CREATE INDEX "ndx_modelos_geometry" ON "public"."_foto_modelo" USING gist ("geometry");


No se que buscas.
Pero porsiaca añado que lo he probado en otras tablas con nombres distintos, por si era por tener un "_" delante.
Vete a saber, cosas más raras se ven todos los días.  :)

Gracias por tu pronta respuesta.

Un saludo.


2009/3/5 Sergio Baños Calvo <[hidden email] <mailto:[hidden email]>>


   Buenas tardes Rubén.

   ¿Puedes enviarme la sentencia CREATE TABLE de tu capa de
   hiperenlaces? Creo tener detectado el problema pero necesito
   confirmarlo antes de poder indicarte cualquier solución al respecto.

   Un cordial saludo,

   Rubén Sanabrias escribió:

       Hola.

       Desde que la versión 1.2.1 de Kosmo me he encontrado con el
       problema de que los hipervínculos no se pueden configurar en
       capas PostGis (no se si exclusivamente en este tipo de capas,
       pero he observado que con shp sí que funciona).

       El problema es que en el diálogo de config de hiperenlace la
       lista de atributos de la capa aparece vacía.

       Adjunto captura de un ejemplo en que se puede ver que la capa
       tiene atributos (está abierta la ventana de tabla de
       atributos) pero que en el diálogo de hiperenlace aparece la
       lista de atributos en blanco.

       También copio aquí el log de kosmo.
       Me llama la atención la última línea, pero la capa tiene clave
       primaria definida en la BD (gid) de tipo numérico (int4) y el
       usuario con que se accede tiene permisos suficientes para
       hacer de todo.

          05/03/2009 12:32:34  INFO JUMPWorkbench:334 - Iniciando la
          aplicación Kosmo - Sistema Abierto de Información
       Geográfica 1.2.1
          (20081021) - 05-mar-2009 12:32:34
          05/03/2009 12:32:34  INFO JUMPWorkbench:340 - Versión de Java :
          1.6.0_11
          05/03/2009 12:32:34  INFO JUMPWorkbench:342 - SO : Windows
       Vista (6.0)
          05/03/2009 12:32:34  INFO JUMPWorkbench:484 - Usando L&F
          com.sun.java.swing.plaf.windows.WindowsLookAndFeel
          05/03/2009 12:32:46  INFO DataBaseConnectionFactory:131 -
       Connexió
          creada per a *************
          05/03/2009 12:34:25  WARN AbstractJDBCDataSource:1504 - No
       se ha
          encontrado ninguna clave para la tabla _foto_modelo


       El hiperenlace era una función muy importante para nosotros y
       nos es vital que vuelva a funcionar.
       Ruego que si conocen una solución al problema nos indiquen
       cómo solventarlo sin tener que esperar a una próxima versión
       (no nos importa modificar nosotros mismos el código).

       Gracias.   :)

       --        -----------------------------------------------------------
       Rubén Sanabrias
       Sent from: Alicante Comunidad Valenciana España.
       ------------------------------------------------------------------------

       ------------------------------------------------------------------------

       _______________________________________________
       Kosmo mailing list
       [hidden email] <mailto:[hidden email]>

       http://lists.saig.es/mailman/listinfo/kosmo
       

   --
   Sergio Baños Calvo

   Jefe de desarrollos
   Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
   Tlfno. móvil: 685005960
   Tlfno. fijo: (+34) 954788876

   E-mail: [hidden email] <mailto:[hidden email]>

   _______________________________________________
   Kosmo mailing list
   [hidden email] <mailto:[hidden email]>

   http://lists.saig.es/mailman/listinfo/kosmo




--
-----------------------------------------------------------
Rubén Sanabrias
------------------------------------------------------------------------

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo
 

--

Sergio Baños Calvo

Jefe de desarrollos
Sistemas Abiertos de Información Geográfica, S.L. (SAIG S.L.)
Tlfno. móvil: 685005960
Tlfno. fijo: (+34) 954788876

E-mail: [hidden email]


/*
 * Kosmo - Sistema Abierto de Información Geográfica
 * Kosmo - Open Geographical Information System
 *
 * http://www.saig.es
 * (C) 2006, SAIG S.L.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 * For more information, contact:
 *
 * Sistemas Abiertos de Información Geográfica, S.L.
 * Avnda. República Argentina, 28
 * Edificio Domocenter Planta 2ª Oficina 7
 * C.P.: 41930 - Bormujos (Sevilla)
 * España / Spain
 *
 * Teléfono / Phone Number
 * +34 954 788876
 *
 * Correo electrónico / Email
 * [hidden email]
 *
 */
package org.saig.jump.widgets.hiperlink;

import java.awt.CardLayout;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.saig.core.gui.swing.sldeditor.util.FormUtils;
import org.saig.core.model.data.Table;
import org.saig.core.model.feature.Attribute;
import org.saig.jump.lang.I18N;

import com.vividsolutions.jump.feature.AttributeType;
import com.vividsolutions.jump.feature.FeatureSchema;
import com.vividsolutions.jump.feature.HiperLink;
import com.vividsolutions.jump.feature.HiperLinkCompound;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.Layerable;
import com.vividsolutions.jump.workbench.ui.GUIUtil;
import com.vividsolutions.jump.workbench.ui.OKCancelPanel;

/**
 *
 *
 * <p>
 *
 * </p>
 * @author
 * @since 1.0.0
 */
public class HiperLinkConfigurationDialog extends JDialog {

       private static final int HIPERLINK_SIMPLE = 0;

       private static final int HIPERLINK_COMPOUND = 1;

       private int hiperLinkType = HIPERLINK_SIMPLE;

       private WorkbenchContext context;

       private JPanel cardPanel;

       private JComboBox sourceHiperLinkFieldComboBox;

       private JComboBox sourceKeysFieldComboBox;

       private JComboBox tableComboBox;

       private JComboBox descriptionFieldTableComboBox;

       private JComboBox fieldTargetKeysComboBox;

       private JComboBox targetHiperLinkFieldComboBox;

       private JComboBox descriptionHiperLinkFieldComboBox;

       private JCheckBox simple,compound;

       private JButton desactivarJButton = new JButton(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.Off")); //$NON-NLS-1$

       private boolean deactivate = false;

       private Layer layer;

       private boolean exitOk = false;

       private static final String NO_DESCRIPTION_VALUE = "---------"; //$NON-NLS-1$

       public HiperLinkConfigurationDialog(JFrame parent,
                       WorkbenchContext context, boolean modal, HiperLink hiperlink) {
               super(parent, modal);
               this.context = context;
               setTitle(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-configuration")); //$NON-NLS-1$
               JPanel mainPanel = new JPanel();
               mainPanel.setLayout(new GridBagLayout());
               Layerable[] layers = context.getLayerNamePanel().getSelectedLayers();
               if (layers != null)
                       layer = (Layer) layers[0];
               JPanel selectorPanel = createSelectorPanel(hiperlink);
               cardPanel = createCardLayoutPanel(hiperlink);
               OKCancelPanel okCancelPanel = createOKcancelPanel();
               okCancelPanel.add(desactivarJButton);
               desactivarJButton.addActionListener(new ActionListener(){
                       public void actionPerformed(ActionEvent arg0) {
                               deactivate = true;
                               exitOk = true;
                               setVisible(false);
                       }
               });
               FormUtils.addRowInGBL(mainPanel, 0, 0, selectorPanel);
               FormUtils.addRowInGBL(mainPanel, 1, 0, cardPanel);
               FormUtils.addRowInGBL(mainPanel, 2, 0, okCancelPanel);
               setContentPane(mainPanel);
               pack();
               if (hiperlink instanceof HiperLinkCompound){
                       compound.setSelected(true);
                       compound.getActionListeners()[0].actionPerformed(null);
               } else {
                       simple.setSelected(true);
               }
               GUIUtil.centreOnScreen(this);
               setVisible(true);

       }

       private JPanel createSelectorPanel(HiperLink hiperlink) {
               JPanel selectorPanel = new JPanel();
               selectorPanel.setLayout(new GridBagLayout());
               selectorPanel.setBorder(BorderFactory
                               .createTitledBorder(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-type"))); //$NON-NLS-1$
               ButtonGroup agrupacion = new ButtonGroup();
               simple = new JCheckBox(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.basic-hiperlink")); //$NON-NLS-1$
               simple.addActionListener(new ActionListener() {

                       public void actionPerformed(ActionEvent arg0) {
                               CardLayout cl = (CardLayout) (cardPanel.getLayout());
                               cl.show(cardPanel, "SIMPLE"); //$NON-NLS-1$
                               hiperLinkType = HIPERLINK_SIMPLE;

                       }
               });
               compound = new JCheckBox(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.compound-hiperlink")); //$NON-NLS-1$
               compound.addActionListener(new ActionListener() {

                       public void actionPerformed(ActionEvent arg0) {
                               CardLayout cl = (CardLayout) (cardPanel.getLayout());
                               cl.show(cardPanel, "COMPOUND"); //$NON-NLS-1$
                               hiperLinkType = HIPERLINK_COMPOUND;

                       }
               });
               if (context.getDataManager().size() == 0){
                       compound.setEnabled(false);
               }
               agrupacion.add(simple);
               agrupacion.add(compound);

               simple.setSelected(true);
               FormUtils.addRowInGBL(selectorPanel, 0, 0, simple);
               FormUtils.addRowInGBL(selectorPanel, 1, 0, compound);

               return selectorPanel;
       }

       private JPanel createSimplePanel(HiperLink hiperlink) {
               JPanel simplePanel = new JPanel();
               simplePanel.setLayout(new GridBagLayout());

       FeatureSchema schema = layer.getFeatureSchema();
               List attributeNames = new ArrayList();
               for (int i = 0; i < schema.getAttributeCount(); i++) {
                       Attribute element = schema.getAttribute(i);
                       if (element.getType().toJavaClass().equals(String.class) && !element.isPrimaryKey()) {
               attributeNames.add(element.getName());
                       }
               }
       Collections.sort(attributeNames);
       sourceHiperLinkFieldComboBox = new JComboBox(attributeNames.toArray());
       attributeNames.add(NO_DESCRIPTION_VALUE);
       Collections.sort(attributeNames);
       descriptionHiperLinkFieldComboBox =     new JComboBox(attributeNames.toArray());
       JLabel hiperLinkLabel =
               new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
               FormUtils.addRowInGBL(simplePanel, 0, 0, hiperLinkLabel,
                               sourceHiperLinkFieldComboBox);
               JLabel descriptionLabel
                       = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.Description-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
               FormUtils.addRowInGBL(simplePanel,1,0,descriptionLabel,
                               descriptionHiperLinkFieldComboBox);
               FormUtils.addFiller(simplePanel,2,0);

               if (hiperlink!=null){
                       sourceHiperLinkFieldComboBox.setSelectedItem(hiperlink.getFieldWithHiperLink());
                       descriptionHiperLinkFieldComboBox.setSelectedItem(hiperlink.getFieldDescription());
               }
               return simplePanel;
       }

       private JPanel createCompoundPanel(HiperLink hiperlink) {
               JPanel compoundPanel = new JPanel();
               compoundPanel.setLayout(new GridBagLayout());

               JLabel sourceKeyLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.layer-key-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
       fieldTargetKeysComboBox = new JComboBox();
       targetHiperLinkFieldComboBox = new JComboBox();
       descriptionFieldTableComboBox = new JComboBox();

       FeatureSchema layerSchema = layer.getFeatureSchema();
       List attributeNames = new ArrayList();
       for (int i = 0; i < layerSchema.getAttributeCount(); i++) {
           Attribute element = layerSchema.getAttribute(i);
           if (!element.getType().equals(AttributeType.GEOMETRY)) {
               attributeNames.add(element.getName());
           }
       }
       Collections.sort(attributeNames);
               sourceKeysFieldComboBox = new JComboBox(attributeNames.toArray());

               FormUtils.addRowInGBL(compoundPanel, 0, 0, sourceKeyLabel,
                               sourceKeysFieldComboBox);

               JLabel tableLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.table") + " :"); //$NON-NLS-1$ //$NON-NLS-2$

               // Obtenemos todas las tablas con las que podemos enganchar
               List tables = context.getDataManager().getRealTables();
               tableComboBox = new JComboBox(tables.toArray());
               tableComboBox.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent arg0) {
                               Table selectedTable = (Table) tableComboBox
                                               .getSelectedItem();

                               FeatureSchema schema = selectedTable.getSchema();
               List validFieldTargetKeysAttrNames = new ArrayList();
               List validTargetHiperLinkFieldAttrNames = new ArrayList();

                               for (int i = 0; i < schema.getAttributeCount(); i++) {
                                       Attribute element = schema.getAttribute(i);
                                       if (!element.getType().equals(AttributeType.GEOMETRY)) {
                                               validFieldTargetKeysAttrNames.add(element.getName());
                                       }
                                       if (element.getType().toJavaClass().equals(String.class)) {
                                               validTargetHiperLinkFieldAttrNames.add(element.getName());
                                       }
                               }


               Collections.sort(validFieldTargetKeysAttrNames);
               Collections.sort(validTargetHiperLinkFieldAttrNames);

               fieldTargetKeysComboBox.removeAllItems();
               descriptionFieldTableComboBox.removeAllItems();
               descriptionFieldTableComboBox.addItem(NO_DESCRIPTION_VALUE);
               for( Iterator iter = validFieldTargetKeysAttrNames.iterator(); iter.hasNext(); ) {
                   String name = (String) iter.next();
                   fieldTargetKeysComboBox.addItem(name);
                   descriptionFieldTableComboBox.addItem(name);
               }
               targetHiperLinkFieldComboBox.removeAllItems();
               for( Iterator iter = validTargetHiperLinkFieldAttrNames.iterator(); iter.hasNext(); ) {
                   String name = (String) iter.next();
                   targetHiperLinkFieldComboBox.addItem(name);
               }
                       }

               });


               if (tables.size() > 0) {
                       Table selectedTable = (Table) tables.get(0);
           FeatureSchema tableSchema = selectedTable.getSchema();
           List validFieldTargetKeysAttrNames = new ArrayList();
           List validTargetHiperLinkFieldAttrNames = new ArrayList();

           for (int i = 0; i < tableSchema.getAttributeCount(); i++) {
               Attribute element = tableSchema.getAttribute(i);
               if (!element.getType().equals(AttributeType.GEOMETRY)) {
                   validFieldTargetKeysAttrNames.add(element.getName());
               }
               if (element.getType().toJavaClass().equals(String.class)) {
                   validTargetHiperLinkFieldAttrNames.add(element.getName());
               }
           }

           Collections.sort(validFieldTargetKeysAttrNames);
           Collections.sort(validTargetHiperLinkFieldAttrNames);

           fieldTargetKeysComboBox = new JComboBox(validFieldTargetKeysAttrNames.toArray());
           targetHiperLinkFieldComboBox = new JComboBox(validTargetHiperLinkFieldAttrNames.toArray());
           validTargetHiperLinkFieldAttrNames.add(NO_DESCRIPTION_VALUE);
           Collections.sort(validTargetHiperLinkFieldAttrNames);
           descriptionFieldTableComboBox = new JComboBox(validTargetHiperLinkFieldAttrNames.toArray());

               }

               FormUtils.addRowInGBL(compoundPanel, 1, 0, tableLabel, tableComboBox);
               JLabel fieldTargetKeyLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.table-key-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
               FormUtils.addRowInGBL(compoundPanel, 2, 0, fieldTargetKeyLabel,
                               fieldTargetKeysComboBox);
               JLabel hiperLinkLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.hiperlink-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
               FormUtils.addRowInGBL(compoundPanel, 3, 0, hiperLinkLabel,
                               targetHiperLinkFieldComboBox);
               JLabel descrptionLabel = new JLabel(I18N.getString("org.saig.jump.widgets.hiperlink.HiperLinkConfigurationDialog.Description-field") + " :"); //$NON-NLS-1$ //$NON-NLS-2$
               FormUtils.addRowInGBL(compoundPanel,4,0,descrptionLabel,descriptionFieldTableComboBox);

               if (hiperlink != null){
                       if (hiperlink instanceof HiperLinkCompound){
                               HiperLinkCompound hc = (HiperLinkCompound)hiperlink;
                               fieldTargetKeysComboBox.setSelectedItem(hc.getKeyFieldTarget());
                               targetHiperLinkFieldComboBox.setSelectedItem(hc.getFieldWithHiperLink());
                               descriptionFieldTableComboBox.setSelectedItem(hc.getFieldDescription());
                               sourceHiperLinkFieldComboBox.setSelectedItem(hc.getKeyFieldSource());
                               sourceKeysFieldComboBox.setSelectedItem(hc.getKeyFieldSource());
                       }
               }

               return compoundPanel;
       }

       private JPanel createCardLayoutPanel(HiperLink hiperlink) {
               cardPanel = new JPanel();
               cardPanel.setLayout(new CardLayout());
               cardPanel.add(createSimplePanel(hiperlink), "SIMPLE"); //$NON-NLS-1$
               cardPanel.add(createCompoundPanel(hiperlink), "COMPOUND"); //$NON-NLS-1$
               return cardPanel;
       }

       private OKCancelPanel createOKcancelPanel() {
               final OKCancelPanel okCancelPanel = new OKCancelPanel();
               GridBagLayout gbPaneOKCancel = new GridBagLayout();
               okCancelPanel.setLayout(gbPaneOKCancel);
               okCancelPanel.addActionListener(new ActionListener() {

                       public void actionPerformed(ActionEvent arg0) {
                               if (okCancelPanel.wasOKPressed()) {
                                       exitOk = true;
                               } else {
                                       exitOk = false;
                               }
                               setVisible(false);
                       }
               });
               return okCancelPanel;
       }

       public boolean isOk() {
               return exitOk;
       }

       public HiperLink getHiperLink() {
               if (deactivate)
                       return null;
               HiperLink hiperLink = null;
               switch (hiperLinkType) {
               case HIPERLINK_SIMPLE:
                       if (sourceHiperLinkFieldComboBox
                                       .getSelectedItem() == null ||((String) sourceHiperLinkFieldComboBox
                                       .getSelectedItem()).equals("")) { //$NON-NLS-1$
                               return null;
                       }
                       String descriptionFieldValue = (String) descriptionHiperLinkFieldComboBox.getSelectedItem();
                       if (descriptionFieldValue == NO_DESCRIPTION_VALUE)
                               descriptionFieldValue = null;
                       hiperLink = new HiperLink((String) sourceHiperLinkFieldComboBox
                                       .getSelectedItem());
                       hiperLink.setFieldDescription(descriptionFieldValue);
                       break;
               case HIPERLINK_COMPOUND:
                       if (targetHiperLinkFieldComboBox.getSelectedItem() == null ||
                               ((String) targetHiperLinkFieldComboBox.getSelectedItem()).equals("")){ //$NON-NLS-1$
                               return null;
                       }
                       String descriptionTableFieldValue =
                               (String) descriptionFieldTableComboBox.getSelectedItem();
                       if (descriptionTableFieldValue == NO_DESCRIPTION_VALUE)
                               descriptionTableFieldValue = null;
                       HiperLinkCompound compound = new HiperLinkCompound(
                                       (String) targetHiperLinkFieldComboBox.getSelectedItem(),
                                       (String) sourceKeysFieldComboBox.getSelectedItem(),
                                       (String) fieldTargetKeysComboBox.getSelectedItem());
                       compound.setFieldDescription(descriptionTableFieldValue);
                       compound.setTable((Table) tableComboBox.getSelectedItem());
                       hiperLink = compound;
                       break;
               default:
                       break;
               }
               return hiperLink;
       }

       public Layer getLayer() {
               return this.layer;
       }

}

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo




--
-----------------------------------------------------------
Rubén Sanabrias

_______________________________________________
Kosmo mailing list
[hidden email]
http://lists.saig.es/mailman/listinfo/kosmo