1 8 package com.nightlabs.editor2d.render; 9 10 import java.util.HashMap ; 11 import java.util.Iterator ; 12 import java.util.Map ; 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 47 protected void initModes() 48 { 49 if (mode2Class2Renderer == null) 50 mode2Class2Renderer = new HashMap (); 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 Map mode2Class2Renderer; 61 62 public void addRenderer(int mode, Class dcClass, Renderer r) 63 { 64 if (mode2Class2Renderer.containsKey(new Integer (mode))) 65 { 66 Map class2Renderer = (Map ) mode2Class2Renderer.get(new Integer (mode)); 67 class2Renderer.put(dcClass, r); 68 } 69 else 70 { 71 Map class2Renderer = new HashMap (); 72 class2Renderer.put(dcClass, r); 73 mode2Class2Renderer.put(new Integer (mode), class2Renderer); 74 } 75 } 76 77 public Renderer getRenderer(int mode, Class dcClass) 78 { 79 if (mode2Class2Renderer.containsKey(new Integer (mode))) 80 { 81 Map class2Renderer = (Map ) mode2Class2Renderer.get(new Integer (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 107 public Renderer getDefaultRenderer(Class dcClass) 108 { 109 if (mode2Class2Renderer.containsKey(new Integer (DEFAULT_MODE))) 110 { 111 Map class2Renderer = (Map ) mode2Class2Renderer.get(new Integer (DEFAULT_MODE)); 112 if (class2Renderer.containsKey(dcClass)) { 113 Renderer r = (Renderer) class2Renderer.get(dcClass); 114 return r; 115 } 116 else { 118 for (Iterator it = class2Renderer.keySet().iterator(); it.hasNext(); ) { 119 Class c = (Class ) 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
|