Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / clipping / ClippingTocMenuEntry.java @ 30938

History | View | Annotate | Download (6.68 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.rastertools.clipping;
20

    
21
import java.awt.geom.AffineTransform;
22

    
23
import javax.swing.Icon;
24

    
25
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
26
import org.gvsig.fmap.raster.layers.ILayerState;
27
import org.gvsig.fmap.raster.layers.IRasterLayerActions;
28
import org.gvsig.fmap.raster.tools.behavior.TransformedRectangleBehavior;
29
import org.gvsig.raster.gui.IGenericToolBarMenuItem;
30
import org.gvsig.raster.util.RasterToolsUtil;
31
import org.gvsig.rastertools.clipping.ui.ClippingDialog;
32
import org.gvsig.rastertools.clipping.ui.listener.ClippingMouseViewListener;
33
import org.gvsig.rastertools.clipping.ui.listener.ClippingPanelListener;
34

    
35
import com.iver.andami.PluginServices;
36
import com.iver.cit.gvsig.fmap.MapControl;
37
import com.iver.cit.gvsig.fmap.layers.FLayer;
38
import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior;
39
import com.iver.cit.gvsig.fmap.tools.Behavior.MouseMovementBehavior;
40
import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
41
import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
42
import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
43
import com.iver.cit.gvsig.project.documents.view.toolListeners.StatusBarListener;
44
/**
45
 * <code>ClippingTocMenuEntry</code> es el punto de entrada del menu del
46
 * recorte.
47
 *
48
 * @version 17/04/2007
49
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
50
 */
51
public class ClippingTocMenuEntry extends AbstractTocContextMenuAction implements IGenericToolBarMenuItem {
52
        static private ClippingTocMenuEntry singleton = null;
53

    
54
        /**
55
         * Nadie puede crear una instancia a esta clase ?nica, hay que usar el
56
         * getSingleton()
57
         */
58
        private ClippingTocMenuEntry() {}
59

    
60
        /**
61
         * Devuelve un objeto unico a dicha clase
62
         * @return
63
         */
64
        static public ClippingTocMenuEntry getSingleton() {
65
                if (singleton == null)
66
                        singleton = new ClippingTocMenuEntry();
67
                return singleton;
68
        }
69

    
70
        /**
71
         * Carga el listener de salvar a raster en el MapControl.
72
         */
73
        private void loadClippingListener(MapControl m_MapControl, ClippingMouseViewListener clippingMouseViewListener, FLyrRasterSE lyr) {
74
                // Si no se ha cargado el listener a?n lo cargamos.
75
                StatusBarListener sbl = new StatusBarListener(m_MapControl);
76
                TransformedRectangleBehavior trb = new TransformedRectangleBehavior(clippingMouseViewListener);
77
                AffineTransform at = ((FLyrRasterSE)lyr).getAffineTransform();
78
                trb.setAffineTransform(at);
79
                m_MapControl.addMapTool("clipRaster", new Behavior[] { trb, new MouseMovementBehavior(sbl) });
80
        }
81
        
82
        /*
83
         * (non-Javadoc)
84
         * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getGroup()
85
         */
86
        public String getGroup() {
87
                return "RasterExport";
88
        }
89

    
90
        /*
91
         * (non-Javadoc)
92
         * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getGroupOrder()
93
         */
94
        public int getGroupOrder() {
95
                return 50;
96
        }
97

    
98
        /*
99
         * (non-Javadoc)
100
         * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getOrder()
101
         */
102
        public int getOrder() {
103
                return 1;
104
        }
105

    
106
        /*
107
         * (non-Javadoc)
108
         * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getText()
109
         */
110
        public String getText() {
111
                return RasterToolsUtil.getText(this, "recorte");
112
        }
113

    
114
        /*
115
         * (non-Javadoc)
116
         * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#isEnabled(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
117
         */
118
        public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
119
                if ((selectedItems == null) || (selectedItems.length != 1))
120
                        return false;
121

    
122
                if (!(selectedItems[0] instanceof ILayerState))
123
                        return false;
124

    
125
                if (!((ILayerState) selectedItems[0]).isOpen())
126
                        return false;
127
                return true;
128
        }
129

    
130
        /*
131
         * (non-Javadoc)
132
         * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#isVisible(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
133
         */
134
        public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
135
                if ((selectedItems == null) || (selectedItems.length != 1))
136
                        return false;
137

    
138
                if (!(selectedItems[0] instanceof FLyrRasterSE))
139
                        return false;
140
                
141
                return ((FLyrRasterSE) selectedItems[0]).isActionEnabled(IRasterLayerActions.FILTER);
142
        }
143

    
144
        /*
145
         * (non-Javadoc)
146
         * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#execute(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
147
         */
148
        public void execute(ITocItem item, FLayer[] selectedItems) {
149
                FLayer fLayer = null;
150
                BaseView theView = (BaseView) PluginServices.getMDIManager().getActiveWindow();
151
                MapControl mapCtrl = theView.getMapControl();
152

    
153
                if (selectedItems.length != 1)
154
                        return;
155

    
156
                fLayer = selectedItems[0];
157

    
158
                if (!(fLayer instanceof FLyrRasterSE))
159
                        return;
160
                
161
                ClippingDialog clippingDialog = new ClippingDialog(420, 290, fLayer.getName());
162
                
163
                ClippingPanelListener clippingPanelListener = new ClippingPanelListener(clippingDialog.getClippingPanel());
164
                clippingPanelListener.setLayer((FLyrRasterSE)fLayer);
165
                clippingDialog.getClippingPanel().setClippingListener(clippingPanelListener);
166
                
167
                ClippingData clippingData = new ClippingData();
168
                clippingPanelListener.setData(clippingData);
169
                clippingData.addObserver(clippingDialog.getClippingPanel());
170
                
171
                ClippingMouseViewListener clippingMouseViewListener = new ClippingMouseViewListener(mapCtrl, clippingDialog.getClippingPanel(), clippingData, (FLyrRasterSE)fLayer);
172
                loadClippingListener(mapCtrl, clippingMouseViewListener, ((FLyrRasterSE)fLayer));
173
                
174
                RasterToolsUtil.addWindow(clippingDialog);
175
        }
176

    
177
        /*
178
         * (non-Javadoc)
179
         * @see org.gvsig.rastertools.generictoolbar.IGenericToolBarMenuItem#getIcon()
180
         */
181
        public Icon getIcon() {
182
                return RasterToolsUtil.getIcon("clipping-icon");
183
        }
184
}