KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mortbay > html > FrameSet


1 // ========================================================================
2
// $Id: FrameSet.java,v 1.4 2004/11/20 13:32:33 gregwilkins Exp $
3
// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd.
4
// ------------------------------------------------------------------------
5
// Licensed under the Apache License, Version 2.0 (the "License");
6
// you may not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
// http://www.apache.org/licenses/LICENSE-2.0
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
// ========================================================================
15

16 package org.mortbay.html;
17 import java.io.IOException JavaDoc;
18 import java.io.Writer JavaDoc;
19 import java.util.Enumeration JavaDoc;
20 import java.util.Hashtable JavaDoc;
21 import java.util.Vector JavaDoc;
22
23 /* ---------------------------------------------------------------- */
24 /** FrameSet.
25  * <p>
26  * Usage
27  * <pre>
28  * FrameSet set = new FrameSet("FrameTest","*,*","*,*");
29  * set.frame(0,0).name("Frame1",req.getRequestPath()+"?Frame=1");
30  * set.frame(0,1).name("Frame2",req.getRequestPath()+"?Frame=2");
31  * set.frame(1,0).name("Frame3",req.getRequestPath()+"?Frame=3");
32  * set.frame(1,1).name("Frame4",req.getRequestPath()+"?Frame=4");
33  * set.write(new Writer(res.getOutputStream()));
34  * </pre>
35  * @version $Id: FrameSet.java,v 1.4 2004/11/20 13:32:33 gregwilkins Exp $
36  * @author Greg Wilkins
37 */

38 public class FrameSet extends Page
39 {
40     Frame[][] frames=null;
41     String JavaDoc colSpec=null;
42     String JavaDoc rowSpec=null;
43     int cols;
44     int rows;
45     String JavaDoc border="";
46     Vector JavaDoc frameNames=null;
47     Hashtable JavaDoc frameMap=null;
48     
49     /* ------------------------------------------------------------ */
50     /** FrameSet constructor.
51      * @param colSpec Comma separated list of column widths specified
52      * as pixels, percentage or '*' for variable
53      */

54     public FrameSet(String JavaDoc title, String JavaDoc colSpec, String JavaDoc rowSpec)
55     {
56         super(title);
57
58         this.colSpec=colSpec;
59         this.rowSpec=rowSpec;
60         
61         cols=1;
62         rows=1;
63
64         int i=-1;
65         while(colSpec != null && (i=colSpec.indexOf(",",i+1))>=0)
66             cols++;
67         
68         i=-1;
69         while(rowSpec != null && (i=rowSpec.indexOf(",",i+1))>=0)
70             rows++;
71         
72         frames=new Frame[cols][rows];
73         for(int c=0;c<cols;c++)
74             for(int r=0;r<rows;r++)
75                 frames[c][r]=new Frame();
76     }
77     
78     /* ------------------------------------------------------------ */
79     public Frame frame(int col, int row)
80     {
81         return frames[col][row];
82     }
83
84     /* ------------------------------------------------------------ */
85     public FrameSet border(boolean threeD, int width, String JavaDoc color)
86     {
87         border=" frameborder=\""+(threeD?"yes":"no")+"\"";
88         if (width>=0)
89             border+=" border=\""+width+"\"";
90
91         if (color!=null)
92             border+=" bordercolor=\""+color+"\"";
93         return this;
94     }
95     
96     /* ----------------------------------------------------------------- */
97     public Enumeration JavaDoc namedFrames()
98     {
99         if (frameNames==null)
100             return new Vector JavaDoc().elements();
101         return frameNames.elements();
102     }
103     
104     /* ----------------------------------------------------------------- */
105     public Frame frame(String JavaDoc name)
106     {
107         if (frameMap==null)
108             return null;
109         return (Frame) frameMap.get(name);
110     }
111     
112     /* ----------------------------------------------------------------- */
113     /** Name a frame.
114      * By convention, frame names match Page section names
115      */

116     public Frame nameFrame(String JavaDoc name,int col, int row)
117     {
118         if (frameMap==null)
119         {
120             frameMap=new Hashtable JavaDoc(10);
121             frameNames=new Vector JavaDoc(10);
122         }
123         
124         Frame frame = frames[col][row];
125         if (frame==null)
126             frame = frames[col][row] = new Frame();
127         
128         if (frameMap.get(name)==null)
129             frameNames.addElement(name);
130         frameMap.put(name,frame);
131         frame.name(name);
132
133         return frame;
134     }
135     
136     
137     /* ----------------------------------------------------------------- */
138     public void write(Writer JavaDoc out)
139          throws IOException JavaDoc
140     {
141         writeHtmlHead(out);
142         
143         out.write("<frameset "+border);
144         
145         if(colSpec!=null)
146             out.write(" cols=\""+colSpec+"\"");
147         if(rowSpec!=null)
148             out.write(" rows=\""+rowSpec+"\"");
149         out.write(">");
150
151         for(int r=0;r<rows;r++)
152             for(int c=0;c<cols;c++)
153                 frames[c][r].write(out);
154
155         out.write("<noframes>");
156         writeElements(out);
157         out.write("</noframes>");
158
159         out.write("</frameset>");
160         out.write("</html>");
161     }
162 };
163
164
165
Popular Tags