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 @ 2381

History | View | Annotate | Download (4.87 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.FLyrRaster;
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_cab"), 
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().getAllWindows();
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
                FLayer[] lyrList = getFirstMapCtrl().getMapContext().getLayers().getActives();
108
                for (int i = 0; i < lyrList.length; i++) {
109
                        if(lyrList[i] instanceof FLyrRaster)
110
                                return (FLyrRaster)lyrList[i];
111
                }
112
                return null; 
113
        }
114

    
115
    public boolean isEnabled() {
116
        return false;
117
    }
118

    
119
    public boolean isVisible() {
120
        return false;
121
    }
122

    
123
    void initilizeIcons(){
124
                IconThemeHelper.registerIcon(null, "tasseled-cab", this);
125
    }
126

    
127
        public void actionPerformed(ActionEvent e) {
128
                //ACCEPT MAIN PANEL 
129
                if( e.getSource() == ((DefaultButtonsPanel)windowMainPanel).getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY) ||
130
                        e.getSource() == ((DefaultButtonsPanel)windowMainPanel).getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
131
                        DataProcess task = null;
132
                        try {
133
                                task = (DataProcess)mainPanel.getResult();
134
                        } catch (Exception e1) {
135
                                RasterSwingLibrary.messageBoxError(Messages.getText("problems_creating_process"), null);
136
                                return;
137
                        }
138
                        task.setActions(new ProcessEndActions(windowMainPanel, lyr));
139
                        task.init();
140
                        task.start();
141
                }
142
        }
143

    
144
        public void interrupted() {
145
                
146
        }
147
        
148
        public void updateProgress(int current, int total) {
149
                
150
        }
151
}