KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > kawa > models > Display


1 package gnu.kawa.models;
2 import java.awt.Dimension JavaDoc;
3 import java.awt.geom.Dimension2D JavaDoc;
4 import gnu.mapping.ThreadLocation;
5
6 /** An abstract "display device".
7  * In the AWT/Swing world, this may bundle a GraphicsConfiguration
8  * and a Toolkit.
9  * In the web servlet world, this may correspond to a browser on
10  * on the other end of an http connection. */

11
12 public abstract class Display
13 {
14   public static ThreadLocation myDisplay = new ThreadLocation("my-display");
15
16   public static Display getInstance ()
17   {
18     Object JavaDoc d = myDisplay.get(null);
19     if (d instanceof Display)
20       return (Display) d;
21     String JavaDoc name = d == null ? "swing" : d.toString();
22     Class JavaDoc[] noClasses = new Class JavaDoc[0];
23     for (;;)
24       {
25         int comma = name.indexOf(',');
26         String JavaDoc rest = null;
27         if (comma >= 0)
28           {
29             rest = name.substring(comma+1);
30             name = name.substring(0, comma);
31           }
32
33         if (name.equals("swing"))
34           name = "gnu.kawa.swingviews.SwingDisplay";
35         else if (name.equals("swt"))
36           name = "gnu.kawa.swtviews.SwtDisplay";
37         else if (name.equals("echo2"))
38           name = "gnu.kawa.echo2.Echo2Display";
39
40         try
41           {
42             Class JavaDoc clas = Class.forName(name);
43             java.lang.reflect.Method JavaDoc method
44               = clas.getDeclaredMethod("getInstance", noClasses);
45             return (Display) method.invoke(null, new Object JavaDoc[0]);
46           }
47         catch (ClassNotFoundException JavaDoc ex)
48           {
49             if (rest == null)
50               throw new RuntimeException JavaDoc("no display toolkit: "+d);
51             name = rest;
52           }
53         catch (Throwable JavaDoc ex)
54           {
55             throw gnu.mapping.WrappedException.wrapIfNeeded(ex);
56           }
57       }
58   }
59
60   public abstract Window makeWindow ();
61
62   public abstract void addButton (Button model, Object JavaDoc where);
63
64   public abstract void addLabel (Label model, Object JavaDoc where);
65
66   public abstract void addImage (DrawImage model, Object JavaDoc where);
67
68   public void addText (Text model, Object JavaDoc where)
69   {
70     throw new Error JavaDoc("makeView called on DrawImage");
71   }
72
73   public void addSpacer (Spacer model, Object JavaDoc where)
74   {
75     throw new Error JavaDoc("makeView called on Spacer");
76   }
77
78   public abstract void addBox (Box model, Object JavaDoc where);
79
80   public abstract void addView (Object JavaDoc view, Object JavaDoc where);
81
82   public static Dimension JavaDoc asDimension (Dimension2D JavaDoc dim)
83   {
84     if (dim instanceof Dimension JavaDoc || dim == null)
85       return (Dimension JavaDoc) dim;
86     else
87       return new Dimension JavaDoc((int) (dim.getWidth() + 0.5),
88                            (int) (dim.getHeight() + 0.5));
89   }
90
91   public Model coerceToModel (Object JavaDoc component)
92   {
93     if (component instanceof gnu.lists.FString || component instanceof String JavaDoc)
94       return new Label(component.toString());
95     return (Model) component;
96   }
97 }
98
Popular Tags