Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tasseledcap / trunk / org.gvsig.raster.tasseledcap / org.gvsig.raster.tasseledcap.app.tasseledcapclient / src / main / java / org / gvsig / raster / tasseledcap / app / TasseledCapExtension.java @ 3379

History | View | Annotate | Download (5.88 KB)

1
package org.gvsig.raster.tasseledcap.app;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5

    
6
import org.gvsig.andami.IconThemeHelper;
7
import org.gvsig.andami.PluginServices;
8
import org.gvsig.andami.plugins.Extension;
9
import org.gvsig.andami.ui.mdiManager.IWindow;
10
import org.gvsig.app.project.documents.view.gui.IView;
11
import org.gvsig.fmap.mapcontext.layers.FLayer;
12
import org.gvsig.fmap.mapcontrol.MapControl;
13
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
14
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
15
import org.gvsig.i18n.Messages;
16
import org.gvsig.raster.algorithm.BasicAPISwingPanel;
17
import org.gvsig.raster.algorithm.process.DataProcess;
18
import org.gvsig.raster.fmap.layers.*;
19
import org.gvsig.raster.swing.RasterSwingLibrary;
20
import org.gvsig.raster.tasseledcap.app.toolbox.ToolboxTasseledCapLoader;
21
import org.gvsig.raster.tasseledcap.swing.TasseledCapSwingLocator;
22
import org.gvsig.tools.ToolsLocator;
23
import org.gvsig.tools.extensionpoint.ExtensionPoint;
24
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
25

    
26

    
27
public class TasseledCapExtension extends Extension implements ActionListener {
28
    private BasicAPISwingPanel   mainPanel              = null;
29
    private MainWindow           windowMainPanel        = null;
30
    private FLyrRaster           lyr                    = null;
31

    
32
    public void initialize() {
33

    
34
            // Adds an entry to the TOC's floating menu to those layers defined in this extension
35

    
36
                //ExtensionPoint exPoint = ToolsLocator.getExtensionPointManager().add("My_TocActions");
37
                //exPoint.append("MyMenuEntry", "", new PrincipalComponentsTocMenuEntry());
38

    
39
        // Adds a new tab to the "add layer" dialog
40

    
41
            //AddLayer.addWizard(PrincipalComponentsWizard.class);
42

    
43
            // Adds a new button in the raster bar
44
            // TODO: Remove for providers
45
                ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
46
                ExtensionPoint point = extensionPoints.add("GenericToolBarMenu");
47
                point.append("TasseledCap", "", TasseledCapTocMenuEntry.getSingleton());
48
                TasseledCapTocMenuEntry.setExtension(this);
49

    
50
        Messages.addResourceFamily("org.gvsig.raster.tasseledcap.app.i18n.text",
51
                        TasseledCapExtension.class.getClassLoader(),
52
                        TasseledCapExtension.class.getClass().getName());
53

    
54
            initilizeIcons();
55
    }
56

    
57
        public void postInitialize() {
58
                new ToolboxTasseledCapLoader().registerTool();
59
        }
60

    
61
    public void execute(String actionCommand) {
62
            if (actionCommand.compareTo("TasseledCap") == 0) {
63
                    lyr = getSelectedLayer();
64
                    if(lyr == null) {
65
                            RasterSwingLibrary.messageBoxError(Messages.getText("layer_not_found"), null);
66
                            return;
67
                    }
68

    
69
                        String defaultROIEPSG = getFirstMapCtrl().getProjection().getAbrev();
70

    
71
                    mainPanel = TasseledCapSwingLocator.getSwingManager().createTasseledCapMainPanel(
72
                                    lyr.getDataStore(),
73
                                    lyr.getName(),
74
                                    lyr.getDataStore().getBandCount(),
75
                                    defaultROIEPSG);
76

    
77
                    windowMainPanel = new MainWindow(mainPanel.getComponent(),
78
                                    Messages.getText("tasseled_cap"),
79
                                    400, 420,
80
                                    this);
81

    
82
                    PluginServices.getMDIManager().addCentredWindow(windowMainPanel);
83

    
84
                    mainPanel.initialize();
85
            }
86
    }
87

    
88
        /**
89
         * Gets the Mapcontrol for the first view found.
90
         * @return
91
         */
92
    private MapControl getFirstMapCtrl() {
93
            IWindow[] windowList = PluginServices.getMDIManager().getOrderedWindows();
94
            for (int i = 0; i < windowList.length; i++) {
95
                    if(windowList[i] instanceof IView) {
96
                            return ((IView)windowList[i]).getMapControl();
97
                    }
98
            }
99
            return null;
100
    }
101

    
102
    /**
103
     * Gets the selected and valid layer
104
     * @return
105
         */
106
    private FLyrRaster getSelectedLayer() {
107
        MapControl firstMapCtrl = getFirstMapCtrl();
108
        if (firstMapCtrl != null) {
109

    
110
            FLayer[] lyrList =
111
                getFirstMapCtrl().getMapContext().getLayers().getActives();
112
            if (lyrList.length <= 1) {
113

    
114
                for (int i = 0; i < lyrList.length; i++) {
115
                    if (lyrList[i] instanceof FLyrRaster) {
116
                        return (FLyrRaster) lyrList[i];
117
                    }
118
                }
119
            }
120
        }
121
        return null;
122
    }
123

    
124
    public boolean isEnabled() {
125
      FLyrRaster selectedLayer = getSelectedLayer();
126
      if (selectedLayer == null) {
127
        return false;
128
      }
129

    
130
      if (!(selectedLayer instanceof ILayerState))
131
        return false;
132

    
133
      if (!((ILayerState) selectedLayer).isOpen())
134
        return false;
135

    
136
      if((selectedLayer).getRender().getFilterList().get("colortable") != null)
137
        return false;
138

    
139
      if(selectedLayer.getDataStore().getBandCount() < 4)
140
        return false;
141

    
142
      return true;
143
    }
144

    
145
    public boolean isVisible() {
146
      FLyrRaster selectedLayer = getSelectedLayer();
147
      if (selectedLayer == null)
148
        return false;
149

    
150
      if (!(selectedLayer instanceof IRasterLayerActions))
151
        return false;
152

    
153
      return ((IRasterLayerActions) selectedLayer).isActionEnabled(IRasterLayerActions.ENHANCED);
154
    }
155

    
156
    void initilizeIcons(){
157
                IconThemeHelper.registerIcon(null, "tasseled-cab", this);
158
                IconThemeHelper.registerIcon(null, "gvsig-icon", this);
159
                IconThemeHelper.registerIcon(null, "gvsig-icon16x16", this);
160
    }
161

    
162
        public void actionPerformed(ActionEvent e) {
163
                //ACCEPT MAIN PANEL
164
                if( e.getSource() == ((DefaultButtonsPanel)windowMainPanel).getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY) ||
165
                        e.getSource() == ((DefaultButtonsPanel)windowMainPanel).getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
166
                        DataProcess task = null;
167
                        try {
168
                                task = (DataProcess)mainPanel.getResult();
169
                        } catch (Exception e1) {
170
                                RasterSwingLibrary.messageBoxError(Messages.getText("problems_creating_process"), null);
171
                                return;
172
                        }
173
                        task.setActions(new ProcessEndActions(windowMainPanel, lyr));
174
                        task.init();
175
                        task.start();
176
                }
177
        }
178

    
179
        public void interrupted() {
180

    
181
        }
182

    
183
        public void updateProgress(int current, int total) {
184

    
185
        }
186
}