Revision 37738

View differences:

tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text.properties
1
#Translations for language [es]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Aceptar
4
Aplicar=Aplicar
5
Block_Size_=Tama\u00f1o de bloque\:
6
Cancelar=Cancelar
7
Compression_=Compresi\u00f3n\:
8
datum=Datum
9
Generate_Tfw_=Generar Tfw\:
10
Interleave_=Entrelazado\:
11
Photometric_=Fotom\u00e9trica\:
12
Progressive_=Progresivo\:
13
projection=Proyecci\u00f3n
14
reference_system=Sistema de Referencia
15
zone=Huso
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_en.properties
1
#Translations for language [en]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Accept
4
Aplicar=Apply
5
Block_Size_=Block Size\:
6
Cancelar=Cancel
7
Compression_=Compression\:
8
datum=Datum
9
Generate_Tfw_=Generate Tfw\:
10
Interleave_=Interleave\:
11
Photometric_=Photometric\:
12
Progressive_=Progressive\:
13
projection=Projection
14
reference_system=Reference System
15
zone=Zone
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_gl.properties
1
#Translations for language [gl]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Aceptar
4
Aplicar=Aplicar
5
Block_Size_=
6
Cancelar=Cancelar
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_ca.properties
1
#Translations for language [ca]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Acceptar
4
Aplicar=Aplicar
5
Block_Size_=
6
Cancelar=Cancel\u00b7lar
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=Projecci\u00f3
14
reference_system=Sistema de refer\u00e8ncia
15
zone=
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_pt.properties
1
#Translations for language [pt]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Aceitar
4
Aplicar=Aplicar
5
Block_Size_=
6
Cancelar=Cancelar
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_cs.properties
1
#Translations for language [cs]
2
#Mon Nov 06 09:04:31 CET 2006
3
Aceptar=Budi\u017e
4
Aplicar=Pou\u017e\u00edt
5
Block_Size_=
6
Cancelar=Zru\u0161it
7
Compression_=
8
datum=Datum
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=Projekce
14
reference_system=Prostorov\u00fd referen\u010dn\u00ed syst\u00e9m
15
zone=Z\u00f3na
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_fr.properties
1
#Translations for language [fr]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Accepter
4
Aplicar=Appliquer
5
Block_Size_=
6
Cancelar=Annuler
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_de.properties
1
#Translations for language [de]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=OK
4
Aplicar=Anwenden
5
Block_Size_=
6
Cancelar=Abbrechen
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_eu.properties
1
#Translations for language [eu]
2
#Mon Oct 30 09:38:21 CET 2006
3
Aceptar=Ados
4
Aplicar=Aplikatu
5
Block_Size_=
6
Cancelar=Utzi
7
Compression_=
8
datum=
9
Generate_Tfw_=
10
Interleave_=
11
Photometric_=
12
Progressive_=
13
projection=
14
reference_system=
15
zone=
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/config/org/cresques/resources/i18n/text_it.properties
1
#Translations for language [it]
2
#Tue Nov 07 12:30:01 CET 2006
3
Aceptar=Accetta
4
Aplicar=Applica
5
Block_Size_=Dimensioni blocco\:
6
Cancelar=Cancella
7
Compression_=Compressione
8
datum=Datum
9
Generate_Tfw_=Genera Tfw\:
10
Interleave_=Interlacciato\:
11
Photometric_=Fotometrica\:
12
Progressive_=Progressivo\:
13
projection=Proiezione
14
reference_system=Sistema di riferimento
15
zone=Fuso
0 16

  
tags/v2_0_0_Build_2043/libraries/libProjection/resources-test/log4j.xml
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5

  
6
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
7
		<layout class="org.apache.log4j.PatternLayout">
8
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
9
		</layout>
10
	</appender>
11

  
12
	<category name="org.gvsig.tools">
13
		<priority value="DEBUG" />
14
	</category>
15
	<category name="org.cresques">
16
		<priority value="DEBUG" /> 
17
	</category>
18
	<category name="org.gvsig.fmap.crs">
19
		<priority value="DEBUG" /> 
20
	</category>
21

  
22
	<root>
23
		<priority value="INFO" />
24
		<appender-ref ref="CONSOLE" />
25
	</root>
26
</log4j:configuration>
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/gvsig/fmap/crs/CRSFactory.java
1
package org.gvsig.fmap.crs;
2

  
3
import org.cresques.cts.ICRSFactory;
4
import org.cresques.cts.IProjection;
5

  
6
/**
7
 * Fabrica de CRS.
8
 * Centraliza las peticiones de creaci?n de objetos CRS de todo fmap.
9
 * @author luisw
10
 *
11
 */
