1
2 package org.catacomb.druid.blocks;
3
4 import org.catacomb.datalish.SColor;
5 import org.catacomb.druid.build.Context;
6 import org.catacomb.druid.build.GUIPath;
7 import org.catacomb.druid.build.Realizer;
8 import org.catacomb.druid.gui.base.DruDialog;
9 import org.catacomb.druid.gui.base.DruFrame;
10 import org.catacomb.druid.gui.base.DruPanel;
11 import org.catacomb.interlish.structure.AddableTo;
12 import org.catacomb.report.E;
13
14
15
16 public class Dialog implements AddableTo, Realizer {
17
18
19 public String title;
20 public Panel panel;
21
22 public String id;
23
24 public boolean modal;
25
26 public SColor backgroundColor;
27
28
29 public Dialog() {
30 modal = false;
31 }
32
33
34 public void add(Object obj) {
35 if (obj instanceof Panel) {
36 panel = (Panel)obj;
37 } else {
38 E.error("cant add " + obj);
39 }
40 }
41
42
43 public Object realize(Context ctx, GUIPath gpath) {
44 return realize(null, ctx, gpath);
45 }
46
47 public Object realize(DruFrame dfin, Context ctx, GUIPath gpathin) {
48 DruFrame druFrame = dfin;
49 GUIPath gpath = gpathin;
50 gpath = gpath.extend(id);
51
52 if (druFrame == null) {
53 druFrame = new DruFrame("dummy frame");
54 }
55
56 if (backgroundColor != null) {
57 ctx.setBg(backgroundColor.getColor());
58 }
59
60
61
62
63 DruDialog drud = new DruDialog(druFrame, (title != null ? title : ""));
64 drud.setID(id);
65
66
67
68 if (panel != null) {
69 DruPanel drup = (DruPanel)(panel.realize(ctx, gpath));
70 drud.setDruPanel(drup);
71 }
72
73 drud.setModal(modal);
74
75 ctx.addComponent(drud, gpath);
76
77 return drud;
78 }
79
80
81
82 }