Statistics
| Revision:

root / trunk / libraries / libCorePlugin / src / com / iver / core / mdiManager / FrameViewSupport.java @ 1723

History | View | Annotate | Download (6.45 KB)

1 1104 fjp
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41 592 fernando
package com.iver.core.mdiManager;
42
43 1324 fernando
import java.awt.Component;
44 592 fernando
import java.awt.Image;
45
import java.util.Hashtable;
46
import java.util.Iterator;
47
48
import javax.swing.ImageIcon;
49
import javax.swing.JDialog;
50
import javax.swing.JFrame;
51
import javax.swing.JInternalFrame;
52
import javax.swing.JPanel;
53
54
import com.iver.andami.ui.mdiFrame.MDIFrame;
55
import com.iver.andami.ui.mdiManager.View;
56
import com.iver.andami.ui.mdiManager.ViewInfo;
57
58
59
/**
60
 *
61
 */
62
public class FrameViewSupport {
63
    private Hashtable frameView = new Hashtable();
64
    private Hashtable viewFrame = new Hashtable();
65
    private Image icon;
66
    private ViewInfoSupport vis;
67
        private JFrame mainFrame;
68
69
    /**
70
     * Creates a new FrameViewSupport object.
71
     *
72
     * @param i DOCUMENT ME!
73
     */
74
    public FrameViewSupport(MDIFrame mainFrame) {
75
            this.mainFrame = mainFrame;
76
        icon = mainFrame.getIconImage();
77
    }
78
79
    public Iterator getViewIterator(){
80
            return viewFrame.keySet().iterator();
81
    }
82
83
    public boolean contains(View v){
84
            return viewFrame.containsKey(v);
85
    }
86 903 fernando
87
        /**
88
         * @param wnd
89
         * @return
90
         */
91
        public boolean contains(JInternalFrame wnd) {
92
                return frameView.contains(wnd);
93
        }
94 592 fernando
95
    /**
96
     * DOCUMENT ME!
97
     *
98
     * @param p DOCUMENT ME!
99
     *
100
     * @return DOCUMENT ME!
101
     */
102 1324 fernando
    public JDialog getJDialog(View p) {
103
        JDialog dlg = (JDialog) viewFrame.get(p);
104 592 fernando
105 1324 fernando
        if (dlg == null) {
106
            ViewInfo vi = vis.getViewInfo(p);
107
            JDialog nuevo = new JDialog(mainFrame);
108
109 592 fernando
            nuevo.getContentPane().add((JPanel) p);
110 1324 fernando
            nuevo.setSize(getWidth(p), getHeight(p) + 30);
111 592 fernando
            nuevo.setTitle(vi.getTitle());
112
            nuevo.setResizable(vi.isResizable());
113
114
            viewFrame.put(p, nuevo);
115
            frameView.put(nuevo, p);
116
117 1324 fernando
            nuevo.setModal(vi.isModal());
118 592 fernando
            return nuevo;
119
        } else {
120 1324 fernando
            return dlg;
121 592 fernando
        }
122
    }
123
124
    /**
125
     * DOCUMENT ME!
126
     *
127
     * @param p DOCUMENT ME!
128
     *
129
     * @return DOCUMENT ME!
130
     */
131 1324 fernando
    public JInternalFrame getJInternalFrame(View p) {
132
        JInternalFrame frame = (JInternalFrame) viewFrame.get(p);
133 592 fernando
134 1324 fernando
        if (frame == null) {
135
                ViewInfo vi = vis.getViewInfo(p);
136
            JInternalFrame nuevo = new JInternalFrame();
137
            if (icon != null){
138
                    nuevo.setFrameIcon(new ImageIcon(icon));
139
            }
140 592 fernando
            nuevo.getContentPane().add((JPanel) p);
141 1324 fernando
            nuevo.setClosable(true);
142
            nuevo.setSize(getWidth(p), getHeight(p));
143 592 fernando
            nuevo.setTitle(vi.getTitle());
144 1324 fernando
            nuevo.setVisible(vi.isVisible());
145 592 fernando
            nuevo.setResizable(vi.isResizable());
146 1324 fernando
            nuevo.setIconifiable(vi.isIconifiable());
147
            nuevo.setMaximizable(vi.isMaximizable());
148
            nuevo.setLocation(vi.getX(), vi.getY());
149 592 fernando
150 1324 fernando
            nuevo.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
151
152 592 fernando
            viewFrame.put(p, nuevo);
153
            frameView.put(nuevo, p);
154
155
            return nuevo;
156
        } else {
157 1324 fernando
            return frame;
158 592 fernando
        }
159
    }
160
161 1324 fernando
    public View getView(Component dlg){
162 592 fernando
            return (View) frameView.get(dlg);
163
    }
164
165
    public void closeView(View v){
166
            Object c = viewFrame.remove(v);
167
            frameView.remove(c);
168
    }
169
170
    /**
171
     * DOCUMENT ME!
172
     *
173
     * @param v DOCUMENT ME!
174
     * @param x DOCUMENT ME!
175
     */
176
    public void setX(View v, int x) {
177 1324 fernando
            JInternalFrame o = (JInternalFrame) viewFrame.get(v);
178
        o.setLocation(x, o.getY());
179 592 fernando
    }
180
181
    /**
182
     * DOCUMENT ME!
183
     *
184
     * @param v DOCUMENT ME!
185
     * @param y DOCUMENT ME!
186
     */
187
    public void setY(View v, int y) {
188 1324 fernando
            JInternalFrame o = (JInternalFrame) viewFrame.get(v);
189 592 fernando
190 1324 fernando
        o.setLocation(o.getX(), y);
191 592 fernando
    }
192
193
    /**
194
     * DOCUMENT ME!
195
     *
196
     * @param v DOCUMENT ME!
197
     * @param height DOCUMENT ME!
198
     */
199
    public void setHeight(View v, int height) {
200 1324 fernando
            JInternalFrame o = (JInternalFrame) viewFrame.get(v);
201 592 fernando
202 1324 fernando
        o.setSize(o.getWidth(), height);
203 592 fernando
    }
204
205
    /**
206
     * DOCUMENT ME!
207
     *
208
     * @param v DOCUMENT ME!
209
     * @param width DOCUMENT ME!
210
     */
211
    public void setWidth(View v, int width) {
212 1324 fernando
            JInternalFrame o = (JInternalFrame) viewFrame.get(v);
213 592 fernando
214 1324 fernando
            o.setSize(width, o.getHeight());
215 592 fernando
    }
216
217
    /**
218
     * DOCUMENT ME!
219
     *
220
     * @param v DOCUMENT ME!
221
     * @param title DOCUMENT ME!
222
     */
223
    public void setTitle(View v, String title) {
224 1324 fernando
            JInternalFrame o = (JInternalFrame) viewFrame.get(v);
225
        o.setTitle(title);
226 592 fernando
    }
227
228
    /**
229
     * DOCUMENT ME!
230
     *
231
     * @param vis The vis to set.
232
     */
233
    public void setVis(ViewInfoSupport vis) {
234
        this.vis = vis;
235
    }
236
237
    /**
238
     * DOCUMENT ME!
239
     *
240
     * @param v DOCUMENT ME!
241
     *
242
     * @return DOCUMENT ME!
243
     */
244
    private int getWidth(View v) {
245 975 fernando
        ViewInfo vi = vis.getViewInfo(v);
246 592 fernando
247
        if (vi.getWidth() == -1) {
248
            JPanel p = (JPanel) v;
249
250
            return p.getSize().width;
251
        } else {
252
            return vi.getWidth();
253
        }
254
    }
255
256
    /**
257
     * DOCUMENT ME!
258
     *
259
     * @param v DOCUMENT ME!
260
     *
261
     * @return DOCUMENT ME!
262
     */
263
    private int getHeight(View v) {
264 975 fernando
        ViewInfo vi = vis.getViewInfo(v);
265 592 fernando
266
        if (vi.getHeight() == -1) {
267
            JPanel p = (JPanel) v;
268
269
            return p.getSize().height;
270
        } else {
271
            return vi.getHeight();
272
        }
273
    }
274
}