Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / org.gvsig.app.document.layout.app / org.gvsig.app.document.layout.app.mainplugin / src / main / java / org / gvsig / app / project / documents / layout / tools / behavior / LayoutViewMoveBehavior.java @ 36648

History | View | Annotate | Download (5.62 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.app.project.documents.layout.tools.behavior;
23

    
24
import java.awt.Color;
25
import java.awt.Graphics;
26
import java.awt.Graphics2D;
27
import java.awt.event.MouseEvent;
28
import java.awt.geom.Rectangle2D;
29

    
30
import org.gvsig.app.project.documents.layout.fframes.IFFrame;
31
import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
32
import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
33
import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
34
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
35
import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
36

    
37
/**
38
 * Behaviour que espera un listener de tipo MoveListener.
39
 * 
40
 * @author Vicente Caballero Navarro
41
 */
42
public class LayoutViewMoveBehavior extends LayoutBehavior {
43

    
44
    private LayoutMoveListener listener;
45

    
46
    /**
47
     * Crea un nuevo MoveBehavior.
48
     * 
49
     * @param pli
50
     *            listener.
51
     */
52
    public LayoutViewMoveBehavior(LayoutMoveListener lpl) {
53
        listener = lpl;
54
    }
55

    
56
    /**
57
     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
58
     */
59
    public void paintComponent(Graphics g) {
60
        IFFrame[] fframes = getLayoutControl().getLayoutContext().getFFrames();
61
        for (int i = 0; i < fframes.length; i++) {
62
            if (fframes[i] instanceof IFFrameUseFMap) {
63
                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
64

    
65
                if (((IFFrame) fframe).getSelected() != IFFrame.NOSELECT) {
66
                    Rectangle2D.Double rec =
67
                        ((IFFrame) fframe).getBoundingBox(getLayoutControl()
68
                            .getAT());
69

    
70
                    if (getLayoutControl().getImage() != null) {
71
                        rec =
72
                            (Rectangle2D.Double) rec
73
                                .createIntersection(getLayoutControl()
74
                                    .getComponent().getVisibleRect());
75
                    }
76

    
77
                    if (fframe.getBufferedImage() != null) {
78
                        getLayoutControl().getLayoutDraw().drawHandlers(
79
                            (Graphics2D) g, Color.black);
80
                        g.clipRect((int) rec.x, (int) rec.y, (int) rec.width,
81
                            (int) rec.height);
82

    
83
                        Rectangle2D.Double r1 =
84
                            ((IFFrame) fframe)
85
                                .getBoundingBox(getLayoutControl().getAT());
86
                        g.drawImage(fframe.getBufferedImage(), (int) r1.getX()
87
                            + getLayoutControl().getLastPoint().x
88
                            - getLayoutControl().getPointAnt().x,
89
                            (int) r1.getY()
90
                                + getLayoutControl().getLastPoint().y
91
                                - getLayoutControl().getPointAnt().y,
92
                            getLayoutControl().getComponent());
93

    
94
                        fframe.refresh();
95
                    }
96
                }
97
            }
98
        }
99

    
100
        // g.setClip(rClip);
101
        getLayoutControl().getLayoutDraw().drawHandlers((Graphics2D) g,
102
            Color.black);
103
        g.drawImage(getLayoutControl().getImgRuler(), 0, 0, getLayoutControl()
104
            .getComponent());
105

    
106
    }
107

    
108
    /**
109
     * @throws BehaviorException
110
     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
111
     */
112
    public void mousePressed(MouseEvent e) throws BehaviorException {
113
        super.mousePressed(e);
114
        PointEvent event = new PointEvent(e.getPoint(), e);
115
        listener.press(event);
116
    }
117

    
118
    /**
119
     * Reimplementaci?n del m?todo mouseReleased de Behavior.
120
     * 
121
     * @param e
122
     *            MouseEvent
123
     * 
124
     * @throws BehaviorException
125
     *             Excepci?n lanzada cuando el Behavior.
126
     */
127
    public void mouseReleased(MouseEvent e) throws BehaviorException {
128
        super.mouseReleased(e);
129
        PointEvent event = new PointEvent(e.getPoint(), e);
130
        listener.release(event);
131

    
132
    }
133

    
134
    /**
135
     * Reimplementaci?n del m?todo mouseDragged de Behavior.
136
     * 
137
     * @param e
138
     *            MouseEvent
139
     * @throws BehaviorException
140
     */
141
    public void mouseDragged(MouseEvent e) throws BehaviorException {
142
        super.mouseDragged(e);
143
        PointEvent event = new PointEvent(e.getPoint(), e);
144
        listener.drag(event);
145
    }
146

    
147
    /**
148
     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
149
     */
150
    public void setListener(LayoutToolListener listener) {
151
        this.listener = (LayoutMoveListener) listener;
152
    }
153

    
154
    /**
155
     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
156
     */
157
    public LayoutToolListener getListener() {
158
        return listener;
159
    }
160
}