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) {