Add 'src/jexer/' from commit 'cf01c92f5809a0732409e280fb0f32f27393618d'
[fanfix.git] / src / jexer / demos / Demo2.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.net.ServerSocket;
32 import java.net.Socket;
33 import java.text.MessageFormat;
34 import java.util.ResourceBundle;
35
36 import jexer.net.TelnetServerSocket;
37
38 /**
39 * This class is the main driver for a simple demonstration of Jexer's
40 * capabilities. Rather than run locally, it serves a Jexer UI over a TCP
41 * port.
42 */
43 public class Demo2 {
44
45 /**
46 * Translated strings.
47 */
48 private static final ResourceBundle i18n = ResourceBundle.getBundle(Demo2.class.getName());
49
50 /**
51 * Main entry point.
52 *
53 * @param args Command line arguments
54 */
55 public static void main(final String [] args) {
56 ServerSocket server = null;
57 try {
58 if (args.length == 0) {
59 System.err.println(i18n.getString("usageString"));
60 return;
61 }
62
63 int port = Integer.parseInt(args[0]);
64 server = new TelnetServerSocket(port);
65 while (true) {
66 Socket socket = server.accept();
67 System.out.println(MessageFormat.
68 format(i18n.getString("newConnection"), socket));
69 DemoApplication app = new DemoApplication(socket.getInputStream(),
70 socket.getOutputStream());
71 (new Thread(app)).start();
72 Thread.sleep(500);
73 System.out.println(MessageFormat.
74 format(i18n.getString("terminal"),
75 ((jexer.net.TelnetInputStream) socket.getInputStream()).
76 getTerminalType()));
77 System.out.println(MessageFormat.
78 format(i18n.getString("username"),
79 ((jexer.net.TelnetInputStream) socket.getInputStream()).
80 getUsername()));
81 System.out.println(MessageFormat.
82 format(i18n.getString("language"),
83 ((jexer.net.TelnetInputStream) socket.getInputStream()).
84 getLanguage()));
85 }
86 } catch (Exception e) {
87 e.printStackTrace();
88 } finally {
89 if (server != null) {
90 try {
91 server.close();
92 } catch (Exception e) {
93 // SQUASH
94 }
95 }
96 }
97 }
98
99 }