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 14827 bsanchez
/* 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 23659 nbrodin
import java.awt.geom.AffineTransform;
22
23 18826 bsanchez
import javax.swing.Icon;
24
25 14827 bsanchez
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
26
import org.gvsig.fmap.raster.layers.ILayerState;
27
import org.gvsig.fmap.raster.layers.IRasterLayerActions;
28 23659 nbrodin
import org.gvsig.fmap.raster.tools.behavior.TransformedRectangleBehavior;
29 18826 bsanchez
import org.gvsig.raster.gui.IGenericToolBarMenuItem;
30 20646 nbrodin
import org.gvsig.raster.util.RasterToolsUtil;
31 14827 bsanchez
import org.gvsig.rastertools.clipping.ui.ClippingDialog;
32 23659 nbrodin
import org.gvsig.rastertools.clipping.ui.listener.ClippingMouseViewListener;
33 21044 nbrodin
import org.gvsig.rastertools.clipping.ui.listener.ClippingPanelListener;
34 14827 bsanchez
35 23659 nbrodin
import com.iver.andami.PluginServices;
36
import com.iver.cit.gvsig.fmap.MapControl;
37 14827 bsanchez
import com.iver.cit.gvsig.fmap.layers.FLayer;
38 23659 nbrodin
import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior;
39
import com.iver.cit.gvsig.fmap.tools.Behavior.MouseMovementBehavior;
40 25061 nbrodin
import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
41 14827 bsanchez
import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
42
import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
43 23659 nbrodin
import com.iver.cit.gvsig.project.documents.view.toolListeners.StatusBarListener;
44 14827 bsanchez
/**
45 14846 bsanchez
 * <code>ClippingTocMenuEntry</code> es el punto de entrada del menu del
46 14827 bsanchez
 * recorte.
47
 *
48
 * @version 17/04/2007
49
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
50
 */
51 18826 bsanchez
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 23659 nbrodin
        /**
71
         * Carga el listener de salvar a raster en el MapControl.
72
         */
73 23698 nbrodin
        private void loadClippingListener(MapControl m_MapControl, ClippingMouseViewListener clippingMouseViewListener, FLyrRasterSE lyr) {
74 23659 nbrodin
                // Si no se ha cargado el listener a?n lo cargamos.
75 23698 nbrodin
                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 23659 nbrodin
        }
81
82 14827 bsanchez
        /*
83
         * (non-Javadoc)
84
         * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getGroup()
85
         */
86
        public String getGroup() {
87 18826 bsanchez
                return "RasterExport";
88 14827 bsanchez
        }
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 20646 nbrodin
                return RasterToolsUtil.getText(this, "recorte");
112 14827 bsanchez
        }
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 18826 bsanchez
                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 14827 bsanchez
        }
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 18826 bsanchez
                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 14827 bsanchez
        }
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 25061 nbrodin
                BaseView theView = (BaseView) PluginServices.getMDIManager().getActiveWindow();
151 23659 nbrodin
                MapControl mapCtrl = theView.getMapControl();
152 14827 bsanchez
153
                if (selectedItems.length != 1)
154
                        return;
155
156
                fLayer = selectedItems[0];
157
158
                if (!(fLayer instanceof FLyrRasterSE))
159
                        return;
160 23659 nbrodin
161 21044 nbrodin
                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 23659 nbrodin
                ClippingMouseViewListener clippingMouseViewListener = new ClippingMouseViewListener(mapCtrl, clippingDialog.getClippingPanel(), clippingData, (FLyrRasterSE)fLayer);
172 23698 nbrodin
                loadClippingListener(mapCtrl, clippingMouseViewListener, ((FLyrRasterSE)fLayer));
173 23659 nbrodin
174 20646 nbrodin
                RasterToolsUtil.addWindow(clippingDialog);
175 14827 bsanchez
        }
176 18826 bsanchez
177
        /*
178
         * (non-Javadoc)
179
         * @see org.gvsig.rastertools.generictoolbar.IGenericToolBarMenuItem#getIcon()
180
         */
181
        public Icon getIcon() {
182 20646 nbrodin
                return RasterToolsUtil.getIcon("clipping-icon");
183 18826 bsanchez
        }
184 14827 bsanchez
}