KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jcckit > graphic > GraphicalElement


1 /*
2  * Copyright 2003-2004, Franz-Josef Elmer, All rights reserved
3  *
4  * This library is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; either version 2.1 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details
13  * (http://www.gnu.org/copyleft/lesser.html).
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19 package jcckit.graphic;
20
21 /**
22  * Interface all graphical elements have to implement.
23  * Together with the marker interface {@link Renderer} it
24  * realizes the Anticyclic Visitor Pattern, a variant of the
25  * GoF Visitor Pattern. This allows not only to extend JCCKit with
26  * new renderers but also with new types of <tt>GraphicalElements</tt>
27  * without touching existing code.
28  *
29  * @author Franz-Josef Elmer
30  */

31 public interface GraphicalElement {
32   /**
33    * Renders this element according to the type of renderer.
34    * Concrete <tt>GraphicalElements</tt> who are not instances of
35    * {@link GraphicalComposite} dynamically cast <tt>renderer</tt>.
36    * If it does not implement the type of renderer specific for
37    * the concrete <tt>GraphicalElement</tt> it should throw an
38    * <tt>IllegalArgumentException</tt>.
39    */

40   public abstract void renderWith(Renderer renderer);
41 }
42
Popular Tags