Statistics
| Revision:

gvsig-raster / 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 / SaveRasterLayerExtension.java @ 8843

History | View | Annotate | Download (4.86 KB)

1
package org.gvsig.raster.tools.app.mainplugin;
2

    
3
import javax.swing.JOptionPane;
4

    
5
import org.apache.commons.lang3.StringUtils;
6
import org.slf4j.Logger;
7
import org.slf4j.LoggerFactory;
8

    
9
import org.gvsig.andami.IconThemeHelper;
10
import org.gvsig.andami.plugins.Extension;
11
import org.gvsig.app.ApplicationLocator;
12
import org.gvsig.app.ApplicationManager;
13
import org.gvsig.app.project.documents.view.ViewDocument;
14
import org.gvsig.app.project.documents.view.gui.IView;
15
import org.gvsig.fmap.dal.exception.DataException;
16
import org.gvsig.fmap.dal.raster.api.RasterStore;
17
import org.gvsig.fmap.mapcontext.layers.FLayer;
18
import org.gvsig.fmap.mapcontext.layers.FLayers;
19
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
20
import org.gvsig.fmap.mapcontrol.MapControl;
21
import org.gvsig.raster.lib.buffer.api.Buffer;
22
import org.gvsig.raster.lib.buffer.api.exceptions.BufferOperationException;
23
import org.gvsig.raster.lib.buffer.api.operations.OperationList;
24
import org.gvsig.raster.swing.buffer.RasterSwingBufferLocator;
25
import org.gvsig.raster.swing.buffer.RasterSwingBufferManager;
26
import org.gvsig.raster.swing.buffer.save.SaveBufferDialog;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.i18n.I18nManager;
29

    
30
/**
31
 *
32
 * @author fdiaz
33
 *
34
 */
35
public class SaveRasterLayerExtension extends Extension {
36

    
37
    private static final Logger logger = LoggerFactory.getLogger(SaveRasterLayerExtension.class);
38

    
39
    @Override
40
    public void initialize() {
41
        IconThemeHelper.registerIcon("action", "layer-saveas", this);
42
    }
43

    
44
    @Override
45
    public void execute(String actionCommand) {
46
        if (StringUtils.equalsIgnoreCase(actionCommand, "save-raster-layer")) {
47
            I18nManager i18nManager = ToolsLocator.getI18nManager();
48
            IView view = getActiveView();
49
            MapControl mapControl = view.getMapControl();
50
            FLayer[] layers = mapControl.getMapContext().getLayers().getActives();
51
            if (layers[0] instanceof RasterLayer) {
52
                final RasterLayer layer = (RasterLayer) layers[0];
53

    
54
                final RasterStore store = layer.getRasterStore();
55
                Buffer buffer;
56
                try {
57
                    buffer = store.getRasterSet();
58
                } catch (DataException e) {
59
                    logger.error("Error creating raster store's buffer", e);
60
                    JOptionPane.showMessageDialog(null,
61
                        new StringBuilder().append(i18nManager.getTranslation("error_creating_buffer")).append(":")
62
                            .append(e.getLocalizedMessage()), i18nManager.getTranslation("error"),
63
                        JOptionPane.ERROR_MESSAGE);
64
                    return;
65
                }
66
                OperationList filters = layer.getLegend().getFilters();
67
                if(buffer != null){
68
                    Buffer filteredBuffer = null;
69
                    try {
70
                        filteredBuffer = filters.execute(buffer);
71
                    } catch (BufferOperationException e) {
72
                        logger.error("Error applying the filters", e);
73
                        JOptionPane.showMessageDialog(null,
74
                            new StringBuilder().append(i18nManager.getTranslation("error_applying_buffer")).append(":")
75
                                .append(e.getLocalizedMessage()), i18nManager.getTranslation("error"),
76
                            JOptionPane.ERROR_MESSAGE);
77
                        return;
78
                    }
79
                    RasterSwingBufferManager rasterSwingBufferManager = RasterSwingBufferLocator.getSwingManager();
80
                    SaveBufferDialog saveBufferDialog = rasterSwingBufferManager.createSaveBufferDialog();
81
                    saveBufferDialog.setBuffer(filteredBuffer);
82
                    saveBufferDialog.showDialog(null);
83
                    return;
84
                }
85
            }
86
        }
87
    }
88

    
89
    @Override
90
    public boolean isEnabled() {
91
        IView view = getActiveView();
92
        if (view != null) {
93
            ViewDocument viewDocument = view.getViewDocument();
94
            FLayer[] layers = viewDocument.getMapContext().getLayers().getActives();
95
            if (layers.length == 1 && layers[0] instanceof RasterLayer) {
96
                return true;
97
            }
98
        }
99
        return false;
100
    }
101

    
102
    @Override
103
    public boolean isVisible() {
104
        IView view = getActiveView();
105
        if (view != null) {
106
            ViewDocument viewDocument = view.getViewDocument();
107
            FLayers layers = viewDocument.getMapContext().getLayers();
108
            for (FLayer fLayer : layers) {
109
                if (fLayer instanceof RasterLayer) {
110
                    return true;
111
                }
112
            }
113
        }
114
        return false;
115

    
116
    }
117

    
118
    private IView getActiveView() {
119
        ApplicationManager application = ApplicationLocator.getManager();
120
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
121
        return view;
122
    }
123

    
124
}