Revision 6791

View differences:

org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/DefaultRasterToolsSwingManager.java
69 69
    public Envelope getLastClipEnvelopeSaved() {
70 70
        return this.lastClipEnvelopeSaved;
71 71
    }
72

  
73
    @Override
74
    public File getLastFolderUsedToSaveRaster() {
75
        return this.folder;
76
    }
77

  
78
    @Override
79
    public void setLastFolderUsedToSaveRaster(File folder) {
80
        this.folder = folder;
81
    }
82

  
83 72
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.api/src/main/java/org/gvsig/raster/tools/swing/api/RasterToolsSwingManager.java
23 23
 */
24 24

  
25 25

  
26
import java.io.File;
27

  
28 26
import org.gvsig.fmap.geom.primitive.Envelope;
29 27
import org.gvsig.raster.tools.lib.api.exceptions.RasterToolCreatingPanelException;
30 28
import org.gvsig.tools.service.Manager;
......
54 52
     * @return
55 53
     */
56 54
    Envelope getLastClipEnvelopeSaved();
57

  
58
    /**
59
     * @return
60
     */
61
    File getLastFolderUsedToSaveRaster();
62

  
63
    /**
64
     * @param folder
65
     */
66
    void setLastFolderUsedToSaveRaster(File folder);
67

  
68 55
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster.tools/pom.xml
4 4
  <parent>
5 5
    <groupId>org.gvsig</groupId>
6 6
    <artifactId>org.gvsig.desktop</artifactId>
7
    <version>2.0.174-SNAPSHOT</version>
7
    <version>2.0.178-SNAPSHOT</version>
8 8
  </parent>
9 9
  <artifactId>org.gvsig.raster.tools</artifactId>
