Statistics
| Revision:

root / trunk / libraries / libJCRS / src / org / gvsig / crs / gui / panels / CrsRecentsPanel.java @ 8146

History | View | Annotate | Download (4.63 KB)

1
package org.gvsig.crs.gui.panels;
2

    
3
import java.awt.Dimension;
4
import java.awt.FlowLayout;
5
import java.awt.GridLayout;
6

    
7
import javax.swing.BorderFactory;
8
import javax.swing.JLabel;
9
import javax.swing.JPanel;
10
import javax.swing.JScrollPane;
11
import javax.swing.JTable;
12
import javax.swing.ListSelectionModel;
13
import javax.swing.event.TableModelListener;
14
import javax.swing.table.DefaultTableModel;
15
import javax.swing.table.TableColumn;
16

    
17
import org.cresques.cts.IProjection;
18
import org.gvsig.crs.CrsException;
19
import org.gvsig.crs.CrsFactory;
20
import org.gvsig.crs.ICrs;
21
import org.gvsig.crs.persistence.CrsData;
22
import org.gvsig.crs.persistence.RecentCRSsPersistence;
23

    
24
import com.iver.andami.PluginServices;
25
import com.iver.cit.gvsig.gui.TableSorter;
26

    
27
public class CrsRecentsPanel extends JPanel {
28

    
29
        /**
30
         * 
31
         */
32
        private static final long serialVersionUID = 1L;
33
        
34
        public JTable jTable = null;
35
        private JScrollPane jScrollPane = null;
36
        public DefaultTableModel dtm = null;
37
        public TableSorter sorter = null;
38
        private CrsData crsDataArray[] = null;
39
        
40
        public int selectedRowTable = -1;
41
        private int codeCRS = -1;        
42
        String cadWKT = "";
43
        
44
        public CrsRecentsPanel() {
45
                super();
46
                initialize();
47
        }
48
        
49
        private void initialize(){
50
                this.setLayout(new GridLayout(1,2));
51
                this.setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
52
                this.add(getJLabel(), null);
53
                this.add(getJScrollPane(), null);
54
                
55
                /*
56
                 * Rellenar la tabla de recientes:
57
                 */
58
                RecentCRSsPersistence persistence = new RecentCRSsPersistence();
59
                crsDataArray = persistence.getArrayOfCrsData();
60
                
61
                for (int iRow = crsDataArray.length-1;iRow>=0;iRow--){
62
                        Object row[] ={crsDataArray[iRow].getAuthority(),Integer.toString(crsDataArray[iRow].getCode()),crsDataArray[iRow].getName()};
63
                        dtm.addRow(row);
64
                }
65
                
66
                /*
67
                /*Seleccionar el primer registro.
68
                 */
69
                int numr = dtm.getRowCount();
70
                if (numr != 0 )
71
                        this.getJTable().setRowSelectionInterval(0,0);
72
        }
73
        
74
        private JLabel getJLabel(){
75
                JLabel label = new JLabel();
76
                label.setPreferredSize(new Dimension(500, 30));
77
                label.setText(PluginServices.getText(this, "?ltimos CRS utilizados:"));
78
                return label;
79
        }
80
        
81
        private JScrollPane getJScrollPane() {
82
                if (jScrollPane == null) {
83
                        jScrollPane = new JScrollPane();
84
                        jScrollPane.setPreferredSize(new Dimension(500,150));
85
                        jScrollPane.setBorder(
86
                                    BorderFactory.createCompoundBorder(
87
                                        BorderFactory.createCompoundBorder(
88
                                                        BorderFactory.createTitledBorder(PluginServices.getText(this,"Coordinate Reference Systems")),
89
                                                        BorderFactory.createEmptyBorder(5,5,5,5)),
90
                                                        jScrollPane.getBorder()));
91
                        jScrollPane.setViewportView(getJTable());
92
                }
93
                return jScrollPane;
94
        }
95
        
96
        public JTable getJTable() {
97
                if (jTable == null) {
98
                        String[] columnNames= {"Fuente","C?digo","Nombre"};
99
                        Object[][]data = {};                        
100
                        dtm = new DefaultTableModel(data, columnNames)
101
                         {
102
                                public boolean isCellEditable(int row, int column) {
103
                                        return false;
104
                                }
105
                                /*
106
                                 * metodo necesario para cuando utilizamos tablas ordenadas
107
                                 * ya que sino al ordenar por algun campo no se queda con el orden
108
                                 * actual al seleccionar una fila (non-Javadoc)
109
                                 * @see javax.swing.table.TableModel#getColumnClass(int)
110
                                 */
111
                                public Class getColumnClass(int column)
112
                                {
113
                                        return getValueAt(0, column).getClass();
114
                                }
115
                                };
116
                        sorter = new TableSorter(dtm);                        
117

    
118
                        jTable = new JTable(sorter);
119
                        sorter.setTableHeader(jTable.getTableHeader());
120
                        jTable.setCellSelectionEnabled(false);
121
                        jTable.setRowSelectionAllowed(true);
122
                        jTable.setColumnSelectionAllowed(false);
123
                        jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
124
                        TableColumn column = null;
125
                        for (int i = 0; i < 3; i++) {
126
                            column = jTable.getColumnModel().getColumn(i);
127
                            if (i == 0) {
128
                                column.setPreferredWidth(60); //code column is shorter                                     
129
                            }else if (i == 2) {
130
                                    column.setPreferredWidth(275);
131
                            }
132
                            else {                            
133
                                column.setPreferredWidth(160);
134
                            }
135
                        }        
136
                }
137
                return jTable;                
138
        }
139
        
140
        public ICrs getProjection() {
141
                try {
142
                        String txt = getWKT();                        
143
                        ICrs crs = new CrsFactory().getCRS(getCodeCRS(), txt); 
144
                        return crs ;
145
                } catch (CrsException e) {
146
                        e.printStackTrace();
147
                }
148
                return null;
149
        }
150
        
151
        public void setWKT(String authority){                
152
                int cod = getCodeCRS();
153
                for (int i = 0; i < crsDataArray.length; i++){
154
                        if (crsDataArray[i].getCode() == cod && authority.equals(crsDataArray[i].getAuthority())){
155
                                cadWKT = crsDataArray[i].getWkt();
156
                                break;
157
                        }
158
                }                
159
        
160
        }
161
                
162
        public String getWKT(){
163
                return cadWKT;
164
        }
165
        
166
        public void setCodeCRS(int code) {
167
                codeCRS = code;
168
        }
169
        
170
        public int getCodeCRS() {
171
                return codeCRS;
172
        }
173
        
174
        public void setProjection(IProjection crs) {
175
                //setCrs((ICrs) crs);
176
        }
177

    
178
}