12
public class CRSFactory {
13
	public static ICRSFactory cp = null;
14

  
15
	public static IProjection getCRS(String code) {
16
		return cp.get(code);
17
	}
18
}
0 19

  
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/gvsig/fmap/crs/persistence/ProjectionPersistenceFactory.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

  
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2009 {DiSiD Technologies}  {{Task}}
26
 */
27
package org.gvsig.fmap.crs.persistence;
28

  
29
import org.cresques.cts.IProjection;
30
import org.gvsig.fmap.crs.CRSFactory;
31
import org.gvsig.tools.dataTypes.DataTypes;
32
import org.gvsig.tools.dynobject.DynStruct;
33
import org.gvsig.tools.persistence.AbstractSinglePersistenceFactory;
34
import org.gvsig.tools.persistence.PersistenceManager;
35
import org.gvsig.tools.persistence.PersistentState;
36
import org.gvsig.tools.persistence.exception.PersistenceException;
37

  
38
/**
39
 * Factory to persist {@link IProjection} objects. The information about the
40
 * {@link IProjection} which will be persisted is its full code, containing all
41
 * required information to be able to reconstruct the {@link IProjection} object
42
 * through the {@link CRSFactory#getCRS(String)} method.
43
 * <p>
44
 * <strong>NOTE:</strong>To activate this factory, it must be instanced and
45
 * registered in the {@link PersistenceManager}. This will be usually performed
46
 * from the project Library.
47
 * </p>
48
 * 
49
 * @author 2009- <a href="cordinyana@gvsig.org">C?sar Ordi?ana</a> - gvSIG team
50
 * @author 2010- <a href="jjdelcerro@gvsig.org">Joaquin Jose del Cerro</a> -
51
 *         gvSIG team
52
 */
53
public class ProjectionPersistenceFactory extends
54
		AbstractSinglePersistenceFactory {
55

  
56
	private static final String FIELD_FULLCODE = "fullcode";
57
	private static final String DESCRIPTION_FULLCODE = "Projection abbreviature";
58

  
59
	private static final String DYNCLASS_NAME = "Projection";
60
	private static final String DYNCLASS_DESCRIPTION = "Projection";
61

  
62
	/**
63
	 * Creates a new {@link ProjectionPersistenceFactory}.
64
	 */
65
	public ProjectionPersistenceFactory() {
66
		super(IProjection.class, DYNCLASS_NAME, DYNCLASS_DESCRIPTION, null,
67
				null);
68

  
69
		DynStruct definition = this.getDefinition();
70

  
71
		definition.addDynField(FIELD_FULLCODE).setDescription(
72
				DESCRIPTION_FULLCODE).setMandatory(true).setType(
73
				DataTypes.STRING);
74
	}
75

  
76
	public Object createFromState(PersistentState state)
77
			throws PersistenceException {
78
		return CRSFactory.getCRS(state.getString(FIELD_FULLCODE));
79
	}
80

  
81
	public void saveToState(PersistentState state, Object obj)
82
			throws PersistenceException {
83
		state.set(FIELD_FULLCODE, ((IProjection) obj).getFullCode());
84
	}
85
}
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/gvsig/fmap/crs/persistence/CoordTransPersistenceFactory.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.fmap.crs.persistence;
23

  
24
import org.cresques.DataTypes;
25
import org.cresques.cts.ICoordTrans;
26
import org.cresques.cts.IProjection;
27

  
28
import org.gvsig.tools.dynobject.DynStruct;
29
import org.gvsig.tools.persistence.AbstractSinglePersistenceFactory;
30
import org.gvsig.tools.persistence.PersistentState;
31
import org.gvsig.tools.persistence.exception.PersistenceException;
32

  
33

  
34
/**
35
 * @author gvSIG Team
36
 * @version $Id$
37
 *
38
 */
39
public class CoordTransPersistenceFactory extends AbstractSinglePersistenceFactory {
40

  
41
    private static final String FIELD_SOURCE_PROJECTION = "source";
42
    private static final String DESCRIPTION_SOURCE_PROJECTION  = "Source projection";
43
    
44
    private static final String FIELD_DESTINATION_PROJECTION = "destination";
45
    private static final String DESCRIPTION_DESTINATION_PROJECTION = "Destination Projection";
46

  
47
    private static final String DYNCLASS_NAME = "CoordTrans";
48
    private static final String DYNCLASS_DESCRIPTION = "Coordinates Transformation";
49

  
50
    /**
51
     * Creates a new {@link CoordTransPersistenceFactory}.
52
     */
53
    public CoordTransPersistenceFactory() {
54
        super(ICoordTrans.class, DYNCLASS_NAME, DYNCLASS_DESCRIPTION, null, null);
55

  
56
        DynStruct definition = this.getDefinition();
57

  
58
        definition.addDynField(FIELD_SOURCE_PROJECTION).setDescription(
59
            DESCRIPTION_SOURCE_PROJECTION).setMandatory(true).setType(
60
                DataTypes.CRS);
61
        
62
        definition.addDynField(FIELD_DESTINATION_PROJECTION).setDescription(
63
            DESCRIPTION_DESTINATION_PROJECTION).setMandatory(true).setType(
64
                DataTypes.CRS);
65
    }
66

  
67
    public Object createFromState(PersistentState state)
68
            throws PersistenceException {
69
        IProjection sourceProjection = (IProjection)state.get(FIELD_SOURCE_PROJECTION);
70
        IProjection destinationProjection = (IProjection)state.get(FIELD_DESTINATION_PROJECTION);      
71
        return sourceProjection.getCT(destinationProjection);
72
    }
73

  
74
    public void saveToState(PersistentState state, Object obj)
75
            throws PersistenceException {
76
        state.set(FIELD_SOURCE_PROJECTION, ((ICoordTrans) obj).getPOrig());
77
        state.set(FIELD_DESTINATION_PROJECTION, ((ICoordTrans) obj).getPDest());
78
    }
79
}
0 80

  
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/cresques/CRSFactoryNotRegisteredException.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

  
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2008 {DiSiD Technologies}   {Create a base Locator implementation}
26
 */
