root / trunk / libraries / libJCRS / src / org / gvsig / crs / gui / panels / CrsRecentsPanel.java @ 8151
History | View | Annotate | Download (4.69 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 |
private JLabel getJLabel(){ |
57 |
JLabel label = new JLabel(); |
58 |
label.setPreferredSize(new Dimension(500, 30)); |
59 |
label.setText(PluginServices.getText(this, "?ltimos CRS utilizados:")); |
60 |
return label;
|
61 |
} |
62 |
|
63 |
private JScrollPane getJScrollPane() { |
64 |
if (jScrollPane == null) { |
65 |
jScrollPane = new JScrollPane(); |
66 |
jScrollPane.setPreferredSize(new Dimension(500,150)); |
67 |
jScrollPane.setBorder( |
68 |
BorderFactory.createCompoundBorder(
|
69 |
BorderFactory.createCompoundBorder(
|
70 |
BorderFactory.createTitledBorder(PluginServices.getText(this,"Coordinate Reference Systems")), |
71 |
BorderFactory.createEmptyBorder(5,5,5,5)), |
72 |
jScrollPane.getBorder())); |
73 |
jScrollPane.setViewportView(getJTable()); |
74 |
} |
75 |
return jScrollPane;
|
76 |
} |
77 |
|
78 |
public JTable getJTable() { |
79 |
if (jTable == null) { |
80 |
String[] columnNames= {"Fuente","C?digo","Nombre"}; |
81 |
Object[][]data = {}; |
82 |
dtm = new DefaultTableModel(data, columnNames) |
83 |
{ |
84 |
public boolean isCellEditable(int row, int column) { |
85 |
return false; |
86 |
} |
87 |
/*
|
88 |
* metodo necesario para cuando utilizamos tablas ordenadas
|
89 |
* ya que sino al ordenar por algun campo no se queda con el orden
|
90 |
* actual al seleccionar una fila (non-Javadoc)
|
91 |
* @see javax.swing.table.TableModel#getColumnClass(int)
|
92 |
*/
|
93 |
public Class getColumnClass(int column) |
94 |
{ |
95 |
return getValueAt(0, column).getClass(); |
96 |
} |
97 |
}; |
98 |
sorter = new TableSorter(dtm);
|
99 |
|
100 |
jTable = new JTable(sorter); |
101 |
sorter.setTableHeader(jTable.getTableHeader()); |
102 |
jTable.setCellSelectionEnabled(false);
|
103 |
jTable.setRowSelectionAllowed(true);
|
104 |
jTable.setColumnSelectionAllowed(false);
|
105 |
jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
106 |
TableColumn column = null; |
107 |
for (int i = 0; i < 3; i++) { |
108 |
column = jTable.getColumnModel().getColumn(i); |
109 |
if (i == 0) { |
110 |
column.setPreferredWidth(60); //code column is shorter |
111 |
}else if (i == 2) { |
112 |
column.setPreferredWidth(275);
|
113 |
} |
114 |
else {
|
115 |
column.setPreferredWidth(160);
|
116 |
} |
117 |
} |
118 |
} |
119 |
return jTable;
|
120 |
} |
121 |
|
122 |
public ICrs getProjection() {
|
123 |
try {
|
124 |
String txt = getWKT();
|
125 |
ICrs crs = new CrsFactory().getCRS(getCodeCRS(), txt);
|
126 |
return crs ;
|
127 |
} catch (CrsException e) {
|
128 |
e.printStackTrace(); |
129 |
} |
130 |
return null; |
131 |
} |
132 |
|
133 |
public void setWKT(String authority){ |
134 |
int cod = getCodeCRS();
|
135 |
for (int i = 0; i < crsDataArray.length; i++){ |
136 |
if (crsDataArray[i].getCode() == cod && authority.equals(crsDataArray[i].getAuthority())){
|
137 |
cadWKT = crsDataArray[i].getWkt(); |
138 |
break;
|
139 |
} |
140 |
} |
141 |
|
142 |
} |
143 |
|
144 |
public String getWKT(){ |
145 |
return cadWKT;
|
146 |
} |
147 |
|
148 |
public void setCodeCRS(int code) { |
149 |
codeCRS = code; |
150 |
} |
151 |
|
152 |
public int getCodeCRS() { |
153 |
return codeCRS;
|
154 |
} |
155 |
|
156 |
public void setProjection(IProjection crs) { |
157 |
//setCrs((ICrs) crs);
|
158 |
} |
159 |
|
160 |
/**
|
161 |
* Carga en la tabla los CRSs leidos del sistema de persistencia.
|
162 |
*/
|
163 |
public void loadRecents(){ |
164 |
RecentCRSsPersistence persistence = new RecentCRSsPersistence();
|
165 |
crsDataArray = persistence.getArrayOfCrsData(); |
166 |
|
167 |
for (int iRow = crsDataArray.length-1;iRow>=0;iRow--){ |
168 |
Object row[] ={crsDataArray[iRow].getAuthority(),Integer.toString(crsDataArray[iRow].getCode()),crsDataArray[iRow].getName()}; |
169 |
dtm.addRow(row); |
170 |
} |
171 |
|
172 |
/*
|
173 |
/*Seleccionar el primer registro.
|
174 |
*/
|
175 |
int numr = dtm.getRowCount();
|
176 |
if (numr != 0 ) |
177 |
this.getJTable().setRowSelectionInterval(0,0); |
178 |
} |
179 |
|
180 |
} |