10 10
  <version>2.4.1-SNAPSHOT</version>
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ExportViewToImageExtension.java
1 1
package org.gvsig.raster.tools.app.mainplugin;
2 2

  
3
import java.awt.Dimension;
4 3
import java.awt.Graphics2D;
5 4
import java.awt.image.BufferedImage;
6
import java.beans.PropertyChangeEvent;
7
import java.beans.PropertyChangeListener;
8 5
import java.io.File;
9
import java.util.ArrayList;
10
import java.util.Iterator;
11
import java.util.List;
12 6

  
13
import javax.swing.JComponent;
14
import javax.swing.JFileChooser;
15
import javax.swing.JPanel;
7
import javax.swing.JOptionPane;
16 8

  
17 9
import org.apache.commons.lang3.StringUtils;
18 10
import org.slf4j.Logger;
......
25 17
import org.gvsig.app.project.documents.view.ViewDocument;
26 18
import org.gvsig.app.project.documents.view.gui.IView;
27 19
import org.gvsig.fmap.dal.DALLocator;
28
import org.gvsig.fmap.dal.DataManager;
29
import org.gvsig.fmap.dal.DataServerExplorer;
30
import org.gvsig.fmap.dal.DataServerExplorerParameters;
31 20
import org.gvsig.fmap.dal.exception.DataException;
32
import org.gvsig.fmap.dal.exception.InitializeException;
33
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
34 21
import org.gvsig.fmap.dal.exception.ReadException;
35
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
36 22
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
37
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter;
38
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
39
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
40 23
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
41
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProvider;
42
import org.gvsig.fmap.dal.serverexplorer.filesystem.swing.FilesystemExplorerPropertiesPanel;
43
import org.gvsig.fmap.dal.serverexplorer.filesystem.swing.FilesystemExplorerPropertiesPanelManager;
44
import org.gvsig.fmap.dal.spi.DALSPILocator;
45
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
46 24
import org.gvsig.fmap.geom.primitive.Envelope;
47 25
import org.gvsig.fmap.mapcontext.MapContext;
48 26
import org.gvsig.fmap.mapcontext.MapContextException;
......
53 31
import org.gvsig.raster.lib.buffer.api.Buffer;
54 32
import org.gvsig.raster.lib.buffer.api.BufferLocator;
55 33
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
56
import org.gvsig.raster.tools.swing.api.RasterToolsSwingLocator;
57
import org.gvsig.tools.dataTypes.DataTypes;
58
import org.gvsig.tools.dynform.DynFormDefinition;
59
import org.gvsig.tools.dynform.DynFormFieldDefinition;
60
import org.gvsig.tools.dynform.JDynForm;
34
import org.gvsig.raster.swing.buffer.RasterSwingBufferLocator;
35
import org.gvsig.raster.swing.buffer.RasterSwingBufferManager;
36
import org.gvsig.raster.swing.buffer.save.SaveBufferDialog;
37
import org.gvsig.tools.ToolsLocator;
38
import org.gvsig.tools.i18n.I18nManager;
61 39
import org.gvsig.tools.locator.LocatorException;
40
import org.gvsig.tools.swing.api.ToolsSwingLocator;
41
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
62 42

  
63 43
/**
64 44
 *
......
69 49

  
70 50
    private static final Logger logger = LoggerFactory.getLogger(ExportViewToImageExtension.class);
71 51
    private MapContext mapContext;
72
//    private Buffer buffer = null;
73 52

  
74 53
    @Override
75 54
    public void initialize() {
......
78 57

  
79 58
    @Override
80 59
    public void execute(String actionCommand) {
81
        // ApplicationManager application = ApplicationLocator.getManager();
82

  
83 60
        if (StringUtils.equalsIgnoreCase(actionCommand, "export-view-to-image")) {
84 61
            IView view = getActiveView();
85 62
            MapControl mapControl = view.getMapControl();
......
97 74
                logger.warn("Can't draw mapContext.", e2);
98 75
            }
99 76

  
100
//            File outputfile = new File("/home/paco/tmp/saved.png");
101
//            try {
102
//                ImageIO.write(image, "png", outputfile);
103
//            } catch (IOException e2) {
104
//                // TODO Auto-generated catch block
105
//                e2.printStackTrace();
106
//            }
107

  
108 77
            Envelope envelope = viewPort.getAdjustedEnvelope();
109 78

  
110 79
            Buffer buffer = null;
......
115 84
                return;
116 85
            }
117 86

  
87
            RasterSwingBufferManager rasterSwingBufferManager = RasterSwingBufferLocator.getSwingManager();
88
            SaveBufferDialog saveBufferDialog = rasterSwingBufferManager.createSaveBufferDialog(buffer);
118 89

  
119
//            RasterSwingManager swingManager = RasterSwingLocator.getSwingManager();
90
            boolean exist = false;
120 91

  
121
            DataManager dm = DALLocator.getDataManager();
122
            FilesystemServerExplorerParameters param;
123
            FilesystemServerExplorer explorer = null;
124
            try {
125
                param =
126
                    (FilesystemServerExplorerParameters) dm
127
                        .createServerExplorerParameters(FilesystemServerExplorer.NAME);
128
                // param.setInitialpath(lastPath);
129
                explorer = (FilesystemServerExplorer) dm.openServerExplorer(FilesystemServerExplorer.NAME, param);
130
            } catch (Exception e) {
131
                throw new RuntimeException(e);
132
            }
133
            File folder = RasterToolsSwingLocator.getSwingManager().getLastFolderUsedToSaveRaster();
92
            I18nManager i18nManager = ToolsLocator.getI18nManager();
93
            while (!exist) {
134 94

  
135
            final JFileChooser jfc = new JFileChooser(folder);
95
                if (saveBufferDialog.showSaveDialog(null) == SaveBufferDialog.APPROVE_OPTION) {
136 96

  
137
            List dataStoreProviderNames = explorer.getDataStoreProviderNames();
138
            List<FilesystemServerExplorerProvider> creationProviders =
139
                new ArrayList<FilesystemServerExplorerProvider>();
140
            Iterator filters = explorer.getFilters(DataServerExplorer.MODE_RASTER);
141
            while (filters.hasNext()) {
142
                FilesystemServerExplorerProvider provider = (FilesystemServerExplorerProvider) filters.next();
143
                if (provider.canCreate()) {
144
                    creationProviders.add(provider);
145
                    jfc.addChoosableFileFilter(new MyFileFilter(provider));
146
                }
147
            }
97
                    NewRasterStoreParameters params = saveBufferDialog.getParameters();
98
                    String providerName = saveBufferDialog.getProviderName();
148 99

  
149
            jfc.addPropertyChangeListener(new PropertyChangeListener() {
100
                    File file = ((FilesystemStoreParameters) params).getFile();
101
                    ThreadSafeDialogsManager dlgManager = ToolsSwingLocator.getThreadSafeDialogsManager();
102
                    try {
103
                        if (file.exists()) {
104
                            String message = i18nManager.getTranslation("_File_exists_Overwrite_question");
105
                            String title = i18nManager.getTranslation("_export_raster");
106
                            int confirm =
107
                                dlgManager.confirmDialog(message, title, JOptionPane.YES_NO_OPTION,
108
                                    JOptionPane.QUESTION_MESSAGE);
150 109

  
151
                @Override
152
                public void propertyChange(PropertyChangeEvent evt) {
153
                    evt.getNewValue();
154

  
155
                    if (evt.getNewValue() instanceof MyFileFilter) {
156
                        String dataStoreProviderName =
157
                            ((MyFileFilter) evt.getNewValue()).getFileFilter().getDataStoreProviderName();
158
                        NewRasterStoreParameters params = getParams(dataStoreProviderName);
159

  
160
                        FilesystemExplorerPropertiesPanel panelProperty = loadPanelProperties(params);
161
                        if (panelProperty != null) {
162
                            jfc.setAccessory(panelProperty.asJComponent());
110
                            if (confirm == JOptionPane.YES_OPTION) {
111
                                DALLocator.getDataManager().createFileStore(providerName, params, true);
112
                                exist = true;
113
                            }
114
                            continue;
163 115
                        } else {
164
                            jfc.setAccessory(new JPanel());
165
                            Dimension dimension = jfc.getPreferredSize();
166
                            jfc.setPreferredSize(new Dimension(dimension.width*2, dimension.height));
116
                            DALLocator.getDataManager().createFileStore(providerName, params, true);
117
                            exist = true;
167 118
                        }
168
                        jfc.revalidate();
119
                    } catch (LocatorException | DataException e) {
120
                        logger.warn("Can't export buffer from view's image.", e);
121
                        String message = i18nManager.getTranslation("_error_exporting_buffer");
122
                        String title = i18nManager.getTranslation("_export_raster");
123
                        dlgManager.messageDialog(message, title, JOptionPane.WARNING_MESSAGE);
124
                        return;
169 125
                    }
170
                    if (evt.getNewValue() instanceof String) {
171
                        logger.info("evt.getNewValue(): "+evt.getNewValue());
172
                    }
173

  
126
                } else {
127
                    exist = true;
174 128
                }
175
            });
176

  
177

  
178
            jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
179
            jfc.setAcceptAllFileFilterUsed(false);
180

  
181
            if (jfc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
182
                // FIXME:
183

  
184
                MyFileFilter fileFilter = (MyFileFilter) jfc.getFileFilter();
185
                FilesystemFileFilter fileSystemFilter = fileFilter.getFileFilter();
186
                String providerName = fileSystemFilter.getDataStoreProviderName();
187

  
188
                NewRasterStoreParameters params = getParams(providerName);
189

  
190
                File selectedFile = jfc.getSelectedFile();
191
                JComponent accessory = jfc.getAccessory();
192

  
193
                if(accessory!=null && accessory instanceof FilesystemExplorerPropertiesPanel){
194
                    FilesystemExplorerPropertiesPanel propertiesPanel = (FilesystemExplorerPropertiesPanel)accessory;
195
                    propertiesPanel.fetchParameters(params);
196
                }
197

  
198

  
199
                params.setBuffer(buffer);
200
                ((FilesystemStoreParameters)params).setFile(selectedFile);
201

  
202
                DataManagerProviderServices dataManager = DALSPILocator.getDataManagerProviderServices();
203
                DataServerExplorerParameters eparams = null;
204
                DataServerExplorer serverExplorer;
205
                try {
206
                    serverExplorer = dataManager.openServerExplorer(FilesystemServerExplorer.NAME, eparams);
207
                } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
208
                    logger.warn("Can't open explorer.", e);
209
                    return;
210
                }
211

  
212

  
213

  
214
                try {
215
                    serverExplorer.add(providerName, params, true);
216
                } catch (DataException e) {
217
                    logger.warn("Can't save file.", e);
218
                    return;
219
                }
220

  
221
                RasterToolsSwingLocator.getSwingManager().setLastFolderUsedToSaveRaster(selectedFile.getParentFile());
222

  
223
            } else {
224
                // FIXME:
225 129
            }
226 130
        }
227 131
    }
228 132

  
229
    protected FilesystemExplorerPropertiesPanel loadPanelProperties(NewRasterStoreParameters params) {
230

  
231
        if (params != null) {
232
            FilesystemExplorerPropertiesPanelManager manager =
233
                ApplicationLocator.getFilesystemExplorerPropertiesPanelManager();
234
            FilesystemExplorerPropertiesPanel panel = manager.createPanel(params);
235
            panel.setExcludeGeometryOptions(false);
236
            JDynForm form = panel.getForm();
237
            if( form!=null ) {
238
                int cnt=0;
239
                DynFormDefinition def = form.getDefinition();
240
                for (DynFormFieldDefinition fieldDef : def.getDefinitions()) {
241
                    if( fieldDef.getType()== DataTypes.FILE && fieldDef.isMandatory() ) {
242
                        fieldDef.setHidden(true);
243
                    } else if( "providername".equalsIgnoreCase(fieldDef.getName()) ) {
244
                        fieldDef.setHidden(true);
245
                    } else if( ! fieldDef.isHidden() ) {
246
                        cnt++;
247
                    }
248
                }
249
                if (cnt==0){
250
                    return null;
251
                }
252
                form.setLayoutMode(JDynForm.USE_SEPARATORS);
253
            }
254
            return panel;
255
        }
256

  
257
        return null;
258
    }
259

  
260
    /**
261
     * @param dataStoreProviderName
262
     * @param buffer
263
     * @return
264
     */
