X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=demos%2FDemo1.java;h=db327081100e416db1f6395682ee887cc0d34f48;hb=d502a0e90eacad7ec676b0abf4686db553b794b1;hp=5d5485a83fe4fb529bc751bcecb23cb30d2cb777;hpb=30d336cc33e26af877f7950b93f3b77d9c3a3bd3;p=fanfix.git diff --git a/demos/Demo1.java b/demos/Demo1.java index 5d5485a..db32708 100644 --- a/demos/Demo1.java +++ b/demos/Demo1.java @@ -34,11 +34,55 @@ import jexer.*; import jexer.menu.*; +class DemoCheckboxWindow extends TWindow { + + /** + * Constructor + */ + DemoCheckboxWindow(TApplication parent) { + this(parent, CENTERED | RESIZABLE); + } + + /** + * Constructor + */ + DemoCheckboxWindow(TApplication parent, int flags) { + // Construct a demo window. X and Y don't matter because it + // will be centered on screen. + super(parent, "Radiobuttons and Checkboxes", 0, 0, 60, 15, flags); + + int row = 1; + + // Add some widgets + addLabel("Check box example 1", 1, row); + addCheckbox(35, row++, "Checkbox 1", false); + addLabel("Check box example 2", 1, row); + addCheckbox(35, row++, "Checkbox 2", true); + row += 2; + + /* + auto group = addRadioGroup(1, row, "Group 1"); + group.addRadioButton("Radio option 1"); + group.addRadioButton("Radio option 2"); + group.addRadioButton("Radio option 3"); + + addButton("&Close Window", (width - 14) / 2, height - 4, + { + application.closeWindow(this); + } + + ); + */ + } + +} + + class DemoMsgBoxWindow extends TWindow { /* private void openYNCMessageBox() { - application.messageBox("Yes/No/Cancel MessageBox", - q"EOS + application.messageBox("Yes/No/Cancel MessageBox", + q"EOS This is an example of a Yes/No/Cancel MessageBox. Note that the MessageBox text can span multiple @@ -47,12 +91,12 @@ lines. The default result (if someone hits the top-left close button) is CANCEL. EOS", - TMessageBox.Type.YESNOCANCEL); + TMessageBox.Type.YESNOCANCEL); } private void openYNMessageBox() { - application.messageBox("Yes/No MessageBox", - q"EOS + application.messageBox("Yes/No MessageBox", + q"EOS This is an example of a Yes/No MessageBox. Note that the MessageBox text can span multiple @@ -61,12 +105,12 @@ lines. The default result (if someone hits the top-left close button) is NO. EOS", - TMessageBox.Type.YESNO); + TMessageBox.Type.YESNO); } private void openOKCMessageBox() { - application.messageBox("OK/Cancel MessageBox", - q"EOS + application.messageBox("OK/Cancel MessageBox", + q"EOS This is an example of a OK/Cancel MessageBox. Note that the MessageBox text can span multiple @@ -75,12 +119,12 @@ lines. The default result (if someone hits the top-left close button) is CANCEL. EOS", - TMessageBox.Type.OKCANCEL); + TMessageBox.Type.OKCANCEL); } private void openOKMessageBox() { - application.messageBox("OK MessageBox", - q"EOS + application.messageBox("OK MessageBox", + q"EOS This is an example of a OK MessageBox. This is the default MessageBox. @@ -90,7 +134,7 @@ lines. The default result (if someone hits the top-left close button) is OK. EOS", - TMessageBox.Type.OK); + TMessageBox.Type.OK); } */ @@ -99,65 +143,68 @@ EOS", * Constructor. */ DemoMsgBoxWindow(final TApplication parent) { - this(parent, TWindow.CENTERED | TWindow.RESIZABLE); + this(parent, TWindow.CENTERED | TWindow.RESIZABLE); } /** * Constructor. */ DemoMsgBoxWindow(final TApplication parent, final int flags) { - // Construct a demo window. X and Y don't matter because it - // will be centered on screen. - super(parent, "Message Boxes", 0, 0, 60, 15, flags); + // Construct a demo window. X and Y don't matter because it + // will be centered on screen. + super(parent, "Message Boxes", 0, 0, 60, 15, flags); /* - uint row = 1; - - // Add some widgets - addLabel("Default OK message box", 1, row); - addButton("Open O&K MB", 35, row, &openOKMessageBox); - row += 2; - - addLabel("OK/Cancel message box", 1, row); - addButton("O&pen OKC MB", 35, row, &openOKCMessageBox); - row += 2; - - addLabel("Yes/No message box", 1, row); - addButton("Open &YN MB", 35, row, &openYNMessageBox); - row += 2; - - addLabel("Yes/No/Cancel message box", 1, row); - addButton("Ope&n YNC MB", 35, row, &openYNCMessageBox); - row += 2; - - addLabel("Input box", 1, row); - addButton("Open &input box", 35, row, - { - application.inputBox("Input Box", - q"EOS + uint row = 1; + + // Add some widgets + addLabel("Default OK message box", 1, row); + addButton("Open O&K MB", 35, row, &openOKMessageBox); + row += 2; + + addLabel("OK/Cancel message box", 1, row); + addButton("O&pen OKC MB", 35, row, &openOKCMessageBox); + row += 2; + + addLabel("Yes/No message box", 1, row); + addButton("Open &YN MB", 35, row, &openYNMessageBox); + row += 2; + + addLabel("Yes/No/Cancel message box", 1, row); + addButton("Ope&n YNC MB", 35, row, &openYNCMessageBox); + row += 2; + + addLabel("Input box", 1, row); + addButton("Open &input box", 35, row, + { + application.inputBox("Input Box", + q"EOS This is an example of an InputBox. Note that the InputBox text can span multiple lines. EOS", - "some input text"); - } - ); - - addButton("&Close Window", (width - 14) / 2, height - 4, - { - application.closeWindow(this); - } - ); + "some input text"); + } + ); + + addButton("&Close Window", (width - 14) / 2, height - 4, + { + application.closeWindow(this); + } + ); */ } } class DemoMainWindow extends TWindow { - /* // Timer that increments a number private TTimer timer; + // Timer label is updated with timerrr ticks + TLabel timerLabel; + + /* // The modal window is a more low-level example of controlling a window // "from the outside". Most windows will probably subclass TWindow and // do this kind of logic on their own. @@ -173,19 +220,17 @@ class DemoMainWindow extends TWindow { private void modalWindowClose() { application.closeWindow(modalWindow); } + */ - /// This is an example of having a button call a function. - private void openCheckboxWindow() { - new DemoCheckboxWindow(application); - } - - /// We need to override onClose so that the timer will no longer be - /// called after we close the window. TTimers currently are completely - /// unaware of the rest of the UI classes. - override public void onClose() { - application.removeTimer(timer); - } + /** + * We need to override onClose so that the timer will no longer be called + * after we close the window. TTimers currently are completely unaware + * of the rest of the UI classes. */ + @Override + public void onClose() { + getApplication().removeTimer(timer); + } /** * Construct demo window. It will be centered on screen. @@ -194,6 +239,9 @@ class DemoMainWindow extends TWindow { this(parent, CENTERED | RESIZABLE); } + int timerI = 0; + TProgressBar progressBar; + /** * Constructor. */ @@ -217,30 +265,40 @@ class DemoMainWindow extends TWindow { } row += 2; - /* addLabel("Open me as modal", 1, row); addButton("W&indow", 35, row, - { - new DemoMainWindow(application, Flag.MODAL); + new TAction() { + public void DO() { + new DemoMainWindow(getApplication(), MODAL); + } } ); row += 2; + /* addLabel("Variable-width text field:", 1, row); addField(35, row++, 15, false, "Field text"); addLabel("Fixed-width text field:", 1, row); addField(35, row, 15, true); row += 2; + */ - if (!isModal) { + if (!isModal()) { addLabel("Radio buttons and checkboxes", 1, row); - addButton("&Checkboxes", 35, row, &openCheckboxWindow); + addButton("&Checkboxes", 35, row, + new TAction() { + public void DO() { + new DemoCheckboxWindow(getApplication()); + } + } + ); } row += 2; - if (!isModal) { + /* + if (!isModal()) { addLabel("Editor window", 1, row); addButton("Edito&r", 35, row, { @@ -250,7 +308,7 @@ class DemoMainWindow extends TWindow { } row += 2; - if (!isModal) { + if (!isModal()) { addLabel("Text areas", 1, row); addButton("&Text", 35, row, { @@ -260,7 +318,7 @@ class DemoMainWindow extends TWindow { } row += 2; - if (!isModal) { + if (!isModal()) { addLabel("Tree views", 1, row); addButton("Tree&View", 35, row, { @@ -270,35 +328,34 @@ class DemoMainWindow extends TWindow { } row += 2; - version(Posix) { - if (!isModal) { - addLabel("Terminal", 1, row); - addButton("Termi&nal", 35, row, - { - application.openTerminal(0, 0); - } - ); - } - row += 2; + if (!isModal()) { + addLabel("Terminal", 1, row); + addButton("Termi&nal", 35, row, + { + application.openTerminal(0, 0); + } + ); } + row += 2; + */ - TProgressBar bar = addProgressBar(1, row, 22); + progressBar = addProgressBar(1, row, 22, 0); row++; - TLabel timerLabel = addLabel("Timer", 1, row); - timer = parent.addTimer(100, - { - static int i = 0; - auto writer = appender!dstring(); - formattedWrite(writer, "Timer: %d", i); - timerLabel.text = writer.data; - timerLabel.width = cast(uint)timerLabel.text.length; - if (i < 100) { - i++; + timerLabel = addLabel("Timer", 1, row); + timer = getApplication().addTimer(100, true, + new TAction() { + + public void DO() { + timerLabel.setText(String.format("Timer: %d", timerI)); + timerLabel.setWidth(timerLabel.getText().length()); + if (timerI < 100) { + timerI++; + } + progressBar.setValue(timerI); + DemoMainWindow.this.setRepaint(); } - bar.value = i; - parent.repaint = true; - }, true); - */ + } + ); } }