You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ecs-dev@jakarta.apache.org by Mathew Pole <Ma...@clipsal.com.au> on 2002/06/25 05:01:06 UTC
Change FrameSetDocument to extend Document
Hi ,
I posted a question to the ecs-user mailing list asking why FrameSetDocument
doesn't extend Document. Martin ( m.redington@ucl.ac.uk
<ma...@ucl.ac.uk> ) suggested that it was an oversight and that
I submit a patch.
I've hacked out a change to the code to make FrameSetDocument extend
Document which
- removed code referring to html, title, head doctype elements
- removed code referring to OutputStream, PrintWriter and Serializable
- removed most of code referring to body elements, with the exception of
setBody method.
I've tested it and it appears to work for me, but YMMV.
Following this email is a diff of my changes with version 1.3 in cvs and the
complete source file. As this is the first ever contribution to an
open-source project, I hope it is okay.
Regards,
Mathew
--
Mathew Pole
Web Developer, Custom Press
email: mathew.pole@clipsal.com.au
phone: 08 8269 0511 ext 313, fax: 08 8340 1212, mobile: 0403 164 617
---
--- Diff
---
cvs diff FrameSetDocument.java (in directory
C:\TEMP\jakarta-ecs\src\java\org\apache\ecs\)
Index: FrameSetDocument.java
===================================================================
RCS file:
/home/cvspublic/jakarta-ecs/src/java/org/apache/ecs/FrameSetDocument.java,v
retrieving revision 1.3
diff -r1.3 FrameSetDocument.java
55,58d54
< import java.io.OutputStream;
< import java.io.PrintWriter;
< import java.io.Serializable;
< import org.apache.ecs.html.Html;
60,61d55
< import org.apache.ecs.html.Title;
< import org.apache.ecs.html.Head;
66c60,62
< This class creates a FrameSetDocument container, for convience.
---
> This class creates a FrameSetDocument container, for convience,
> by adding frameset and noframes elements. In addition it moves the
> body element down into the noframes element from the head element.
72c68
< public class FrameSetDocument implements Serializable,Cloneable
---
> public class FrameSetDocument extends Document
74,81d69
< /** @serial html html */
< private Html html; // this is the actual container for head and body
< /** @serial head head */
< private Head head;
< /** @serial body body */
< private Body body;
< /** @serial title title */
< private Title title;
86,90d73
< /** @serial doctype doctype */
< private Doctype doctype = null;
<
< /** @serial codeset codeset */
< private String codeset = null;
93,95d75
< html = new Html();
< head = new Head();
< title = new Title();
98d77
< body = new Body();
100,104c79,84
< head.addElement("title",title);
< html.addElement("head",head);
< html.addElement("frameset",frameset);
< html.addElement("noframes",noframes);
< noframes.addElement("body",body);
---
> getHtml ().addElement("frameset",frameset);
> getHtml ().addElement("noframes",noframes);
>
> // remove body from main html element and add into the noframe
element
> noframes.addElement("body",getBody ());
> getHtml ().removeElement ("body");
115,194d94
< Basic constructor. Sets the codeset for the page output.
< */
< public FrameSetDocument(String codeset)
< {
< setCodeset(codeset);
< }
<
< /**
< Get the doctype element for this document container.
< */
< public Doctype getDoctype()
< {
< return(doctype);
< }
<
< /**
< Set the doctype element for this document container.
< */
< public FrameSetDocument setDoctype(Doctype set_doctype)
< {
< this.doctype = set_doctype;
< return(this);
< }
<
< /**
< Get the html element for this document container.
< */
< public Html getHtml()
< {
< return(html);
< }
<
< /**
< Set the html element for this FrameSetDocument container.
< */
< public FrameSetDocument setHtml(Html set_html)
< {
< this.html = set_html;
< return(this);
< }
<
< /**
< Get the head element for this FrameSetDocument container.
< */
< public Head getHead()
< {
< return(head);
< }
<
< /**
< Set the head element for this FrameSetDocument container.
< */
< public FrameSetDocument setHead(Head set_head)
< {
< html.addElement("head",set_head);
< this.head = set_head;
< return(this);
< }
<
< /**
< Append to the head element for this FrameSetDocument container.
< @param value adds to the value between the head tags
< */
< public FrameSetDocument appendHead(Element value)
< {
< head.addElement(value);
< return(this);
< }
<
< /**
< Append to the head element for this FrameSetDocument container.
< @param value adds to the value between the head tags
< */
< public FrameSetDocument appendHead(String value)
< {
< head.addElement(value);
< return(this);
< }
<
< /**
207c107
< html.addElement("frameset",set_frameset);
---
> getHtml ().addElement("frameset",set_frameset);
231,237c131
< /**
< Get the body element for this FrameSetDocument container.
< */
< public Body getBody()
< {
< return(body);
< }
---
>
241,295d134
< */
< public FrameSetDocument setBody(Body set_body)
< {
< noframes.addElement("body",set_body);
< this.body = set_body;
< return(this);
< }
<
< /**
< Append to the body element for this FrameSetDocument container.
< @param value adds to the value between the body tags
< */
< public FrameSetDocument appendBody(Element value)
< {
< body.addElement(value);
< return(this);
< }
<
< /**
< Append to the body element for this FrameSetDocument container.
< @param value adds to the value between the body tags
< */
< public FrameSetDocument appendBody(String value)
< {
< body.addElement(value);
< return(this);
< }
<
< /**
< Get the title element for this FrameSetDocument container.
< */
< public Title getTitle()
< {
< return(title);
< }
<
< /**
< Set the Title element for this FrameSetDocument container.
< */
< public FrameSetDocument setTitle(Title set_title)
< {
< head.addElement("title",set_title);
< this.title = set_title;
< return(this);
< }
<
< /**
< Append to the title element for this FrameSetDocument container.
< @param value adds to the value between the title tags
< */
< public FrameSetDocument appendTitle(Element value)
< {
< title.addElement(value);
< return(this);
< }
297,299c136,137
< /**
< Append to the title element for this FrameSetDocument container.
< @param value adds to the value between the title tags
---
> <p>The Document#setBody method is overridden, because the Body
> element is in the NoFrames element.
301c139
< public FrameSetDocument appendTitle(String value)
---
> public Document setBody(Body set_body)
303c141,144
< title.addElement(value);
---
> super.setBody (set_body);
>
> noframes.addElement("body",set_body);
> getHtml ().removeElement ("body");
306,323d146
<
< /**
< * Sets the codeset for this FrameSetDocument
< */
< public void setCodeset ( String codeset )
< {
< this.codeset = codeset;
< }
<
< /**
< * Gets the codeset for this FrameSetDocument
< *
< * @return the codeset
< */
< public String getCodeset()
< {
< return this.codeset;
< }
325,406c148
< /**
< Write the container to the OutputStream
< */
< public void output(OutputStream out)
< {
< if (doctype != null)
< {
< doctype.output(out);
< try
< {
< out.write('\n');
< }
< catch ( Exception e)
< {}
< }
< // FrameSetDocument is just a convient wrapper for Html call
Html.output
< html.output(out);
< }
<
< /**
< Write the container to the PrintWriter
< */
< public void output(PrintWriter out)
< {
< if (doctype != null)
< {
< doctype.output(out);
< try
< {
< out.write('\n');
< }
< catch ( Exception e)
< {}
< }
< // FrameSetDocument is just a convient wrapper for Html call
Html.output
< html.output(out);
< }
<
< /**
< Override the toString() method so that it prints something
meaningful.
< */
< public final String toString()
< {
< StringBuffer sb = new StringBuffer();
< if ( getCodeset() != null )
< {
< if (doctype != null)
< sb.append (doctype.toString(getCodeset()));
< sb.append (html.toString(getCodeset()));
< return (sb.toString());
< }
< else
< {
< if (doctype != null)
< sb.append (doctype.toString());
< sb.append (html.toString());
< return(sb.toString());
< }
< }
<
< /**
< Override the toString() method so that it prints something
meaningful.
< */
< public final String toString(String codeset)
< {
< StringBuffer sb = new StringBuffer();
< if (doctype != null)
< sb.append (doctype.toString(getCodeset()));
< sb.append (html.toString(getCodeset()));
< return(sb.toString());
< }
<
< /**
< Allows the FrameSetDocument to be cloned. Doesn't return an
instanceof FrameSetDocument returns instance of Html.
<
< */
<
< public Object clone()
< {
< return(html.clone());
< }
< }
\ No newline at end of file
---
> }
----------------------------------------------------------------------------
-------------
----------------------------------------------------------------------------
-------------
--
-- Source Code
--
/*
* Copyright (c) 1999 The Java Apache Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the Java Apache
* Project. < http://java.apache.org/ <http://java.apache.org/> >"
*
* 4. The names "Java Apache Element Construction Set", "Java Apache ECS"
and
* "Java Apache Project" must not be used to endorse or promote products
* derived from this software without prior written permission.
*
* 5. Products derived from this software may not be called
* "Java Apache Element Construction Set" nor "Java Apache ECS" appear
* in their names without prior written permission of the
* Java Apache Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the Java Apache
* Project. < http://java.apache.org/ <http://java.apache.org/> >"
*
* THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS IS" AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JAVA APACHE PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Java Apache Project. For more information
* on the Java Apache Project please see < http://java.apache.org/
<http://java.apache.org/> >.
*
*/
package org.apache.ecs;
import org.apache.ecs.html.Body;
import org.apache.ecs.html.FrameSet;
import org.apache.ecs.html.NoFrames;
/**
This class creates a FrameSetDocument container, for convience,
by adding frameset and noframes elements. In addition it moves the
body element down into the noframes element from the head element.
@version $Id: FrameSetDocument.java,v 1.3 2001/03/29 23:02:32 rdonkin
Exp $
@author <a href=" Stephan'>mailto:snagy@servletapi.com"
<ma...@servletapi.com> >Stephan Nagy</a>
@author <a href=" Jon'>mailto:jon@clearink.com"
<ma...@clearink.com> >Jon S. Stevens</a>
*/
public class FrameSetDocument extends Document
{
/** @serial frameset frameset */
private FrameSet frameset;
/** @serial noframes frameset */
private NoFrames noframes;
{
frameset = new FrameSet();
noframes = new NoFrames();
getHtml ().addElement("frameset",frameset);
getHtml ().addElement("noframes",noframes);
// remove body from main html element and add into the noframe
element
noframes.addElement("body",getBody ());
getHtml ().removeElement ("body");
}
/**
Basic constructor.
*/
public FrameSetDocument()
{
}
/**
Get the FrameSet element for this FrameSetDocument container.
*/
public FrameSet getFrameSet()
{
return(frameset);
}
/**
Set the FrameSet element for this FrameSetDocument container.
*/
public FrameSetDocument setFrameSet(FrameSet set_frameset)
{
getHtml ().addElement("frameset",set_frameset);
this.frameset = set_frameset;
return(this);
}
/**
Append to the head element for this FrameSetDocument container.
@param value adds to the value between the head tags
*/
public FrameSetDocument appendFrameSet(Element value)
{
frameset.addElement(value);
return(this);
}
/**
Append to the head element for this FrameSetDocument container.
@param value adds to the value between the head tags
*/
public FrameSetDocument appendFrameSet(String value)
{
frameset.addElement(value);
return(this);
}
/**
Set the Body element for this FrameSetDocument container.
<p>The Document#setBody method is overridden, because the Body
element is in the NoFrames element.
*/
public Document setBody(Body set_body)
{
super.setBody (set_body);
noframes.addElement("body",set_body);
getHtml ().removeElement ("body");
return(this);
}
}