svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / project / documents / view / dalactions / ViewZoomAction.java @ 44531
History | View | Annotate | Download (3.67 KB)
1 | 44281 | jjdelcerro | package org.gvsig.app.project.documents.view.dalactions; |
---|---|---|---|
2 | |||
3 | import java.awt.event.ActionEvent; |
||
4 | import javax.swing.AbstractAction; |
||
5 | import javax.swing.Action; |
||
6 | import static javax.swing.Action.ACTION_COMMAND_KEY; |
||
7 | import static javax.swing.Action.NAME; |
||
8 | import static javax.swing.Action.SHORT_DESCRIPTION; |
||
9 | import static javax.swing.Action.SMALL_ICON; |
||
10 | import org.gvsig.app.ApplicationLocator; |
||
11 | import org.gvsig.app.ApplicationManager; |
||
12 | import org.gvsig.app.project.documents.view.ViewDocument; |
||
13 | import org.gvsig.app.project.documents.view.ViewManager; |
||
14 | import org.gvsig.expressionevaluator.Expression; |
||
15 | import org.gvsig.fmap.dal.DataStore; |
||
16 | import org.gvsig.fmap.dal.feature.Feature; |
||
17 | import org.gvsig.fmap.dal.feature.FeatureSet; |
||
18 | import org.gvsig.fmap.dal.feature.FeatureStore; |
||
19 | import org.gvsig.fmap.dal.swing.AbstractDALActionFactory; |
||
20 | import org.gvsig.fmap.dal.swing.DALActionFactory.DALActionContext; |
||
21 | import org.gvsig.fmap.dal.swing.DALSwingLocator; |
||
22 | import org.gvsig.fmap.dal.swing.DataSwingManager; |
||
23 | import org.gvsig.fmap.geom.Geometry; |
||
24 | import org.gvsig.fmap.geom.GeometryUtils; |
||
25 | import org.gvsig.fmap.geom.primitive.Envelope; |
||
26 | import org.gvsig.tools.ToolsLocator; |
||
27 | import org.gvsig.tools.i18n.I18nManager; |
||
28 | import org.gvsig.tools.swing.api.ToolsSwingLocator; |
||
29 | import org.gvsig.tools.swing.icontheme.IconTheme; |
||
30 | |||
31 | /**
|
||
32 | *
|
||
33 | * @author jjdelcerro
|
||
34 | */
|
||
35 | @SuppressWarnings("UseSpecificCatch") |
||
36 | public class ViewZoomAction extends AbstractAction { |
||
37 | |||
38 | public static class ViewZoomActionFactory extends AbstractDALActionFactory { |
||
39 | |||
40 | public static final String ACTION_NAME = "ViewZoom"; |
||
41 | |||
42 | public ViewZoomActionFactory() {
|
||
43 | super(ACTION_NAME);
|
||
44 | } |
||
45 | |||
46 | @Override
|
||
47 | public Action createAction(DALActionContext context) { |
||
48 | return new ViewZoomAction(context); |
||
49 | } |
||
50 | |||
51 | public static void selfRegister() { |
||
52 | DataSwingManager dalSwingManager = DALSwingLocator.getSwingManager(); |
||
53 | dalSwingManager.registerStoreAction(new ViewZoomActionFactory());
|
||
54 | } |
||
55 | |||
56 | } |
||
57 | |||
58 | private final DALActionContext context; |
||
59 | |||
60 | public ViewZoomAction(DALActionContext context) {
|
||
61 | I18nManager i18nManager = ToolsLocator.getI18nManager(); |
||
62 | IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getDefault(); |
||
63 | |||
64 | this.context = context;
|
||
65 | this.putValue(NAME, null); |
||
66 | this.putValue(SHORT_DESCRIPTION, i18nManager.getTranslation("_Zoom")); |
||
67 | this.putValue(SMALL_ICON, iconTheme.get("view-navigation-zoom-to-selection")); |
||
68 | this.putValue(ACTION_COMMAND_KEY, ViewZoomActionFactory.ACTION_NAME);
|
||
69 | DataStore store = this.context.getStore();
|
||
70 | this.setEnabled(store instanceof FeatureStore); |
||
71 | } |
||
72 | |||
73 | @Override
|
||
74 | public void actionPerformed(ActionEvent ae) { |
||
75 | ApplicationManager application = ApplicationLocator.getManager(); |
||
76 | 44531 | omartinez | ViewDocument view = (ViewDocument) application.getActiveDocument(ViewDocument.class); |
77 | 44281 | jjdelcerro | if( view == null ) { |
78 | return;
|
||
79 | } |
||
80 | Expression filter = this.context.getFilterForSelecteds(); |
||
81 | if (filter == null) { |
||
82 | filter = this.context.getFilter();
|
||
83 | } |
||
84 | if (filter == null) { |
||
85 | return;
|
||
86 | } |
||
87 | try {
|
||
88 | FeatureStore store = (FeatureStore) this.context.getStore();
|
||
89 | FeatureSet set = store.getFeatureSet(filter); |
||
90 | Envelope envelope = GeometryUtils.createEnvelope(Geometry.SUBTYPES.GEOM2D); |
||
91 | for (Feature feature : set) {
|
||
92 | envelope.add(feature.getDefaultGeometry()); |
||
93 | } |
||
94 | if( !envelope.isEmpty() ) {
|
||
95 | view.getMapContext().getViewPort().setEnvelope(envelope); |
||
96 | } |
||
97 | } catch(Exception ex) { |
||
98 | |||
99 | } |
||
100 | } |
||
101 | |||
102 | } |