Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / operations / strategies / SelectedZoomVisitor.java @ 1085

History | View | Annotate | Download (1.48 KB)

1
package com.iver.cit.gvsig.fmap.operations.strategies;
2

    
3
import com.iver.cit.gvsig.fmap.core.IGeometry;
4
import com.iver.cit.gvsig.fmap.layers.FBitSet;
5
import com.iver.cit.gvsig.fmap.layers.FLayer;
6
import com.iver.cit.gvsig.fmap.layers.layerOperations.Selectable;
7

    
8
import java.awt.geom.Rectangle2D;
9

    
10

    
11
/**
12
 * Visitor de zoom a lo seleccionado.
13
 *
14
 * @author Vicente Caballero Navarro
15
 */
16
public class SelectedZoomVisitor implements FeatureVisitor {
17
        private Rectangle2D rectangle = null;
18
        private FBitSet bitset = null;
19

    
20
        /**
21
         * Inicializa el visitor.
22
         *
23
         * @param layer Capa.
24
         *
25
         * @return True si se inicializa correctamente.
26
         */
27
        public boolean start(FLayer layer) {
28
                if (layer instanceof Selectable) {
29
                        bitset = ((Selectable) layer).getSelection();
30

    
31
                        return true;
32
                }
33

    
34
                return false;
35
        }
36

    
37
        /**
38
         * Finaliza el visitor.
39
         *
40
         * @param layer Capa.
41
         */
42
        public void stop(FLayer layer) {
43
        }
44

    
45
        /**
46
         * @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#visit(com.iver.cit.gvsig.fmap.core.IGeometry,
47
         *                 int)
48
         */
49
        public void visit(IGeometry g, int index) throws VisitException {
50
                if (bitset.get(index)) {
51
                        if (rectangle == null) {
52
                                rectangle = (Rectangle2D) g.getBounds2D().clone();
53
                        } else {
54
                                rectangle.add(g.getBounds2D());
55
                        }
56
                }
57
        }
58

    
59
        /**
60
         * Devuelve el Extent de los shapes seleccionados, y si no hay ning?n shape
61
         * seleccionado devuelve null.
62
         *
63
         * @return Extent de los shapes seleccionados.
64
         */
65
        public Rectangle2D getSelectBound() {
66
                return rectangle;
67
        }
68
}