Exemplo n.º 1
0
  Console(
      final InputStream cmdin,
      final PrintStream cmdout,
      final File historyFile,
      final NashornCompleter completer,
      final Function<String, String> docHelper)
      throws IOException {
    this.historyFile = historyFile;

    TerminalFactory.registerFlavor(
        Flavor.WINDOWS, isCygwin() ? JJSUnixTerminal::new : JJSWindowsTerminal::new);
    TerminalFactory.registerFlavor(Flavor.UNIX, JJSUnixTerminal::new);
    in = new ConsoleReader(cmdin, cmdout);
    in.setExpandEvents(false);
    in.setHandleUserInterrupt(true);
    in.setBellEnabled(true);
    in.setCopyPasteDetection(true);
    final Iterable<String> existingHistory =
        historyFile.exists() ? Files.readAllLines(historyFile.toPath()) : null;
    in.setHistory(
        new EditingHistory(in, existingHistory) {
          @Override
          protected boolean isComplete(CharSequence input) {
            return completer.isComplete(input.toString());
          }
        });
    in.addCompleter(completer);
    Runtime.getRuntime().addShutdownHook(new Thread((Runnable) this::saveHistory));
    bind(DOCUMENTATION_SHORTCUT, (ActionListener) evt -> showDocumentation(docHelper));
  }