27
package org.cresques;
28

  
29
import org.gvsig.tools.exception.BaseRuntimeException;
30

  
31
/**
32
 * Exception for errors related to the initialization of a Library.
33
 * 
34
 * @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a>
35
 */
36
public class CRSFactoryNotRegisteredException extends BaseRuntimeException {
37

  
38
	private static final long serialVersionUID = 7354573543115812224L;
39

  
40
	private static final String KEY = "_CRSFactoryNotRegisteredException";
41

  
42
    private static final String MESSAGE = "An instance of ICRSFactory has not " +
43
    		"been registered in the CRSFactory";
44

  
45
    public CRSFactoryNotRegisteredException() {
46
        super(MESSAGE, KEY, serialVersionUID);
47
    }
48
}
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/cresques/ui/cts/CSSelectionDialogPanel.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package org.cresques.ui.cts;
25

  
26
import javax.swing.JPanel;
27

  
28
import org.cresques.Messages;
29
import org.cresques.impl.cts.ProjectionPool;
30
import org.cresques.ui.DefaultDialogPanel;
31

  
32

  
33
/**
34
 * Dialogo para abrir fichero.
35
 * @author "Luis W. Sevilla" <sevilla_lui@gva.es>
36
 */
37
public class CSSelectionDialogPanel extends DefaultDialogPanel {
38
    final private static long serialVersionUID = -3370601314380922368L;
39

  
40
    public CSSelectionDialogPanel() {
41
        super();
42
        init();
43
    }
44

  
45
    /**
46
     * This method initializes this
47
     *
48
     * @return void
49
     */
50
    private void init() {
51
        this.setBounds(0, 0, 350, 260);
52
    }
53

  
54
    public CSSelectionPanel getProjPanel() {
55
        return (CSSelectionPanel) getContentPanel();
56
    }
57

  
58
    protected JPanel getContentPanel() {
59
        if (contentPane == null) {
60
        	contentPane = new CSSelectionPanel(Messages.getText("reference_system"));
61
        	contentPane.setBounds(14, 12, 280, 163);
62

  
63
            ((CSSelectionPanel) contentPane).setProjection(new ProjectionPool().get("EPSG:32619"));
64
        }
65

  
66
        return contentPane;
67
    }
68
}
0 69

  
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/cresques/ui/cts/CSSelectionPanel.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package org.cresques.ui.cts;
25

  
26
import javax.swing.JLabel;
27
import javax.swing.JPanel;
28

  
29
import org.cresques.Messages;
30
import org.cresques.cts.IProjection;
31
import org.cresques.ui.LoadableComboBox;
32

  
33

  
34
//import es.gva.cit.geoexplorer.ui.LoadableComboBox;
35

  
36
/**
37
 * Panel de edici?n de Sistemas de referencia
38
 * @author "Luis W. Sevilla" <sevilla_lui@gva.es>
39
 */
