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 @ 44712

History | View | Annotate | Download (3.83 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.FeatureQuery;
18
import org.gvsig.fmap.dal.feature.FeatureSet;
19
import org.gvsig.fmap.dal.feature.FeatureStore;
20
import org.gvsig.fmap.dal.swing.AbstractDALActionFactory;
21
import org.gvsig.fmap.dal.swing.DALActionFactory.DALActionContext;
22
import org.gvsig.fmap.dal.swing.DALSwingLocator;
23
import org.gvsig.fmap.dal.swing.DataSwingManager;
24
import org.gvsig.fmap.geom.Geometry;
25
import org.gvsig.fmap.geom.GeometryUtils;
26
import org.gvsig.fmap.geom.primitive.Envelope;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.i18n.I18nManager;
29
import org.gvsig.tools.swing.api.ToolsSwingLocator;
30
import org.gvsig.tools.swing.icontheme.IconTheme;
31

    
32
/**
33
 *
34
 * @author jjdelcerro
35
 */
36
@SuppressWarnings("UseSpecificCatch")
37
public class ViewZoomAction extends AbstractAction {
38

    
39
    public static class ViewZoomActionFactory extends AbstractDALActionFactory {
40

    
41
        public static final String ACTION_NAME = "ViewZoom";
42
    
43
        public ViewZoomActionFactory() {
44
            super(ACTION_NAME);
45
        }
46
        
47
        @Override
48
        public Action createAction(DALActionContext context) {
49
            return new ViewZoomAction(context);
50
        }
51
        
52
        public static void selfRegister() {
53
            DataSwingManager dalSwingManager = DALSwingLocator.getSwingManager();
54
            dalSwingManager.registerStoreAction(new ViewZoomActionFactory());
55
        }
56
        
57
    }
58

    
59
    private final DALActionContext context;
60

    
61
    public ViewZoomAction(DALActionContext context) {
62
        I18nManager i18nManager = ToolsLocator.getI18nManager();
63
        IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getDefault();
64

    
65
        this.context = context;
66
        this.putValue(NAME, null);
67
        this.putValue(SHORT_DESCRIPTION, i18nManager.getTranslation("_Zoom"));
68
        this.putValue(SMALL_ICON, iconTheme.get("view-navigation-zoom-to-selection"));
69
        this.putValue(ACTION_COMMAND_KEY, ViewZoomActionFactory.ACTION_NAME);
70
        DataStore store = this.context.getStore();
71
        this.setEnabled(store instanceof FeatureStore);
72
    }
73

    
74
    @Override
75
    public void actionPerformed(ActionEvent ae) {
76
        ApplicationManager application = ApplicationLocator.getManager();
77
        ViewDocument view = (ViewDocument) application.getActiveDocument(ViewDocument.class);
78
        if( view == null ) {
79
            return;
80
        }
81
        Expression filter = this.context.getFilterForSelecteds();
82
        if (filter == null) {
83
            FeatureQuery query = this.context.getQuery();
84
            if( query!=null ) {
85
              filter = query.getExpressionFilter();
86
            }
87
        }
88
        if (filter == null) {
89
            return;
90
        }
91
        try {
92
            FeatureStore store = (FeatureStore) this.context.getStore();
93
            FeatureSet set = store.getFeatureSet(filter);
94
            Envelope envelope = GeometryUtils.createEnvelope(Geometry.SUBTYPES.GEOM2D);
95
            for (Feature feature : set) {
96
                envelope.add(feature.getDefaultGeometry());
97
            }
98
            if( !envelope.isEmpty() ) {
99
                view.getMapContext().getViewPort().setEnvelope(envelope);
100
            }
101
        } catch(Exception ex) {
102
                
103
        }
104
    }
105

    
106
}