Statistics
| Revision:

root / trunk / extensions / extGeoreferencing / src / com / iver / cit / gvsig / gui / Panels / DataPointsTabPanel.java @ 3195

History | View | Annotate | Download (6.61 KB)

1 3012 nacho
package com.iver.cit.gvsig.gui.Panels;
2
3 3064 nacho
import java.awt.Component;
4 3133 nacho
import java.awt.Toolkit;
5
import java.awt.event.MouseEvent;
6 3064 nacho
import java.awt.geom.Point2D;
7
8
import javax.swing.JOptionPane;
9 3014 nacho
import javax.swing.JPanel;
10 3012 nacho
import javax.swing.JTabbedPane;
11 3040 nacho
import javax.swing.event.ChangeEvent;
12
import javax.swing.event.ChangeListener;
13 3012 nacho
14 3040 nacho
import com.iver.andami.PluginServices;
15
import com.iver.cit.gvsig.fmap.layers.FLayer;
16 3064 nacho
import com.iver.cit.gvsig.fmap.layers.FLyrGeoRaster;
17 3040 nacho
import com.iver.cit.gvsig.gui.View;
18 3014 nacho
import com.iver.cit.gvsig.gui.Dialogs.GeoreferencingDialog;
19 3012 nacho
20 3040 nacho
public class DataPointsTabPanel extends JPanel implements ChangeListener{
21
22 3014 nacho
        private GeoreferencingDialog parent = null;
23 3012 nacho
        private SelectPointsPanel selectPointsPanel = null;
24
        private TablePointsPanel tablePointsPanel = null;
25 3014 nacho
        private JTabbedPane tbPoints = null;
26 3040 nacho
        private int widthTab = 380, heightTab = 185;
27 3012 nacho
28
        /**
29
         * This is the default constructor
30
         */
31 3014 nacho
        public DataPointsTabPanel(GeoreferencingDialog p) {
32 3012 nacho
                super();
33 3014 nacho
                this.parent = p;
34 3012 nacho
                initialize();
35
        }
36
37
        /**
38
         * This method initializes this
39
         *
40
         * @return void
41
         */
42
        private void initialize() {
43 3040 nacho
        this.setPreferredSize(new java.awt.Dimension(widthTab, heightTab));
44
        this.setSize(new java.awt.Dimension(widthTab, heightTab));
45 3012 nacho
        this.setLocation(new java.awt.Point(0,0));
46 3014 nacho
        this.add(getTbPoints(), null);
47 3012 nacho
        }
48
49
        /**
50
         * @return Returns the selectPointsPanel.
51
         */
52 3014 nacho
        public TablePointsPanel getTablePointsPanel() {
53
                if(tablePointsPanel == null){
54
                        tablePointsPanel = new TablePointsPanel(parent);
55
                }
56
                return tablePointsPanel;
57 3012 nacho
        }
58
59
        /**
60 3014 nacho
         * @return Returns the selectPointsPanel.
61 3012 nacho
         */
62 3014 nacho
        public SelectPointsPanel getSelectPointsPanel() {
63
                if(selectPointsPanel == null){
64
                        selectPointsPanel = new SelectPointsPanel(parent);
65
                }
66
                return selectPointsPanel;
67 3012 nacho
        }
68 3014 nacho
69 3012 nacho
        /**
70 3014 nacho
         * This method initializes jTabbedPane
71
         *
72
         * @return javax.swing.JTabbedPane
73 3012 nacho
         */
74 3064 nacho
        public JTabbedPane getTbPoints() {
75 3014 nacho
                if (tbPoints == null) {
76
                        tbPoints = new JTabbedPane();
77 3040 nacho
                        tbPoints.setSize(widthTab, heightTab);
78
                        tbPoints.setPreferredSize(new java.awt.Dimension(widthTab, heightTab));
79 3014 nacho
                        tbPoints.addTab("georef", this.getSelectPointsPanel());
80
                        tbPoints.addTab("table", this.getTablePointsPanel());
81 3040 nacho
                        tbPoints.addChangeListener(this);
82 3014 nacho
                }
83
                return tbPoints;
84 3012 nacho
        }
85 3014 nacho
86 3040 nacho
        /**
87 3064 nacho
         * Cuando cambiamos de tab controlamos lo siguiente:
88
         * <UL>
89
         * <LI>Comprobamos que los TextField del selector de puntos no esten en
90
         * blanco</LI>
91
         * <LI>Controlamos que la ventana sea redimensionable solo cuando
92
         * est? en el tab de tabla</LI>
93
         * <LI>Actualizamos los controles de la ventana a la que vamos con lo
94
         * que se seleccion? en la ventana de la que venimos</LI>
95
         * </UL>
96 3040 nacho
         */
97
        public void stateChanged(ChangeEvent ev) {
98 3129 nacho
99 3040 nacho
                if (((JTabbedPane)ev.getSource()).getSelectedIndex() == 0){
100
                        parent.getFrame().setResizable(false);
101 3064 nacho
                        if(getTablePointsPanel().getTableControlerPanel().getSelectedIndex() != -1)
102
                                getSelectPointsPanel().updateComboPoint(
103
                                                getTablePointsPanel().getTableControlerPanel().getSelectedIndex()
104
                                                );
105 3119 nacho
                        //Ponemos los paneles en su tama?o original
106
                        parent.resetSize();
107 3040 nacho
                }
108
109
                if (((JTabbedPane)ev.getSource()).getSelectedIndex() == 1){
110 3129 nacho
111
                        //Si la ventana ha sido redimensionada ponemos la dimensi?n temporal
112
113 3133 nacho
                        if(parent.getTmpWidth() > parent.getNormalWidth()){
114
115
                                if(parent.isEnlarge()){
116
                                        parent.newFrameSize(parent.getTmpWidth(), parent.getEnlargeHeight());
117
                                        parent.getFrame().setSize(parent.getTmpWidth(), parent.getEnlargeHeight() + 10);
118
                                }else{
119
                                        parent.newFrameSize(parent.getTmpWidth(), parent.getNormalHeight());
120
                                        parent.getFrame().setSize(parent.getTmpWidth(), parent.getNormalHeight() + 10);
121
                                }
122 3129 nacho
                        }
123
124 3064 nacho
                        try{
125
                                getSelectPointsPanel().checkInfoPointText();
126
                        }catch(NoSuchFieldException exc){
127
                                //Si no se han salvado los valores de un punto cuando se activa
128
                                //el cambio de tab las coordenadas a las que no se les ha dado
129
                                //valor se pondr?n a 0 y se guardar?n.
130
                                double tx = 0D, ty = 0D, lon = 0D, lat = 0D;
131
                                try{
132
                                        DataPointPanel dp = getSelectPointsPanel().getDataPointPanel();
133
                                        if(dp.getTX() != null && !dp.getTX().equals(""))
134
                                                tx = Double.valueOf(getSelectPointsPanel().getDataPointPanel().getTX().getText()).doubleValue();
135
                                        if(dp.getTY() != null && !dp.getTY().equals(""))
136
                                                ty = Double.valueOf(getSelectPointsPanel().getDataPointPanel().getTY().getText()).doubleValue();
137
                                        if(dp.getLongitud() != null && !dp.getLongitud().equals(""))
138
                                                lon = Double.valueOf(getSelectPointsPanel().getDataPointPanel().getLongitud().getText()).doubleValue();
139
                                        if(dp.getLatitud() != null && !dp.getLatitud().equals(""))
140
                                                lat = Double.valueOf(getSelectPointsPanel().getDataPointPanel().getLatitud().getText()).doubleValue();
141
                                }catch(NumberFormatException ex){
142
143
                                }
144
                                Point2D pixel = new Point2D.Double();
145
                                pixel.setLocation(tx, ty);
146
                                Point2D map = new Point2D.Double();
147
                                map.setLocation(lon, lat);
148
149 3102 nacho
                                View  theView = null;
150
                            try{
151
                                    theView = (View)PluginServices.getMDIManager().getActiveView();
152
                            }catch(ClassCastException exce){
153
                                    return;
154
                            }
155 3192 nacho
156
                                if(parent.getLyrGeoRaster() != null){
157 3064 nacho
                                        try{
158 3192 nacho
                                                parent.getLyrGeoRaster().updateData(getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedIndex() + 1,
159 3064 nacho
                                                                                                pixel,
160
                                                                                                map,
161
                                                                                                parent,
162 3195 nacho
                                                                                                theView);
163 3064 nacho
                                        }catch(ArrayIndexOutOfBoundsException ex){
164
                                                //Si da una excepci?n de este tipo es que no hay cargado nin?n punto
165
                                                //por lo que no hacemos nada.
166 3102 nacho
                                        }catch(ClassCastException ex){
167
                                                //Si da una excepci?n de este tipo lo m?s probable es que no haya una
168
                                                //vista activa y no se pueda crear una capa de puntos. Tampoco se hace nada.
169 3064 nacho
                                        }
170
                                }else{
171
                                        JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
172
                                                        PluginServices.getText(this, "error_capa_puntos"));
173
                                }
174
                        }
175 3142 nacho
176 3064 nacho
                        if(getSelectPointsPanel().getTableControlerPanel().getSelectedIndex() != -1)
177
                                getTablePointsPanel().updateComboPoint(
178
                                        getSelectPointsPanel().getTableControlerPanel().getSelectedIndex()
179
                                        );
180 3142 nacho
181
                        parent.getFrame().setResizable(true);
182 3040 nacho
                }
183
184
        }
185 3012 nacho
186 3040 nacho
        /**
187
         * Calculo del nuevo tama?o a partir de un frame redimensionado
188
         * @param w Ancho del frame
189
         * @param h Alto del frame
190
         */
191
        public void newFrameSize(int w, int h){
192 3119 nacho
                int newWidth = w;
193 3040 nacho
194 3119 nacho
        this.setSize(new java.awt.Dimension(newWidth, heightTab));
195
        this.setPreferredSize(new java.awt.Dimension(newWidth, heightTab));
196
        this.getTbPoints().setSize(new java.awt.Dimension(newWidth, heightTab));
197
        this.getTbPoints().setPreferredSize(new java.awt.Dimension(newWidth, heightTab));
198
        this.getTablePointsPanel().newFrameSize(newWidth, h);
199 3040 nacho
        }
200
201
}