Update support code for Jexer
[jvcard.git] / src / be / nikiroo / jvcard / tui / TuiLauncherJexer.java
index 445fc787895543a3ec9485436f35dc513181e847..3f54633122c445066192cc2c04b420a34e02faea 100644 (file)
@@ -1,11 +1,11 @@
 package be.nikiroo.jvcard.tui;
 
-import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.List;
 
+import jexer.TAction;
 import jexer.TApplication;
-import jexer.TWindow;
+import be.nikiroo.jvcard.tui.windows.TuiBrowserWindow;
 import be.nikiroo.jvcard.tui.windows.TuiFileListWindow;
 
 /**
@@ -14,6 +14,12 @@ import be.nikiroo.jvcard.tui.windows.TuiFileListWindow;
  * @author niki
  */
 public class TuiLauncherJexer extends TApplication {
+       /**
+        * Application is in fullscreen mode, no windows.
+        * 
+        * TODO: make it an option
+        */
+       static public final boolean FULLSCREEN = true;
 
        /**
         * @param textMode
@@ -21,7 +27,9 @@ public class TuiLauncherJexer extends TApplication {
         *            emulator, null to automatically determine the best choice
         * @param files
         *            the files to show at startup
+        * 
         * @throws UnsupportedEncodingException
+        *             if an exception is thrown when creating the InputStreamReader
         */
        public TuiLauncherJexer(final Boolean textMode, final List<String> files)
                        throws UnsupportedEncodingException {
@@ -30,17 +38,36 @@ public class TuiLauncherJexer extends TApplication {
                addFileMenu();
                addWindowMenu();
 
-               @SuppressWarnings("unused")
-               TWindow w = new TuiFileListWindow(this, files);
+               int width = getBackend().getScreen().getWidth();
+               int height = getBackend().getScreen().getHeight() - 2;
+
+               if (backend(textMode) == BackendType.SWING) {
+                       // TODO: why does the size change after the FIRST window has been
+                       // created (SWING mode only?) ?
+                       // A problem with the graphical size not an exact number of
+                       // cols/lines?
+                       width--;
+                       height--;
+               }
+
+               width = Math.max(1, width);
+               height = Math.max(1, height);
+
+               TuiBrowserWindow main = new TuiFileListWindow(TuiLauncherJexer.this,
+                               width, height, files);
+
+               main.addCloseListener(new TAction() {
+                       @Override
+                       public void DO() {
+                               TuiLauncherJexer.this.exit(false);
+                       }
+               });
        }
 
        /**
         * Start the TUI program.
-        * 
-        * @throws IOException
-        *             in case of IO error
         */
-       public void start() throws IOException {
+       public void start() {
                (new Thread(this)).start();
        }
 
@@ -48,7 +75,7 @@ public class TuiLauncherJexer extends TApplication {
         * Select the most appropriate backend.
         * 
         * @param textMode
-        *            NULL for auto-dection
+        *            NULL for auto-detection
         * @return the backend type to use
         */
        private static BackendType backend(Boolean textMode) {