1 package org.catacomb.druid.blocks;
2
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.DruEditorWindow;
9 import org.catacomb.druid.gui.base.DruFrame;
10 import org.catacomb.interlish.resource.Role;
11 import org.catacomb.interlish.structure.AddableTo;
12 import org.catacomb.report.E;
13
14
15
16 import java.util.ArrayList;
17
18
19
20 public class EditorWindow implements Realizer, AddableTo {
21
22 public String name;
23 public String title;
24 public String id;
25 public String controllerClass;
26
27 public int background;
28
29 public SColor backgroundColor;
30
31 public String closeAction;
32
33 public Frame frame;
34
35 public ArrayList<Dialog> dialogs;
36
37
38
39
40 public EditorWindow() {
41 }
42
43
44 public void add(Object obj) {
45 if (obj instanceof Frame) {
46 frame = (Frame)obj;
47
48
49 } else if (obj instanceof Dialog) {
50 if (dialogs == null) {
51 dialogs = new ArrayList<Dialog>();
52 }
53 dialogs.add((Dialog)obj);
54
55 } else if (obj instanceof Role) {
56
57 } else {
58 E.error("cant add " + obj);
59 }
60 }
61
62
63 public Object realize(Context ctx, GUIPath gpathin) {
64 GUIPath gpath = gpathin;
65 gpath = gpath.extend(id);
66
67
68 DruFrame druFrame = (DruFrame)(frame.realize(ctx, gpath));
69
70 if (closeAction != null) {
71 if (closeAction.equals("hide")) {
72 druFrame.setCloseActionHide();
73 } else {
74 E.warning("unrecognized close action : " + closeAction);
75 }
76 }
77
78 if (name == null) {
79 name = title;
80 }
81
82 druFrame.setTitle(name);
83
84 DruEditorWindow druew = new DruEditorWindow();
85
86 if (backgroundColor != null) {
87 E.info("need to use bg color");
88 }
89
90 druew.setControllerPath(controllerClass);
91 druew.setName(name);
92
93 druew.setMainFrame(druFrame);
94
95
96
97 ctx.addComponent(druew, gpath);
98
99
100 if (dialogs != null) {
101 for (Dialog d : dialogs) {
102 d.realize(ctx, new GUIPath());
103 }
104 }
105
106
107
108 return druew;
109 }
110
111
112
113 }