Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extRasterTools-SE / src / org / gvsig / rastertools / clipping / ClippingTocMenuEntry.java @ 31496

History | View | Annotate | Download (6.64 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 javax.swing.Icon;
22

    
23
import org.gvsig.andami.PluginServices;
24
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
25
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
26
import org.gvsig.app.project.documents.view.toc.ITocItem;
27
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
28
import org.gvsig.fmap.mapcontext.layers.FLayer;
29
import org.gvsig.fmap.mapcontrol.MapControl;
30
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
31
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
32
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
33
import org.gvsig.fmap.raster.layers.ILayerState;
34
import org.gvsig.fmap.raster.layers.IRasterLayerActions;
35
import org.gvsig.fmap.raster.tools.behavior.TransformedRectangleBehavior;
36
import org.gvsig.raster.gui.IGenericToolBarMenuItem;
37
import org.gvsig.raster.util.RasterToolsUtil;
38
import org.gvsig.rastertools.clipping.ui.ClippingDialog;
39
import org.gvsig.rastertools.clipping.ui.listener.ClippingMouseViewListener;
40
import org.gvsig.rastertools.clipping.ui.listener.ClippingPanelListener;
41

    
42
/**
43
 * <code>ClippingTocMenuEntry</code> es el punto de entrada del menu del
44
 * recorte.
45
 *
46
 * @version 17/04/2007
47
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
48
 */
49
public class ClippingTocMenuEntry extends AbstractTocContextMenuAction implements IGenericToolBarMenuItem {
50
        static private ClippingTocMenuEntry singleton = null;
51

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

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

    
68
        /**
69
         * Carga el listener de salvar a raster en el MapControl.
70
         */
71
        private void loadClippingListener(MapControl m_MapControl, ClippingMouseViewListener clippingMouseViewListener, FLyrRasterSE lyr) {
72
                // Si no se ha cargado el listener a?n lo cargamos.
73
                StatusBarListener sbl = new StatusBarListener(m_MapControl);
74
                TransformedRectangleBehavior trb = new TransformedRectangleBehavior(clippingMouseViewListener);
75
//                AffineTransform at = ((FLyrRasterSE)lyr).getAffineTransform();
76
//                trb.setAffineTransform(at);
77
                m_MapControl.addBehavior("clipRaster", new Behavior[] { trb, new MouseMovementBehavior(sbl) });
78
        }
79

    
80
        /*
81
         * (non-Javadoc)
82
         * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getGroup()
83
         */
84
        public String getGroup() {
85
                return "RasterExport";
86
        }
87

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

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

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

    
112
        /*
113
         * (non-Javadoc)
114
         * @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[])
115
         */
116
        public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
117
                if ((selectedItems == null) || (selectedItems.length != 1))
118
                        return false;
119

    
120
                if (!(selectedItems[0] instanceof ILayerState))
121
                        return false;
122

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

    
128
        /*
129
         * (non-Javadoc)
130
         * @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[])
131
         */
132
        public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
133
                if ((selectedItems == null) || (selectedItems.length != 1))
134
                        return false;
135

    
136
                if (!(selectedItems[0] instanceof FLyrRasterSE))
137
                        return false;
138

    
139
                return ((FLyrRasterSE) selectedItems[0]).isActionEnabled(IRasterLayerActions.FILTER);
140
        }
141

    
142
        /*
143
         * (non-Javadoc)
144
         * @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[])
145
         */
146
        public void execute(ITocItem item, FLayer[] selectedItems) {
147
                FLayer fLayer = null;
148
                AbstractViewPanel theView = (AbstractViewPanel) PluginServices.getMDIManager().getActiveWindow();
149
                MapControl mapCtrl = theView.getMapControl();
150

    
151
                if (selectedItems.length != 1)
152
                        return;
153

    
154
                fLayer = selectedItems[0];
155

    
156
                if (!(fLayer instanceof FLyrRasterSE))
157
                        return;
158

    
159
                ClippingDialog clippingDialog = new ClippingDialog(420, 290, fLayer.getName());
160

    
161
                ClippingPanelListener clippingPanelListener = new ClippingPanelListener(clippingDialog.getClippingPanel());
162
                clippingPanelListener.setLayer((FLyrRasterSE)fLayer);
163
                clippingDialog.getClippingPanel().setClippingListener(clippingPanelListener);
164

    
165
                ClippingData clippingData = new ClippingData();
166
                clippingPanelListener.setData(clippingData);
167
                clippingData.addObserver(clippingDialog.getClippingPanel());
168

    
169
                ClippingMouseViewListener clippingMouseViewListener = new ClippingMouseViewListener(mapCtrl, clippingDialog.getClippingPanel(), clippingData, (FLyrRasterSE)fLayer);
170
                loadClippingListener(mapCtrl, clippingMouseViewListener, ((FLyrRasterSE)fLayer));
171

    
172
                RasterToolsUtil.addWindow(clippingDialog);
173
        }
174

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