Konsolenfenster von Eclipse auslesen?

MadMax2581

Mitglied
Hallo zusammen,

hab mal wieder ein Problem. Ich möchte mit meinem PlugIn das Konsolenfenster (Console --> Eclipse Mitte unten --> wo auch Problems, Tasks, Properties usw. sind) von Eclipse auslesen. Kann mir vielleicht jemand sagen wie ich das anstellen muss?

In diesem Console - Fenster können mehrere verschiedene Konsolen (die normale interne, externe, ...) ausgegeben werden. Mittels einer Auswahl kann zwischen verschieden gewechselt werden.

Wie kann ich das bei der Ausgabe berücksichtigen, wenn ich mir z. B. die externe und nicht die interne Konsole ausgeben lassen will?

Schon mal vielen Dank für eure Hilfe.

Gruss
Max
 
Hallo,

schau mal hier:
Java:
package de.tutorials.plugins.console.access.example.handlers;

import java.io.IOException;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.console.MessageConsoleStream;
import org.eclipse.ui.console.TextConsole;
import org.eclipse.ui.handlers.HandlerUtil;

/**
 * Our sample handler extends AbstractHandler, an IHandler base class.
 * 
 * @see org.eclipse.core.commands.IHandler
 * @see org.eclipse.core.commands.AbstractHandler
 */
public class SampleHandler extends AbstractHandler {
    /**
     * The constructor.
     */
    public SampleHandler() {
    }

    /**
     * the command has been executed, so extract extract the needed information
     * from the application context.
     */
    public Object execute(ExecutionEvent event) throws ExecutionException {

        IConsole console = findConsole("bubu");
        MessageConsoleStream messageConsoleStream = ((MessageConsole) console)
                .newMessageStream();
        messageConsoleStream.println("a b c");
        
        IDocument document = ((TextConsole) console).getDocument();
        int len = document.getLength();
        String consoleText = document.get();

        IWorkbenchWindow window = HandlerUtil
                .getActiveWorkbenchWindowChecked(event);
        MessageDialog.openInformation(window.getShell(), "Example Plug-in",
                consoleText);
        return null;
    }

    private IConsole findConsole(String name) {

        IConsoleManager consoleManager = ConsolePlugin.getDefault()
                .getConsoleManager();
        for (IConsole console : consoleManager.getConsoles()) {
            if (console.getName().equals(name)) {
                return console;
            }
        }

        MessageConsole messageConsole = new MessageConsole(name, null);
        consoleManager.addConsoles(new IConsole[] { messageConsole });

        return messageConsole;
    }
}

Gruß Tom
 
Hallo Thomas,

erstmal danke für dein Beispiel. Der Code ist ganz verständlich. Mein eigentliches Problem ist aber --> wie muss ich das umsetzen (als PlugIn-Projekt?) und wie biege ich es dann hin, dass er es aus meinem eigentlichen Eclipse auch automatisch aufruft, sobald was in die Konsole geschrieben wird?

Kannst du mir da auch einen Tip geben? --> Wie muss ich das Projekt anlegen, auf was muss ich achten und wie schaffe ich es, dass es nach dem Einfügen auch verwendet wird?

Viellen Dank schon mal im voraus.

Gruss
Max
 
Hallo,

ich möchte auf den Inhalt einer bestimmten Konsole zugreifen (SVN). Wenn ich mir die Konsolen wie hier schon beschrieben
Code:
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
geben lasse liefert die Abfrage
Code:
conMan.getConsoles().length
immer 0. Gibt es noch einen andere Technik um auf vorhanden Consolen zuzugreifen, oder ist es vielleicht gar nicht möglich?
 

Neue Beiträge

Zurück