40
public class CSSelectionPanel extends JPanel {
41
    final private static long serialVersionUID = -3370601314380922368L;
42
    private LoadableComboBox datumComboBox = null;
43
    private LoadableComboBox projComboBox = null;
44
    private LoadableComboBox huseComboBox = null;
45
    private JLabel jLabel = null;
46
    private JLabel jLabel1 = null;
47
    private JLabel jLabel2 = null;
48
    private String tit;
49
    private CSSelectionModel model;
50

  
51
    /**
52
     * Constructor de la clase.
53
     */
54
    public CSSelectionPanel(String tit) {
55
        super();
56

  
57
        if (tit == null) {
58
            //tit = "Sistema de referencia";
59
            //TODO: add com.iver.andami.PluginServices to this project
60
            //change all the labels from fix text got from the internationalitation
61
            tit = Messages.getText("reference_system");
62
            if (tit == null) tit="Reference System";
63
        }
64

  
65
        this.tit = tit;
66
        setModel(new CSSelectionModel());
67
        initialize();
68
    }
69

  
70
    /**
71
     * Inicializa el panel.
72
     * @return javax.swing.JPanel
73
     */
74
    private void initialize() {
75
        setPreferredSize(new java.awt.Dimension(295, 170));
76
        setLayout(null);
77

  
78
        /*javax.swing.border.Border border = javax.swing.BorderFactory.createCompoundBorder(
79
        javax.swing. BorderFactory.createTitledBorder("Sistema de coordenadas"),
80
        javax.swing.BorderFactory.createEmptyBorder(5,5,5,5)); */
81
        setBorder(javax.swing.BorderFactory.createCompoundBorder(null,
82
                                                                 javax.swing.BorderFactory.createTitledBorder(null,
83
                                                                		 										Messages.getText("reference_system"),
84
                                                                                                              javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
85
                                                                                                              javax.swing.border.TitledBorder.DEFAULT_POSITION,
86
                                                                                                              null,
87
                                                                                                              null)));
88

  
89
        jLabel = new JLabel();
90
        jLabel.setBounds(15, 15, 77, 23);
91
        jLabel.setText(Messages.getText("datum") + ":");
92
        add(jLabel, null);
93
        add(getDatumComboBox(), null);
94

  
95
        jLabel1 = new JLabel();
96
        jLabel1.setBounds(15, 60, 77, 23);
97
        jLabel1.setText(Messages.getText("projection") + ":");
98
        add(jLabel1, null);
99
        add(getProjComboBox(), null);
100

  
101
        jLabel2 = new JLabel();
102
        jLabel2.setBounds(15, 105, 77, 23);
103
        jLabel2.setText(Messages.getText("zone") + ":");
104
        add(jLabel2, null);
105
        add(getHuseComboBox(), null);
106

  
107
        setHuseComboBoxEnabled(false);
108
    }
109

  
110
    public void setModel(CSSelectionModel model) {
111
        this.model = model;
112

  
113
        getHuseComboBox().loadData(model.getZoneList());
114
        getDatumComboBox().loadData(model.getDatumList());
115
        getProjComboBox().loadData(model.getProjectionList());
116
    }
117

  
118
    private void setHuseComboBoxEnabled(boolean enabled) {
119
        if (jLabel2 != null) {
120
            jLabel2.setEnabled(enabled);
121
        }
122

  
123
        getHuseComboBox().setEnabled(enabled);
124
    }
125

  
126
    private void setDatumComboBoxEnabled(boolean enabled) {
127
        if (jLabel != null) {
128
            jLabel.setEnabled(enabled);
129
        }
130

  
131
        getDatumComboBox().setEnabled(enabled);
132
    }
133

  
134
    public void setProjection(IProjection proj) {
135
        model.setProjection(proj);
136

  
137
        setDatumComboBoxEnabled(true);
138
        getDatumComboBox().setSelectedIndex(model.getSelectedDatum());
139
 
140
        getProjComboBox().removeAllItems();
141
        getProjComboBox().loadData(model.getProjectionList());
142

  
143
        model.setProjection(proj);
144
        getProjComboBox().setSelectedIndex(model.getSelectedProj());
145
        model.setProjection(proj);
146
        
147
        if (model.getSelectedZone() >= 0) {
148
            setHuseComboBoxEnabled(true);
149
            getHuseComboBox().removeAllItems();
150
            getHuseComboBox().loadData(model.getZoneList());
151

  
152
            model.setProjection(proj);
153
            getHuseComboBox().setSelectedIndex(model.getSelectedZone());
154
        } else {
155
            setHuseComboBoxEnabled(false);
156
            getHuseComboBox().setSelectedIndex(0);
157
        }
158
    }
159

  
160
    /**
161
     * Inicializa datumComboBox
162
     *
163
     * @return javax.swing.JComboBox
164
     */
165
    private LoadableComboBox getDatumComboBox() {
166
        if (datumComboBox == null) {
167
            datumComboBox = new LoadableComboBox();
168
            datumComboBox.setBounds(14, 35, 250, 23);
169

  
170
            //			((LoadableComboBox) datumComboBox).loadData(model.getDatumList());
171
            datumComboBox.addItemListener(new java.awt.event.ItemListener() {
172
                    public void itemStateChanged(java.awt.event.ItemEvent e) {
173
                        model.setSelectedDatum(e.getItem());
174
                        getProjComboBox().removeAllItems();
175
                        getProjComboBox().loadData(model.getProjectionList());
176
                    }
177
                });
178
        }
179

  
180
        return datumComboBox;
181
    }
182

  
183
    /**
184
     * Inicializa projComboBox
185
     *
186
     * @return javax.swing.JComboBox
187
     */
188
    private LoadableComboBox getProjComboBox() {
189
        if (projComboBox == null) {
190
            projComboBox = new LoadableComboBox();
191
            projComboBox.setBounds(14, 80, 250, 23);
192
            projComboBox.addItemListener(new java.awt.event.ItemListener() {
193
                    public void itemStateChanged(java.awt.event.ItemEvent e) {
194
                        model.setSelectedProj(e.getItem());
195

  
196
                        if (model.getSelectedProjType() == CSSelectionModel.TRANSVERSAL) {
197
                            setHuseComboBoxEnabled(true);
198
                            getHuseComboBox().removeAllItems();
199
                            getHuseComboBox().loadData(model.getZoneList());
200

  
201
                        } else {
202
                            setHuseComboBoxEnabled(false);
203
                        }
204

  
205
                       // if (model.getSelectedProjType() == CSSelectionModel.NONE) {
206
                       //     setDatumComboBoxEnabled(false);
207
                       // } else {
208
                       //     setDatumComboBoxEnabled(true);
209
                       // }
210
                    }
211
                });
212
        }
213

  
214
        return projComboBox;
215
    }
216

  
217
    /**
218
     * Inicializa usoComboBox
219
     *
220
     * @return javax.swing.JComboBox
221
     */
222
    private LoadableComboBox getHuseComboBox() {
223
        if (huseComboBox == null) {
224
            huseComboBox = new LoadableComboBox();
225
            huseComboBox.setBounds(14, 125, 250, 23);
226
            huseComboBox.addItemListener(new java.awt.event.ItemListener() {
227
                    public void itemStateChanged(java.awt.event.ItemEvent e) {
228
                        model.setSelectedZone(e.getItem());
229
                    }
230
                });
231
        }
232

  
233
        return huseComboBox;
234
    }
235

  
236
    /**
237
     * @return
238
     */
239
    public IProjection getProjection() {
240
        return model.getProjection();
241
    }
242
}
0 243

  
tags/v2_0_0_Build_2043/libraries/libProjection/src/org/cresques/ui/cts/CSSelectionModel.java
1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package org.cresques.ui.cts;
25

  
26
import org.cresques.cts.IProjection;
27
import org.cresques.impl.cts.ProjectionPool;
28

  
29

  
30
/**
31
 * @author Luis W. Sevilla (sevilla_lui@gva.es)
32
 */
