Statistics
| Revision:

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 45739 jjdelcerro
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
}