Statistics
| Revision:

root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / project / documents / layout / fframes / FFrameOverView.java @ 9392

History | View | Annotate | Download (9.77 KB)

1
package com.iver.cit.gvsig.project.documents.layout.fframes;
2

    
3
import java.awt.Color;
4
import java.awt.Dimension;
5
import java.awt.Graphics2D;
6
import java.awt.geom.AffineTransform;
7
import java.awt.geom.Line2D;
8
import java.awt.geom.Rectangle2D;
9
import java.awt.image.BufferedImage;
10

    
11
import com.iver.andami.PluginServices;
12
import com.iver.andami.messages.NotificationManager;
13
import com.iver.cit.gvsig.fmap.DriverException;
14
import com.iver.cit.gvsig.fmap.MapContext;
15
import com.iver.cit.gvsig.fmap.ViewPort;
16
import com.iver.cit.gvsig.fmap.layers.XMLException;
17
import com.iver.cit.gvsig.project.documents.layout.fframes.gui.dialogs.FFrameOverViewDialog;
18
import com.iver.cit.gvsig.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
19
import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
20
import com.iver.cit.gvsig.project.documents.view.ProjectView;
21

    
22

    
23
/**
24
 * FFrame para introducir el localizador de una vista en el Layout.
25
 *
26
 * @author Vicente Caballero Navarro
27
 */
28
public class FFrameOverView extends FFrameView {
29
    private MapContext assoc_map;
30
    private Rectangle2D extent;
31

    
32
    /**
33
     * DOCUMENT ME!
34
     *
35
     * @param g DOCUMENT ME!
36
     * @param at DOCUMENT ME!
37
     * @param rv DOCUMENT ME!
38
     * @param imgBase DOCUMENT ME!
39
     *
40
     * @throws DriverException DOCUMENT ME!
41
     */
42
    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
43
        BufferedImage imgBase) throws DriverException {
44
        super.draw(g, at, rv, imgBase);
45
        refresh();
46
        Rectangle2D r = getBoundingBox(at);
47
        try {
48
                        getMapContext().getViewPort().setExtent(getMapContext().getFullExtent());
49
                } catch (DriverException e) {
50
                        e.printStackTrace();
51
                }
52
                if ((assoc_map != null) &&
53
                (assoc_map.getViewPort().getExtent() != null) &&
54
                (getMapContext().getViewPort().getExtent() != null)) {
55
            ViewPort vp = getMapContext().getViewPort();
56
            ViewPort vpOrig = assoc_map.getViewPort();
57

    
58
            if (extent == null) {
59
                extent = vpOrig.getAdjustedExtent();
60
            }
61
            vp.refreshExtent();
62
            Rectangle2D extentPixels=vp.fromMapRectangle(extent);
63

    
64
            extentPixels.setFrame(extentPixels.getX(),extentPixels.getY()-extentPixels.getHeight(),extentPixels.getWidth(),extentPixels.getHeight());
65
            Rectangle2D clip=g.getClipBounds();
66
            g.setClip((int)r.getX(),(int)r.getY(),(int)r.getWidth(),(int)r.getHeight());
67
            g.setColor(Color.red);
68
            g.draw(extentPixels);
69
            System.err.println("extentPixels = "+extentPixels.getX()+", "+extentPixels.getY()+", "+extentPixels.getWidth()+", "+extentPixels.getHeight());
70
            g.setColor(new Color(100, 100, 100, 100));
71
            g.fill(extentPixels);
72
            // dibujamos las l?neas vertical y horizontal
73
            double pRightUp = (int) (r.getWidth() + r.getX());
74

    
75
            Line2D.Double linVert = new Line2D.Double(extentPixels.getCenterX(),
76
                    r.getY(), extentPixels.getCenterX(), r.getMaxY());
77
            Line2D.Double linHoriz = new Line2D.Double(r.getX(),
78
                    extentPixels.getCenterY(), pRightUp, extentPixels.getCenterY());
79

    
80
            g.setColor(Color.darkGray);
81
            g.draw(linVert);
82
            g.draw(linHoriz);
83
            g.setClip((int)clip.getX(),(int)clip.getY(),(int)clip.getWidth(),(int)clip.getHeight());
84
            extent = null;
85
            System.err.println("Dibujando FFrameOverView ...");
86
        }
87

    
88
    }