33
public class CSSelectionModel {
34
    public static int NONE = 0x01;
35
    public static int GEODETIC = 0x02;
36
    public static int TRANSVERSAL = 0x03;
37
    public String[] datumList = {
38
	    "WGS 84", "European 1950", "Datum 73",
39
	    "North American Datum 1927",
40
	    "North American Datum 1983",
41
	    "La Canoa",
42
	    "NTF (Paris)",
43
	    "ETRS 89",
44
	    "Moon (IAU 2000)",
45
	    "Mars (IAU 2000)",
46
	    "Campo_Inchauspe",
47
	    "RGF93"
48
    };
49
    /*private String[] projList = {
50
        "Geodesica",
51
        "(UTM) Universal Transversal Mercator",
52
        "Datum 73 / Modified Portuguese Grid",
53
        "WGS 84 / LCC Canada",
54
        "NAD83 / NRCan LCC Canada",
55
        "Lambert Etendu",
56
        "RGF93 / Lambert-93",
57
        "WGS 84 / Mercator",
58
        "Campo Inchauspe / Zonas 1-7"
59
    };*/
60
    private String[][] projList = {
61
        	{"Geodesica", "(UTM) Universal Transversal Mercator",
62
        		"LCC Canada", "Mercator"}, // WGS84
63
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // ED50
64
        	{"Geodesica", "Modified Portuguese Grid"}, //Datum 73
65
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // NAD27
66
        	{"Geodesica", "(UTM) Universal Transversal Mercator", "NRCan LCC Canada"}, // NAD83
67
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // La Canoa
68
        	{"Geodesica", "Lambert Etendu"}, // NTF (Paris)
69
        	{"Geodesica", "(UTM) Universal Transversal Mercator"}, // ETRS89
70
        	{"Geodesica"}, // Moon
71
        	{"Geodesica"}, // Mars
72
        	{"Geodesica", "Zonas 1-7"}, // CampoInchauspe
73
        	{"Geodesica", "Lambert-93"} // RFG93
74
        };
75

  
76
    private int[][] projType = {
77
    	{GEODETIC, TRANSVERSAL, NONE, NONE},
78
    	{GEODETIC, TRANSVERSAL},
79
    	{GEODETIC, NONE},
80
    	{GEODETIC, TRANSVERSAL},
81
    	{GEODETIC, TRANSVERSAL, NONE},
82
    	{GEODETIC, TRANSVERSAL},
83
    	{GEODETIC, NONE},
84
    	{GEODETIC, TRANSVERSAL},
85
    	{GEODETIC},
86
    	{GEODETIC},
87
    	{GEODETIC, TRANSVERSAL},
88
    	{GEODETIC, NONE}
89
    };
90
    
91
    private int [][] zoneRange = {
92
    	{1,60},
93
    	{1,60},
94
    	{0,0},
95
    	{3,23},
96
    	{3,23},
97
    	{18,21},
98
    	{0,0},
99
    	{28,38},
100
    	{0,0},
101
    	{0,0},
102
    	{1,7},
103
    	{0,0}
104
    };
105
    private String[] zoneList = {  };
106
    private int selectedDatum = 0;
107
    private int selectedProj = 0;
108
    private int selectedZone = 0;
109

  
110
    /**
111
     *
112
     */
113
    public CSSelectionModel() {
114
        super();
115
        zoneList = new String[60];
116

  
117
        for (int i = 1; i <= 60; i++)
118
            zoneList[i - 1] = "Huso " + Integer.toString(i);
119
    }
120
    
121

  
122
    public String[] getDatumList() {
123
        return datumList;
124
    }
125

  
126
    public String[] getProjectionList() {
127
        return projList[getSelectedDatum()];
128
    }
129

  
130
    public String[] getZoneList() {
131
    	int [] r = zoneRange[getSelectedDatum()];
132
        return getZoneList(r[0],r[1]);
133
    }
134

  
135
    public String[] getZoneList(int from, int to) {
136
        zoneList = new String[to-from+1];
137

  
138
        for (int i = from; i <= to; i++)
139
        	zoneList[i - from] = "Huso " + Integer.toString(i);
140
        return zoneList;
141
    }
142
    public void setSelectedDatum(int opNr) {
143
        selectedDatum = opNr;
144
    }
145

  
146
    public void setSelectedDatum(Object item) {
147
        String[] list = datumList;
148

  
149
        for (int i = 0; i < list.length; i++)
150
            if (list[i].compareTo((String) item) == 0) {
151
                selectedDatum = i;
152
                break;
153
            }
154
    }
155

  
156
    public int getSelectedDatum() {
157
        return selectedDatum;
158
    }
159

  
160
    public void setSelectedProj(int opNr) {
161
        selectedProj = opNr;
162
    }
163

  
164
    public void setSelectedProj(Object item) {
165
        String[] list = projList[getSelectedDatum()];
166

  
167
        for (int i = 0; i < list.length; i++)
168
            if (list[i].compareTo((String) item) == 0) {
169
                selectedProj = i;
170
                break;
171
            }
172
    }
173

  
174
    public int getSelectedProj() {
175
        return selectedProj;
176
    }
177

  
178
    public int getSelectedProjType() {
179
        return projType[getSelectedDatum()][selectedProj];
180
    }
181

  
182
    public void setSelectedZone(int opNr) {
183
        selectedZone = opNr;
184
    }
185

  
186
    public void setSelectedZone(Object item) {
187
        String[] list = zoneList;
188

  
189
        for (int i = 0; i < list.length; i++)
190
            if (list[i].compareTo((String) item) == 0) {
191
                selectedZone = i;
192
                break;
193
            }
194
    }
195

  
196
    public int getSelectedZone() {
197
        return selectedZone;
198
    }
199

  
200
    public void setProjection(IProjection proj) {
201
    	if (proj!=null){
202
    		String key = proj.getAbrev();
203
    		// Para usos posteriores.
204
    		// String db = key.split(":")[0];
205
    		key = key.split(":")[1];
206

  
207
    		setSelectedProj(0);
208
    		setSelectedZone(-1);
209

  
210
    		if (key.endsWith("4326")) {
211
    			setSelectedDatum(0);
212
    		} else if (key.endsWith("4230")) {
213
    			setSelectedDatum(1);
214
    		} else if (key.endsWith("4274")) {
215
    			setSelectedDatum(2);
216
    		} else if (key.endsWith("4267")) {
217
    			setSelectedDatum(3);
218
    		} else if (key.endsWith("4269")) {
219
    			setSelectedDatum(4);
220
    		} else if (key.endsWith("4247")) {
221
    			setSelectedDatum(5);
222
    		} else if (key.endsWith("4807")) {
223
    			setSelectedDatum(6);
224
    		} else if (key.endsWith("4258")) {
225
    			setSelectedDatum(7);
226
    		} else if (key.endsWith("30100")) {
227
    			setSelectedDatum(8);
228
    		} else if (key.endsWith("49900")) {
229
    			setSelectedDatum(9);
230
    		} else if (key.endsWith("4221")) {
231
    			setSelectedDatum(10);
232
    		} else if (key.endsWith("4171")) {
233
    			setSelectedDatum(11);
234
    		} else if (key.startsWith("326")) {
235
    			setSelectedDatum(0);
236
    			setSelectedProj(1);
237
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));            		
238
    		} else if (key.startsWith("230")) {
239
    			setSelectedDatum(1);
240
    			setSelectedProj(1);
241
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
242
    		} else if (key.startsWith("267")) {
243
    			setSelectedDatum(3);
244
    			setSelectedProj(1);
245
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
246
    		} else if (key.startsWith("269")) {
247
    			setSelectedDatum(4);
248
    			setSelectedProj(1);
249
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
250
    		} else if (key.startsWith("247")) {
251
    			setSelectedDatum(5);
252
    			setSelectedProj(1);
253
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
254
    		} else if (key.startsWith("258")) {
255
    			setSelectedDatum(7);
256
    			setSelectedProj(1);
257
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(3)));
258
    		} else if (key.startsWith("221")) {
259
    			setSelectedDatum(10);
260
    			setSelectedProj(1);
261
    			setSelectedZone("Huso "+ Integer.parseInt(key.substring(4)));
262
    		} else if (key.endsWith("27492")) { // Datum 73 / Modified Portuguese Grid
263
    			setSelectedDatum(2);
264
    			setSelectedProj(1);
265
    			setSelectedZone(-1);
266
    		} else if (key.endsWith("42101")) { // WGS 84 / LCC Canada
267
    			setSelectedDatum(0);
268
    			setSelectedProj(2);
269
    			setSelectedZone(-1);
270
    		} else if (key.endsWith("9804")) { // WGS 84 / Mercator
271
    			setSelectedDatum(0);
272
    			setSelectedProj(3);
273
    			setSelectedZone(-1);
274
    		} else if (key.endsWith("30100")) { // Moon
275
    			setSelectedDatum(8);
276
    			setSelectedProj(0);
277
    			setSelectedZone(-1);
278
    		} else if (key.endsWith("49900")) { // Mars
279
    			setSelectedDatum(9);
280
    			setSelectedProj(0);
281
    			setSelectedZone(-1);
282
    		} else if (key.endsWith("42304")) { // NAD83 /  / LCC Canada
283
    			setSelectedDatum(4);
284
    			setSelectedProj(2);
285
    			setSelectedZone(-1);
286
    		} else if (key.endsWith("27582")) { // NTFParis /  / Lambert Etendu
287
    			setSelectedDatum(6);
288
    			setSelectedProj(1);
289
    			setSelectedZone(-1);
290
    		} else if (key.equals("2154")) { // RGF93 /  / Lambert 93
291
    			setSelectedDatum(11);
292
    			setSelectedProj(1);
293
    			setSelectedZone(-1);         
294
    		} else  {
295
    			System.err.println("CAGADA EN EL PARSING DE LA PROYECCION: " + key);
296
    		}
