Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / trunk / org.gvsig.raster.tools / org.gvsig.raster.tools.app / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / tool / clip / ClippingTocMenuEntry.java @ 875

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

    
24
import javax.swing.Icon;
25

    
26
import org.gvsig.andami.PluginServices;
27
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
28
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
29
import org.gvsig.app.project.documents.view.toc.ITocItem;
30
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.fmap.mapcontrol.MapControl;
33
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
34
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
35
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
36
import org.gvsig.raster.fmap.layers.FLyrRaster;
37
import org.gvsig.raster.fmap.layers.ILayerState;
38
import org.gvsig.raster.fmap.layers.IRasterLayerActions;
39
import org.gvsig.raster.fmap.tool.behavior.TransformedRectangleBehavior;
40
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
41
import org.gvsig.raster.tools.app.basic.raster.gui.IGenericToolBarMenuItem;
42
import org.gvsig.raster.tools.app.basic.tool.clip.ui.ClippingDialog;
43
import org.gvsig.raster.tools.app.basic.tool.clip.ui.listener.ClippingMouseViewListener;
44
import org.gvsig.raster.tools.app.basic.tool.clip.ui.listener.ClippingPanelListener;
45

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

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

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

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

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

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

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

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

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

    
124
                if (!(selectedItems[0] instanceof ILayerState))
125
                        return false;
126

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

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

    
140
                if (!(selectedItems[0] instanceof IRasterLayerActions))
141
                        return false;
142

    
143
                return ((IRasterLayerActions) selectedItems[0]).isActionEnabled(IRasterLayerActions.CLIPPING);
144
        }
145

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

    
155
                if (selectedItems.length != 1)
156
                        return;
157

    
158
                fLayer = selectedItems[0];
159

    
160
                if (!(fLayer instanceof FLyrRaster))
161
                        return;
162

    
163
                ClippingDialog clippingDialog = new ClippingDialog(420, 290, fLayer.getName());
164

    
165
                ClippingPanelListener clippingPanelListener = new ClippingPanelListener(clippingDialog.getClippingPanel());
166
                clippingPanelListener.setLayer((FLyrRaster)fLayer);
167
                clippingDialog.getClippingPanel().setClippingListener(clippingPanelListener);
168

    
169
                ClippingData clippingData = new ClippingData();
170
                clippingPanelListener.setData(clippingData);
171
                clippingData.addObserver(clippingDialog.getClippingPanel());
172

    
173
                ClippingMouseViewListener clippingMouseViewListener = new ClippingMouseViewListener(mapCtrl, clippingDialog.getClippingPanel(), clippingData, (FLyrRaster)fLayer);
174
                loadClippingListener(mapCtrl, clippingMouseViewListener, ((FLyrRaster)fLayer));
175
                
176
                clippingData.updateObservers();
177
                
178
                clippingDialog.getClippingPanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).setEnabled(false);
179
                clippingDialog.getClippingPanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).setEnabled(false);
180
                
181
                RasterToolsUtil.addWindow(clippingDialog);
182
        }
183

    
184
        /*
185
         * (non-Javadoc)
186
         * @see org.gvsig.rastertools.generictoolbar.IGenericToolBarMenuItem#getIcon()
187
         */
188
        public Icon getIcon() {
189
                return RasterToolsUtil.getIcon("clipping-icon");
190
        }
191
}