89
    /**
90
     * DOCUMENT ME!
91
     *
92
     * @param g DOCUMENT ME!
93
     * @param at DOCUMENT ME!
94
     * @param rv DOCUMENT ME!
95
     * @param imgBase DOCUMENT ME!
96
     *
97
     * @throws DriverException DOCUMENT ME!
98
     */
99
    public void print(Graphics2D g, AffineTransform at)
100
    throws DriverException {
101
            draw(g, at, null, null);
102
//            Rectangle2D rect=getBoundingBox(at);
103
//            Point2D mp1 = FLayoutFunctions.toMapPoint(new Point2D.Double(rect.getX(),rect.getY()), getATMap());
104
//                Point2D mp2 = FLayoutFunctions.toMapPoint(new Point2D.Double(rect.getMaxX(),rect.getMaxY()), getATMap());
105

    
106
//             ViewPort vpOrig = assoc_map.getViewPort();
107
//
108
//         if (extent == null) {
109
//             extent = vpOrig.getAdjustedExtent();
110
//         }
111
//         g.setColor(Color.blue);
112
//         g.draw(extent);
113
//        Rectangle2D r = getBoundingBox(at);
114
//
115
//        if ((assoc_map != null) &&
116
//                (assoc_map.getViewPort().getExtent() != null) &&
117
//                (getMapContext().getViewPort().getExtent() != null)) {
118
//            ViewPort vp = getMapContext().getViewPort();
119
//            Rectangle2D extentView = vp.getAdjustedExtent();
120
//            ViewPort vpOrig = assoc_map.getViewPort();
121
//
122
//            if (extent == null) {
123
//                extent = vpOrig.getAdjustedExtent();
124
//            }
125
//            Rectangle2D clip=g.getClipBounds();
126
//            g.setClip((int)r.getX(),(int)r.getY(),(int)r.getWidth(),(int)r.getHeight());
127
//
128
//            AffineTransform affineTransform = vp.getAffineTransform();
129
//            Rectangle2D extentBounding=vp.toMapRectangle(r);
130
//            //Point2D p = vp.toMapPoint((int) r.getX(), (int) r.getY());
131
//            g.setTransform(affineTransform);
132
//            g.setColor(Color.red);
133
//            //Rectangle2D.intersect(extent,extentBounding,extent);
134
//            g.setStroke(new BasicStroke(5));
135
//            g.drawRect((int)extent.getX(),(int)extent.getY(),(int)extent.getWidth(),(int)extent.getHeight());
136
//            g.setStroke(new BasicStroke(0));
137
//            g.setColor(new Color(100, 100, 100, 100));
138
//            g.fill(extent);
139
//
140
//            // dibujamos las l?neas vertical y horizontal
141
//            Point2D pRightUp = vp.toMapPoint((int) (r.getWidth() + r.getX()), 0);
142
//
143
//            Line2D.Double linVert = new Line2D.Double(extent.getCenterX(),
144
//                    extentView.getMinY(), extent.getCenterX(), extentBounding.getY());
145
//            Line2D.Double linHoriz = new Line2D.Double(extentBounding.getX(),
146
//                    extent.getCenterY(), pRightUp.getX(), extent.getCenterY());
147
//
148
//            g.setColor(Color.darkGray);
149
//            g.draw(linVert);
150
//            g.draw(linHoriz);
151
//            g.setTransform(new AffineTransform());
152
//            g.setClip((int)clip.getX(),(int)clip.getY(),(int)clip.getWidth(),(int)clip.getHeight());
153
//
154
//
155
//            extent = null;
156
//        }
157
    }
