2 * Jexer - Java Text User Interface
4 * The MIT License (MIT)
6 * Copyright (C) 2017 Kevin Lamonte
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:
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
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.
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
31 import java
.awt
.event
.WindowEvent
;
32 import java
.awt
.event
.WindowListener
;
33 import javax
.swing
.JFrame
;
34 import javax
.swing
.JPanel
;
35 import javax
.swing
.JSplitPane
;
37 import jexer
.backend
.SwingBackend
;
40 * This class is the main driver for a simple demonstration of Jexer's
41 * capabilities. It shows two Swing demo applications running in the same
44 public class Demo5
implements WindowListener
{
47 * The first demo application instance.
49 DemoApplication app1
= null;
52 * The second demo application instance.
54 DemoApplication app2
= null;
57 * Pass window events into the event queue.
59 * @param event window event received
61 public void windowActivated(final WindowEvent event
) {
66 * Pass window events into the event queue.
68 * @param event window event received
70 public void windowClosed(final WindowEvent event
) {
75 * Pass window events into the event queue.
77 * @param event window event received
79 public void windowClosing(final WindowEvent event
) {
89 * Pass window events into the event queue.
91 * @param event window event received
93 public void windowDeactivated(final WindowEvent event
) {
98 * Pass window events into the event queue.
100 * @param event window event received
102 public void windowDeiconified(final WindowEvent event
) {
107 * Pass window events into the event queue.
109 * @param event window event received
111 public void windowIconified(final WindowEvent event
) {
116 * Pass window events into the event queue.
118 * @param event window event received
120 public void windowOpened(final WindowEvent event
) {
125 * Run two demo applications in separate panes.
127 private void addApplications() {
130 JFrame frame
= new JFrame();
131 frame
.setDefaultCloseOperation(JFrame
.DISPOSE_ON_CLOSE
);
132 frame
.addWindowListener(this);
134 // Create two panels with two applications, each with a different
136 JPanel app1Panel
= new JPanel();
137 SwingBackend app1Backend
= new SwingBackend(app1Panel
, new Object(),
139 app1
= new DemoApplication(app1Backend
);
140 app1Backend
.setListener(app1
);
142 JPanel app2Panel
= new JPanel();
143 SwingBackend app2Backend
= new SwingBackend(app2Panel
, new Object(),
145 app2
= new DemoApplication(app2Backend
);
146 app1Backend
.setListener(app2
);
147 (new Thread(app1
)).start();
148 (new Thread(app2
)).start();
150 JSplitPane mainPane
= new JSplitPane(JSplitPane
.HORIZONTAL_SPLIT
,
151 app1Panel
, app2Panel
);
152 mainPane
.setOneTouchExpandable(true);
153 mainPane
.setDividerLocation(500);
154 mainPane
.setDividerSize(6);
155 mainPane
.setBorder(null);
156 frame
.setContentPane(mainPane
);
158 frame
.setTitle("Two Jexer Apps In One Swing UI");
159 frame
.setSize(1000, 640);
160 frame
.setVisible(true);
166 * @param args Command line arguments
168 public static void main(final String
[] args
) {
170 Demo5 demo
= new Demo5();
171 demo
.addApplications();
172 } catch (Exception e
) {