Statistics
| Revision:

root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / layout / fframes / IFFrame.java @ 2984

History | View | Annotate | Download (8.04 KB)

1
/*
2
 * Created on 20-feb-2004
3
 *
4
 */
5
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
6
 *
7
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
8
 *
9
 * This program is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation; either version 2
12
 * of the License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
22
 *
23
 * For more information, contact:
24
 *
25
 *  Generalitat Valenciana
26
 *   Conselleria d'Infraestructures i Transport
27
 *   Av. Blasco Ib??ez, 50
28
 *   46010 VALENCIA
29
 *   SPAIN
30
 *
31
 *      +34 963862235
32
 *   gvsig@gva.es
33
 *      www.gvsig.gva.es
34
 *
35
 *    or
36
 *
37
 *   IVER T.I. S.A
38
 *   Salamanca 50
39
 *   46005 Valencia
40
 *   Spain
41
 *
42
 *   +34 963163400
43
 *   dac@iver.es
44
 */
45
package com.iver.cit.gvsig.gui.layout.fframes;
46

    
47
import com.iver.cit.gvsig.fmap.DriverException;
48
import com.iver.cit.gvsig.fmap.layers.XMLException;
49
import com.iver.cit.gvsig.gui.layout.Layout;
50

    
51
import com.iver.utiles.XMLEntity;
52

    
53
import java.awt.Cursor;
54
import java.awt.Graphics2D;
55
import java.awt.geom.AffineTransform;
56
import java.awt.geom.Point2D;
57
import java.awt.geom.Rectangle2D;
58
import java.awt.image.BufferedImage;
59

    
60

    
61
/**
62
 * Interface que implementa FFrame.
63
 *
64
 * @author Vicente Caballero Navarro
65
 */
