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/download/OnlineJDownloadImpl.java

View differences:

OnlineJDownloadImpl.java
23 23
 */
24 24
package org.gvsig.online.swing.impl.download;
25 25

  
26
import org.gvsig.online.swing.impl.SelectAreaPanel;
27
import java.awt.event.ActionEvent;
28
import java.awt.event.ActionListener;
29
import java.net.MalformedURLException;
30
import java.net.URL;
31
import java.sql.Timestamp;
32 26
import java.util.ArrayList;
33 27
import java.util.Collections;
34 28
import java.util.List;
......
37 31
import javax.swing.JComponent;
38 32
import javax.swing.SwingUtilities;
39 33
import javax.swing.event.ChangeEvent;
40
import javax.swing.event.ChangeListener;
41 34
import javax.swing.event.TableModelEvent;
42 35
import org.apache.commons.collections4.CollectionUtils;
43 36
import org.apache.commons.lang3.StringUtils;
44 37
import org.gvsig.fmap.dal.swing.DALSwingLocator;
45 38
import org.gvsig.fmap.dal.swing.DataSwingManager;
46
import org.gvsig.fmap.geom.primitive.Envelope;
47
import org.gvsig.fmap.mapcontext.layers.FLayer;
48 39
import org.gvsig.fmap.mapcontrol.MapControl;
49
import org.gvsig.fmap.mapcontrol.MapControlLocator;
50 40
import org.gvsig.online.lib.api.OnlineLayer;
51 41
import org.gvsig.online.lib.api.OnlineLocator;
52 42
import org.gvsig.online.lib.api.OnlineManager;
53 43
import static org.gvsig.online.lib.api.OnlineManager.ERR_NO_ERROR;
54 44
import org.gvsig.online.lib.api.OnlineProject;
55
import org.gvsig.online.lib.api.workingcopy.OnlineEntity;
45
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopy;
46
import org.gvsig.online.lib.api.workingcopy.WorkingArea;
56 47
import org.gvsig.online.swing.api.OnlineJDownload;
57 48
import org.gvsig.online.swing.api.OnlineSwingLocator;
58 49
import org.gvsig.online.swing.api.OnlineSwingManager;
59 50
import org.gvsig.online.swing.api.OnlineSwingServices;
60 51
import org.gvsig.online.swing.impl.OnlineSwingCommons;
61 52
import static org.gvsig.online.swing.impl.OnlineSwingCommons.notInSwingThreadInvokeLater;
62
import org.gvsig.online.swing.impl.WMSUtils;
63 53
import org.gvsig.online.swing.impl.initworkspace.LayersTableModel;
54
import org.gvsig.online.swing.impl.workingarea.WorkingAreaPickerControllerImpl;
64 55
import org.gvsig.tools.ToolsLocator;
65 56
import org.gvsig.tools.i18n.I18nManager;
66 57
import org.gvsig.tools.swing.api.Component;
......
71 62
import org.gvsig.tools.swing.api.task.TaskStatusController;
72 63
import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
73 64
import org.gvsig.tools.swing.api.windowmanager.Dialog;
74
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
75 65
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
76 66
import org.gvsig.tools.task.SimpleTaskStatus;
77 67
import org.gvsig.tools.task.UserCancelTaskException;
78 68
import org.gvsig.tools.util.LabeledValue;
79 69
import org.slf4j.LoggerFactory;
80
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopy;
81 70

  
82 71
/**
83 72
 *
......
91 80

  
92 81
    private Dialog dialog;
93 82

  
94
    private PickerController<Envelope> workingAreaPicker;
83
    private WorkingAreaPickerControllerImpl workingAreaPicker;
95 84
    private TaskStatusController taskStatusController;
96 85
    private PickerController<OnlineWorkingcopy> workingcopyPicker;
97 86
    private List<String> defaultTablesSelection;
......
150 139
            doChangeWorkingcopy();
151 140
        });
152 141
        
153
        this.btnWorkingAreaDialog.addActionListener((ActionEvent e) -> {
154
            doGetWorkingArea();
155
        });
156

  
157
        this.workingAreaPicker = MapControlLocator.getMapControlManager().createEnvelopePickerController(
158
                () -> {
159
                    LabeledValue<MapControl> n = onlineservices.getActiveMapControl();
160
                    return (n == null)? null:n.getValue();
161
                },
162
                txtWorkingArea,
163
                btnWorkingAreaFromView,
164
                null
165
        );
166
        this.workingAreaPicker.addChangeListener(new ChangeListener() {
167
            @Override
168
            public void stateChanged(ChangeEvent e) {
169
                doChangeWorkingArea();
170
            }
171
        });
172 142
        this.txtWorkspaceName.setText("");
173 143
        this.txtWorkspaceName.setEditable(false);
144
        this.workingAreaPicker = new WorkingAreaPickerControllerImpl(
145
            () -> {return this.getWorkingcopy().getSite();},
146
            txtWorkingAreaLabel,
147
            txtWorkingArea,
148
            btnWorkingAreaFromView,
149
            btnWorkingAreaDialog,
150
            btnWorkingAreaHistory,
151
            btnWorkingAreaBookmarks,
152
            () -> {
153
                LabeledValue<MapControl> n = onlineservices.getActiveMapControl();
154
                return (n == null) ? null : n.getValue();
155
            },
156
            () -> {
157
                List<OnlineLayer> selectedLayers = getLayersModel().getSelectedLayers();
158
                if (selectedLayers.isEmpty()) {
159
                    return null;
160
                }
161
                return selectedLayers;
162
            }
163
        );
164
        this.workingAreaPicker.addChangeListener((ChangeEvent e) -> {
165
            this.getWorkingcopy().setCurrentWorkingArea(this.workingAreaPicker.getWithoutAddHistory());
166
            doUpdateEnableComponents();
167
        });
168
        
174 169
        SwingUtilities.invokeLater(() -> { clearMessage(); });
175 170
        ToolsSwingUtils.ensureRowsCols(this, 15, 40, 25, 100);
176 171

  
......
215 210
        
216 211
        // 3. Check selected working area
217 212
        if( enableAll ) {
218
            Envelope workingArea = this.workingAreaPicker.get();
219
            isThereWorkingArea = (workingArea != null);
213
            WorkingArea workingArea = this.workingAreaPicker.getWithoutAddHistory();
214
            isThereWorkingArea = (workingArea != null && workingArea.getValue() != null);
220 215
            if( !isThereWorkingArea ) {
221 216
                message2(enableAll, "_You_must_select_a_working_area");
222 217
            }
......
261 256
        if( workingcopy==null ) {
262 257
            return OnlineManager.ERR_WORKINGCOPY_REQUIRED;
263 258
        }
264
        Envelope workingArea = this.getWorkingArea();
259
        WorkingArea workingArea = this.workingAreaPicker.get();
265 260
        if (workingArea==null ) {
266 261
            return OnlineManager.ERR_WORKINGAREA_REQUIRED;
267 262
        }
......
307 302
                        status.cancel();
308 303
                        throw new UserCancelTaskException();
309 304
                    }
310
                    err = workingcopy.download(layer.getName(),workingArea, status);
305
                    err = workingcopy.download(layer.getName(),workingArea.getValue(), status);
311 306
                    if (err != ERR_NO_ERROR ) {
312 307
                        // TODO: Que hacer aqui si da error
313 308
                    }
......
364 359
        this.tblLayers.setModel(model);
365 360
    }
366 361
    
367
    private Envelope getWorkingArea() {
368
        return this.workingAreaPicker.get();
369
    }
362
//    private WorkingArea getWorkingArea() {
363
//        return this.workingAreaPicker.get();
364
//    }
370 365

  
371
    private void doGetWorkingArea() {
372
        List<OnlineLayer> selectedLayers = getLayersModel().getSelectedLayers();
373
        if(selectedLayers.isEmpty()){
374
            return;
375
        }
376

  
377
        Envelope area = SelectAreaPanel.getWorkingArea(this.getWorkingcopy().getSite(), selectedLayers);
378
        if (area != null) {
379
            workingAreaPicker.set(area);
380
            doUpdateEnableComponents();
381
        }
382
    }
383
    
384 366
    private LayersTableModel getLayersModel() {
385 367
        return (LayersTableModel) this.tblLayers.getModel();
386 368
    }
387 369
    
388
    private void doChangeWorkingArea() {
389
        Envelope env = this.workingAreaPicker.get();
390
        if( env == null ) {
391
            return;
392
        }
393
        String s = this.txtWorkingAreaLabel.getText();
394
        if( StringUtils.isBlank(s) ) {
395
            s = "Area "+(new Timestamp(System.currentTimeMillis())).toString();
396
            this.txtWorkingAreaLabel.setText(s);
397
        }
398
        doUpdateEnableComponents();
399
    }
400
    
401 370
    private SimpleTaskStatus getTaskStatus() {
402 371
        SimpleTaskStatus taskStatus = ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("_Create_workingcopy");
403 372
        taskStatus.setAutoremove(true);
......
461 430
        });
462 431
        this.txtWorkspaceName.setText(w.getLabel());
463 432
        this.tblLayers.setModel(model);
433
        this.workingAreaPicker.set(w.getCurrentWorkingArea());
464 434
        doUpdateEnableComponents();    
465 435
    }
466 436

  

Also available in: Unified diff