1 package org.catacomb.druid.gui.base;
2
3 import org.catacomb.druid.event.ClosureListener;
4 import org.catacomb.druid.swing.DFrame;
5 import org.catacomb.interlish.structure.ActionRelay;
6 import org.catacomb.interlish.structure.ActionSource;
7 import org.catacomb.report.E;
8
9
10 import java.awt.Color;
11 import java.awt.Cursor;
12 import java.awt.Point;
13
14
15 public class DruFrame implements ActionSource, ClosureListener {
16 static final long serialVersionUID = 1001;
17
18 DruPanel druPanel;
19
20 String id;
21
22 ActionRelay actionRelay;
23
24 boolean donePack;
25
26 boolean hideOnClose;
27
28 DFrame dFrame;
29
30 Color backgroundColor;
31
32
33 public DruFrame(String s) {
34 dFrame = new DFrame(s);
35 dFrame.setClosureListener(this);
36 donePack = false;
37 hideOnClose = false;
38 }
39
40 public DFrame getGUIPeer() {
41 return dFrame;
42 }
43
44
45 public void setPreferredSize(int w, int h) {
46 dFrame.setPreferredSize(w, h);
47 }
48
49 public String toString() {
50 return "DruFrame " + id;
51 }
52
53 public void pack() {
54 donePack = true;
55 dFrame.pack();
56 }
57
58 public void packIfNecessary() {
59 if (!donePack) {
60 pack();
61 }
62 }
63
64
65
66 public void setID(String s) {
67 id = s;
68 }
69
70
71 public String getID() {
72 return id;
73 }
74
75
76 public void setCloseActionHide() {
77 hideOnClose = true;
78 }
79
80
81 public void requestClose() {
82 if (hideOnClose) {
83 dFrame.setVisible(false);
84
85 } else if (actionRelay == null) {
86 E.error("no action connector for this frame " + id);
87 dFrame.setVisible(true);
88
89 } else {
90 actionRelay.action("requestClose");
91 }
92 }
93
94
95 public void closed() {
96 System.out.println("frame closed");
97 }
98
99
100
101 public void setActionRelay(ActionRelay ar) {
102 actionRelay = ar;
103 }
104
105
106
107 public void setDruMenuBar(DruMenuBar amb) {
108 dFrame.setJMenuBar(amb.getGUIPeer());
109 }
110
111
112 public void setDruPanel(DruPanel axp) {
113 druPanel = axp;
114 if (backgroundColor != null) {
115 druPanel.setFallbackBackgroundColor(backgroundColor);
116 }
117 dFrame.getContentPane().add("Center", axp.getGUIPeer());
118 }
119
120
121 public void setVisible(boolean b) {
122 dFrame.setVisible(b);
123 }
124
125
126 public void dispose() {
127 dFrame.dispose();
128 }
129
130
131 public void setBackgroundColor(Color bg) {
132 backgroundColor = bg;
133 dFrame.setBg(bg);
134 }
135
136
137 public void setTitle(String s) {
138 dFrame.setTitle(s);
139 }
140
141
142 public int[] getIntArraySize() {
143 return dFrame.getIntArraySize();
144 }
145
146 public int[] getLocation() {
147 Point p = dFrame.getLocation();
148 int[] ret = {(int)(p.getX()), (int)(p.getY())};
149 return ret;
150 }
151
152 public void setLocation(int x, int y) {
153 dFrame.setLocation(x, y);
154 }
155
156 public void toFront() {
157 dFrame.toFront();
158
159 }
160
161 public void waitCursor() {
162 dFrame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
163 }
164
165 public void normalCursor() {
166 dFrame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
167 }
168
169 public Object getContent() {
170 return dFrame.getContentPane();
171 }
172
173
174
175 }