Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / branches / org.gvsig.raster.tools_dataaccess_refactoring / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / tool / roi / ui / listener / ROIPanelListener.java @ 2340

History | View | Annotate | Download (3.73 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.tools.app.basic.tool.roi.ui.listener;
23

    
24
import java.io.File;
25
import java.util.ArrayList;
26
import java.util.List;
27

    
28
import org.gvsig.andami.ui.mdiManager.IWindowListener;
29
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
30
import org.gvsig.fmap.dal.exception.DataException;
31
import org.gvsig.fmap.dal.feature.FeatureStore;
32
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
33
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
34
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
35
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
36
import org.gvsig.raster.fmap.layers.FLyrRaster;
37
import org.gvsig.raster.roi.ROI;
38
import org.gvsig.raster.swing.RasterSwingLibrary;
39
import org.gvsig.raster.tools.app.basic.tool.roi.ROIDataModel;
40
import org.gvsig.raster.tools.app.basic.tool.roi.ui.ROIWindow;
41

    
42
/**
43
 * Listener for the main panel which manage the ROIs of a raster layer
44
 * @author Nacho Brodin (nachobrodin@gmail.com)
45
 */
46
public class ROIPanelListener implements ButtonsPanelListener, IWindowListener {
47
        private ROIWindow          window         = null;
48
        private ROIDataModel       dataModel      = null;
49

    
50
        public ROIPanelListener(ROIWindow window, ROIDataModel dataModel) {
51
                this.window = window;
52
                this.dataModel = dataModel;
53
        }
54
        
55
        public void actionButtonPressed(ButtonsPanelEvent e) {
56
                //Al pulsar Aceptar o Aplicar se ejecuta el aceptar del panel
57
                if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
58
                        List<ROI> rois = dataModel.getROIs();
59
                        ((FLyrRaster)dataModel.getFLayer()).setRois(rois);
60
                        try {
61
                                if(dataModel.getROIFile() != null) {
62
                                        List<File> fileList = new ArrayList<File>();
63
                                        fileList.add(dataModel.getROIFile());
64
                                        ((FLyrRaster)dataModel.getFLayer()).setROIsFiles(fileList);
65
                                }
66
                        } catch (RmfSerializerException e1) {
67
                                RasterSwingLibrary.messageBoxError("error_saving_rois_rmf", this, e1);
68
                        }
69
                }
70

    
71
                // Al pulsar Cancelar la ventana se cierra y se refresca la vista
72
                if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
73
                        window.close();
74
                }
75

    
76
                // Al pulsar Aceptar simplemente la ventana se cierra
77
                if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
78
                        window.close();
79
                }
80
        }
81
        
82
        public void windowClosed() {
83
                FeatureStore graphicStore = dataModel.getGraphicLayer().getFeatureStore();
84
                if(graphicStore.isEditing()) {
85
                        try {
86
                                graphicStore.finishEditing();
87
                        } catch (DataException e) {
88
                                e.printStackTrace();
89
                        }
90
                }
91
                dataModel.clearRoiGraphics();
92
                dataModel.getMapControl().rePaintDirtyLayers();
93
                dataModel.setPreviousTool();
94
        }
95
        
96
        public void windowActivated() {
97
                try {
98
                        if (dataModel.getTable().getSelectedRows().length == 1) {
99
                                dataModel.getROIPanel().setToolsEnabled(true);
100
                                dataModel.selectDrawRoiTool();
101
                        }
102
                } catch (NotInitializeException e) {
103
                        RasterSwingLibrary.messageBoxError("error_tabla_rois", this, e);
104
                }
105
        }
106

    
107
}