Prep for 2019 release
[fanfix.git] / src / jexer / demos / DemoCheckBoxWindow.java
1 /*
2 * Jexer - Java Text User Interface
3 *
4 * The MIT License (MIT)
5 *
6 * Copyright (C) 2019 Kevin Lamonte
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
25 *
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
27 * @version 1
28 */
29 package jexer.demos;
30
31 import java.text.MessageFormat;
32 import java.util.ArrayList;
33 import java.util.List;
34 import java.util.ResourceBundle;
35
36 import jexer.TAction;
37 import jexer.TApplication;
38 import jexer.TComboBox;
39 import jexer.TMessageBox;
40 import jexer.TRadioGroup;
41 import jexer.TWindow;
42 import static jexer.TCommand.*;
43 import static jexer.TKeypress.*;
44
45 /**
46 * This window demonstates the TRadioGroup, TRadioButton, and TCheckBox
47 * widgets.
48 */
49 public class DemoCheckBoxWindow extends TWindow {
50
51 /**
52 * Translated strings.
53 */
54 private static final ResourceBundle i18n = ResourceBundle.getBundle(DemoCheckBoxWindow.class.getName());
55
56 // ------------------------------------------------------------------------
57 // Variables --------------------------------------------------------------
58 // ------------------------------------------------------------------------
59
60 /**
61 * Combo box. Has to be at class scope so that it can be accessed by the
62 * anonymous TAction class.
63 */
64 TComboBox comboBox = null;
65
66 // ------------------------------------------------------------------------
67 // Constructors -----------------------------------------------------------
68 // ------------------------------------------------------------------------
69
70 /**
71 * Constructor.
72 *
73 * @param parent the main application
74 */
75 DemoCheckBoxWindow(final TApplication parent) {
76 this(parent, CENTERED | RESIZABLE);
77 }
78
79 /**
80 * Constructor.
81 *
82 * @param parent the main application
83 * @param flags bitmask of MODAL, CENTERED, or RESIZABLE
84 */
85 DemoCheckBoxWindow(final TApplication parent, final int flags) {
86 // Construct a demo window. X and Y don't matter because it will be
87 // centered on screen.
88 super(parent, i18n.getString("windowTitle"), 0, 0, 60, 17, flags);
89
90 int row = 1;
91
92 // Add some widgets
93 addLabel(i18n.getString("checkBoxLabel1"), 1, row);
94 addCheckBox(35, row++, i18n.getString("checkBoxText1"), false);
95 addLabel(i18n.getString("checkBoxLabel2"), 1, row);
96 addCheckBox(35, row++, i18n.getString("checkBoxText2"), true);
97 row += 2;
98
99 TRadioGroup group = addRadioGroup(1, row,
100 i18n.getString("radioGroupTitle"));
101 group.addRadioButton(i18n.getString("radioOption1"));
102 group.addRadioButton(i18n.getString("radioOption2"));
103 group.addRadioButton(i18n.getString("radioOption3"));
104
105 List<String> comboValues = new ArrayList<String>();
106 comboValues.add(i18n.getString("comboBoxString0"));
107 comboValues.add(i18n.getString("comboBoxString1"));
108 comboValues.add(i18n.getString("comboBoxString2"));
109 comboValues.add(i18n.getString("comboBoxString3"));
110 comboValues.add(i18n.getString("comboBoxString4"));
111 comboValues.add(i18n.getString("comboBoxString5"));
112 comboValues.add(i18n.getString("comboBoxString6"));
113 comboValues.add(i18n.getString("comboBoxString7"));
114 comboValues.add(i18n.getString("comboBoxString8"));
115 comboValues.add(i18n.getString("comboBoxString9"));
116 comboValues.add(i18n.getString("comboBoxString10"));
117
118 comboBox = addComboBox(35, row, 12, comboValues, 2, 6,
119 new TAction() {
120 public void DO() {
121 getApplication().messageBox(i18n.getString("messageBoxTitle"),
122 MessageFormat.format(i18n.getString("messageBoxPrompt"),
123 comboBox.getText()),
124 TMessageBox.Type.OK);
125 }
126 }
127 );
128
129 addButton(i18n.getString("closeWindow"),
130 (getWidth() - 14) / 2, getHeight() - 4,
131 new TAction() {
132 public void DO() {
133 DemoCheckBoxWindow.this.getApplication()
134 .closeWindow(DemoCheckBoxWindow.this);
135 }
136 }
137 );
138
139 statusBar = newStatusBar(i18n.getString("statusBar"));
140 statusBar.addShortcutKeypress(kbF1, cmHelp,
141 i18n.getString("statusBarHelp"));
142 statusBar.addShortcutKeypress(kbF2, cmShell,
143 i18n.getString("statusBarShell"));
144 statusBar.addShortcutKeypress(kbF3, cmOpen,
145 i18n.getString("statusBarOpen"));
146 statusBar.addShortcutKeypress(kbF10, cmExit,
147 i18n.getString("statusBarExit"));
148 }
149
150 }