1 package org.catacomb.druid.blocks; 2 3 import org.catacomb.druid.build.Context; 4 import org.catacomb.druid.build.GUIPath; 5 import org.catacomb.druid.build.Realizer; 6 import org.catacomb.druid.gui.base.DruPanel; 7 import org.catacomb.druid.gui.base.PanelWrapper; 8 import org.catacomb.interlish.structure.AddableTo; 9 import org.catacomb.report.E; 10 11 12 13 public class SinglePanelContainer implements AddableTo { 14 15 public Realizer realizer; 16 17 18 19 public DruPanel realizePanel(Context ctx, GUIPath gpath) { 20 DruPanel ret = null; 21 if (realizer != null) { 22 Object obj = realizer.realize(ctx, gpath); 23 if (obj instanceof DruPanel) { 24 ret = (DruPanel)obj; 25 } else if (obj instanceof PanelWrapper) { 26 ret = ((PanelWrapper)obj).getPanel(); 27 } else { 28 E.error("cant get panel from " + obj); 29 } 30 } 31 32 return ret; 33 34 } 35 36 37 public void add(Object obj) { 38 if (obj instanceof Realizer) { 39 if (realizer == null) { 40 realizer = (Realizer)obj; 41 } else { 42 E.error("too many panels (>1) " + getClass().getName()); 43 } 44 45 } else { 46 E.error("cant add non-panel to " + this); 47 E.info("tried to add " + obj + " (" + obj.getClass().getName() + ")"); 48 } 49 50 } 51 52 }