From 766e7308328d2d5aa1abfe6ba61b8cc05cc05ea9 Mon Sep 17 00:00:00 2001 From: Kevin Lamonte Date: Sun, 28 Jul 2019 17:30:53 -0500 Subject: [PATCH] demo ttablewidget window --- src/jexer/demos/DemoMainWindow.java | 3 +- src/jexer/demos/DemoMainWindow.properties | 1 + src/jexer/demos/DemoTableWindow.java | 119 +++++++++++++++++++++ src/jexer/demos/DemoTableWindow.properties | 6 ++ 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 src/jexer/demos/DemoTableWindow.java create mode 100644 src/jexer/demos/DemoTableWindow.properties diff --git a/src/jexer/demos/DemoMainWindow.java b/src/jexer/demos/DemoMainWindow.java index c5e599c..7ad14fe 100644 --- a/src/jexer/demos/DemoMainWindow.java +++ b/src/jexer/demos/DemoMainWindow.java @@ -182,7 +182,8 @@ public class DemoMainWindow extends TWindow { addButton(i18n.getString("ttableButton1"), 35, row, new TAction() { public void DO() { - // TODO + new DemoTableWindow(getApplication(), + i18n.getString("tableWidgetDemo")); } } ); diff --git a/src/jexer/demos/DemoMainWindow.properties b/src/jexer/demos/DemoMainWindow.properties index 25e7333..cdaf79f 100644 --- a/src/jexer/demos/DemoMainWindow.properties +++ b/src/jexer/demos/DemoMainWindow.properties @@ -35,4 +35,5 @@ errorTitle=Error errorReadingFile=Error reading file: {0} errorOpeningFile=Error opening file dialog: {0} +tableWidgetDemo=TTableWidget Demo tableDemo=TTableWindow Demo diff --git a/src/jexer/demos/DemoTableWindow.java b/src/jexer/demos/DemoTableWindow.java new file mode 100644 index 0000000..d425c66 --- /dev/null +++ b/src/jexer/demos/DemoTableWindow.java @@ -0,0 +1,119 @@ +/* + * Jexer - Java Text User Interface + * + * The MIT License (MIT) + * + * Copyright (C) 2019 Kevin Lamonte + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * @author Kevin Lamonte [kevin.lamonte@gmail.com] + * @version 1 + */ +package jexer.demos; + +import java.util.ResourceBundle; + +import jexer.TApplication; +import jexer.TTableWidget; +import jexer.TWidget; +import jexer.TWindow; +import jexer.event.TResizeEvent; +import static jexer.TCommand.*; +import static jexer.TKeypress.*; + +/** + * This window demonstates the TTable widget. + */ +public class DemoTableWindow extends TWindow { + + /** + * Translated strings. + */ + private static final ResourceBundle i18n = ResourceBundle.getBundle(DemoTableWindow.class.getName()); + + // ------------------------------------------------------------------------ + // Variables -------------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * Hang onto my TTable so I can resize it with the window. + */ + private TTableWidget tableField; + + // ------------------------------------------------------------------------ + // Constructors ----------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * Public constructor makes a text window out of any string. + * + * @param parent the main application + * @param title the text string + * @param text the text string + */ + public DemoTableWindow(final TApplication parent, final String title) { + + super(parent, title, 0, 0, 44, 22, RESIZABLE); + tableField = new TTableWidget(this, 0, 0, 42, 20); + + statusBar = newStatusBar(i18n.getString("statusBar")); + statusBar.addShortcutKeypress(kbF1, cmHelp, + i18n.getString("statusBarHelp")); + statusBar.addShortcutKeypress(kbF2, cmShell, + i18n.getString("statusBarShell")); + statusBar.addShortcutKeypress(kbF10, cmExit, + i18n.getString("statusBarExit")); + } + + /** + * Public constructor. + * + * @param parent the main application + */ + public DemoTableWindow(final TApplication parent) { + this(parent, i18n.getString("windowTitle")); + } + + // ------------------------------------------------------------------------ + // TWindow ---------------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * Handle window/screen resize events. + * + * @param event resize event + */ + @Override + public void onResize(final TResizeEvent event) { + if (event.getType() == TResizeEvent.Type.WIDGET) { + // Resize the text field + TResizeEvent tableSize = new TResizeEvent(TResizeEvent.Type.WIDGET, + event.getWidth() - 2, event.getHeight() - 2); + tableField.onResize(tableSize); + return; + } + + // Pass to children instead + for (TWidget widget: getChildren()) { + widget.onResize(event); + } + } + +} diff --git a/src/jexer/demos/DemoTableWindow.properties b/src/jexer/demos/DemoTableWindow.properties new file mode 100644 index 0000000..ecc9ec5 --- /dev/null +++ b/src/jexer/demos/DemoTableWindow.properties @@ -0,0 +1,6 @@ +windowTitle=Table + +statusBar=Table datagrid demo window +statusBarHelp=Help +statusBarShell=Shell +statusBarExit=Exit -- 2.27.0