66
public interface IFFrame {
67
        /** FFrame no selecccionado. */
68
        public static final int NOSELECT = 0;
69
        
70
        /**
71
         * Devuelve el boundingBox del fframe en funci?n de la transformada af?n
72
         * que se pasa como par?metro. Si se pasa como par?metro null, devuelve el
73
         * ?ltimo boundingbox que se calcul?.
74
         *
75
         * @param at Transformada af?n
76
         *
77
         * @return Rect?ngulo que representa el BoundingBox del fframe.
78
         */
79
        public Rectangle2D.Double getBoundingBox(AffineTransform at);
80

    
81
        /**
82
         * Devuelve el rect?ngulo que representa el fframe en cent?metros.
83
         *
84
         * @return Rect?ngulo en centimetros.
85
         */
86
        public Rectangle2D.Double getBoundBox();
87

    
88
        /**
89
         * Rellena con el rect?ngulo que se pasa como par?metro el boundBox(en
90
         * cent?metros) del fframe del cual con una transformaci?n se podr?
91
         * calcular el BoundingBox (en pixels).
92
         *
93
         * @param rect Rect?ngulo en cent?metros.
94
         */
95
        public void setBoundBox(Rectangle2D rect);
96

    
97
        /**
98
         * Este m?todo se implementa en cada una de las fframe, ya que cada una se
99
         * dibuja de una forma diferente sobre el graphics. M?todo que dibuja
100
         * sobre el graphics que se le pasa como par?metro, seg?n la transformada
101
         * afin que se debe de aplicar y el rect?ngulo que se debe de dibujar.
102
         *
103
         * @param g Graphics
104
         * @param at Transformada afin.
105
         * @param r rect?ngulo sobre el que hacer un clip.
106
         * @param imgBase Imagen para acelerar el dibujado.
107
         *
108
         * @throws DriverException
109
         */
110
        public void draw(Graphics2D g, AffineTransform at, Rectangle2D r,
111
                BufferedImage imgBase) throws DriverException;
112

    
113
        /**
114
         * Implementado para imprimir.
115
         *
116
         * @param g Graphics2D de la impresora sobre el que dibujar.
117
         * @param at DOCUMENT ME!
118
         *
119
         * @throws DriverException
120
         */
121
        public void print(Graphics2D g, AffineTransform at)
122
                throws DriverException;
123

    
124
        /**
125
         * Devuelve el nombre que representa al fframe.
126
         *
127
         * @return String nombre del FFrame.
128
         */
129
        public String getName();
130

    
131
        /**
132
         * Rellena el String que representa al nombre del fframe.
133
         *
134
         * @param n nombre del fframe.
135
         */
136
        public void setName(String n);
137

    
138
        /**
139
         * Devuelve true, si el punto que se pasa como par?metro esta contenido
140
         * dentro del boundingbox del fframe.
141
         *
142
         * @param p punto a comprobar.
143
         *
144
         * @return true si el punto esta dentro del boundingbox.
145
         */
146
        public boolean contains(Point2D.Double p);
147

    
148
        /**
149
         * Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
150
         * par?metro.
151
         *
152
         * @param g Graphics sobre el que dibujar.
153
         */
154
        public void drawHandlers(Graphics2D g);
155

    
156
        /**
157
         * Pasando como par?metro true,  se toma como que est? seleccionado el
158
         * fframe  y si es false como que esta sin seleccionar, de esta forma se
159
         * selecciona un fframe directamente sin comprobar si un punto est?
160
         * contenido en ?l.
161
         *
162
         * @param b true si se quiere seleccionar y false si se quiere
163
         *                   deseleccionar.
164
         */
165
        public void setSelected(Point2D.Double b);
166

    
167
        /**
168
         * Establece que tipo de selecci?n se realiza sobre el fframe.
169
         *
170
         * @param b punto sobre el que se debe de establecer si se selecciona o no
171
         *                   el fframe.
172
         */
173
        public void setSelected(boolean b);
174

    
175
        /**
176
         * Devuelve un entero que representa el tipo de selecci?n que se ha
177
         * realizado sobre el fframe.
178
         *
179
         * @return tipo de selecci?n que se ha realizado.
180
         */
181
        public int getSelected();
182

    
183
        /**
184
         * Devuelve un entero que representa donde esta contenido el punto que se
185
         * pasa como par?metro.
186
         *
187
         * @param p punto a comparar.
188
         *
189
         * @return entero que representa como esta contenido el punto.
190
         */
191
        public int getContains(Point2D.Double p);
192

    
193
        /**
194
         * Devuelve el Cursor adecuado seg?n como est? contenido el punto, si es
195
         * para desplazamiento, o cambio de tama?o.
196
         *
197
         * @param p punto a comprobar.
198
         *
199
         * @return Cursor adecuado a la posici?n.
200
         */
201
        public Cursor getMapCursor(Point2D.Double p);
202

    
203
        /**
204
         * Devuelve el rect?ngulo a partir del desplazamiento en el eje x y el
205
         * desplazamiento en el eje y.
206
         *
207
         * @param difx desplazamiento sobre el eje x.
208
         * @param dify desplazamiento sobre el eje y.
209
         *
210
         * @return rect?ngulo modificado en funci?n del desplazamiento realizado.
211
         */
212
        public Rectangle2D getMovieRect(int difx, int dify);
213

    
214
        /**
215
         * Devuelve un Objeto XMLEntity con la informaci?n los atributos necesarios
216
         * para poder despu?s volver a crear el objeto original.
217
         *
218
         * @return XMLEntity.
219
         * @throws XMLException
220
         */
221
        public XMLEntity getXMLEntity() throws XMLException;
222

    
223
        /**
224
         * Dibuja un rect?ngulo de color gris,  con el nombre en el centro y
225
         * escalado en forma de borrador.
226
         *
227
         * @param g Graphics sobre el que se dibuja.
228
         */
229
        public void drawDraft(Graphics2D g);
230

    
231
        /**
232
         * Actualiza el BoundBox del FFrame a partir de su rect?ngulo en pixels y
233
         * la matriz de transformaci?n.
234
         *
235
         * @param r Rect?ngulo.
236
         * @param at Matriz de transformaci?n.
237
         */
238
        public void updateRect(Rectangle2D r, AffineTransform at);
239

    
240
        /**
241
         * Devuelve true si el rect?ngulo primero es null o si es distinto de null
242
         * e intersecta.
243
         *
244
         * @param rv Rect?ngulo
245
         * @param r Rect?ngulo
246
         *
247
         * @return True si intersecta o es null.
248
         */
249
        public boolean intersects(Rectangle2D rv, Rectangle2D r);
250

    
251
        /**
252
         * Introduce el n?mero de FFrame en el que de que se trata.
253
         *
254
         * @param i n?mero de FFrame
255
         */
256
        public void setNum(int i);
257

    
258
        /**
259
         * A partir del xml y de Project inicia el objeto.
260
         *
261
         * @param xml XMLEntity
262
         * @param l Project
263
         */
264
        public void setXMLEntity(XMLEntity xml, Layout l);
265

    
266
    /**
267
     * A partir del xml y de Project inicia el objeto.
268
     *
269
     * @param xml XMLEntity
270
     * @param l Project
271
     */
272
    public void setXMLEntity03(XMLEntity xml, Layout l);
273

    
274
        /**
275
         * Devuelve el nombre que representa al tipo de FFrame.
276
         *
277
         * @return nombre del elemento.
278
         */
279
        public String getNameFFrame();
280

    
281
        /**
282
         * Abre la ventana para modificar el tag.
283
         */
284
        public void openTag();
285

    
286
        /**
287
         * Rellena el tag.
288
         *
289
         * @param s valor del tag.
290
         */
291
        public void setTag(String s);
292

    
293
        /**
294
         * Devuelve el valor del tag.
295
         *
296
         * @return String del valor del tag.
297
         */
298
        public String getTag();
299

    
300
        /**
301
         * Dibuja el s?mbolo que indica que el FFrame contiene un tag.
302
         *
303
         * @param g Graphics sobre el que dibujar.
304
         */
305
        public void drawSymbolTag(Graphics2D g);
306
        /**
307
         * Rellena la rotaci?n del BoundingBox.
308
         *
309
         * @param rotation rotaci?n que se quiere aplicar.
310
         */
311
        public void setRotation(double rotation);
312

    
313
        /**
314
         * Devuelve la rotaci?n del BoundingBox.
315
         *
316
         * @return Rotaci?n del BoundingBox.
317
         */
318
        public double getRotation();
319
}