Statistics
| Revision:

svn-gvsig-desktop / branches / org.gvsig.desktop-2018a / org.gvsig.desktop.plugin / org.gvsig.raster.tools.app / org.gvsig.raster.tools.app.mainplugin / src / main / java / org / gvsig / raster / tools / app / mainplugin / ConvertRasterLayerTypeExtension.java @ 43876

History | View | Annotate | Download (6.85 KB)

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

    
3
import java.awt.Dimension;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.util.ArrayList;
7
import java.util.List;
8

    
9
import javax.swing.JOptionPane;
10
import javax.swing.event.AncestorEvent;
11
import javax.swing.event.AncestorListener;
12

    
13
import org.apache.commons.lang3.StringUtils;
14
import org.slf4j.Logger;
15
import org.slf4j.LoggerFactory;
16

    
17
import org.gvsig.andami.IconThemeHelper;
18
import org.gvsig.andami.plugins.Extension;
19
import org.gvsig.app.ApplicationLocator;
20
import org.gvsig.app.ApplicationManager;
21
import org.gvsig.app.project.documents.view.ViewDocument;
22
import org.gvsig.app.project.documents.view.gui.IView;
23
import org.gvsig.fmap.dal.exception.DataException;
24
import org.gvsig.fmap.dal.raster.RasterStore;
25
import org.gvsig.fmap.mapcontext.layers.FLayer;
26
import org.gvsig.fmap.mapcontext.layers.FLayers;
27
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
28
import org.gvsig.fmap.mapcontrol.MapControl;
29
import org.gvsig.raster.lib.buffer.api.Buffer;
30
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
31
import org.gvsig.raster.swing.buffer.RasterSwingBufferLocator;
32
import org.gvsig.raster.swing.buffer.RasterSwingBufferManager;
33
import org.gvsig.raster.swing.buffer.save.SaveBufferDialog;
34
import org.gvsig.raster.tools.lib.api.exceptions.RasterToolException;
35
import org.gvsig.raster.tools.swing.api.RasterToolsSwingLocator;
36
import org.gvsig.raster.tools.swing.api.RasterToolsSwingManager;
37
import org.gvsig.raster.tools.swing.api.converttype.ConvertTypePanel;
38
import org.gvsig.raster.tools.swing.api.viewclip.ViewClipPanel;
39
import org.gvsig.tools.ToolsLocator;
40
import org.gvsig.tools.i18n.I18nManager;
41
import org.gvsig.tools.swing.api.ToolsSwingLocator;
42
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
43
import org.gvsig.tools.swing.api.windowmanager.Dialog;
44
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
45
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
46

    
47
/**
48
 *
49
 * @author fdiaz
50
 *
51
 */
52
public class ConvertRasterLayerTypeExtension extends Extension {
53

    
54
    private static final Logger logger = LoggerFactory.getLogger(ConvertRasterLayerTypeExtension.class);
55

    
56
    @Override
57
    public void initialize() {
58
        IconThemeHelper.registerIcon("action", "convert-raster-layer-type-icon", this);
59
    }
60

    
61
    @Override
62
    public void execute(String actionCommand) {
63

    
64
        if (StringUtils.equalsIgnoreCase(actionCommand, "convert-raster-layer-type")) {
65
            I18nManager i18nManager = ToolsLocator.getI18nManager();
66
            IView view = getActiveView();
67
            MapControl mapControl = view.getMapControl();
68
            FLayer[] layers = mapControl.getMapContext().getLayers().getActives();
69
            if (layers[0] instanceof RasterLayer) {
70
                final RasterLayer layer = (RasterLayer) layers[0];
71

    
72
                final RasterToolsSwingManager manager = RasterToolsSwingLocator.getSwingManager();
73
                final ConvertTypePanel panel;
74
                try {
75
                    panel = manager.createConvertTypePanel();
76
                    panel.set(layer);
77
                    panel.asJComponent().setPreferredSize(new Dimension(200, 100));
78
                } catch (RasterToolException e2) {
79
                    logger.error("Error creating panel", e2);
80
                    JOptionPane.showMessageDialog(
81
                        null,
82
                        new StringBuilder().append(i18nManager.getTranslation("error_creating_panel")).append(":")
83
                            .append(e2.getLocalizedMessage()), i18nManager.getTranslation("error"), JOptionPane.ERROR_MESSAGE);
84
                    return;
85
                }
86

    
87
                final WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
88

    
89
                final Dialog dialog =
90
                    winManager.createDialog(panel.asJComponent(), i18nManager.getTranslation("convert_raster_layer_type") + " '" + layer.getName()+"'.",
91
                        null, WindowManager_v2.BUTTONS_APPLY_OK_CANCEL);
92

    
93
                dialog.addActionListener(new ActionListener() {
94

    
95
                    @Override
96
                    public void actionPerformed(ActionEvent e) {
97
                        switch (dialog.getAction()) {
98
                        case WindowManager_v2.BUTTON_APPLY:
99
                            doConvert(panel);
100
                            break;
101

    
102
                        case WindowManager_v2.BUTTON_OK:
103
                            if (doConvert(panel)) {
104
                                panel.asJComponent().setVisible(false);
105
                            }
106
                            break;
107

    
108
                        case WindowManager_v2.BUTTON_CANCEL:
109
                            panel.asJComponent().setVisible(false);
110
                            break;
111
                        }
112

    
113
                    }
114

    
115
                });
116
                dialog.show(WindowManager.MODE.WINDOW);
117
            }
118
        }
119
    }
120

    
121
    protected boolean doConvert(ConvertTypePanel panel) {
122
        ThreadSafeDialogsManager dlgManager = ToolsSwingLocator.getThreadSafeDialogsManager();
123

    
124
        RasterSwingBufferManager rasterSwingBufferManager = RasterSwingBufferLocator.getSwingManager();
125
        SaveBufferDialog saveBufferDialog = rasterSwingBufferManager.createSaveBufferDialog();
126

    
127
        // try {
128
        panel.fetch(saveBufferDialog);
129
        // } catch (BufferException e) {
130
        // logger.warn("Can't convert raster layer type.", e);
131
        //
132
        // String message = "_cant_convert_raster_layer_type";
133
        // String title = "_error_converting_layer";
134
        // dlgManager.messageDialog(message, title,
135
        // JOptionPane.WARNING_MESSAGE);
136
        // return false;
137
        // }
138

    
139
        if (saveBufferDialog.getBuffer() != null) {
140
            saveBufferDialog.showDialog(null);
141
        }
142
        return true;
143
    }
144

    
145
    @Override
146
    public boolean isEnabled() {
147
        IView view = getActiveView();
148
        if (view != null) {
149
            ViewDocument viewDocument = view.getViewDocument();
150
            FLayer[] layers = viewDocument.getMapContext().getLayers().getActives();
151
            if (layers.length == 1 && layers[0] instanceof RasterLayer) {
152
                return true;
153
            }
154
        }
155
        return false;
156
    }
157

    
158
    @Override
159
    public boolean isVisible() {
160
        IView view = getActiveView();
161
        if (view != null) {
162
            ViewDocument viewDocument = view.getViewDocument();
163
            FLayers layers = viewDocument.getMapContext().getLayers();
164
            for (FLayer fLayer : layers) {
165
                if (fLayer instanceof RasterLayer) {
166
                    return true;
167
                }
168
            }
169
        }
170
        return false;
171

    
172
    }
173

    
174
    private IView getActiveView() {
175
        ApplicationManager application = ApplicationLocator.getManager();
176
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
177
        return view;
178
    }
179

    
180
}