Source code: jcurses/util/Message.java
1 package jcurses.util;
2
3 import jcurses.event.ActionEvent;
4 import jcurses.event.ActionListener;
5 import jcurses.widgets.Button;
6 import jcurses.widgets.Label;
7 import jcurses.widgets.DefaultLayoutManager;
8 import jcurses.widgets.Dialog;
9 import jcurses.widgets.WidgetsConstants;
10 import jcurses.widgets.Window;
11
12 import java.util.StringTokenizer;
13
14 /**
15 * This is a class to create and show user defined messages.
16 * Such message is a dialog with an user defined title, containing
17 * an user defined text and a button to close the window with an user
18 * defined label.
19 */
20
21 public class Message extends Dialog implements ActionListener {
22
23 String _title = null;
24 String _text = null;
25
26 Button _button = null;
27 Label _label = null;
28
29 /**
30 * The constructor
31 *
32 * @param title the message's title
33 * @param text the message's text
34 * @param buttonLabel the label on the message's button
35 *
36 */
37 public Message(String title, String text, String buttonLabel) {
38 super(getWidth(text, title)+4, getHeight(text)+7,true,title);
39
40 DefaultLayoutManager manager = (DefaultLayoutManager)getRootPanel().getLayoutManager();
41
42 _label = new Label(text);
43 _button = new Button(buttonLabel);
44 _title = title;
45
46 _button.addListener(this);
47
48 manager.addWidget(_label,0,0,getWidth(text, _title)+2, getHeight(text)+2, WidgetsConstants.ALIGNMENT_CENTER,
49 WidgetsConstants.ALIGNMENT_CENTER);
50
51 manager.addWidget(_button,0,getHeight(text)+2,getWidth(text, _title)+2, 5, WidgetsConstants.ALIGNMENT_CENTER,
52 WidgetsConstants.ALIGNMENT_CENTER);
53
54
55
56 }
57
58 private static int getWidth(String label, String title) {
59
60 StringTokenizer tokenizer = new StringTokenizer(label,"\n");
61 int result = 0;
62 while (tokenizer.hasMoreElements()) {
63 String token = tokenizer.nextToken();
64 if (result < token.length()) {
65 result = token.length();
66 }
67 }
68 if (title.length() > result) {
69 result = title.length();
70 }
71 //message nust fit on the schreen
72
73 if (result>jcurses.system.Toolkit.getScreenWidth()-3) {
74 result=jcurses.system.Toolkit.getScreenWidth()-3;
75 }
76
77 return result;
78 }
79
80
81 private static int getHeight(String label) {
82
83 StringTokenizer tokenizer = new StringTokenizer(label,"\n");
84 int result = 0;
85 while (tokenizer.hasMoreElements()) {
86 tokenizer.nextElement();
87 result++;
88 }
89 return result;
90 }
91
92 /**
93 * Required for implementing <code>jcurses.event.ActionListener</code>
94 */
95 public void actionPerformed(ActionEvent event) {
96 close();
97 }
98
99 }