265
    private NewRasterStoreParameters getParams(String dataStoreProviderName) {
266

  
267

  
268
        DataManagerProviderServices dataManager = null;
269
        try {
270
            dataManager = DALSPILocator.getDataManagerProviderServices();
271
        } catch (LocatorException e) {
272
            logger.warn("Can't get data manager.", e);
273
            return null;
274
        }
275

  
276
        DataServerExplorerParameters eparams = null;
277
//        try {
278
//            eparams = dataManager.createServerExplorerParameters(FilesystemServerExplorer.NAME);
279
//        } catch (InitializeException | ProviderNotRegisteredException e) {
280
//            logger.warn("Can't initialize explorer.", e);
281
//            return null;
282
//        }
283

  
284
        // eparams.setDynValue("initialpath", destFile);
285
        DataServerExplorer serverExplorer;
286
        try {
287
            serverExplorer = dataManager.openServerExplorer(FilesystemServerExplorer.NAME, eparams);
288
        } catch (ValidateDataParametersException | InitializeException | ProviderNotRegisteredException e) {
289
            logger.warn("Can't open explorer.", e);
290
            return null;
291
        }
292

  
293
        NewRasterStoreParameters params;
294
        try {
295
            params = (NewRasterStoreParameters) serverExplorer.getAddParameters(dataStoreProviderName);
296
        } catch (DataException e) {
297
            logger.warn("Can't create store parameters.", e);
298
            return null;
299
        }
300
        return params;
301

  
302
    }
