Fix inclusion of lanterna's resources + fix warning
[jvcard.git] / src / be / nikiroo / jvcard / tui / TuiLauncher.java
index 7bee3e7bc87eb89163de7aebd677990f2641e867..054fe4a88eb1436314e4f56d21bdb5a526ad09d3 100644 (file)
@@ -1,11 +1,12 @@
 package be.nikiroo.jvcard.tui;
 
 import java.io.IOException;
+import java.util.List;
+
+import be.nikiroo.jvcard.tui.panes.FileList;
 
 import com.googlecode.lanterna.TerminalSize;
 import com.googlecode.lanterna.TextColor;
-import com.googlecode.lanterna.gui2.DefaultWindowManager;
-import com.googlecode.lanterna.gui2.EmptySpace;
 import com.googlecode.lanterna.gui2.MultiWindowTextGUI;
 import com.googlecode.lanterna.gui2.Window;
 import com.googlecode.lanterna.screen.Screen;
@@ -14,19 +15,55 @@ import com.googlecode.lanterna.terminal.DefaultTerminalFactory;
 import com.googlecode.lanterna.terminal.ResizeListener;
 import com.googlecode.lanterna.terminal.Terminal;
 
-/*
- * 
- * Change in Lanterna 3.0.0-beta2 (issue and fix reported to GitHub):
- * 
- * java.lang.StringIndexOutOfBoundsException: String index out of range: 83
- * at java.lang.String.charAt(String.java:686)
- * at com.googlecode.lanterna.TerminalTextUtils.getWordWrappedText(TerminalTextUtils.java:237)
- * 
+/**
+ * Starting the TUI.
  * 
+ * @author niki
+ *
  */
-
 public class TuiLauncher {
-       public static void start(Boolean textMode, Window win) throws IOException {
+       static private Screen screen = null;
+
+       /**
+        * Start the TUI program.
+        * 
+        * @param textMode
+        *            TRUE to force text mode, FALSE to force the Swing terminal
+        *            emulator, null to automatically determine the best choice
+        * @param files
+        *            the files to show at startup
+        * 
+        * @throws IOException
+        *             in case of IO error
+        */
+       static public void start(Boolean textMode, List<String> files)
+                       throws IOException {
+               Window win = new MainWindow(new FileList(files));
+               TuiLauncher.start(textMode, win);
+       }
+
+       /**
+        * Return the used {@link Screen}.
+        * 
+        * @return the {@link Screen}
+        */
+       static public Screen getScreen() {
+               return screen;
+       }
+
+       /**
+        * Start the TUI program.
+        * 
+        * @param textMode
+        *            TRUE to force text mode, FALSE to force the Swing terminal
+        *            emulator, null to automatically determine the best choice
+        * @param win
+        *            the window to show at start
+        * 
+        * @throws IOException
+        *             in case of IO error
+        */
+       static public void start(Boolean textMode, Window win) throws IOException {
                Terminal terminal = null;
 
                DefaultTerminalFactory factory = new DefaultTerminalFactory();
@@ -40,7 +77,7 @@ public class TuiLauncher {
                }
 
                if (win instanceof MainWindow) {
-                       MainWindow mwin = (MainWindow) win;
+                       final MainWindow mwin = (MainWindow) win;
                        mwin.refresh(terminal.getTerminalSize());
                        terminal.addResizeListener(new ResizeListener() {
                                @Override
@@ -50,14 +87,16 @@ public class TuiLauncher {
                        });
                }
 
-               Screen screen = new TerminalScreen(terminal);
+               screen = new TerminalScreen(terminal);
                screen.startScreen();
 
                // Create gui and start gui
                MultiWindowTextGUI gui = new MultiWindowTextGUI(screen,
-                               new DefaultWindowManager(), new EmptySpace(TextColor.ANSI.BLUE));
-               gui.addWindowAndWait(win);
+                               TextColor.ANSI.BLUE);
+
+               gui.setTheme(UiColors.getCustomTheme());
 
+               gui.addWindowAndWait(win);
                screen.stopScreen();
        }
 }