You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2010/09/23 11:14:59 UTC

svn commit: r1000369 - in /karaf/trunk/shell: console/src/main/java/org/apache/karaf/shell/console/Main.java console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java

Author: gnodet
Date: Thu Sep 23 09:14:59 2010
New Revision: 1000369

URL: http://svn.apache.org/viewvc?rev=1000369&view=rev
Log:
[KARAF-58] Improve terminal height / width support

Modified:
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
    karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java
    karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java?rev=1000369&r1=1000368&r2=1000369&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/Main.java Thu Sep 23 09:14:59 2010
@@ -128,14 +128,22 @@ public class Main {
     }
 
     private void run(final CommandProcessorImpl commandProcessor, String[] args, final InputStream in, final PrintStream out, final PrintStream err) throws Exception {
-        TerminalFactory terminalFactory = new TerminalFactory();
-        Terminal terminal = terminalFactory.getTerminal();
+        final TerminalFactory terminalFactory = new TerminalFactory();
+        final Terminal terminal = terminalFactory.getTerminal();
         Console console = createConsole(commandProcessor, in, out, err, terminal);
         CommandSession session = console.getSession();
         session.put("USER", user);
         session.put("APPLICATION", application);
-        session.put("LINES", Integer.toString(terminal.getHeight()));
-        session.put("COLUMNS", Integer.toString(terminal.getWidth()));
+        session.put("#LINES", new Function() {
+            public Object execute(CommandSession session, List<Object> arguments) throws Exception {
+                return Integer.toString(terminal.getHeight());
+            }
+        });
+        session.put("#COLUMNS", new Function() {
+            public Object execute(CommandSession session, List<Object> arguments) throws Exception {
+                return Integer.toString(terminal.getWidth());
+            }
+        });
         session.put(".jline.terminal", terminal);
         session.put(NameScoping.MULTI_SCOPE_MODE_KEY, Boolean.toString(isMultiScopeMode()));
 

Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java?rev=1000369&r1=1000368&r2=1000369&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/jline/ConsoleFactory.java Thu Sep 23 09:14:59 2010
@@ -22,10 +22,12 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.lang.reflect.Method;
+import java.util.List;
 
 import jline.Terminal;
 import org.apache.felix.service.command.CommandProcessor;
 import org.apache.felix.service.command.CommandSession;
+import org.apache.felix.service.command.Function;
 import org.fusesource.jansi.AnsiConsole;
 import org.osgi.framework.BundleContext;
 
@@ -73,7 +75,7 @@ public class ConsoleFactory {
                     }
                 }
             };
-            Terminal terminal = terminalFactory.getTerminal();
+            final Terminal terminal = terminalFactory.getTerminal();
             this.console = new Console(commandProcessor,
                                        in,
                                        wrap(out),
@@ -83,8 +85,16 @@ public class ConsoleFactory {
             CommandSession session = console.getSession();
             session.put("USER", "karaf");
             session.put("APPLICATION", System.getProperty("karaf.name", "root"));
-            session.put("LINES", Integer.toString(terminal.getHeight()));
-            session.put("COLUMNS", Integer.toString(terminal.getWidth()));
+            session.put("#LINES", new Function() {
+                public Object execute(CommandSession session, List<Object> arguments) throws Exception {
+                    return Integer.toString(terminal.getHeight());
+                }
+            });
+            session.put("#COLUMNS", new Function() {
+                public Object execute(CommandSession session, List<Object> arguments) throws Exception {
+                    return Integer.toString(terminal.getWidth());
+                }
+            });
             session.put(".jline.terminal", terminal);
             new Thread(console, "Karaf Shell Console Thread").start();
         }

Modified: karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java?rev=1000369&r1=1000368&r2=1000369&view=diff
==============================================================================
--- karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java (original)
+++ karaf/trunk/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java Thu Sep 23 09:14:59 2010
@@ -33,6 +33,7 @@ import java.util.concurrent.Callable;
 import jline.Terminal;
 import org.apache.felix.service.command.CommandProcessor;
 import org.apache.felix.service.command.CommandSession;
+import org.apache.felix.service.command.Function;
 import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.console.completer.AggregateCompleter;
 import org.apache.karaf.shell.console.jline.Console;
@@ -107,14 +108,16 @@ public class ShellFactoryImpl implements
                 for (Map.Entry<String,String> e : env.getEnv().entrySet()) {
                     session.put(e.getKey(), e.getValue());
                 }
-                session.put("LINES", Integer.toString(terminal.getHeight()));
-                session.put("COLUMNS", Integer.toString(terminal.getWidth()));
-                env.addSignalListener(new SignalListener() {
-                    public void signal(Signal signal) {
-                        session.put("LINES", Integer.toString(terminal.getHeight()));
-                        session.put("COLUMNS", Integer.toString(terminal.getWidth()));
+                session.put("#LINES", new Function() {
+                    public Object execute(CommandSession session, List<Object> arguments) throws Exception {
+                        return Integer.toString(terminal.getHeight());
                     }
-                }, Signal.WINCH);
+                });
+                session.put("#COLUMNS", new Function() {
+                    public Object execute(CommandSession session, List<Object> arguments) throws Exception {
+                        return Integer.toString(terminal.getWidth());
+                    }
+                });
                 session.put(".jline.terminal", terminal);
                 new Thread(console).start();
             } catch (Exception e) {