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 / project / documents / view / dalactions / ViewZoomAction.java @ 44531

History | View | Annotate | Download (3.67 KB)

1
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
        ViewDocument view = (ViewDocument) application.getActiveDocument(ViewDocument.class);
77
        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
}