2017-04-07 3 views
1

Ich schreibe ein Plugin, das die ILaunchConfigurationDelegate implementiert.Konsole an LaunchConfiguration anhängen

Ich habe diese Methode außer Kraft zu setzen: launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor);

Kann ich eine TextConsole, um es wie für die, die in der JavaApplication Starttyp an, wenn mit System.out.println() zu schreiben?

Ich möchte das haben, damit meine Einführung das gleiche Lebenszyklus-Management für seine Konsole hat.

Im Wesentlichen ist mein ILaunchConfiguration Typ ein Container, der alle möglichen anderen ILaunchConfiguration Typen enthält. Wenn ich meinen Launch-Container starte, möchte ich das Verhalten der anderen, die in einer Sequenz beginnen, protokollieren. Diese Protokollierung wäre ideal in einer TextConsole. Beispiel: 'Hallo Welt hat begonnen.' "Hello World terminiert", "Pi Approximator gestartet" ... usw.

+0

Ist Ihnen bekannt, dass Eclipse _Launch Groups_ (https://www.eclipse.org/eclipse/news/4.7/M4/) seit Oxygen M4? –

+0

Nur zur Klarstellung: Jeder enthaltene Start hätte eine eigene Konsole, und der Start-Container hätte eine eigene Konsole. Richtig? –

+0

Ja bin ich, aber meine Implementierung bietet ein paar Ergänzungen dazu. – PrestigeDev

Antwort

1

AFAIK, es sind keine zusätzlichen Schritte erforderlich, um std in/out an die Eclipse-Konsole umzuleiten. Die Gemeinsame Registerkarte jedes Startkonfigurationstyps hat eine Konsole zuweisen Option, die diese Funktion bietet, wenn aktiviert.

enter image description here

Wenn Ihre Startkonfiguration Art der CommonTab nicht bietet, können Sie das Attribut IDebugUIConstants.ATTR_CAPTURE_IN_CONSOLE Ihrer ILaunchConfiguration auf true gesetzt.

Für den Container-Start können Sie einfach eine TextConsole zuweisen, um die Protokollmeldungen zu schreiben. Das Debug/Start-Framework fügt Konsolen an IProcess Instanzen an und das wird hier nicht helfen, aber Sie können unter ProcessConsole und ProcessConsoleManager nachschauen, um den relevanten Teil zum Öffnen und Verwerfen der Konsole zu übernehmen.

Alternativ können Sie untersuchen, ob die ATTR_CAPTURE_IN_CONSOLE der Behälter Einführung auf true setzen und ein Dummy-IProcess zu schaffen, die die Anforderungen der ProcessConsoleManager WRT Konsolen erfüllt.

+0

Danke für die Antwort. Ich war ein wenig oberflächlich mit der Frage, die ich gestellt habe. Ich habe es gerade aktualisiert. – PrestigeDev

+0

Siehe meine bearbeitete Antwort. –