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 | 2641 | nbrodin | 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 | 3330 | mcompany | import org.gvsig.raster.fmap.layers.*; |
19 | 2641 | nbrodin | 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 | 2811 | fdiaz | private FLyrRaster lyr = null; |
31 | |||
32 | 2641 | nbrodin | public void initialize() { |
33 | 2811 | fdiaz | |
34 | 2641 | nbrodin | // Adds an entry to the TOC's floating menu to those layers defined in this extension
|
35 | 2811 | fdiaz | |
36 | 2641 | nbrodin | //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 | 2811 | fdiaz | |
41 | 2641 | nbrodin | //AddLayer.addWizard(PrincipalComponentsWizard.class);
|
42 | 2811 | fdiaz | |
43 | 2641 | nbrodin | // 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 | 2811 | fdiaz | |
50 | 2641 | nbrodin | Messages.addResourceFamily("org.gvsig.raster.tasseledcap.app.i18n.text",
|
51 | TasseledCapExtension.class.getClassLoader(), |
||
52 | 2811 | fdiaz | TasseledCapExtension.class.getClass().getName()); |
53 | 2641 | nbrodin | |
54 | initilizeIcons(); |
||
55 | } |
||
56 | 2811 | fdiaz | |
57 | 2641 | nbrodin | 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 | 2811 | fdiaz | |
69 | 2641 | nbrodin | String defaultROIEPSG = getFirstMapCtrl().getProjection().getAbrev();
|
70 | 2811 | fdiaz | |
71 | 2641 | nbrodin | mainPanel = TasseledCapSwingLocator.getSwingManager().createTasseledCapMainPanel( |
72 | lyr.getDataStore(), |
||
73 | lyr.getName(), |
||
74 | lyr.getDataStore().getBandCount(), |
||
75 | defaultROIEPSG); |
||
76 | 2811 | fdiaz | |
77 | windowMainPanel = new MainWindow(mainPanel.getComponent(),
|
||
78 | 3192 | fdiaz | Messages.getText("tasseled_cap"),
|
79 | 2811 | fdiaz | 400, 420, |
80 | 2641 | nbrodin | this);
|
81 | 2811 | fdiaz | |
82 | 2641 | nbrodin | PluginServices.getMDIManager().addCentredWindow(windowMainPanel); |
83 | 2811 | fdiaz | |
84 | 2641 | nbrodin | mainPanel.initialize(); |
85 | } |
||
86 | } |
||
87 | 2811 | fdiaz | |
88 | 2641 | nbrodin | /**
|
89 | * Gets the Mapcontrol for the first view found.
|
||
90 | * @return
|
||
91 | */
|
||
92 | private MapControl getFirstMapCtrl() {
|
||
93 | 2811 | fdiaz | IWindow[] windowList = PluginServices.getMDIManager().getOrderedWindows();
|
94 | 2641 | nbrodin | for (int i = 0; i < windowList.length; i++) { |
95 | if(windowList[i] instanceof IView) { |
||
96 | return ((IView)windowList[i]).getMapControl();
|
||
97 | } |
||
98 | 2811 | fdiaz | } |
99 | 2641 | nbrodin | return null; |
100 | } |
||
101 | |||
102 | /**
|
||
103 | * Gets the selected and valid layer
|
||
104 | * @return
|
||
105 | */
|
||
106 | 3379 | fdiaz | 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 | 3330 | mcompany | } |
121 | 3379 | fdiaz | return null; |
122 | } |
||
123 | 2641 | nbrodin | |
124 | public boolean isEnabled() { |
||
125 | 3330 | mcompany | FLyrRaster selectedLayer = getSelectedLayer(); |
126 | if (selectedLayer == null) { |
||
127 | 2641 | nbrodin | return false; |
128 | 3330 | mcompany | } |
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 | 2641 | nbrodin | } |
144 | |||
145 | public boolean isVisible() { |
||
146 | 3330 | mcompany | FLyrRaster selectedLayer = getSelectedLayer(); |
147 | if (selectedLayer == null) |
||
148 | 2641 | nbrodin | return false; |
149 | 3330 | mcompany | |
150 | if (!(selectedLayer instanceof IRasterLayerActions)) |
||
151 | return false; |
||
152 | |||
153 | return ((IRasterLayerActions) selectedLayer).isActionEnabled(IRasterLayerActions.ENHANCED);
|
||
154 | 2641 | nbrodin | } |
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 | 2811 | fdiaz | //ACCEPT MAIN PANEL
|
164 | 2641 | nbrodin | 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 | 2811 | fdiaz | |
181 | 2641 | nbrodin | } |
182 | 2811 | fdiaz | |
183 | 2641 | nbrodin | public void updateProgress(int current, int total) { |
184 | 2811 | fdiaz | |
185 | 2641 | nbrodin | } |
186 | } |