303

  
304 133
    @Override
305 134
    public boolean isEnabled() {
306 135
        IView view = getActiveView();
......
328 157
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
329 158
        return view;
330 159
    }
331

  
332
    /**
333
     * @author fdiaz
334
     *
335
     */
336
    public static class MyFileFilter extends javax.swing.filechooser.FileFilter {
337

  
338
        private FilesystemFileFilter fileFilter;
339

  
340
        /**
341
         * @param fileFilter
342
         */
343
        public MyFileFilter(FilesystemFileFilter fileFilter) {
344
            this.fileFilter = fileFilter;
345
        }
346

  
347
        @Override
348
        public boolean accept(File f) {
349
            if (f.isDirectory()) {
350
                return true;
351
            }
352
            return this.getFileFilter().accept(f);
353
        }
354

  
355
        @Override
356
        public String getDescription() {
357
            return this.getFileFilter().getDescription();
358
        }
359

  
360
        /**
361
         * @return the fileFilter
362
         */
363
        public FilesystemFileFilter getFileFilter() {
364
            return fileFilter;
365
        }
366

  
367
        // /**
368
        // * @param fileFilter the fileFilter to set
369
        // */
370
        // public void setFileFilter(FilesystemFileFilter fileFilter) {
371
        // this.fileFilter = fileFilter;
372
        // }
373

  
374
    }
375

  
376 160
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/pom.xml
48 48
     <groupId>org.gvsig</groupId>
49 49
     <artifactId>org.gvsig.fmap.mapcontext.raster.swing.api</artifactId>
50 50
   </dependency>
51
   <dependency>
52
     <groupId>org.gvsig</groupId>
53
     <artifactId>org.gvsig.raster.swing.buffer.api</artifactId>
54
   </dependency>
51 55
  </dependencies>
52 56
</project>

Also available in: Unified diff