158

    
159
    /**
160
     * Inserta el ProjectView de donde obtener las propiedades de la vista a
161
     * mostrar.
162
     *
163
     * @param v Modelo de la vista.
164
     */
165
    public void setView(ProjectView v) {
166
        view = v;
167

    
168
        ViewPort vp = null;
169

    
170
        if (getMapContext() != null) {
171
            vp = getMapContext().getViewPort();
172
        } else {
173
            vp = v.getMapContext().getViewPort().cloneViewPort();
174
        }
175

    
176
        vp.setImageSize(new Dimension((int) getBoundingBox(null).width,
177
                (int) getBoundingBox(null).height));
178
        assoc_map = v.getMapContext();
179

    
180
        if (m_bLinked) {
181
            if (getTypeScale() == AUTOMATICO) {
182
                m_fmap = v.getMapOverViewContext().createNewFMap(v.getMapOverViewContext()
183
                                                                  .getViewPort()
184
                                                                  .cloneViewPort());
185
                m_fmap.getViewPort().setImageSize(new Dimension(
186
                        (int) getBoundingBox(null).width,
187
                        (int) getBoundingBox(null).height));
188
                v.getMapOverViewContext().getViewPort().addViewPortListener(this);
189
                v.getMapOverViewContext().addLayerListener(this);
190
            }
191
        } else if (!m_bLinked) {
192
            try {
193
                if (getTypeScale() == AUTOMATICO) {
194
                    m_fmap = v.getMapOverViewContext().cloneFMap(); //(v.getMapContext().getViewPort().cloneViewPort());
195
                    m_fmap.setViewPort(v.getMapOverViewContext().getViewPort()
196
                                        .cloneViewPort());
197
                    m_fmap.getViewPort().setImageSize(new Dimension(
198
                            (int) getBoundingBox(null).width,
199
                            (int) getBoundingBox(null).height));
200
                    v.getMapOverViewContext().getViewPort().addViewPortListener(this);
201
                }
202
            } catch (XMLException e1) {
203
                NotificationManager.addError("Cuando se a?ade una vista al Layout",
204
                    e1);
205
            }
206
        }
207

    
208
        }
209

    
210
    /**
211
     * @see com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame#getNameFFrame()
212
     */
213
    public String getNameFFrame() {
214
        return PluginServices.getText(this, "Localizador") + num;
215
    }
216
    public IFFrame cloneFFrame(Layout layout) {
217
        FFrameOverView frame = new FFrameOverView();
218
        frame.setLevel(this.getLevel());
219
        frame.setNum(this.num);
220
        frame.setName(this.getName());
221
        frame.setBoundBox(this.getBoundBox());
222
        frame.setTag(this.getTag());
223
        frame.m_Mode = this.m_Mode;
224
        frame.m_typeScale = this.m_typeScale;
225
        frame.m_extension = this.m_extension;
226
        frame.m_quality = this.m_quality;
227
        frame.m_viewing = this.m_viewing;
228
        frame.m_bLinked = this.m_bLinked;
229
        frame.m_mapUnits = this.m_mapUnits;
230
        frame.setRotation(this.getRotation());
231

    
232
        frame.m_Scale = this.m_Scale;
233
        frame.view=this.getView();
234
        frame.m_fmap = this.getMapContext();
235
        frame.setSelected(this.getSelected()!=IFFrame.NOSELECT);
236
        frame.setLayout(layout);
237
        frame.assoc_map=this.assoc_map;
238
        frame.extent=this.extent;
239
        if (frame instanceof IFFrameViewDependence) {
240
            ((IFFrameViewDependence) frame).initDependence(layout.getLayoutContext().getAllFFrames());
241
        }
242
        cloneActions(frame);
243
        return frame;
244
    }
245
        public IFFrameDialog getPropertyDialog() {
246
                return new FFrameOverViewDialog(getLayout(),this);
247
        }
248
}