svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / extension / geometriespalette / GeometriesPaletteExtension.java @ 45739
History | View | Annotate | Download (3.9 KB)
1 |
package org.gvsig.app.extension.geometriespalette; |
---|---|
2 |
|
3 |
import org.apache.commons.lang3.StringUtils; |
4 |
import org.gvsig.andami.plugins.Extension; |
5 |
import org.gvsig.app.addlayer.AddLayerDialog; |
6 |
import static org.gvsig.app.extension.AddLayer.createAddLayerDialog; |
7 |
import org.gvsig.app.gui.WizardPanel; |
8 |
import org.gvsig.fmap.crs.CRSFactory; |
9 |
import org.gvsig.fmap.mapcontext.MapContext; |
10 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
11 |
import org.gvsig.fmap.mapcontext.MapContextManager; |
12 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
13 |
import org.gvsig.fmap.mapcontrol.MapControl; |
14 |
import org.gvsig.fmap.mapcontrol.MapControlLocator; |
15 |
import org.gvsig.fmap.mapcontrol.MapControlManager; |
16 |
import org.gvsig.tools.dispose.DisposeUtils; |
17 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
18 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
19 |
|
20 |
/**
|
21 |
*
|
22 |
* @author gvSIG Team
|
23 |
*/
|
24 |
@SuppressWarnings("UseSpecificCatch") |
25 |
public class GeometriesPaletteExtension extends Extension { |
26 |
|
27 |
@Override
|
28 |
public void initialize() { |
29 |
} |
30 |
|
31 |
@Override
|
32 |
public void execute(String actionCommand) { |
33 |
if (StringUtils.equalsIgnoreCase("tools-open-geometriespalette", actionCommand)) { |
34 |
doOpenGeometriesPalette(); |
35 |
} |
36 |
} |
37 |
|
38 |
@SuppressWarnings("SleepWhileInLoop") |
39 |
private void doOpenGeometriesPalette() { |
40 |
AddLayerDialog addLayerDialog = null;
|
41 |
MapContext mapContext = null;
|
42 |
MapControl mapControl = null;
|
43 |
|
44 |
WindowManager windowManager = ToolsSwingLocator.getWindowManager(); |
45 |
MapContextManager mapContextManager = MapContextLocator.getMapContextManager(); |
46 |
MapControlManager mapControlManager = MapControlLocator.getMapControlManager(); |
47 |
|
48 |
try {
|
49 |
mapContext = mapContextManager.createMapContext(); |
50 |
mapContext.setProjection(CRSFactory.getCRS("EPSG:4326"));
|
51 |
mapControl = mapControlManager.createJMapControlPanel(mapContext); |
52 |
|
53 |
addLayerDialog = createAddLayerDialog(mapControl, mapContext, null);
|
54 |
windowManager.showWindow( |
55 |
addLayerDialog, |
56 |
"Select palette layer",
|
57 |
WindowManager.MODE.DIALOG |
58 |
); |
59 |
|
60 |
if (addLayerDialog.isAccepted()) {
|
61 |
if (addLayerDialog.getSelectedTab() instanceof WizardPanel) { |
62 |
WizardPanel panel = (WizardPanel) addLayerDialog.getSelectedTab(); |
63 |
panel.executeWizard(); |
64 |
// Las capas se cargan en segundo plano, asi que si tratamos de
|
65 |
// acceder a ellas ya mismo aun no estan cargadas.
|
66 |
// No es muy ortodox pero nos esperaremos un poco.
|
67 |
for (int i = 0; i < 30; i++) { |
68 |
Thread.sleep(1000); |
69 |
if (!mapContext.getLayers().isEmpty()) {
|
70 |
FLyrVect layer = (FLyrVect) mapContext.getLayers().getLayer(0);
|
71 |
GeometriesPalettePanel palette = new GeometriesPalettePanel();
|
72 |
palette.setFeatureStore(layer.getFeatureStore()); |
73 |
windowManager.showWindow( |
74 |
palette, |
75 |
"Palette" + " - " + layer.getName(), |
76 |
WindowManager.MODE.TOOL |
77 |
); |
78 |
return;
|
79 |
} |
80 |
} |
81 |
// TODO: Avisar que no se ha cargado ninguna capa ?
|
82 |
} |
83 |
} |
84 |
} catch (Exception ex) { |
85 |
logger.warn("Can't open palete from layer",ex);
|
86 |
} finally {
|
87 |
DisposeUtils.disposeQuietly(addLayerDialog); |
88 |
DisposeUtils.disposeQuietly(mapControl); |
89 |
DisposeUtils.disposeQuietly(mapContext); |
90 |
} |
91 |
|
92 |
} |
93 |
|
94 |
@Override
|
95 |
public boolean isEnabled() { |
96 |
return true; |
97 |
} |
98 |
|
99 |
@Override
|
100 |
public boolean isVisible() { |
101 |
return true; |
102 |
} |
103 |
|
104 |
} |