Package

Source Code of ExampleExtension

/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/

import org.jboss.aesh.complete.CompleteOperation;
import org.jboss.aesh.complete.Completion;
import org.jboss.aesh.console.*;
import org.jboss.aesh.console.settings.SettingsBuilder;
import org.jboss.aesh.extensions.choice.aesh.MultipleChoice;
import org.jboss.aesh.extensions.harlem.console.Harlem;
import org.jboss.aesh.extensions.less.console.Less;
import org.jboss.aesh.extensions.manual.console.Man;
import org.jboss.aesh.extensions.more.console.More;
import org.jboss.aesh.parser.Parser;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
* @author <a href="mailto:stale.pedersen@jboss.org">Ståle W. Pedersen</a>
*/
public class ExampleExtension {

    public static void main(String[] args) throws IOException {

        //Settings.getInstance().setAnsiConsole(false);
        SettingsBuilder settingsBuilder = new SettingsBuilder();
        settingsBuilder.readInputrc(false);
        settingsBuilder.logging(true);
        final Console exampleConsole = new Console(settingsBuilder.create());

        PrintWriter out = new PrintWriter(System.out);

        final Man man = new Man(exampleConsole);
        //man.addPage(new File("/tmp/README.md"), "test");

        final Harlem harlem = new Harlem(exampleConsole);

        final Less less = new Less(exampleConsole);
        final More more = new More(exampleConsole);

        List<org.jboss.aesh.extensions.choice.console.MultipleChoice> choices = new ArrayList<org.jboss.aesh.extensions.choice.console.MultipleChoice>();
        choices.add(new org.jboss.aesh.extensions.choice.console.MultipleChoice(1,"Do you want foo?"));
        choices.add(new org.jboss.aesh.extensions.choice.console.MultipleChoice(2,"Do you want bar?"));

        final MultipleChoice choice =
                new MultipleChoice(exampleConsole, "choice", choices);

        Completion completer = new Completion() {
            @Override
            public void complete(CompleteOperation co) {
                // very simple completor
                List<String> commands = new ArrayList<String>();
                if(co.getBuffer().equals("fo") || co.getBuffer().equals("foo")) {
                    commands.add("foo");
                    commands.add("foobaa");
                    commands.add("foobar");
                    commands.add("foobaxxxxxx");
                    commands.add("foobbx");
                    commands.add("foobcx");
                    commands.add("foobdx");
                }
                else if(co.getBuffer().equals("fooba")) {
                    commands.add("foobaa");
                    commands.add("foobar");
                    commands.add("foobaxxxxxx");
                }
                else if(co.getBuffer().equals("foobar")) {
                    commands.add("foobar");
                }
                else if(co.getBuffer().equals("bar")) {
                    commands.add("bar/");
                }
                else if(co.getBuffer().equals("h")) {
                    commands.add("help.history");
                    commands.add("help");
                }
                else if(co.getBuffer().equals("help")) {
                    commands.add("help.history");
                    commands.add("help");
                }
                else if(co.getBuffer().equals("help.")) {
                    commands.add("help.history");
                }
                else if(co.getBuffer().equals("deploy")) {
                    commands.add("deploy /home/blabla/foo/bar/alkdfe/en/to/tre");
                }
                 co.setCompletionCandidates(commands);
            }
        };

        exampleConsole.addCompletion(completer);
        exampleConsole.addCompletion(man);
        exampleConsole.addCompletion(less);
        exampleConsole.addCompletion(more);
        exampleConsole.addCompletion(harlem);

        exampleConsole.setPrompt(new Prompt("[test@foo]~> "));
        //exampleConsole.pushToConsole(ANSI.greenText());
        //while ((consoleOutput = exampleConsole.read("[test@foo.bar]~> ")) != null) {
        exampleConsole.setConsoleCallback(new AeshConsoleCallback() {
            @Override
            public int execute(ConsoleOperation consoleOutput) {
                try {
                    String line = consoleOutput.getBuffer();
                    exampleConsole.getShell().out().print("======>\"" + line + "\"\n");

                    if (line.equalsIgnoreCase("quit") || line.equalsIgnoreCase("exit") ||
                            line.equalsIgnoreCase("reset")) {
                        exampleConsole.stop();
                    }
                    if(line.equals("clear"))
                        exampleConsole.clear();
                    if(line.startsWith("man")) {
                        //exampleConsole.attachProcess(test);
                        //man.setCurrentManPage("test");
                        try {
                            man.setFile("/tmp/test.txt.gz");
                            man.setConsole(exampleConsole);
                            man.setControlOperator(consoleOutput.getControlOperator());
                            //exampleConsole.attachProcess(man);
                        }
                        catch (IllegalArgumentException iae) {
                            exampleConsole.getShell().out().print(iae.getMessage());
                        }
                    }
                    if(line.startsWith("choice")) {

                        //exampleConsole.attachProcess(choice);
                    }
                    if(line.startsWith("harlem")) {
                        //exampleConsole.attachProcess(harlem);
                        harlem.afterAttach();
                    }
                    if(line.trim().startsWith("less")) {
                        //is it getting input from pipe
                        if(exampleConsole.getShell().in().getStdIn().available() > 0) {
                            java.util.Scanner s = new java.util.Scanner(exampleConsole.getShell().in().getStdIn()).useDelimiter("\\A");
                            String fileContent = s.hasNext() ? s.next() : "";
                            less.setInput(fileContent);
                            less.setControlOperator(consoleOutput.getControlOperator());
                            //exampleConsole.attachProcess(less);
                            less.afterAttach();

                        }
                        else if(line.length() > "less".length()) {
                            File f = new File(Parser.switchEscapedSpacesToSpacesInWord(line.substring("less ".length())).trim());
                            if(f.isFile()) {
                                //less.setPage(f);
                                less.setFile(f);
                                less.setControlOperator(consoleOutput.getControlOperator());
                                //exampleConsole.attachProcess(less);
                                less.afterAttach();
                            }
                            else if(f.isDirectory()) {
                                exampleConsole.getShell().out().print(f.getAbsolutePath()+": is a directory"+
                                        Config.getLineSeparator());
                            }
                            else {
                                exampleConsole.getShell().out().print(f.getAbsolutePath()+": No such file or directory"+
                                        Config.getLineSeparator());
                            }
                        }
                        else {
                            exampleConsole.getShell().out().print("Missing filename (\"less --help\" for help)\n");
                        }
                    }

                    if(line.startsWith("more")) {
                        if(exampleConsole.getShell().in().getStdIn().available() > 0) {
                            java.util.Scanner s = new java.util.Scanner(exampleConsole.getShell().in().getStdIn()).useDelimiter("\\A");
                            String fileContent = s.hasNext() ? s.next() : "";
                            more.setInput(fileContent);
                            more.setControlOperator(consoleOutput.getControlOperator());
                            //exampleConsole.attachProcess(more);
                            more.afterAttach();

                        }
                        else {
                            File f = new File(Parser.switchEscapedSpacesToSpacesInWord(line.substring("more ".length())).trim());
                            if(f.isFile()) {
                                more.setFile(f);
                                more.setControlOperator(consoleOutput.getControlOperator());
                                //exampleConsole.attachProcess(more);
                                more.afterAttach();

                            }
                            else if(f.isDirectory()) {
                                exampleConsole.getShell().out().print(f.getAbsolutePath()+": is a directory"+
                                        Config.getLineSeparator());
                            }
                            else {
                                exampleConsole.getShell().out().print(f.getAbsolutePath()+": No such file or directory"+
                                        Config.getLineSeparator());
                            }
                        }
                    }
                    return 0;
                }
                catch(IOException ioe) {
                    return -1;
                }
            }
        });

        exampleConsole.start();
    }
}
TOP

Related Classes of ExampleExtension

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.