Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / trunk / org.gvsig.raster.tools / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / tool / roi / ROIManagerTocMenuEntry.java @ 2123

History | View | Annotate | Download (5.08 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;
23

    
24
import java.util.ArrayList;
25
import java.util.List;
26

    
27
import javax.swing.Icon;
28

    
29
import org.gvsig.andami.IconThemeHelper;
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
33
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
34
import org.gvsig.app.project.documents.view.toc.ITocItem;
35
import org.gvsig.fmap.dal.coverage.exception.GridException;
36
import org.gvsig.fmap.mapcontext.layers.FLayer;
37
import org.gvsig.fmap.mapcontext.layers.FLayers;
38
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
39
import org.gvsig.raster.fmap.layers.FLyrRaster;
40
import org.gvsig.raster.fmap.layers.ILayerState;
41
import org.gvsig.raster.mainplugin.toolbar.IGenericToolBarMenuItem;
42
import org.gvsig.raster.swing.RasterSwingLocator;
43
import org.gvsig.raster.swing.roi.ROIPanel;
44
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
45
import org.gvsig.raster.tools.app.basic.tool.roi.ui.ROIWindow;
46
import org.gvsig.raster.tools.app.basic.tool.roi.ui.listener.ROIPanelListener;
47
import org.gvsig.raster.tools.app.basic.tool.roi.ui.listener.ROIsTablePanelListener;
48

    
49
/**
50
 * Punto de entrada del menu del gestor de ROIs.
51
 *
52
 * @author Diego Guerrero Sevilla (diego.guerrero@uclm.es
53
 */
54
public class ROIManagerTocMenuEntry extends AbstractTocContextMenuAction implements IGenericToolBarMenuItem {
55
        static private ROIManagerTocMenuEntry singleton  = null;
56

    
57
        /**
58
         * Nadie puede crear una instancia a esta clase ?nica, hay que usar el
59
         * getSingleton()
60
         */
61
        private ROIManagerTocMenuEntry() {}
62

    
63
        /**
64
         * Devuelve un objeto unico a dicha clase
65
         * @return
66
         */
67
        static public ROIManagerTocMenuEntry getSingleton() {
68
                if (singleton == null)
69
                        singleton = new ROIManagerTocMenuEntry();
70
                return singleton;
71
        }
72

    
73
        public String getGroup() {
74
                return "RasterLayer";
75
        }
76

    
77
        public int getGroupOrder() {
78
                return 10;
79
        }
80

    
81
        public int getOrder() {
82
                return 60;
83
        }
84

    
85
        public String getText() {
86
                return RasterToolsUtil.getText(this, "regiones_interes");
87
        }
88

    
89
        public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
90
                if ((selectedItems == null) || (selectedItems.length != 1))
91
                        return false;
92

    
93
                if (!(selectedItems[0] instanceof ILayerState))
94
                        return false;
95

    
96
                if (!((ILayerState) selectedItems[0]).isOpen())
97
                        return false;
98

    
99
                return true;
100
        }
101

    
102
        public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
103
                if ((selectedItems == null) || (selectedItems.length != 1))
104
                        return false;
105

    
106
                if (!(selectedItems[0] instanceof FLyrRaster))
107
                        return false;
108
                
109
                return true;
110
        }
111

    
112
        public void execute(ITocItem item, FLayer[] selectedItems) {
113
                FLayer fLayer = null;
114

    
115
                if (selectedItems.length != 1)
116
                        return;
117

    
118
                fLayer = selectedItems[0];
119

    
120
                if (!(fLayer instanceof FLyrRaster))
121
                        return;
122
                
123
                
124
                ROIPanel panel = RasterSwingLocator.getSwingManager().createROIPanel();
125
                ROIDataModel dataModel = new ROIDataModel(getLFLyrVects());
126
                dataModel.setROIPanel(panel);
127
                ROIWindow window = new ROIWindow(panel.getComponent(), "ROI", 500, 265);
128
                try {
129
                        dataModel.setLayer(selectedItems[0]);
130
                } catch (GridException e) {
131
                        
132
                }
133
                
134
                ROIPanelListener panelListener = new ROIPanelListener(window, dataModel);
135
                ROIsTablePanelListener tableListener = new ROIsTablePanelListener(panel, dataModel, window);
136
                
137
                panel.addButtonsListener(tableListener, panelListener);
138
                panel.addTableListeners(tableListener, tableListener);
139
                window.addIWindowListener(panelListener);
140
                
141
                RasterToolsUtil.addWindow(window);
142
        }
143
        
144
        /**
145
         * Gets the list of vectorial layers loaded in all views
146
         * @return
147
         */
148
        public List<FLyrVect> getLFLyrVects() {
149
                List<FLyrVect> list = new ArrayList<FLyrVect>();
150
                IWindow[] w = PluginServices.getMDIManager().getAllWindows();
151
                for (int i = 0; i < w.length; i++) {
152
                        if(w[i] instanceof AbstractViewPanel) {
153
                                FLayers lys = ((AbstractViewPanel)w[i]).getMapControl().getMapContext().getLayers();
154
                                for (int j = 0; j < lys.getLayersCount(); j++) {
155
                                        if(lys.getLayer(j) instanceof FLyrVect)
156
                                                list.add((FLyrVect)lys.getLayer(j));
157
                                }
158
                        }
159
                }
160
                return list;
161
        }
162
        
163
        public Icon getIcon() {
164
                return IconThemeHelper.getImageIcon("layer-modify-roi");
165
        }
166
        
167
        public boolean isEnableEvents() {
168
                return true;
169
        }
170
}