Statistics
| Revision:

svn-document-layout / trunk / org.gvsig.app.document.layout2.app / org.gvsig.app.document.layout2.app.mainplugin / src / main / java / org / gvsig / app / project / documents / layout / fframes / FFrameBasic.java @ 1714

History | View | Annotate | Download (9.5 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.fframes;
23

    
24
import java.awt.Color;
25
import java.awt.Graphics2D;
26
import java.awt.event.MouseEvent;
27
import java.awt.geom.AffineTransform;
28
import java.awt.geom.Point2D;
29
import java.awt.geom.Point2D.Double;
30
import java.awt.geom.Rectangle2D;
31
import java.awt.image.BufferedImage;
32
import org.gvsig.andami.PluginServices;
33
import org.gvsig.app.project.documents.layout.geometryadapters.PolygonAdapter;
34
import org.gvsig.compat.print.PrintAttributes;
35
import org.gvsig.fmap.geom.Geometry;
36
import org.gvsig.fmap.mapcontext.MapContextLocator;
37
import org.gvsig.fmap.mapcontext.MapContextManager;
38
import org.gvsig.symbology.SymbologyLocator;
39
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
40
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ISimpleLineSymbol;
41
import org.gvsig.tools.ToolsLocator;
42
import org.gvsig.tools.dynobject.DynStruct;
43
import org.gvsig.tools.persistence.PersistenceManager;
44
import org.gvsig.tools.persistence.PersistentState;
45
import org.gvsig.tools.persistence.exception.PersistenceException;
46

    
47
/**
48
 * FFrame b?sica que contiene una FFrame de cualquier tipo.
49
 * 
50
 * @author Vicente Caballero Navarro
51
 */
52
public class FFrameBasic extends FFrame {
53

    
54
    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameBasic";
55

    
56
    private static final String FFRAMEGRAPHICS_FIELD = "fframeGraphics";
57
    private static final String FFRAME_FIELD = "fframe";
58

    
59
    private FFrameGraphics fframeGraphics;
60
    private IFFrame fframe;
61

    
62
    private final MapContextManager mapContextManager = MapContextLocator
63
        .getMapContextManager();
64

    
65
    public void setRectangle(Rectangle2D r) {
66
        FFrameGraphics graphics =
67
            (FFrameGraphics) layoutManager
68
                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
69
        PolygonAdapter pa = new PolygonAdapter();
70
        pa.addPoint(new Point2D.Double(r.getX(), r.getY()));
71
        pa.addPoint(new Point2D.Double(r.getMaxX(), r.getY()));
72
        pa.addPoint(new Point2D.Double(r.getMaxX(), r.getMaxY()));
73
        pa.addPoint(new Point2D.Double(r.getX(), r.getMaxY()));
74
        pa.addPoint(new Point2D.Double(r.getX(), r.getY()));
75
        pa.end();
76
        graphics.setGeometryAdapter(pa);
77
        graphics.setBoundBox(r);
78

    
79
        IFillSymbol symbol =
80
            (IFillSymbol) mapContextManager.getSymbolManager().createSymbol(
81
                IFillSymbol.SYMBOL_NAME);
82
        symbol.setFillColor(new Color(255, 255, 255, 0));
83
        ISimpleLineSymbol blackOutline =
84
            SymbologyLocator.getSymbologyManager().createSimpleLineSymbol();
85
        blackOutline.setLineColor(Color.BLACK);
86
        symbol.setOutline(blackOutline);
87
        graphics.setSymbol(symbol);
88
        graphics.setType(Geometry.TYPES.CURVE);
89
        setFframeGraphics(graphics);
90
    }
91

    
92
    public FFrameBasic() {
93

    
94
    }
95

    
96
    /**
97
     * M?todo que dibuja sobre el graphics que se le pasa como par?metro, seg?n
98
     * la transformada afin que se debe de aplicar y el rect?ngulo que se debe
99
     * de dibujar.
100
     * 
101
     * @param g
102
     *            Graphics
103
     * @param at
104
     *            Transformada afin.
105
     * @param rv
106
     *            rect?ngulo sobre el que hacer un clip.
107
     * @param imgBase
108
     *            Imagen para acelerar el dibujado.
109
     */
110
    @Override
111
    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
112
        BufferedImage imgBase) {
113
        fframeGraphics.draw(g, at, rv, imgBase);
114
        if (fframe != null) {
115
            fframe.draw(g, at, rv, imgBase);
116
        }
117
    }
118

    
119
    /**
120
     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
121
     */
122
    @Override
123
    public String getNameFFrame() {
124
        return PluginServices.getText(this, "base") + num;
125
    }
126

    
127
    /**
128
     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#print(java.awt.Graphics2D,
129
     *      java.awt.geom.AffineTransform)
130
     */
131
    @Override
132
    public void print(Graphics2D g, AffineTransform at, Geometry geom,
133
        PrintAttributes printingProperties) {
134
        fframeGraphics.print(g, at, geom, printingProperties);
135
        if (fframe != null) {
136
            fframe.print(g, at, geom, printingProperties);
137
        }
138
    }
139

    
140
    public IFFrame getFframe() {
141
        return fframe;
142
    }
143

    
144
    public void setFframe(IFFrame fframe) {
145
        this.fframe = fframe;
146
    }
147

    
148
    public FFrameGraphics getFframeGraphics() {
149
        return fframeGraphics;
150
    }
151

    
152
    public void setFframeGraphics(FFrameGraphics fframeGraphics) {
153
        this.fframeGraphics = fframeGraphics;
154
    }
155

    
156
    @Override
157
    public void drawHandlers(Graphics2D g) {
158
        fframeGraphics.drawHandlers(g);
159
    }
160

    
161
    @Override
162
    public IFFrame clone() throws CloneNotSupportedException {
163
        FFrameBasic basic = new FFrameBasic();
164
        basic.setFframeGraphics((FFrameGraphics) fframeGraphics.clone());
165
        if (fframe != null) {
166
            basic.setFframe((IFFrame) fframe.clone());
167
        }
168
        return basic;
169
    }
170

    
171
    public boolean contains(Double p) {
172
        return getFframeGraphics().contains(p);
173
    }
174

    
175
    @Override
176
    public void drawDraft(Graphics2D g) {
177
        super.drawDraft(g);
178
    }
179

    
180
    @Override
181
    public void drawEmpty(Graphics2D g) {
182
        super.drawEmpty(g);
183
    }
184

    
185
    @Override
186
    public void drawSymbolTag(Graphics2D g) {
187
        super.drawSymbolTag(g);
188
    }
189

    
190
    @Override
191
    public java.awt.geom.Rectangle2D.Double getBoundBox() {
192
        return getFframeGraphics().getBoundBox();
193
    }
194

    
195
    @Override
196
    public java.awt.geom.Rectangle2D.Double getBoundingBox(AffineTransform at) {
197
        return getFframeGraphics().getBoundingBox(at);
198
    }
199

    
200
    public int getContains(Double p) {
201
        return getFframeGraphics().getContains(p);
202
    }
203

    
204
    @Override
205
    public int getLevel() {
206
        return super.getLevel();
207
    }
208

    
209
    @Override
210
    public Rectangle2D getMovieRect(int difx, int dify) {
211
        return fframeGraphics.getMovieRect(difx, dify);
212
    }
213

    
214
    @Override
215
    public Rectangle2D getMovieRect(int difx, int dify, boolean prop) {
216
        return fframeGraphics.getMovieRect(difx, dify, prop);
217
    }
218

    
219
    @Override
220
    public String getName() {
221
        return PERSISTENCE_DEFINITION_NAME;
222
    }
223

    
224
    @Override
225
    public double getRotation() {
226
        return super.getRotation();
227
    }
228

    
229
    @Override
230
    public int getSelected() {
231
        return fframeGraphics.getSelected();
232
    }
233

    
234
    @Override
235
    public String getTag() {
236
        return super.getTag();
237
    }
238

    
239
    @Override
240
    public boolean intersects(Rectangle2D rv, Rectangle2D r) {
241
        return super.intersects(rv, r);
242
    }
243

    
244
    @Override
245
    public void setBoundBox(Rectangle2D r) {
246
        if (getFframeGraphics() != null) {
247
            getFframeGraphics().setBoundBox(r);
248
        }
249
        if (getFframe() != null) {
250
            getFframe().setBoundBox(r);
251
        }
252
    }
253

    
254
    @Override
255
    public void setLevel(int l) {
256
        super.setLevel(l);
257
    }
258

    
259
    @Override
260
    public void setNum(int i) {
261
        super.setNum(i);
262
    }
263

    
264
    @Override
265
    public void setRotation(double rotation) {
266
        super.setRotation(rotation);
267
    }
268

    
269
    @Override
270
    public void setSelected(boolean b) {
271
        fframeGraphics.setSelected(b);
272
    }
273

    
274
    @Override
275
    public void setSelected(Point2D p, MouseEvent e) {
276
        fframeGraphics.setSelected(p, e);
277
    }
278

    
279
    @Override
280
    public void setTag(String s) {
281
        super.setTag(s);
282
    }
283

    
284
    @Override
285
    public void updateRect(Rectangle2D r, AffineTransform at) {
286
        getFframeGraphics().updateRect(r, at);
287
    }
288

    
289
    public static void registerPersistent() {
290
        PersistenceManager manager = ToolsLocator.getPersistenceManager();
291
        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
292
            DynStruct definition =
293
                manager.addDefinition(FFrameBasic.class,
294
                    PERSISTENCE_DEFINITION_NAME,
295
                    "FFrameBasic persistence definition", null, null);
296

    
297
            definition.extend(manager
298
                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
299

    
300
            definition.addDynFieldObject(FFRAMEGRAPHICS_FIELD)
301
                .setClassOfValue(FFrameGraphics.class).setMandatory(true);
302
            definition.addDynFieldDouble(FFRAME_FIELD);
303
        }
304
    }
305

    
306
    @Override
307
    public void loadFromState(PersistentState state)
308
        throws PersistenceException {
309
        super.loadFromState(state);
310
        fframeGraphics = (FFrameGraphics) state.get(FFRAMEGRAPHICS_FIELD);
311
        fframe = (IFFrame) state.get(FFRAME_FIELD);
312
    }
313

    
314
    @Override
315
    public void saveToState(PersistentState state) throws PersistenceException {
316
        super.saveToState(state);
317
        state.set(FFRAMEGRAPHICS_FIELD, fframeGraphics);
318
        state.set(FFRAME_FIELD, fframe);
319
    }
320
}