Revision 9512 org.gvsig.online/trunk/org.gvsig.online/org.gvsig.online.swing/org.gvsig.online.swing.impl/src/main/java/org/gvsig/online/swing/impl/initworkspace/OnlineJInitWorkingcopyImpl.java
OnlineJInitWorkingcopyImpl.java | ||
---|---|---|
24 | 24 |
package org.gvsig.online.swing.impl.initworkspace; |
25 | 25 |
|
26 | 26 |
import java.awt.event.ActionEvent; |
27 |
import java.awt.event.ActionListener; |
|
28 | 27 |
import java.awt.event.FocusEvent; |
29 | 28 |
import java.awt.event.FocusListener; |
30 | 29 |
import java.io.File; |
31 | 30 |
import java.io.IOException; |
32 |
import java.net.MalformedURLException; |
|
33 | 31 |
import java.net.URL; |
34 |
import java.sql.Timestamp; |
|
35 | 32 |
import java.util.ArrayList; |
36 | 33 |
import java.util.List; |
37 | 34 |
import javax.swing.DefaultComboBoxModel; |
... | ... | |
44 | 41 |
import javax.swing.event.TableModelListener; |
45 | 42 |
import org.apache.commons.collections4.CollectionUtils; |
46 | 43 |
import org.apache.commons.lang3.StringUtils; |
47 |
import org.cresques.cts.ICoordTrans; |
|
48 |
import org.cresques.cts.IProjection; |
|
49 |
import org.gvsig.fmap.crs.CRSFactory; |
|
50 | 44 |
import org.gvsig.fmap.dal.store.h2.H2SpatialUtils; |
51 | 45 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
52 | 46 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer; |
53 | 47 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
54 | 48 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
55 |
import org.gvsig.fmap.geom.Geometry; |
|
56 |
import org.gvsig.fmap.geom.GeometryLocator; |
|
57 |
import org.gvsig.fmap.geom.GeometryManager; |
|
58 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
59 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
|
60 | 49 |
import org.gvsig.fmap.mapcontrol.MapControl; |
61 |
import org.gvsig.fmap.mapcontrol.MapControlLocator; |
|
62 | 50 |
import org.gvsig.online.lib.api.OnlineLayer; |
63 | 51 |
import org.gvsig.online.lib.api.OnlineLocator; |
64 | 52 |
import org.gvsig.online.lib.api.OnlineManager; |
... | ... | |
69 | 57 |
import org.gvsig.online.lib.api.OnlineSite; |
70 | 58 |
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopy; |
71 | 59 |
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopyDescriptor; |
60 |
import org.gvsig.online.lib.api.workingcopy.WorkingArea; |
|
72 | 61 |
import org.gvsig.online.swing.api.OnlineJInitWorkingcopy; |
73 | 62 |
import org.gvsig.online.swing.api.OnlineSwingLocator; |
74 | 63 |
import org.gvsig.online.swing.api.OnlineSwingServices; |
75 | 64 |
import org.gvsig.online.swing.impl.OnlineSwingCommons; |
76 | 65 |
import static org.gvsig.online.swing.impl.OnlineSwingCommons.notInSwingThreadInvokeLater; |
77 |
import org.gvsig.online.swing.impl.SelectAreaPanel; |
|
78 |
import org.gvsig.online.swing.impl.WMSUtils; |
|
66 |
import org.gvsig.online.swing.impl.workingarea.WorkingAreaPickerControllerImpl; |
|
79 | 67 |
import org.gvsig.tools.ToolsLocator; |
80 | 68 |
import org.gvsig.tools.dataTypes.CoercionException; |
81 | 69 |
import org.gvsig.tools.dataTypes.DataTypes; |
... | ... | |
92 | 80 |
import org.gvsig.tools.swing.api.task.TaskStatusController; |
93 | 81 |
import org.gvsig.tools.swing.api.task.TaskStatusSwingManager; |
94 | 82 |
import org.gvsig.tools.swing.api.windowmanager.Dialog; |
95 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
|
96 | 83 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2; |
97 | 84 |
import org.gvsig.tools.task.SimpleTaskStatus; |
98 | 85 |
import org.gvsig.tools.task.UserCancelTaskException; |
... | ... | |
118 | 105 |
private FilePickerController workspaceFilePicker; |
119 | 106 |
private PickerController<JDBCServerExplorerParameters> workspaceServerPicker; |
120 | 107 |
private TextFieldWithHistoryAndBookmarkController siteURLController; |
121 |
private PickerController<Envelope> workingAreaPicker;
|
|
108 |
private WorkingAreaPickerControllerImpl workingAreaPicker;
|
|
122 | 109 |
private TaskStatusController taskStatusController; |
123 | 110 |
|
124 | 111 |
|
... | ... | |
132 | 119 |
private void initComponents() { |
133 | 120 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
134 | 121 |
TaskStatusSwingManager taskStatusManager = ToolsSwingLocator.getTaskStatusSwingManager(); |
135 |
DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager(); |
|
136 | 122 |
OnlineSwingServices onlineservices = OnlineSwingLocator.getOnlineSwingManager().getDefaultServices(); |
137 | 123 |
|
138 | 124 |
this.taskStatusController = taskStatusManager.createTaskStatusController( |
... | ... | |
159 | 145 |
this.txtWorkspaceName.setText(H2SpatialUtils.removeH2FileNameExtension(file.getName())); |
160 | 146 |
} |
161 | 147 |
} |
162 |
doUpdateEnableComponents();
|
|
148 |
doUpdateComponents(); |
|
163 | 149 |
}); |
164 | 150 |
|
165 | 151 |
this.txtWorkspaceFile.addFocusListener(new FocusListener() { |
... | ... | |
170 | 156 |
|
171 | 157 |
@Override |
172 | 158 |
public void focusLost(FocusEvent e) { |
173 |
doUpdateEnableComponents();
|
|
159 |
doUpdateComponents(); |
|
174 | 160 |
} |
175 | 161 |
}); |
176 | 162 |
|
177 | 163 |
this.txtWorkspaceName.addActionListener((ActionEvent e) -> { |
178 |
doUpdateEnableComponents();
|
|
164 |
doUpdateComponents(); |
|
179 | 165 |
}); |
180 | 166 |
|
181 | 167 |
this.txtWorkspaceName.addFocusListener(new FocusListener() { |
... | ... | |
186 | 172 |
|
187 | 173 |
@Override |
188 | 174 |
public void focusLost(FocusEvent e) { |
189 |
doUpdateEnableComponents();
|
|
175 |
doUpdateComponents(); |
|
190 | 176 |
} |
191 | 177 |
}); |
192 | 178 |
|
... | ... | |
205 | 191 |
SwingUtilities.invokeLater(() -> {doChangeProject();}); |
206 | 192 |
}); |
207 | 193 |
|
208 |
this.btnWorkingAreaDialog.addActionListener((ActionEvent e) -> { |
|
209 |
doGetWorkingArea(); |
|
210 |
}); |
|
211 |
|
|
212 |
this.workingAreaPicker = MapControlLocator.getMapControlManager().createEnvelopePickerController( |
|
213 |
() -> { |
|
214 |
LabeledValue<MapControl> n = onlineservices.getActiveMapControl(); |
|
215 |
return (n == null)? null:n.getValue(); |
|
216 |
}, |
|
217 |
txtWorkingArea, |
|
218 |
btnWorkingAreaFromView, |
|
219 |
null |
|
220 |
); |
|
221 |
this.workingAreaPicker.addChangeListener(new ChangeListener() { |
|
222 |
@Override |
|
223 |
public void stateChanged(ChangeEvent e) { |
|
224 |
doChangeWorkingArea(); |
|
194 |
this.workingAreaPicker = new WorkingAreaPickerControllerImpl( |
|
195 |
() -> {return getSite();}, |
|
196 |
txtWorkingAreaLabel, |
|
197 |
txtWorkingArea, |
|
198 |
btnWorkingAreaFromView, |
|
199 |
btnWorkingAreaDialog, |
|
200 |
btnWorkingAreaHistory, |
|
201 |
btnWorkingAreaBookmarks, |
|
202 |
() -> { |
|
203 |
LabeledValue<MapControl> n = onlineservices.getActiveMapControl(); |
|
204 |
return (n == null) ? null : n.getValue(); |
|
205 |
}, |
|
206 |
() -> { |
|
207 |
List<OnlineLayer> selectedLayers = getLayersModel().getSelectedLayers(); |
|
208 |
if (selectedLayers.isEmpty()) { |
|
209 |
return null; |
|
210 |
} |
|
211 |
return selectedLayers; |
|
225 | 212 |
} |
213 |
); |
|
214 |
this.workingAreaPicker.addChangeListener((ChangeEvent e) -> { |
|
215 |
doUpdateComponents(); |
|
226 | 216 |
}); |
217 |
|
|
227 | 218 |
SwingUtilities.invokeLater(() -> { clearMessage(); }); |
228 | 219 |
ToolsSwingUtils.ensureRowsCols(this, 15, 40, 25, 100); |
229 | 220 |
|
... | ... | |
232 | 223 |
@Override |
233 | 224 |
public void setDialog(Dialog dialog) { |
234 | 225 |
this.dialog = dialog; |
235 |
this.doUpdateEnableComponents();
|
|
226 |
this.doUpdateComponents(); |
|
236 | 227 |
} |
237 | 228 |
|
238 |
private void doUpdateEnableComponents() {
|
|
229 |
private void doUpdateComponents() { |
|
239 | 230 |
message(""); |
240 | 231 |
|
241 | 232 |
boolean enableAll = true; |
... | ... | |
319 | 310 |
|
320 | 311 |
// 6. Check selected working area |
321 | 312 |
if( enableAll || isThereProject ) { |
322 |
Envelope workingArea = this.workingAreaPicker.get();
|
|
323 |
isThereWorkingArea = (workingArea != null); |
|
313 |
WorkingArea workingArea = this.workingAreaPicker.getWithoutAddHistory();
|
|
314 |
isThereWorkingArea = (workingArea != null && workingArea.getValue() != null);
|
|
324 | 315 |
if( !isThereWorkingArea ) { |
325 | 316 |
message2(enableAll, "_You_must_select_a_working_area"); |
326 | 317 |
} |
... | ... | |
394 | 385 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
395 | 386 |
OnlineManager manager = OnlineLocator.getOnlineManager(); |
396 | 387 |
OnlineProject theProject = this.getProject(); |
397 |
Envelope workingArea = this.getWorkingArea();
|
|
388 |
WorkingArea workingArea = this.workingAreaPicker.get();
|
|
398 | 389 |
if (theProject == null ) { |
399 | 390 |
return ERR_PROJECT_REQUIRED; |
400 | 391 |
} |
... | ... | |
415 | 406 |
} |
416 | 407 |
ws.download_config(true, status); |
417 | 408 |
ws.download_resources(true, status); |
409 |
ws.setCurrentWorkingArea(workingArea); |
|
418 | 410 |
LayersTableModel model = (LayersTableModel) this.tblLayers.getModel(); |
419 | 411 |
List<OnlineLayer> selectedLayers = model.getSelectedLayers(); |
420 | 412 |
if( !CollectionUtils.isEmpty(selectedLayers) ) { |
... | ... | |
450 | 442 |
status.cancel(); |
451 | 443 |
throw new UserCancelTaskException(); |
452 | 444 |
} |
453 |
err = ws.download(layer.getName(),workingArea, status); |
|
445 |
err = ws.download(layer.getName(),workingArea.getValue(), status);
|
|
454 | 446 |
if (err != ERR_NO_ERROR ) { |
455 | 447 |
// TODO: Que hacer aqui si da error |
456 | 448 |
} |
... | ... | |
556 | 548 |
this.site = onlineManager.connectSite(url); |
557 | 549 |
this.siteURLController.addHistory(url_s); |
558 | 550 |
doFillProjects(); |
559 |
doUpdateEnableComponents();
|
|
551 |
doUpdateComponents(); |
|
560 | 552 |
} catch (Exception ex) { |
561 | 553 |
LOGGER.warn("Can't chage site url ("+url_s+").",ex); |
562 | 554 |
} |
... | ... | |
607 | 599 |
model.addTableModelListener(new TableModelListener() { |
608 | 600 |
@Override |
609 | 601 |
public void tableChanged(TableModelEvent e) { |
610 |
doUpdateEnableComponents();
|
|
602 |
doUpdateComponents(); |
|
611 | 603 |
} |
612 | 604 |
}); |
613 | 605 |
this.tblLayers.setModel(model); |
614 |
doUpdateEnableComponents();
|
|
606 |
doUpdateComponents(); |
|
615 | 607 |
} |
616 | 608 |
|
617 | 609 |
private void clearLayers() { |
... | ... | |
619 | 611 |
this.tblLayers.setModel(model); |
620 | 612 |
} |
621 | 613 |
|
622 |
private Envelope getWorkingArea() { |
|
623 |
return this.workingAreaPicker.get(); |
|
624 |
} |
|
625 |
|
|
626 |
private void doGetWorkingArea() { |
|
627 |
List<OnlineLayer> selectedLayers = getLayersModel().getSelectedLayers(); //.get(0).getEnvelope() |
|
628 |
if(selectedLayers.isEmpty()){ |
|
629 |
return; |
|
630 |
} |
|
631 |
|
|
632 |
Envelope area = SelectAreaPanel.getWorkingArea(this.getSite(), selectedLayers); |
|
633 |
if (area != null) { |
|
634 |
workingAreaPicker.set(area); |
|
635 |
doUpdateEnableComponents(); |
|
636 |
} |
|
637 |
} |
|
638 |
|
|
639 | 614 |
private LayersTableModel getLayersModel() { |
640 | 615 |
return (LayersTableModel) this.tblLayers.getModel(); |
641 | 616 |
} |
642 | 617 |
|
643 |
private void doChangeWorkingArea() { |
|
644 |
Envelope env = this.workingAreaPicker.get(); |
|
645 |
if( env == null ) { |
|
646 |
return; |
|
647 |
} |
|
648 |
String s = this.txtWorkingAreaLabel.getText(); |
|
649 |
if( StringUtils.isBlank(s) ) { |
|
650 |
s = "Area "+(new Timestamp(System.currentTimeMillis())).toString(); |
|
651 |
this.txtWorkingAreaLabel.setText(s); |
|
652 |
} |
|
653 |
doUpdateEnableComponents(); |
|
654 |
} |
|
655 |
|
|
656 | 618 |
private SimpleTaskStatus getTaskStatus() { |
657 | 619 |
SimpleTaskStatus taskStatus = ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("_Create_workingcopy"); |
658 | 620 |
taskStatus.setAutoremove(true); |
Also available in: Unified diff