KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > editor2d > render > RenderModeManager


1 /**
2  * <p> Project: com.nightlabs.editor2d.model </p>
3  * <p> Copyright: Copyright (c) 2004 </p>
4  * <p> Company: NightLabs GmbH (Germany) </p>
5  * <p> Creation Date: 27.04.2005 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8 package com.nightlabs.editor2d.render;
9
10 import java.util.HashMap JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.Map JavaDoc;
13
14 import com.nightlabs.config.Config;
15 import com.nightlabs.config.ConfigException;
16 import com.nightlabs.editor2d.DrawComponentContainer;
17 import com.nightlabs.editor2d.ImageDrawComponent;
18 import com.nightlabs.editor2d.ShapeDrawComponent;
19 import com.nightlabs.editor2d.config.RenderModelManagerConfigModule;
20
21
22 public class RenderModeManager
23 {
24   public static final int DEFAULT_MODE = 1;
25   public static final int ROLLOVER_MODE = 2;
26     
27   public RenderModeManager()
28   {
29     super();
30     initModes();
31   }
32
33 // protected void init()
34
// {
35
// try {
36
// config = (RenderModelManagerConfigModule) Config.sharedInstance().createConfigModule(RenderModelManagerConfigModule.class);
37
// } catch (ConfigException e) {
38
// // TODO Auto-generated catch block
39
// e.printStackTrace();
40
// }
41
//
42
// mode2Class2Renderer = config.getMode2Class2Renderer();
43
// if (mode2Class2Renderer == null)
44
// initModes();
45
// }
46

47   protected void initModes()
48   {
49     if (mode2Class2Renderer == null)
50         mode2Class2Renderer = new HashMap JavaDoc();
51     
52     addRenderer(DEFAULT_MODE, ShapeDrawComponent.class, new ShapeDefaultRenderer());
53     addRenderer(DEFAULT_MODE, ImageDrawComponent.class, new ImageDefaultRenderer());
54     addRenderer(DEFAULT_MODE, DrawComponentContainer.class, new RendererImpl());
55     addRenderer(ROLLOVER_MODE, ShapeDrawComponent.class, new ShapeRolloverRenderer());
56     addRenderer(ROLLOVER_MODE, ImageDrawComponent.class, new ImageRolloverRenderer());
57   }
58   
59 // protected RenderModelManagerConfigModule config;
60
protected Map JavaDoc mode2Class2Renderer;
61   
62   public void addRenderer(int mode, Class JavaDoc dcClass, Renderer r)
63   {
64     if (mode2Class2Renderer.containsKey(new Integer JavaDoc(mode)))
65     {
66       Map JavaDoc class2Renderer = (Map JavaDoc) mode2Class2Renderer.get(new Integer JavaDoc(mode));
67       class2Renderer.put(dcClass, r);
68     }
69     else
70     {
71       Map JavaDoc class2Renderer = new HashMap JavaDoc();
72       class2Renderer.put(dcClass, r);
73       mode2Class2Renderer.put(new Integer JavaDoc(mode), class2Renderer);
74     }
75   }
76   
77   public Renderer getRenderer(int mode, Class JavaDoc dcClass)
78   {
79     if (mode2Class2Renderer.containsKey(new Integer JavaDoc(mode)))
80     {
81       Map JavaDoc class2Renderer = (Map JavaDoc) mode2Class2Renderer.get(new Integer JavaDoc(mode));
82       if (class2Renderer.containsKey(dcClass)) {
83         Renderer r = (Renderer) class2Renderer.get(dcClass);
84         return r;
85       }
86       else {
87         return getDefaultRenderer(dcClass);
88       }
89     }
90     else
91       return getDefaultRenderer(dcClass);
92   }
93
94 // public Renderer getDefaultRenderer(Class dcClass)
95
// {
96
// if (mode2Class2Renderer.containsKey(new Integer(DEFAULT_MODE)))
97
// {
98
// Map class2Renderer = (Map) mode2Class2Renderer.get(new Integer(DEFAULT_MODE));
99
// if (class2Renderer.containsKey(dcClass)) {
100
// Renderer r = (Renderer) class2Renderer.get(dcClass);
101
// return r;
102
// }
103
// }
104
// return null;
105
// }
106

107   public Renderer getDefaultRenderer(Class JavaDoc dcClass)
108   {
109     if (mode2Class2Renderer.containsKey(new Integer JavaDoc(DEFAULT_MODE)))
110     {
111       Map JavaDoc class2Renderer = (Map JavaDoc) mode2Class2Renderer.get(new Integer JavaDoc(DEFAULT_MODE));
112       if (class2Renderer.containsKey(dcClass)) {
113         Renderer r = (Renderer) class2Renderer.get(dcClass);
114         return r;
115       }
116       // Check if a registered Class is a maybe superclass of a the given class
117
else {
118         for (Iterator JavaDoc it = class2Renderer.keySet().iterator(); it.hasNext(); ) {
119             Class JavaDoc c = (Class JavaDoc) it.next();
120             if (c.isAssignableFrom(dcClass)) {
121                 Renderer r = (Renderer) class2Renderer.get(c);
122                 return r;
123             }
124         }
125       }
126     }
127     return null;
128   }
129 }
130
Popular Tags