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

View differences:

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