package jcurses.util; import jcurses.event.ActionEvent; import jcurses.event.ActionListener; import jcurses.widgets.Button; import jcurses.widgets.Label; import jcurses.widgets.DefaultLayoutManager; import jcurses.widgets.Dialog; import jcurses.widgets.WidgetsConstants; import java.util.StringTokenizer; /** * This is a class to create and show user defined messages. * Such message is a dialog with an user defined title, containing * an user defined text and a button to close the window with an user * defined label. */ public class Message extends Dialog implements ActionListener { String _title = null; String _text = null; Button _button = null; Label _label = null; /** * The constructor * * @param title the message's title * @param text the message's text * @param buttonLabel the label on the message's button * */ public Message(String title, String text, String buttonLabel) { super(getWidth(text, title)+4, getHeight(text)+7,true,title); DefaultLayoutManager manager = (DefaultLayoutManager)getRootPanel().getLayoutManager(); _label = new Label(text); _button = new Button(buttonLabel); _title = title; _button.addListener(this); manager.addWidget(_label,0,0,getWidth(text, _title)+2, getHeight(text)+2, WidgetsConstants.ALIGNMENT_CENTER, WidgetsConstants.ALIGNMENT_CENTER); manager.addWidget(_button,0,getHeight(text)+2,getWidth(text, _title)+2, 5, WidgetsConstants.ALIGNMENT_CENTER, WidgetsConstants.ALIGNMENT_CENTER); } private static int getWidth(String label, String title) { StringTokenizer tokenizer = new StringTokenizer(label,"\n"); int result = 0; while (tokenizer.hasMoreElements()) { String token = tokenizer.nextToken(); if (result < token.length()) { result = token.length(); } } if (title.length() > result) { result = title.length(); } //message nust fit on the schreen if (result>jcurses.system.Toolkit.getScreenWidth()-3) { result=jcurses.system.Toolkit.getScreenWidth()-3; } return result; } private static int getHeight(String label) { StringTokenizer tokenizer = new StringTokenizer(label,"\n"); int result = 0; while (tokenizer.hasMoreElements()) { tokenizer.nextElement(); result++; } return result; } /** * Required for implementing <code>jcurses.event.ActionListener</code> */ public void actionPerformed(ActionEvent event) { close(); } }