Revision 11613 branches/v10/extensions/extAnnotations/src/com/iver/cit/gvsig/project/documents/view/legend/gui/FThemeManagerWindow2.java
FThemeManagerWindow2.java | ||
---|---|---|
107 | 107 |
* @author jmorell (jose.morell@gmail.com) |
108 | 108 |
* @version 24-ene-2005 |
109 | 109 |
*/ |
110 |
public final class FThemeManagerWindow2 extends AbstractPanel implements IWindow { |
|
110 |
public final class FThemeManagerWindow2 extends AbstractPanel implements |
|
111 |
IWindow { |
|
111 | 112 |
private MapContext mapContext; |
113 |
|
|
112 | 114 |
private FLayer layer; |
113 |
private Legend renderer; // Le asignaremos la leyenda del primer tema activo. |
|
115 |
|
|
116 |
private Legend renderer; // Le asignaremos la leyenda del primer tema |
|
117 |
// activo. |
|
118 |
|
|
114 | 119 |
private FPanelScaleManager fPanelScaleManager; |
115 |
private FPanelLegendManager fPanelLegendManager; |
|
116 |
private PanelLegendAnnotation panelLegendAnnotation; |
|
117 |
private LinkPanel linkPanel; |
|
118 |
private JTabbedPane organizador = new JTabbedPane(); // @jve:decl-index=0: |
|
119 |
private ComandosListener m_actionListener = new ComandosListener(this); |
|
120 |
//private ProjectView view; |
|
120 |
|
|
121 |
private FPanelLegendManager fPanelLegendManager; |
|
122 |
|
|
123 |
private PanelLegendAnnotation panelLegendAnnotation; |
|
124 |
|
|
125 |
private LinkPanel linkPanel; |
|
126 |
|
|
127 |
private JTabbedPane organizador = new JTabbedPane(); // @jve:decl-index=0: |
|
128 |
|
|
129 |
private ComandosListener m_actionListener = new ComandosListener(this); |
|
130 |
|
|
131 |
// private ProjectView view; |
|
121 | 132 |
private NumberFormat nf = NumberFormat.getInstance(); |
122 | 133 |
|
123 |
/**
|
|
124 |
* Creates new form JPanel
|
|
125 |
*/
|
|
126 |
public FThemeManagerWindow2() {
|
|
127 |
initialize();
|
|
134 |
/**
|
|
135 |
* Creates new form JPanel
|
|
136 |
*/
|
|
137 |
public FThemeManagerWindow2() {
|
|
138 |
initialize();
|
|
128 | 139 |
this.setSize(650, 420); |
129 |
}
|
|
140 |
}
|
|
130 | 141 |
|
131 |
/**
|
|
132 |
* Sobrecarga del constructor. Este se utiliza cuando se llama a este
|
|
133 |
* di?logo desde la barra de comandos.
|
|
134 |
*
|
|
135 |
*/
|
|
136 |
public FThemeManagerWindow2(FLayer l, MapContext fMap) {
|
|
137 |
layer = l;
|
|
138 |
mapContext = fMap;
|
|
139 |
initialize();
|
|
140 |
try {
|
|
142 |
/**
|
|
143 |
* Sobrecarga del constructor. Este se utiliza cuando se llama a este
|
|
144 |
* di?logo desde la barra de comandos.
|
|
145 |
*
|
|
146 |
*/
|
|
147 |
public FThemeManagerWindow2(FLayer l, MapContext fMap) {
|
|
148 |
layer = l;
|
|
149 |
mapContext = fMap;
|
|
150 |
initialize();
|
|
151 |
try {
|
|
141 | 152 |
ClassifiableVectorial aux = (ClassifiableVectorial) layer; |
142 | 153 |
renderer = (Legend) aux.getLegend().cloneLegend(); |
143 | 154 |
fPanelScaleManager.setMapContext(mapContext); |
... | ... | |
150 | 161 |
e1.printStackTrace(); |
151 | 162 |
} |
152 | 163 |
|
153 |
fPanelScaleManager.setLayer(layer, renderer);
|
|
154 |
if (!(layer instanceof Annotation_Layer)){
|
|
155 |
fPanelLegendManager.setLayer(layer, renderer);
|
|
156 |
}
|
|
157 |
organizador.setSelectedIndex(0);
|
|
164 |
fPanelScaleManager.setLayer(layer, renderer);
|
|
165 |
if (!(layer instanceof Annotation_Layer)) {
|
|
166 |
fPanelLegendManager.setLayer(layer, renderer);
|
|
167 |
}
|
|
168 |
organizador.setSelectedIndex(0);
|
|
158 | 169 |
|
159 | 170 |
this.setSize(650, 420); |
160 |
}
|
|
171 |
}
|
|
161 | 172 |
|
162 | 173 |
/** |
163 | 174 |
* This method initializes this |
164 |
* |
|
175 |
*
|
|
165 | 176 |
* @return void |
166 | 177 |
*/ |
167 |
private void initialize() {
|
|
178 |
private void initialize() { |
|
168 | 179 |
|
169 | 180 |
fPanelScaleManager = new FPanelScaleManager(); |
170 | 181 |
fPanelLegendManager = new FPanelLegendManager(); |
171 |
panelLegendAnnotation=new PanelLegendAnnotation();
|
|
182 |
panelLegendAnnotation = new PanelLegendAnnotation();
|
|
172 | 183 |
|
173 |
organizador.addTab(PluginServices.getText(this,"General"), fPanelScaleManager); |
|
174 |
if (layer instanceof Annotation_Layer){ |
|
175 |
organizador.addTab(PluginServices.getText(this,"annotations"),panelLegendAnnotation); |
|
176 |
}else{ |
|
177 |
organizador.addTab(PluginServices.getText(this,"Simbologia"), fPanelLegendManager); |
|
184 |
organizador.addTab(PluginServices.getText(this, "General"), |
|
185 |
fPanelScaleManager); |
|
186 |
if (layer instanceof Annotation_Layer) { |
|
187 |
organizador.addTab(PluginServices.getText(this, "annotations"), |
|
188 |
panelLegendAnnotation); |
|
189 |
} else { |
|
190 |
organizador.addTab(PluginServices.getText(this, "Simbologia"), |
|
191 |
fPanelLegendManager); |
|
178 | 192 |
} |
179 |
JPanel panelButtons = new JPanel();
|
|
193 |
JPanel panelButtons = new JPanel();
|
|
180 | 194 |
|
181 |
JButton btnAceptar = new JButton(PluginServices.getText(this,"Aceptar")); |
|
182 |
btnAceptar.setActionCommand("OK"); |
|
183 |
btnAceptar.addActionListener(m_actionListener); |
|
195 |
JButton btnAceptar = new JButton(PluginServices |
|
196 |
.getText(this, "Aceptar")); |
|
197 |
btnAceptar.setActionCommand("OK"); |
|
198 |
btnAceptar.addActionListener(m_actionListener); |
|
184 | 199 |
|
185 |
JButton btnApply = new JButton(PluginServices.getText(this,"Aplicar"));
|
|
186 |
btnApply.setActionCommand("APPLY");
|
|
187 |
btnApply.addActionListener(m_actionListener);
|
|
200 |
JButton btnApply = new JButton(PluginServices.getText(this, "Aplicar"));
|
|
201 |
btnApply.setActionCommand("APPLY");
|
|
202 |
btnApply.addActionListener(m_actionListener);
|
|
188 | 203 |
|
189 |
JButton btnSaveLegend = new JButton(PluginServices.getText(this,"Guardar_leyenda")+"..."); |
|
190 |
btnSaveLegend.setActionCommand("SAVE_LEGEND"); |
|
191 |
btnSaveLegend.addActionListener(m_actionListener); |
|
204 |
JButton btnSaveLegend = new JButton(PluginServices.getText(this, |
|
205 |
"Guardar_leyenda") |
|
206 |
+ "..."); |
|
207 |
btnSaveLegend.setActionCommand("SAVE_LEGEND"); |
|
208 |
btnSaveLegend.addActionListener(m_actionListener); |
|
192 | 209 |
|
193 |
JButton btnLoadLegend = new JButton(PluginServices.getText(this,"Recuperar_leyenda")+"..."); |
|
194 |
btnLoadLegend.setActionCommand("LOAD_LEGEND"); |
|
195 |
btnLoadLegend.addActionListener(m_actionListener); |
|
210 |
JButton btnLoadLegend = new JButton(PluginServices.getText(this, |
|
211 |
"Recuperar_leyenda") |
|
212 |
+ "..."); |
|
213 |
btnLoadLegend.setActionCommand("LOAD_LEGEND"); |
|
214 |
btnLoadLegend.addActionListener(m_actionListener); |
|
196 | 215 |
|
197 |
JButton btnCancelar = new JButton(PluginServices.getText(this,"Cerrar")); |
|
198 |
btnCancelar.setActionCommand("CANCEL"); |
|
199 |
btnCancelar.addActionListener(m_actionListener); |
|
216 |
JButton btnCancelar = new JButton(PluginServices |
|
217 |
.getText(this, "Cerrar")); |
|
218 |
btnCancelar.setActionCommand("CANCEL"); |
|
219 |
btnCancelar.addActionListener(m_actionListener); |
|
200 | 220 |
|
201 |
panelButtons.add(btnApply, null);
|
|
221 |
panelButtons.add(btnApply, null);
|
|
202 | 222 |
|
203 | 223 |
setLayout(new BorderLayout()); |
204 | 224 |
panelButtons.setLayout(null); |
205 |
organizador.setPreferredSize(new java.awt.Dimension(640,390)); |
|
225 |
organizador.setPreferredSize(new java.awt.Dimension(640, 390));
|
|
206 | 226 |
btnAceptar.setBounds(9, 5, 89, 23); |
207 | 227 |
btnApply.setBounds(107, 5, 89, 23); |
208 | 228 |
btnSaveLegend.setBounds(205, 5, 159, 23); |
209 | 229 |
btnLoadLegend.setBounds(373, 5, 159, 23); |
210 | 230 |
btnCancelar.setBounds(541, 5, 89, 23); |
211 |
panelButtons.setPreferredSize(new java.awt.Dimension(493,33)); |
|
231 |
panelButtons.setPreferredSize(new java.awt.Dimension(493, 33));
|
|
212 | 232 |
add(organizador, java.awt.BorderLayout.NORTH); |
213 | 233 |
panelButtons.add(btnAceptar, null); |
214 | 234 |
add(panelButtons, java.awt.BorderLayout.SOUTH); |
215 | 235 |
panelButtons.add(btnSaveLegend, null); |
216 | 236 |
panelButtons.add(btnLoadLegend, null); |
217 | 237 |
panelButtons.add(btnCancelar, null); |
218 |
// if (!(layer instanceof Annotation_Layer)){
|
|
219 |
// btnSaveLegend.setEnabled(false);
|
|
220 |
// btnLoadLegend.setEnabled(false);
|
|
221 |
// }
|
|
238 |
// if (!(layer instanceof Annotation_Layer)){
|
|
239 |
// btnSaveLegend.setEnabled(false);
|
|
240 |
// btnLoadLegend.setEnabled(false);
|
|
241 |
// }
|
|
222 | 242 |
} |
223 | 243 |
|
224 |
|
|
225 |
|
|
226 |
/** |
|
227 |
* En esta funci?n se coge el primer tema activo del TOC y se usa su |
|
228 |
* renderer para inicializar. Hay que llamarla SIEMPRE que se abra el |
|
229 |
* cuadro de di?logo, en el openLegendManager() de la vista. |
|
230 |
* |
|
231 |
* @param mapContext TOC que abre este cuadro de di?logo. |
|
232 |
* @throws DriverException |
|
233 |
*/ |
|
234 |
public void setMapContext(MapContext mapContext) throws DriverException { |
|
235 |
this.mapContext = mapContext; |
|
236 |
layer = getFirstActiveLayerVect(mapContext.getLayers()); |
|
244 |
/** |
|
245 |
* En esta funci?n se coge el primer tema activo del TOC y se usa su |
|
246 |
* renderer para inicializar. Hay que llamarla SIEMPRE que se abra el cuadro |
|
247 |
* de di?logo, en el openLegendManager() de la vista. |
|
248 |
* |
|
249 |
* @param mapContext |
|
250 |
* TOC que abre este cuadro de di?logo. |
|
251 |
* @throws DriverException |
|
252 |
*/ |
|
253 |
public void setMapContext(MapContext mapContext) throws DriverException { |
|
254 |
this.mapContext = mapContext; |
|
255 |
layer = getFirstActiveLayerVect(mapContext.getLayers()); |
|
237 | 256 |
try { |
238 | 257 |
ClassifiableVectorial aux = (ClassifiableVectorial) layer; |
239 | 258 |
renderer = (Legend) aux.getLegend().cloneLegend(); |
... | ... | |
242 | 261 |
e.printStackTrace(); |
243 | 262 |
} |
244 | 263 |
fPanelScaleManager.setMapContext(mapContext); |
245 |
if (!(layer instanceof Annotation_Layer)){ |
|
246 |
fPanelLegendManager.setMapContext(mapContext);
|
|
247 |
}
|
|
248 |
actualizar();
|
|
249 |
}
|
|
264 |
if (!(layer instanceof Annotation_Layer)) {
|
|
265 |
fPanelLegendManager.setMapContext(mapContext);
|
|
266 |
}
|
|
267 |
actualizar();
|
|
268 |
}
|
|
250 | 269 |
|
251 |
/**
|
|
252 |
* DOCUMENT ME!
|
|
253 |
*/
|
|
254 |
private void actualizar() {
|
|
255 |
FLayer lyrSelected = getFirstActiveLayerVect(mapContext.getLayers());
|
|
270 |
/**
|
|
271 |
* DOCUMENT ME!
|
|
272 |
*/
|
|
273 |
private void actualizar() {
|
|
274 |
FLayer lyrSelected = getFirstActiveLayerVect(mapContext.getLayers());
|
|
256 | 275 |
|
257 |
fPanelScaleManager.setLayer(lyrSelected, renderer);
|
|
258 |
if ((layer instanceof Annotation_Layer)){
|
|
259 |
panelLegendAnnotation.setLayer(lyrSelected,renderer);
|
|
260 |
}else{
|
|
261 |
fPanelLegendManager.setLayer(lyrSelected, renderer);
|
|
262 |
}
|
|
263 |
organizador.setSelectedIndex(0);
|
|
264 |
}
|
|
276 |
fPanelScaleManager.setLayer(lyrSelected, renderer);
|
|
277 |
if ((layer instanceof Annotation_Layer)) {
|
|
278 |
panelLegendAnnotation.setLayer(lyrSelected, renderer);
|
|
279 |
} else {
|
|
280 |
fPanelLegendManager.setLayer(lyrSelected, renderer);
|
|
281 |
}
|
|
282 |
organizador.setSelectedIndex(0);
|
|
283 |
}
|
|
265 | 284 |
|
266 |
private void btnApply_actionPerformed(ActionEvent evt) {
|
|
267 |
// ClassifiableVectorial aux = (ClassifiableVectorial) layer;
|
|
285 |
private void btnApply_actionPerformed(ActionEvent evt) {
|
|
286 |
// ClassifiableVectorial aux = (ClassifiableVectorial) layer;
|
|
268 | 287 |
|
269 |
|
|
270 |
switch (fPanelLegendManager.getVisibleCard()) { |
|
271 |
case 0: // default symbol |
|
272 |
renderer = fPanelLegendManager.getM_defaultLegendPanel().getLegend(); |
|
273 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + PluginServices.getText(this,"_(Simbolo_unico)")); |
|
274 |
break; |
|
275 |
case 1: // Unique Values |
|
276 |
renderer = fPanelLegendManager.getM_valuesLegendPanel().getLegend(); |
|
277 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + "_(Valores_unicos)"); |
|
278 |
break; |
|
279 |
case 2:// break values |
|
280 |
renderer = fPanelLegendManager.getM_breaksLegendPanel().getLegend(); |
|
281 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + "_(Intervalos)"); |
|
282 |
break; |
|
283 |
case 3://text |
|
284 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem(layer.getName() + "_(Etiquetas_estandar)"); |
|
285 |
} |
|
286 |
// System.out.println("Color punto 1 " + renderer.getDefaultSymbol().getColor().toString()); |
|
287 |
// fPanelLegendManager.getM_labelsLegendPanel().setFSymbol(renderer.getDefaultSymbol()); |
|
288 |
// boolean bShapesVisibles = renderer.getDefaultSymbol().isShapeVisible(); |
|
289 |
fPanelLegendManager.getM_labelsLegendPanel().updateValuesFromControls((VectorialLegend)renderer); |
|
290 |
// renderer.getDefaultSymbol().setShapeVisible(bShapesVisibles); |
|
291 |
// System.out.println("Color punto 2 " + renderer.getDefaultSymbol().getColor().toString()); |
|
292 |
try { |
|
288 |
switch (fPanelLegendManager.getVisibleCard()) { |
|
289 |
case 0: // default symbol |
|
290 |
renderer = fPanelLegendManager.getM_defaultLegendPanel() |
|
291 |
.getLegend(); |
|
292 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem( |
|
293 |
layer.getName() |
|
294 |
+ PluginServices.getText(this, "_(Simbolo_unico)")); |
|
295 |
break; |
|
296 |
case 1: // Unique Values |
|
297 |
renderer = fPanelLegendManager.getM_valuesLegendPanel().getLegend(); |
|
298 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem( |
|
299 |
layer.getName() + "_(Valores_unicos)"); |
|
300 |
break; |
|
301 |
case 2:// break values |
|
302 |
renderer = fPanelLegendManager.getM_breaksLegendPanel().getLegend(); |
|
303 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem( |
|
304 |
layer.getName() + "_(Intervalos)"); |
|
305 |
break; |
|
306 |
case 3:// text |
|
307 |
fPanelLegendManager.getJComboBox().getModel().setSelectedItem( |
|
308 |
layer.getName() + "_(Etiquetas_estandar)"); |
|
309 |
} |
|
310 |
// System.out.println("Color punto 1 " + |
|
311 |
// renderer.getDefaultSymbol().getColor().toString()); |
|
312 |
// fPanelLegendManager.getM_labelsLegendPanel().setFSymbol(renderer.getDefaultSymbol()); |
|
313 |
// boolean bShapesVisibles = |
|
314 |
// renderer.getDefaultSymbol().isShapeVisible(); |
|
315 |
fPanelLegendManager.getM_labelsLegendPanel().updateValuesFromControls( |
|
316 |
(VectorialLegend) renderer); |
|
317 |
// renderer.getDefaultSymbol().setShapeVisible(bShapesVisibles); |
|
318 |
// System.out.println("Color punto 2 " + |
|
319 |
// renderer.getDefaultSymbol().getColor().toString()); |
|
320 |
try { |
|
293 | 321 |
// Intentamos aplicar la leyenda a todas |
294 |
// las capas activas a las que se les pueda aplicar |
|
295 |
FLayer[] activeLyrs = mapContext.getLayers().getActives(); |
|
296 |
for (int i=0; i < activeLyrs.length; i++) |
|
297 |
{ |
|
298 |
FLayer laux=activeLyrs[i]; |
|
299 |
if (activeLyrs[i] instanceof FLayers){ |
|
300 |
laux=getFirstActiveLayerVect((FLayers)activeLyrs[i]); |
|
301 |
} |
|
302 |
if (laux instanceof ClassifiableVectorial) |
|
303 |
{ |
|
304 |
ClassifiableVectorial aux2 = (ClassifiableVectorial) laux; |
|
305 |
if (renderer instanceof ClassifiedLegend) |
|
306 |
{ |
|
307 |
// Es una leyenda que necesita un recordset con un |
|
308 |
// nombre de campo. Comprobamos que ese recordset |
|
309 |
// tiene ese nombre de campo y es del tipo esperado |
|
310 |
ClassifiedLegend cl = (ClassifiedLegend) renderer; |
|
311 |
if (aux2 instanceof AlphanumericData) |
|
312 |
{ |
|
313 |
DataSource rs = ((AlphanumericData) aux2).getRecordset(); |
|
314 |
if (cl.getValues().length==0) { |
|
315 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this,"no_es_posible_aplicar_leyenda_vacia")); |
|
316 |
return; |
|
317 |
} |
|
318 |
int idField = rs.getFieldIndexByName(cl.getFieldName()); |
|
319 |
if (idField != -1) |
|
320 |
{ |
|
321 |
//TODO: Aqu? deber?amos comprobar si el tipo de campo |
|
322 |
// es el tipo de campo esperado. |
|
323 |
/*if (renderer instanceof VectorialUniqueValueLegend){ |
|
324 |
((VectorialUniqueValueLegend)renderer).setLabelHeightField(null); |
|
325 |
((VectorialUniqueValueLegend)renderer).setLabelRotationField(null); |
|
326 |
} |
|
327 |
*/ |
|
328 |
aux2.setLegend((VectorialLegend) renderer); |
|
329 |
} |
|
322 |
// las capas activas a las que se les pueda aplicar |
|
323 |
FLayer[] activeLyrs = mapContext.getLayers().getActives(); |
|
324 |
for (int i = 0; i < activeLyrs.length; i++) { |
|
325 |
FLayer laux = activeLyrs[i]; |
|
326 |
if (activeLyrs[i] instanceof FLayers) { |
|
327 |
laux = getFirstActiveLayerVect((FLayers) activeLyrs[i]); |
|
328 |
} |
|
329 |
if (laux instanceof ClassifiableVectorial) { |
|
330 |
ClassifiableVectorial aux2 = (ClassifiableVectorial) laux; |
|
331 |
if (renderer instanceof ClassifiedLegend) { |
|
332 |
// Es una leyenda que necesita un recordset con un |
|
333 |
// nombre de campo. Comprobamos que ese recordset |
|
334 |
// tiene ese nombre de campo y es del tipo esperado |
|
335 |
ClassifiedLegend cl = (ClassifiedLegend) renderer; |
|
336 |
if (aux2 instanceof AlphanumericData) { |
|
337 |
DataSource rs = ((AlphanumericData) aux2) |
|
338 |
.getRecordset(); |
|
339 |
if (cl.getValues().length == 0) { |
|
340 |
JOptionPane |
|
341 |
.showMessageDialog( |
|
342 |
(Component) PluginServices |
|
343 |
.getMainFrame(), |
|
344 |
PluginServices |
|
345 |
.getText(this, |
|
346 |
"no_es_posible_aplicar_leyenda_vacia")); |
|
347 |
return; |
|
348 |
} |
|
349 |
int idField = rs.getFieldIndexByName(cl |
|
350 |
.getFieldName()); |
|
351 |
if (idField != -1) { |
|
352 |
// TODO: Aqu? deber?amos comprobar si el tipo de |
|
353 |
// campo |
|
354 |
// es el tipo de campo esperado. |
|
355 |
/* |
|
356 |
* if (renderer instanceof |
|
357 |
* VectorialUniqueValueLegend){ |
|
358 |
* ((VectorialUniqueValueLegend)renderer).setLabelHeightField(null); |
|
359 |
* ((VectorialUniqueValueLegend)renderer).setLabelRotationField(null); } |
|
360 |
*/ |
|
361 |
aux2.setLegend((VectorialLegend) renderer); |
|
362 |
} |
|
330 | 363 |
|
331 |
} |
|
332 |
} |
|
333 |
else if (renderer instanceof SingleSymbolLegend) |
|
334 |
aux2.setLegend((VectorialLegend) renderer); |
|
335 |
} |
|
364 |
} |
|
365 |
} else if (renderer instanceof SingleSymbolLegend) |
|
366 |
aux2.setLegend((VectorialLegend) renderer); |
|
367 |
} |
|
336 | 368 |
|
337 |
}
|
|
369 |
}
|
|
338 | 370 |
// aux.setLegend((VectorialLegend) m_Renderer); |
339 | 371 |
|
340 | 372 |
} catch (FieldNotFoundException e) { |
... | ... | |
344 | 376 |
// TODO Auto-generated catch block |
345 | 377 |
e.printStackTrace(); |
346 | 378 |
} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) { |
347 |
// TODO Auto-generated catch block
|
|
348 |
e.printStackTrace();
|
|
349 |
}
|
|
379 |
// TODO Auto-generated catch block
|
|
380 |
e.printStackTrace();
|
|
381 |
}
|
|
350 | 382 |
|
351 | 383 |
if (fPanelScaleManager.getJRadioButton1().isSelected()) { |
352 |
try |
|
353 |
{ |
|
354 |
layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1().getText())).doubleValue()); |
|
384 |
try { |
|
385 |
layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1() |
|
386 |
.getText())).doubleValue()); |
|
387 |
} catch (ParseException ex) { |
|
388 |
if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0) |
|
389 |
layer.setMinScale(-1); |
|
390 |
else |
|
391 |
System.err.print(ex.getLocalizedMessage()); |
|
355 | 392 |
} |
356 |
catch (ParseException ex) |
|
357 |
{ |
|
358 |
if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0) |
|
359 |
layer.setMinScale(-1); |
|
360 |
else |
|
361 |
System.err.print(ex.getLocalizedMessage()); |
|
393 |
try { |
|
394 |
layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2() |
|
395 |
.getText())).doubleValue()); |
|
396 |
} catch (ParseException ex) { |
|
397 |
if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0) |
|
398 |
layer.setMaxScale(-1); |
|
399 |
else |
|
400 |
System.err.print(ex.getLocalizedMessage()); |
|
362 | 401 |
} |
363 |
try |
|
364 |
{ |
|
365 |
layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2().getText())).doubleValue()); |
|
366 |
} |
|
367 |
catch (ParseException ex) |
|
368 |
{ |
|
369 |
if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0) |
|
370 |
layer.setMaxScale(-1); |
|
371 |
else |
|
372 |
System.err.print(ex.getLocalizedMessage()); |
|
373 |
} |
|
374 | 402 |
|
375 | 403 |
} else { |
376 |
layer.setMinScale(-1);
|
|
377 |
layer.setMaxScale(-1);
|
|
404 |
layer.setMinScale(-1);
|
|
405 |
layer.setMaxScale(-1);
|
|
378 | 406 |
} |
379 |
if (!fPanelScaleManager.getLayerName().equals(layer.getName())){ |
|
407 |
if (!fPanelScaleManager.getLayerName().equals(layer.getName())) {
|
|
380 | 408 |
layer.setName(fPanelScaleManager.getLayerName()); |
381 | 409 |
} |
382 |
if (layer instanceof FLyrVect) |
|
383 |
{ |
|
384 |
FLyrVect lyrVect = (FLyrVect) layer; |
|
385 |
if (fPanelScaleManager.isSpatialIndexSelected()) |
|
386 |
{ |
|
387 |
// if (lyrVect.getSpatialIndex() == null) |
|
388 |
if(lyrVect.getISpatialIndex() == null) |
|
389 |
{ |
|
390 |
//AZABALA |
|
391 |
try { |
|
392 |
PluginServices. |
|
393 |
cancelableBackgroundExecution(getCreateSpatialIndexTask()); |
|
410 |
if (layer instanceof FLyrVect) { |
|
411 |
FLyrVect lyrVect = (FLyrVect) layer; |
|
412 |
if (fPanelScaleManager.isSpatialIndexSelected()) { |
|
413 |
// if (lyrVect.getSpatialIndex() == null) |
|
414 |
if (lyrVect.getISpatialIndex() == null) { |
|
415 |
// AZABALA |
|
416 |
try { |
|
417 |
PluginServices |
|
418 |
.cancelableBackgroundExecution(getCreateSpatialIndexTask()); |
|
394 | 419 |
} catch (DriverIOException e) { |
395 | 420 |
// TODO Auto-generated catch block |
396 | 421 |
e.printStackTrace(); |
... | ... | |
398 | 423 |
// TODO Auto-generated catch block |
399 | 424 |
e.printStackTrace(); |
400 | 425 |
} |
401 |
// lyrVect.createSpatialIndex();
|
|
402 |
}
|
|
403 |
}
|
|
404 |
//AZABALA
|
|
405 |
/*
|
|
406 |
* If we unselect the spatial index checkbox...Must we delete
|
|
407 |
* spatial index file, or we only have to put Spatial Index
|
|
408 |
* reference to null?. I have followed the second choice
|
|
409 |
*/
|
|
410 |
else{
|
|
411 |
lyrVect.deleteSpatialIndex();
|
|
412 |
}
|
|
426 |
// lyrVect.createSpatialIndex();
|
|
427 |
}
|
|
428 |
}
|
|
429 |
// AZABALA
|
|
430 |
/*
|
|
431 |
* If we unselect the spatial index checkbox...Must we delete
|
|
432 |
* spatial index file, or we only have to put Spatial Index
|
|
433 |
* reference to null?. I have followed the second choice
|
|
434 |
*/
|
|
435 |
else {
|
|
436 |
lyrVect.deleteSpatialIndex();
|
|
437 |
}
|
|
413 | 438 |
|
414 |
|
|
415 |
} |
|
416 |
//layer.getFMap().invalidate(); |
|
439 |
} |
|
440 |
// layer.getFMap().invalidate(); |
|
417 | 441 |
layer.getMapContext().callLegendChanged(); |
418 |
}
|
|
442 |
}
|
|
419 | 443 |
|
444 |
/** |
|
445 |
* Instanciates a ITask (@see com.iver.utiles.swing.threads.ITask) to create |
|
446 |
* a spatial index for the selected layer in background. This task also |
|
447 |
* allow to monitor process evolution, and to cancel this process. |
|
448 |
* |
|
449 |
* @throws DriverException |
|
450 |
* @throws DriverIOException |
|
451 |
*/ |
|
452 |
public IMonitorableTask getCreateSpatialIndexTask() |
|
453 |
throws DriverIOException, DriverException { |
|
420 | 454 |
|
421 |
/** |
|
422 |
* Instanciates a ITask (@see com.iver.utiles.swing.threads.ITask) |
|
423 |
* to create a spatial index for the selected layer in background. |
|
424 |
* This task also allow to monitor process evolution, and to cancel |
|
425 |
* this process. |
|
426 |
* @throws DriverException |
|
427 |
* @throws DriverIOException |
|
428 |
*/ |
|
429 |
public IMonitorableTask getCreateSpatialIndexTask() throws DriverIOException, |
|
430 |
DriverException{ |
|
455 |
// FIXME REVISAR ESTO (Quizas lanzar TaskException) |
|
456 |
return new CreateSpatialIndexMonitorableTask((FLyrVect) layer); |
|
457 |
} |
|
431 | 458 |
|
432 |
// FIXME REVISAR ESTO (Quizas lanzar TaskException) |
|
433 |
return new CreateSpatialIndexMonitorableTask((FLyrVect)layer); |
|
434 |
} |
|
459 |
/** |
|
460 |
* DOCUMENT ME! |
|
461 |
* |
|
462 |
* @author Fernando Gonz?lez Cort?s |
|
463 |
*/ |
|
464 |
private class ComandosListener implements ActionListener { |
|
465 |
private FThemeManagerWindow2 fLayerPropertiesWindow; |
|
435 | 466 |
|
436 |
/** |
|
437 |
* DOCUMENT ME! |
|
438 |
* |
|
439 |
* @author Fernando Gonz?lez Cort?s |
|
440 |
*/ |
|
441 |
private class ComandosListener implements ActionListener { |
|
442 |
private FThemeManagerWindow2 fLayerPropertiesWindow; |
|
467 |
/** |
|
468 |
* Creates a new ComandosListener object. |
|
469 |
* |
|
470 |
* @param lg |
|
471 |
* DOCUMENT ME! |
|
472 |
*/ |
|
473 |
public ComandosListener(FThemeManagerWindow2 fLayerPropertiesWindow) { |
|
474 |
this.fLayerPropertiesWindow = fLayerPropertiesWindow; |
|
475 |
} |
|
443 | 476 |
|
444 |
/** |
|
445 |
* Creates a new ComandosListener object. |
|
446 |
* |
|
447 |
* @param lg DOCUMENT ME! |
|
448 |
*/ |
|
449 |
public ComandosListener(FThemeManagerWindow2 fLayerPropertiesWindow) { |
|
450 |
this.fLayerPropertiesWindow = fLayerPropertiesWindow; |
|
451 |
} |
|
477 |
/* |
|
478 |
* (non-Javadoc) |
|
479 |
* |
|
480 |
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) |
|
481 |
*/ |
|
482 |
public void actionPerformed(ActionEvent e) { |
|
483 |
if (e.getActionCommand() == "OK") { |
|
484 |
// Implementaci?n para hacer funcionar el hyperlink ... |
|
485 |
// com.iver.cit.gvsig.gui.View theView = |
|
486 |
// (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView(); |
|
487 |
// ProjectView view = theView.getModel(); |
|
488 |
if (PluginServices.getMainFrame() != null) { |
|
489 |
IProjectView view = fPanelScaleManager.getView(); |
|
490 |
view.setTypeLink(fPanelScaleManager.getLinkType()); |
|
491 |
if (fPanelScaleManager.getSelectedLinkField() != null) { |
|
492 |
view.setSelectedField(fPanelScaleManager |
|
493 |
.getSelectedLinkField().toString().trim()); |
|
494 |
view.setExtLink(fPanelScaleManager.getExtensionLink()); |
|
495 |
} |
|
496 |
} |
|
497 |
// |
|
498 |
if (layer instanceof Annotation_Layer) { |
|
499 |
fLayerPropertiesWindow |
|
500 |
.btnApply_actionPerformedAnnotation(e); |
|
501 |
} else { |
|
502 |
fLayerPropertiesWindow.btnApply_actionPerformed(e); |
|
503 |
} |
|
504 |
if (PluginServices.getMainFrame() == null) |
|
505 |
((JDialog) (getParent().getParent().getParent().getParent())) |
|
506 |
.dispose(); |
|
507 |
else |
|
508 |
PluginServices.getMDIManager().closeWindow( |
|
509 |
FThemeManagerWindow2.this); |
|
510 |
System.out.println("Ok"); |
|
511 |
} else if (e.getActionCommand() == "CANCEL") { |
|
512 |
if (PluginServices.getMainFrame() == null) |
|
513 |
((JDialog) (getParent().getParent().getParent().getParent())) |
|
514 |
.dispose(); |
|
515 |
else |
|
516 |
PluginServices.getMDIManager().closeWindow( |
|
517 |
FThemeManagerWindow2.this); |
|
518 |
System.out.println("CANCEL"); |
|
519 |
} else if (e.getActionCommand() == "APPLY") { |
|
520 |
if (layer instanceof Annotation_Layer) { |
|
521 |
fLayerPropertiesWindow |
|
522 |
.btnApply_actionPerformedAnnotation(e); |
|
523 |
} else { |
|
524 |
fLayerPropertiesWindow.btnApply_actionPerformed(e); |
|
525 |
} |
|
526 |
System.out.println("APPLY"); |
|
527 |
} else if (e.getActionCommand() == "LOAD_LEGEND") { |
|
528 |
JFileChooser jfc = new JFileChooser(); |
|
529 |
jfc.addChoosableFileFilter(new GenericFileFilter("gvl", |
|
530 |
PluginServices.getText(this, "tipo_de_leyenda"))); |
|
531 |
// jfc.addChoosableFileFilter(new |
|
532 |
// GenericFileFilter("sld","sld")); |
|
452 | 533 |
|
453 |
/* (non-Javadoc) |
|
454 |
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) |
|
455 |
*/ |
|
456 |
public void actionPerformed(ActionEvent e) { |
|
457 |
if (e.getActionCommand() == "OK") { |
|
458 |
// Implementaci?n para hacer funcionar el hyperlink ... |
|
459 |
//com.iver.cit.gvsig.gui.View theView = (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView(); |
|
460 |
//ProjectView view = theView.getModel(); |
|
461 |
if (PluginServices.getMainFrame() != null) |
|
462 |
{ |
|
463 |
IProjectView view = fPanelScaleManager.getView(); |
|
464 |
view.setTypeLink(fPanelScaleManager.getLinkType()); |
|
465 |
if (fPanelScaleManager.getSelectedLinkField()!=null) |
|
466 |
{ |
|
467 |
view.setSelectedField(fPanelScaleManager.getSelectedLinkField().toString().trim()); |
|
468 |
view.setExtLink(fPanelScaleManager.getExtensionLink()); |
|
469 |
} |
|
470 |
} |
|
471 |
// |
|
472 |
if (layer instanceof Annotation_Layer){ |
|
473 |
fLayerPropertiesWindow.btnApply_actionPerformedAnnotation(e); |
|
474 |
}else{ |
|
475 |
fLayerPropertiesWindow.btnApply_actionPerformed(e); |
|
476 |
} |
|
477 |
if (PluginServices.getMainFrame() == null) |
|
478 |
((JDialog) (getParent().getParent().getParent().getParent())).dispose(); |
|
479 |
else |
|
480 |
PluginServices.getMDIManager().closeWindow(FThemeManagerWindow2.this); |
|
481 |
System.out.println("Ok"); |
|
482 |
} else if (e.getActionCommand() == "CANCEL") { |
|
483 |
if (PluginServices.getMainFrame() == null) |
|
484 |
((JDialog) (getParent().getParent().getParent().getParent())).dispose(); |
|
485 |
else |
|
486 |
PluginServices.getMDIManager().closeWindow(FThemeManagerWindow2.this); |
|
487 |
System.out.println("CANCEL"); |
|
488 |
} else if (e.getActionCommand() == "APPLY") { |
|
489 |
if (layer instanceof Annotation_Layer){ |
|
490 |
fLayerPropertiesWindow.btnApply_actionPerformedAnnotation(e); |
|
491 |
}else{ |
|
492 |
fLayerPropertiesWindow.btnApply_actionPerformed(e); |
|
493 |
} |
|
494 |
System.out.println("APPLY"); |
|
495 |
} else if (e.getActionCommand() == "LOAD_LEGEND") { |
|
496 |
JFileChooser jfc = new JFileChooser(); |
|
497 |
jfc.addChoosableFileFilter(new GenericFileFilter("gvl", |
|
498 |
PluginServices.getText(this, "tipo_de_leyenda"))); |
|
499 |
//jfc.addChoosableFileFilter(new GenericFileFilter("sld","sld")); |
|
534 |
if (jfc.showOpenDialog((Component) PluginServices |
|
535 |
.getMainFrame()) == JFileChooser.APPROVE_OPTION) { |
|
536 |
File file = jfc.getSelectedFile(); |
|
537 |
if (!(file.getPath().endsWith(".gvl") || file.getPath() |
|
538 |
.endsWith(".GVL"))) { |
|
539 |
file = new File(file.getPath() + ".gvl"); |
|
540 |
} |
|
541 |
readLegend(file); |
|
542 |
if (layer instanceof Annotation_Layer) { |
|
543 |
panelLegendAnnotation.setRenderer(renderer); |
|
544 |
panelLegendAnnotation.actualizar(); |
|
545 |
} else { |
|
546 |
fPanelLegendManager.setRenderer(renderer); |
|
547 |
fPanelLegendManager.actualizar(); |
|
548 |
} |
|
500 | 549 |
|
501 |
if (jfc.showOpenDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) { |
|
502 |
File file=jfc.getSelectedFile(); |
|
503 |
if (!(file.getPath().endsWith(".gvl") || file.getPath().endsWith(".GVL"))) |
|
504 |
{ |
|
505 |
file=new File(file.getPath()+".gvl"); |
|
506 |
} |
|
507 |
readLegend(file); |
|
508 |
if (layer instanceof Annotation_Layer){ |
|
509 |
panelLegendAnnotation.setRenderer(renderer); |
|
510 |
panelLegendAnnotation.actualizar(); |
|
511 |
}else{ |
|
512 |
fPanelLegendManager.setRenderer(renderer); |
|
513 |
fPanelLegendManager.actualizar(); |
|
514 |
} |
|
550 |
} |
|
551 |
} else if (e.getActionCommand() == "SAVE_LEGEND") { |
|
552 |
if (layer instanceof Annotation_Layer) { |
|
515 | 553 |
|
516 |
} |
|
517 |
} else if (e.getActionCommand() == "SAVE_LEGEND") { |
|
518 |
if (layer instanceof Annotation_Layer){ |
|
519 |
|
|
520 |
}else{ |
|
521 |
fLayerPropertiesWindow.btnApply_actionPerformed(e); |
|
522 |
} |
|
554 |
} else { |
|
555 |
fLayerPropertiesWindow.btnApply_actionPerformed(e); |
|
556 |
} |
|
523 | 557 |
JFileChooser jfc = new JFileChooser(); |
524 |
jfc.addChoosableFileFilter(new GenericFileFilter("sld","*.sld")); |
|
558 |
jfc |
|
559 |
.addChoosableFileFilter(new GenericFileFilter("sld", |
|
560 |
"*.sld")); |
|
525 | 561 |
jfc.addChoosableFileFilter(new GenericFileFilter("gvl", |
526 | 562 |
PluginServices.getText(this, "tipo_de_leyenda"))); |
527 | 563 |
|
528 |
|
|
529 |
if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) |
|
530 |
{ |
|
531 |
File file=jfc.getSelectedFile(); |
|
532 |
if (jfc.getFileFilter().accept(new File("dummy.sld"))) |
|
533 |
{ |
|
534 |
if (!(file.getPath().toLowerCase().endsWith(".sld"))){ |
|
535 |
file=new File(file.getPath()+".sld"); |
|
564 |
if (jfc.showSaveDialog((Component) PluginServices |
|
565 |
.getMainFrame()) == JFileChooser.APPROVE_OPTION) { |
|
566 |
File file = jfc.getSelectedFile(); |
|
567 |
if (jfc.getFileFilter().accept(new File("dummy.sld"))) { |
|
568 |
if (!(file.getPath().toLowerCase().endsWith(".sld"))) { |
|
569 |
file = new File(file.getPath() + ".sld"); |
|
536 | 570 |
} |
537 | 571 |
export2SLD(file); |
538 |
} |
|
539 |
else{ |
|
540 |
if (!(file.getPath().toLowerCase().endsWith(".gvl"))){ |
|
541 |
file=new File(file.getPath()+".gvl"); |
|
572 |
} else { |
|
573 |
if (!(file.getPath().toLowerCase().endsWith(".gvl"))) { |
|
574 |
file = new File(file.getPath() + ".gvl"); |
|
542 | 575 |
} |
543 | 576 |
writeLegend(file); |
544 | 577 |
} |
545 | 578 |
} |
546 |
} else {} |
|
547 |
} |
|
548 |
} |
|
579 |
} else { |
|
580 |
} |
|
581 |
} |
|
582 |
} |
|
549 | 583 |
|
550 |
private void export2SLD(File file) {
|
|
584 |
private void export2SLD(File file) {
|
|
551 | 585 |
try { |
552 | 586 |
FileWriter writer = new FileWriter(file.getAbsolutePath()); |
553 |
writer.write( renderer.getSLDString(layer.getName()));
|
|
587 |
writer.write(renderer.getSLDString(layer.getName())); |
|
554 | 588 |
writer.close(); |
555 | 589 |
|
556 |
// Marshaller m = new Marshaller(writer);
|
|
557 |
// m.setEncoding("ISO-8859-1");
|
|
558 |
// m.marshal(renderer.getSLDString());
|
|
590 |
// Marshaller m = new Marshaller(writer);
|
|
591 |
// m.setEncoding("ISO-8859-1");
|
|
592 |
// m.marshal(renderer.getSLDString());
|
|
559 | 593 |
} catch (Exception e) { |
560 |
NotificationManager.addError(PluginServices.getText(this, "Error_exportando_SLD"), e); |
|
594 |
NotificationManager.addError(PluginServices.getText(this, |
|
595 |
"Error_exportando_SLD"), e); |
|
561 | 596 |
} |
562 | 597 |
} |
563 | 598 |
|
564 |
public void btnApply_actionPerformedAnnotation(ActionEvent evt) { |
|
565 |
try { |
|
566 |
renderer = panelLegendAnnotation.getLegend(); |
|
567 |
panelLegendAnnotation.updateValuesFromControls((VectorialLegend)renderer); |
|
568 |
// Intentamos aplicar la leyenda a todas |
|
569 |
// las capas activas a las que se les pueda aplicar |
|
570 |
FLayer[] activeLyrs = mapContext.getLayers().getActives(); |
|
571 |
for (int i=0; i < activeLyrs.length; i++) |
|
572 |
{ |
|
573 |
FLayer laux=activeLyrs[i]; |
|
574 |
if (activeLyrs[i] instanceof FLayers){ |
|
575 |
laux=getFirstActiveLayerVect((FLayers)activeLyrs[i]); |
|
576 |
} |
|
577 |
if (laux instanceof ClassifiableVectorial) |
|
578 |
{ |
|
579 |
ClassifiableVectorial aux2 = (ClassifiableVectorial) laux; |
|
580 |
if (renderer instanceof ClassifiedLegend) |
|
581 |
{ |
|
582 |
// Es una leyenda que necesita un recordset con un |
|
583 |
// nombre de campo. Comprobamos que ese recordset |
|
584 |
// tiene ese nombre de campo y es del tipo esperado |
|
585 |
ClassifiedLegend cl = (ClassifiedLegend) renderer; |
|
586 |
if (aux2 instanceof AlphanumericData) |
|
587 |
{ |
|
588 |
DataSource rs = ((AlphanumericData) aux2).getRecordset(); |
|
589 |
if (cl.getValues().length==0) { |
|
590 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this,"no_es_posible_aplicar_leyenda_vacia")); |
|
591 |
return; |
|
592 |
} |
|
593 |
int idField = rs.getFieldIndexByName(cl.getFieldName()); |
|
594 |
if (idField != -1) |
|
595 |
{ |
|
596 |
//TODO: Aqu? deber?amos comprobar si el tipo de campo |
|
597 |
// es el tipo de campo esperado. |
|
598 |
/*if (renderer instanceof VectorialUniqueValueLegend){ |
|
599 |
((VectorialUniqueValueLegend)renderer).setLabelHeightField(null); |
|
600 |
((VectorialUniqueValueLegend)renderer).setLabelRotationField(null); |
|
601 |
} |
|
602 |
*/ |
|
603 |
aux2.setLegend((VectorialLegend) renderer); |
|
604 |
} |
|
599 |
public void btnApply_actionPerformedAnnotation(ActionEvent evt) { |
|
600 |
try { |
|
601 |
renderer = panelLegendAnnotation.getLegend(); |
|
602 |
panelLegendAnnotation |
|
603 |
.updateValuesFromControls((VectorialLegend) renderer); |
|
604 |
// Intentamos aplicar la leyenda a todas |
|
605 |
// las capas activas a las que se les pueda aplicar |
|
606 |
FLayer[] activeLyrs = mapContext.getLayers().getActives(); |
|
607 |
for (int i = 0; i < activeLyrs.length; i++) { |
|
608 |
FLayer laux = activeLyrs[i]; |
|
609 |
if (activeLyrs[i] instanceof FLayers) { |
|
610 |
laux = getFirstActiveLayerVect((FLayers) activeLyrs[i]); |
|
611 |
} |
|
612 |
if (laux instanceof ClassifiableVectorial) { |
|
613 |
ClassifiableVectorial aux2 = (ClassifiableVectorial) laux; |
|
614 |
if (renderer instanceof ClassifiedLegend) { |
|
615 |
// Es una leyenda que necesita un recordset con un |
|
616 |
// nombre de campo. Comprobamos que ese recordset |
|
617 |
// tiene ese nombre de campo y es del tipo esperado |
|
618 |
ClassifiedLegend cl = (ClassifiedLegend) renderer; |
|
619 |
if (aux2 instanceof AlphanumericData) { |
|
620 |
DataSource rs = ((AlphanumericData) aux2) |
|
621 |
.getRecordset(); |
|
622 |
if (cl.getValues().length == 0) { |
|
623 |
JOptionPane |
|
624 |
.showMessageDialog( |
|
625 |
(Component) PluginServices |
|
626 |
.getMainFrame(), |
|
627 |
PluginServices |
|
628 |
.getText(this, |
|
629 |
"no_es_posible_aplicar_leyenda_vacia")); |
|
630 |
return; |
|
631 |
} |
|
632 |
int idField = rs.getFieldIndexByName(cl |
|
633 |
.getFieldName()); |
|
634 |
if (idField != -1) { |
|
635 |
// TODO: Aqu? deber?amos comprobar si el tipo de |
|
636 |
// campo |
|
637 |
// es el tipo de campo esperado. |
|
638 |
/* |
|
639 |
* if (renderer instanceof |
|
640 |
* VectorialUniqueValueLegend){ |
|
641 |
* ((VectorialUniqueValueLegend)renderer).setLabelHeightField(null); |
|
642 |
* ((VectorialUniqueValueLegend)renderer).setLabelRotationField(null); } |
|
643 |
*/ |
|
644 |
aux2.setLegend((VectorialLegend) renderer); |
|
645 |
} |
|
605 | 646 |
|
606 |
} |
|
607 |
}else if (renderer instanceof Annotation_Legend){ |
|
608 |
aux2.setLegend((VectorialLegend) renderer); |
|
609 |
} |
|
610 |
else if (renderer instanceof SingleSymbolLegend) |
|
611 |
aux2.setLegend((VectorialLegend) renderer); |
|
612 |
} |
|
647 |
} |
|
648 |
} else if (renderer instanceof Annotation_Legend) { |
|
649 |
aux2.setLegend((VectorialLegend) renderer); |
|
650 |
} else if (renderer instanceof SingleSymbolLegend) |
|
651 |
aux2.setLegend((VectorialLegend) renderer); |
|
652 |
} |
|
613 | 653 |
|
614 |
}
|
|
654 |
}
|
|
615 | 655 |
// aux.setLegend((VectorialLegend) m_Renderer); |
616 | 656 |
|
617 | 657 |
} catch (FieldNotFoundException e) { |
... | ... | |
621 | 661 |
// TODO Auto-generated catch block |
622 | 662 |
e.printStackTrace(); |
623 | 663 |
} catch (com.hardcode.gdbms.engine.data.driver.DriverException e) { |
624 |
// TODO Auto-generated catch block
|
|
625 |
e.printStackTrace();
|
|
626 |
}
|
|
664 |
// TODO Auto-generated catch block
|
|
665 |
e.printStackTrace();
|
|
666 |
}
|
|
627 | 667 |
|
628 | 668 |
if (fPanelScaleManager.getJRadioButton1().isSelected()) { |
629 |
try |
|
630 |
{ |
|
631 |
layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1().getText())).doubleValue()); |
|
669 |
try { |
|
670 |
layer.setMinScale((nf.parse(fPanelScaleManager.getJTextField1() |
|
671 |
.getText())).doubleValue()); |
|
672 |
} catch (ParseException ex) { |
|
673 |
if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0) |
|
674 |
layer.setMinScale(-1); |
|
675 |
else |
|
676 |
System.err.print(ex.getLocalizedMessage()); |
|
632 | 677 |
} |
633 |
catch (ParseException ex) |
|
634 |
{ |
|
635 |
if (fPanelScaleManager.getJTextField1().getText().compareTo("") == 0) |
|
636 |
layer.setMinScale(-1); |
|
637 |
else |
|
638 |
System.err.print(ex.getLocalizedMessage()); |
|
678 |
try { |
|
679 |
layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2() |
|
680 |
.getText())).doubleValue()); |
|
681 |
} catch (ParseException ex) { |
|
682 |
if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0) |
|
683 |
layer.setMaxScale(-1); |
|
684 |
else |
|
685 |
System.err.print(ex.getLocalizedMessage()); |
|
639 | 686 |
} |
640 |
try |
|
641 |
{ |
|
642 |
layer.setMaxScale((nf.parse(fPanelScaleManager.getJTextField2().getText())).doubleValue()); |
|
643 |
} |
|
644 |
catch (ParseException ex) |
|
645 |
{ |
|
646 |
if (fPanelScaleManager.getJTextField2().getText().compareTo("") == 0) |
|
647 |
layer.setMaxScale(-1); |
|
648 |
else |
|
649 |
System.err.print(ex.getLocalizedMessage()); |
|
650 |
} |
|
651 | 687 |
|
652 | 688 |
} else { |
653 |
layer.setMinScale(-1);
|
|
654 |
layer.setMaxScale(-1);
|
|
689 |
layer.setMinScale(-1);
|
|
690 |
layer.setMaxScale(-1);
|
|
655 | 691 |
} |
656 |
if (!fPanelScaleManager.getLayerName().equals(layer.getName())){ |
|
692 |
if (!fPanelScaleManager.getLayerName().equals(layer.getName())) {
|
|
657 | 693 |
layer.setName(fPanelScaleManager.getLayerName()); |
658 | 694 |
} |
659 |
if (layer instanceof FLyrVect) |
|
660 |
{ |
|
661 |
FLyrVect lyrVect = (FLyrVect) layer; |
|
662 |
if (fPanelScaleManager.isSpatialIndexSelected()) |
|
663 |
{ |
|
664 |
// if (lyrVect.getSpatialIndex() == null) |
|
665 |
if(lyrVect.getISpatialIndex() == null) |
|
666 |
{ |
|
667 |
//AZABALA |
|
668 |
try { |
|
669 |
PluginServices. |
|
670 |
cancelableBackgroundExecution(getCreateSpatialIndexTask()); |
|
695 |
if (layer instanceof FLyrVect) { |
|
696 |
FLyrVect lyrVect = (FLyrVect) layer; |
|
697 |
if (fPanelScaleManager.isSpatialIndexSelected()) { |
|
698 |
// if (lyrVect.getSpatialIndex() == null) |
|
699 |
if (lyrVect.getISpatialIndex() == null) { |
|
700 |
// AZABALA |
|
701 |
try { |
|
702 |
PluginServices |
|
703 |
.cancelableBackgroundExecution(getCreateSpatialIndexTask()); |
|
671 | 704 |
} catch (DriverIOException e) { |
672 | 705 |
// TODO Auto-generated catch block |
673 | 706 |
e.printStackTrace(); |
... | ... | |
675 | 708 |
// TODO Auto-generated catch block |
676 | 709 |
e.printStackTrace(); |
677 | 710 |
} |
678 |
// lyrVect.createSpatialIndex();
|
|
679 |
}
|
|
680 |
}
|
|
681 |
//AZABALA
|
|
682 |
/*
|
|
683 |
* If we unselect the spatial index checkbox...Must we delete
|
|
684 |
* spatial index file, or we only have to put Spatial Index
|
|
685 |
* reference to null?. I have followed the second choice
|
|
686 |
*/
|
|
687 |
else{
|
|
688 |
lyrVect.deleteSpatialIndex();
|
|
689 |
}
|
|
711 |
// lyrVect.createSpatialIndex();
|
|
712 |
}
|
|
713 |
}
|
|
714 |
// AZABALA
|
|
715 |
/*
|
|
716 |
* If we unselect the spatial index checkbox...Must we delete
|
|
717 |
* spatial index file, or we only have to put Spatial Index
|
|
718 |
* reference to null?. I have followed the second choice
|
|
719 |
*/
|
|
720 |
else {
|
|
721 |
lyrVect.deleteSpatialIndex();
|
|
722 |
}
|
|
690 | 723 |
|
691 |
|
|
692 |
} |
|
693 |
//layer.getFMap().invalidate(); |
|
724 |
} |
|
725 |
// layer.getFMap().invalidate(); |
|
694 | 726 |
layer.getMapContext().callLegendChanged(); |
695 | 727 |
|
696 | 728 |
} |
... | ... | |
698 | 730 |
private void writeLegend(File file) { |
699 | 731 |
try { |
700 | 732 |
FileOutputStream fos = new FileOutputStream(file.getAbsolutePath()); |
701 |
OutputStreamWriter writer = new OutputStreamWriter(fos, ProjectExtension.PROJECTENCODING); |
|
733 |
OutputStreamWriter writer = new OutputStreamWriter(fos, |
|
734 |
ProjectExtension.PROJECTENCODING); |
|
702 | 735 |
Marshaller m = new Marshaller(writer); |
703 | 736 |
m.setEncoding(ProjectExtension.PROJECTENCODING); |
704 | 737 |
XMLEntity xml = renderer.getXMLEntity(); |
705 | 738 |
xml.putProperty("followHeaderEncoding", true); |
706 | 739 |
m.marshal(xml.getXmlTag()); |
707 | 740 |
} catch (Exception e) { |
708 |
NotificationManager.addError(PluginServices.getText(this, "Error_guardando_la_leyenda"), e); |
|
741 |
NotificationManager.addError(PluginServices.getText(this, |
|
742 |
"Error_guardando_la_leyenda"), e); |
|
709 | 743 |
} |
710 | 744 |
} |
711 | 745 |
|
712 | 746 |
public void readLegend(File file) { |
713 | 747 |
File xmlFile = new File(file.getAbsolutePath()); |
714 | 748 |
try { |
715 |
String encoding = XMLEncodingUtils.getEncoding(new FileInputStream(xmlFile)); |
|
716 |
InputStreamReader reader=null; |
|
717 |
if (encoding!=null) { |
|
749 |
String encoding = XMLEncodingUtils.getEncoding(new FileInputStream( |
|
750 |
xmlFile)); |
|
751 |
InputStreamReader reader = null; |
|
752 |
if (encoding != null) { |
|
718 | 753 |
try { |
719 |
reader = new InputStreamReader(new FileInputStream(xmlFile), encoding); |
|
720 |
renderer= readLegend(reader, true); |
|
754 |
reader = new InputStreamReader( |
|
755 |
new FileInputStream(xmlFile), encoding); |
|
756 |
renderer = readLegend(reader, true); |
|
721 | 757 |
} catch (UnsupportedEncodingException e) { |
722 |
reader = new InputStreamReader(new FileInputStream(xmlFile),"ISO-8859-1"); |
|
758 |
reader = new InputStreamReader( |
|
759 |
new FileInputStream(xmlFile), "ISO-8859-1"); |
|
723 | 760 |
try { |
724 |
renderer= readLegend(reader, false); |
|
761 |
renderer = readLegend(reader, false);
|
|
725 | 762 |
} catch (UnsupportedEncodingException e1) { |
726 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, e1.getLocalizedMessage())); |
|
763 |
JOptionPane.showMessageDialog( |
|
764 |
(Component) PluginServices.getMainFrame(), |
|
765 |
PluginServices.getText(this, e1 |
|
766 |
.getLocalizedMessage())); |
|
727 | 767 |
return; |
728 | 768 |
} |
729 | 769 |
} |
730 |
} |
|
731 |
else {
|
|
732 |
reader = new InputStreamReader(new FileInputStream(xmlFile),"UTF-8");
|
|
770 |
} else {
|
|
771 |
reader = new InputStreamReader(new FileInputStream(xmlFile),
|
|
772 |
"UTF-8");
|
|
733 | 773 |
try { |
734 |
renderer= readLegend(reader, false); |
|
774 |
renderer = readLegend(reader, false);
|
|
735 | 775 |
} catch (UnsupportedEncodingException e1) { |
736 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, e1.getLocalizedMessage())); |
|
776 |
JOptionPane.showMessageDialog((Component) PluginServices |
|
777 |
.getMainFrame(), PluginServices.getText(this, e1 |
|
778 |
.getLocalizedMessage())); |
|
737 | 779 |
return; |
738 | 780 |
} |
739 | 781 |
} |
740 | 782 |
} catch (FileNotFoundException e) { |
741 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "fichero_incorrecto")); |
|
783 |
JOptionPane.showMessageDialog((Component) PluginServices |
|
784 |
.getMainFrame(), PluginServices.getText(this, |
|
785 |
"fichero_incorrecto")); |
|
742 | 786 |
return; |
743 | 787 |
} catch (UnsupportedEncodingException e) { |
744 | 788 |
e.printStackTrace(); |
745 | 789 |
} |
746 | 790 |
} |
747 |
public Legend readLegend(Reader reader, boolean encodingFollowed) throws UnsupportedEncodingException { |
|
791 |
|
|
792 |
public Legend readLegend(Reader reader, boolean encodingFollowed) |
|
793 |
throws UnsupportedEncodingException { |
|
748 | 794 |
Legend legend = null; |
749 | 795 |
|
750 | 796 |
try { |
751 | 797 |
XmlTag tag = (XmlTag) XmlTag.unmarshal(reader); |
752 |
XMLEntity xml=new XMLEntity(tag);
|
|
798 |
XMLEntity xml = new XMLEntity(tag);
|
|
753 | 799 |
if (encodingFollowed) { |
754 | 800 |
if (xml.contains("followHeaderEncoding")) { |
755 |
boolean useEncoding = xml.getBooleanProperty("followHeaderEncoding"); |
|
801 |
boolean useEncoding = xml |
|
802 |
.getBooleanProperty("followHeaderEncoding"); |
|
756 | 803 |
if (!useEncoding) { |
757 |
throw new UnsupportedEncodingException("the encoding specified in the xml header is not safe"); |
|
804 |
throw new UnsupportedEncodingException( |
|
805 |
"the encoding specified in the xml header is not safe"); |
|
758 | 806 |
} |
759 |
} |
|
760 |
else { |
|
761 |
// Old projects didn't contain followHeaderEncoding and they were |
|
762 |
// not correctly encoded. We throw an exception now, and we'll try |
|
807 |
} else { |
|
808 |
// Old projects didn't contain followHeaderEncoding and they |
|
809 |
// were |
|
810 |
// not correctly encoded. We throw an exception now, and |
|
811 |
// we'll try |
|
763 | 812 |
// to reopen the project |
764 | 813 |
// using the default system encoding. |
765 |
throw new UnsupportedEncodingException("the encoding specified in the xml header is not safe"); |
|
814 |
throw new UnsupportedEncodingException( |
|
815 |
"the encoding specified in the xml header is not safe"); |
|
766 | 816 |
} |
767 | 817 |
} |
768 | 818 |
|
769 | 819 |
legend = LegendFactory.createFromXML(xml); |
770 | 820 |
return legend; |
771 |
} catch (MarshalException e) { |
|
772 |
// PluginServices.getLogger().error(PluginServices.getText(this, "formato_incorrecto"),e); |
|
773 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "formato_incorrecto")); |
|
774 |
//NotificationManager.addError("Al leer el proyecto", e); |
|
821 |
} catch (MarshalException e) { |
|
822 |
// PluginServices.getLogger().error(PluginServices.getText(this, |
|
823 |
// "formato_incorrecto"),e); |
|
824 |
JOptionPane.showMessageDialog((Component) PluginServices |
|
825 |
.getMainFrame(), PluginServices.getText(this, |
|
826 |
"formato_incorrecto")); |
|
827 |
// NotificationManager.addError("Al leer el proyecto", e); |
|
775 | 828 |
} catch (ValidationException e) { |
776 |
// PluginServices.getLogger().error(PluginServices.getText(this, "formato_incorrecto"),e); |
|
777 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "formato_incorrecto")); |
|
778 |
//NotificationManager.addError("Al leer el proyecto", e); |
|
829 |
// PluginServices.getLogger().error(PluginServices.getText(this, |
|
830 |
// "formato_incorrecto"),e); |
|
831 |
JOptionPane.showMessageDialog((Component) PluginServices |
|
832 |
.getMainFrame(), PluginServices.getText(this, |
|
833 |
"formato_incorrecto")); |
|
834 |
// NotificationManager.addError("Al leer el proyecto", e); |
|
779 | 835 |
} catch (XMLException e) { |
780 |
// PluginServices.getLogger().error(PluginServices.getText(this, "formato_incorrecto"),e); |
|
781 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this, "formato_incorrecto")); |
|
782 |
//NotificationManager.addError("Al leer el proyecto", e); |
|
836 |
// PluginServices.getLogger().error(PluginServices.getText(this, |
|
837 |
// "formato_incorrecto"),e); |
|
838 |
JOptionPane.showMessageDialog((Component) PluginServices |
|
839 |
.getMainFrame(), PluginServices.getText(this, |
|
840 |
"formato_incorrecto")); |
|
841 |
// NotificationManager.addError("Al leer el proyecto", e); |
|
783 | 842 |
} |
784 | 843 |
return null; |
785 | 844 |
} |
786 |
/* (non-Javadoc) |
|
845 |
|
|
846 |
/* |
|
847 |
* (non-Javadoc) |
|
848 |
* |
|
787 | 849 |
* @see com.iver.andami.ui.mdiManager.View#getViewInfo() |
788 | 850 |
*/ |
789 | 851 |
public WindowInfo getWindowInfo() { |
... | ... | |
791 | 853 |
WindowInfo viewInfo = new WindowInfo(WindowInfo.MODELESSDIALOG); |
792 | 854 |
viewInfo.setWidth(650); |
793 | 855 |
viewInfo.setHeight(420); |
794 |
viewInfo.setTitle(PluginServices.getText(this,"propiedades_de_la_capa")); |
|
856 |
viewInfo.setTitle(PluginServices |
|
857 |
.getText(this, "propiedades_de_la_capa")); |
|
795 | 858 |
return viewInfo; |
796 | 859 |
} |
797 | 860 |
|
798 | 861 |
/** |
799 | 862 |
* @see com.iver.mdiApp.ui.MDIManager.View#viewActivated() |
800 | 863 |
*/ |
801 |
/*public void viewActivated() { |
|
802 |
} |
|
864 |
/* |
|
865 |
* public void viewActivated() { } |
|
866 |
* |
|
867 |
* public FMap getMapContext() { return mapContext; } public FLayer |
|
868 |
* getLayer() { return layer; } public Legend getRenderer() { return |
|
869 |
* renderer; } |
|
870 |
*/ |
|
803 | 871 |
|
804 |
public FMap getMapContext() { |
|
805 |
return mapContext; |
|
806 |
} |
|
807 |
public FLayer getLayer() { |
|
808 |
return layer; |
|
809 |
} |
|
810 |
public Legend getRenderer() { |
|
811 |
return renderer; |
|
812 |
}*/ |
|
813 |
|
|
814 | 872 |
/** |
815 | 873 |
* @return Returns the organizador. |
816 | 874 |
*/ |
817 | 875 |
public JTabbedPane getOrganizador() { |
818 | 876 |
return organizador; |
819 | 877 |
} |
878 |
|
|
820 | 879 |
/** |
821 |
* @param organizador The organizador to set. |
|
880 |
* @param organizador |
|
881 |
* The organizador to set. |
|
822 | 882 |
*/ |
823 | 883 |
public void setOrganizador(JTabbedPane organizador) { |
824 | 884 |
this.organizador = organizador; |
Also available in: Unified diff