297
    	} else {
298
    	    selectedDatum = 0;
299
    	    selectedProj = 0;
300
    	    selectedZone = 0;
301
    	}
302
    }
303

  
304
    public IProjection getProjection() {
305
        IProjection proj = null;
306
        String datum = "326";
307

  
308
        if (selectedDatum == 0) {
309
            datum = "326";
310
            if (selectedProj == 0)
311
                return new ProjectionPool().get("EPSG:4"+datum);
312
            else if (selectedProj == 1) {
313
                String zone = Integer.toString(selectedZone + 1);
314
                if (selectedZone < 9) zone = "0" + zone;
315
                return new ProjectionPool().get("EPSG:" + datum + zone);
316
            } else if (selectedProj == 2)
317
                return new ProjectionPool().get("EPSG:42101");
318
            else if (selectedProj == 3)
319
                return new ProjectionPool().get("EPSG:9804");
320
            
321
        } else if (selectedDatum == 1) {
322
            datum = "230";
323
            if (selectedProj == 0)
324
                return new ProjectionPool().get("EPSG:4"+datum);
325
            else if (selectedProj == 1) {
326
                String zone = Integer.toString(selectedZone + 1);
327
                if (selectedZone < 9) zone = "0" + zone;
328
                return new ProjectionPool().get("EPSG:" + datum + zone);
329
            } 
330
            
331
        } else if (selectedDatum == 2) { // Lisboa 73
332
            datum = "274";
333
            if (selectedProj == 0)
334
                return new ProjectionPool().get("EPSG:4"+datum);
335
            else if (selectedProj == 1)
336
                return new ProjectionPool().get("EPSG:"+datum+"92");
337
            
338
       } else if (selectedDatum == 3) {
339
            datum = "267";
340
            if (selectedProj == 0)
341
                return new ProjectionPool().get("EPSG:4"+datum);
342
            else if (selectedProj == 1) {
343
                String zone = Integer.toString(selectedZone + 3);
344
                if (selectedZone+3 <= 9) zone = "0" + zone;
345
                return new ProjectionPool().get("EPSG:" + datum + zone);
346
            }
347
            
348
        } else if (selectedDatum == 4) {
349
            datum = "269";
350
            if (selectedProj == 0)
351
                return new ProjectionPool().get("EPSG:4"+datum);
352
            else if (selectedProj == 1) {
353
                String zone = Integer.toString(selectedZone + 3);
354
                if (selectedZone+3 <= 9) zone = "0" + zone;
355
                return new ProjectionPool().get("EPSG:" + datum + zone);
356
            } else if (selectedProj == 2)
357
                return new ProjectionPool().get("EPSG:42304");
358
            
359
        } else if (selectedDatum == 5) {
360
            datum = "247";
361
            if (selectedProj == 0)
362
                return new ProjectionPool().get("EPSG:4"+datum);
363
            else if (selectedProj == 1) {
364
                String zone = Integer.toString(selectedZone + 18);
365
                return new ProjectionPool().get("EPSG:" + datum + zone);
366
            }
367
            
368
        } else if (selectedDatum == 6) {
369
            datum = "807";
370
            if (selectedProj == 0)
371
                return new ProjectionPool().get("EPSG:4"+datum);
372
            else if (selectedProj == 1)
373
            	return new ProjectionPool().get("EPSG:27582");
374
            
375
        } else if (selectedDatum == 7) {
376
            datum = "258";
377
            if (selectedProj == 0)
378
                return new ProjectionPool().get("EPSG:4"+datum);
379
            else if (selectedProj == 1) {
380
                String zone = Integer.toString(selectedZone + 28);
381
                return new ProjectionPool().get("EPSG:" + datum + zone);
382
            }
383
            
384
        } else if (selectedDatum == 8) {
385
            datum = "30100";
386
            return new ProjectionPool().get("IAU2000:" + datum);
387
            
388
        } else if (selectedDatum == 9) {
389
            datum = "49900";
390
            return new ProjectionPool().get("IAU2000:" + datum);
391
            
392
        } else if (selectedDatum == 10) {
393
            datum = "221";
394
            if (selectedProj == 0)
395
                return new ProjectionPool().get("EPSG:4"+datum);
396
            else if (selectedProj == 1) {
397
                String zone = Integer.toString(selectedZone + 1);
398
                return new ProjectionPool().get("EPSG:" + datum + "9"+ zone);
399
            } 
400
            
401
        } else if (selectedDatum == 11) {
402
        	if (selectedProj == 0)
403
                return new ProjectionPool().get("EPSG:4171");
404
            else if (selectedProj == 1)
405
                return new ProjectionPool().get("EPSG:2154");
406
        }
407

  
408
        if (selectedProj == 2) {
409
            return new ProjectionPool().get("EPSG:27492");
410
        } else if (selectedProj == 3) {
411
            return new ProjectionPool().get("EPSG:42101");
412
        } else if (selectedProj == 4) {
413
            return new ProjectionPool().get("EPSG:42304");
414
        } else if (selectedProj == 5) {
415
            return new ProjectionPool().get("EPSG:27582");
416
        } else if (selectedProj == 6) {
417
            return new ProjectionPool().get("EPSG:2154");
418
        } else if (selectedProj == 7) {
419
            return new ProjectionPool().get("EPSG:9804");
420
        } else if (selectedProj == 8) {
421
        	datum = "221";
422
      	   String zone = "9";
423
            //if (selectedDatum == 10) {
424
                 if (selectedZone < 1) {
425
                     zone += "1";
426
                 } else if (selectedZone > 7) {
427
                     zone += "7";
428
                 } else
429
                 	zone += (selectedZone+1)+"";
430
            // }
431
             return new ProjectionPool().get("EPSG:" + datum + zone);
432
         }
433

  
434

  
435
        if (selectedProj == 0) {
436
            return new ProjectionPool().get("EPSG:4" + datum);
437
        } else if (selectedProj == 1) {
438
            String Zone = Integer.toString(selectedZone + 1);
439

  
440
            if (selectedZone < 9) {
441
                Zone = "0" + Zone;
442
            }
443

  
444
            if ((selectedDatum == 2) || (selectedDatum == 3)) {
445
                if (selectedZone < 3) {
446
                    Zone = "03";
447
                }
448

  
449
                if (selectedZone > 23) {
450
                    Zone = "23";
451
                }
452
            }
453

  
454
            if (selectedDatum == 5) {
455
                if (selectedZone < 18) {
456
                    Zone = "18";
457
                }
458

  
459
                if (selectedZone > 22) {
460
                    Zone = "22";
461
                }
462
            }
463

  
464
            if (selectedDatum == 7) {
465
                if (selectedZone < 28) {
466
                    Zone = "28";
467
                }
468

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff