X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=demos%2FDemo1.java;h=29d03455577fb7204ac20133d3e94cb92159a421;hb=a06459bd6b0e65c9b590dbdf6ed9349043119215;hp=62fce24c3022bb46560a067d4f56bba97319cd8d;hpb=48e27807150e00bc9a92844382ebc8cedf1d265f;p=fanfix.git diff --git a/demos/Demo1.java b/demos/Demo1.java index 62fce24..29d0345 100644 --- a/demos/Demo1.java +++ b/demos/Demo1.java @@ -31,9 +31,150 @@ * 02110-1301 USA */ -import jexer.bits.*; -import jexer.TApplication; -import jexer.session.TTYSessionInfo; +import jexer.*; + +class DemoMainWindow extends TWindow { + /* + // Timer that increments a number + private TTimer timer; + + // 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. + private TWindow modalWindow; + private void openModalWindow() { + modalWindow = application.addWindow("Demo Modal Window", 0, 0, + 58, 15, TWindow.Flag.MODAL); + modalWindow.addLabel("This is an example of a very braindead modal window.", 1, 1); + modalWindow.addLabel("Modal windows are centered by default.", 1, 2); + modalWindow.addButton("&Close", (modalWindow.width - 8)/2, + modalWindow.height - 4, &modalWindowClose); + } + 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); + } + */ + + /// Constructor + public DemoMainWindow(TApplication parent) { + this(parent, CENTERED | RESIZABLE); + } + + /// Constructor + public DemoMainWindow(TApplication parent, int flags) { + // Construct a demo window. X and Y don't matter because it will be + // centered on screen. + super(parent, "Demo Window", 0, 0, 60, 23, flags); + + int row = 1; + + /* + // Add some widgets + if (!isModal) { + addLabel("Message Boxes", 1, row); + addButton("&MessageBoxes", 35, row, + { + new DemoMsgBoxWindow(application); + } + ); + } + row += 2; + + addLabel("Open me as modal", 1, row); + addButton("W&indow", 35, row, + { + new DemoMainWindow(application, Flag.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) { + addLabel("Radio buttons and checkboxes", 1, row); + addButton("&Checkboxes", 35, row, &openCheckboxWindow); + } + row += 2; + + if (!isModal) { + addLabel("Editor window", 1, row); + addButton("Edito&r", 35, row, + { + new TEditor(application, 0, 0, 60, 15); + } + ); + } + row += 2; + + if (!isModal) { + addLabel("Text areas", 1, row); + addButton("&Text", 35, row, + { + new DemoTextWindow(application); + } + ); + } + row += 2; + + if (!isModal) { + addLabel("Tree views", 1, row); + addButton("Tree&View", 35, row, + { + new DemoTreeViewWindow(application); + } + ); + } + row += 2; + + version(Posix) { + if (!isModal) { + addLabel("Terminal", 1, row); + addButton("Termi&nal", 35, row, + { + application.openTerminal(0, 0); + } + ); + } + row += 2; + } + + TProgressBar bar = addProgressBar(1, row, 22); + 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++; + } + bar.value = i; + parent.repaint = true; + }, true); + */ + } +} /** * The demo application itself. @@ -44,16 +185,7 @@ class DemoApplication extends TApplication { */ public DemoApplication() throws Exception { super(null, null); - /* - try { - ColorTheme theme = new ColorTheme(); - TTYSessionInfo tty = new TTYSessionInfo(); - System.out.println("width: " + tty.getWindowWidth()); - System.out.println("height: " + tty.getWindowHeight()); - } catch (Exception e) { - e.printStackTrace(); - } - */ + new DemoMainWindow(this); } }