eclipse plugin: prevent opening multiple console for the same thing.

instead return the already created one
This commit is contained in:
Timotei Dolean 2010-07-22 17:34:50 +00:00
parent c2d7bfe22d
commit a40747f5e0
2 changed files with 33 additions and 4 deletions

View file

@ -8,9 +8,15 @@
*******************************************************************************/
package wesnoth_eclipse_plugin.handlers;
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.console.MessageConsole;
import wesnoth_eclipse_plugin.utils.GUIUtils;
/**
* Here it goes testing stuff in the plugin ( For DEBUG ONLY!)
@ -21,6 +27,16 @@ public class TestHandler extends AbstractHandler
@Override
public Object execute(ExecutionEvent event) throws ExecutionException
{
try
{
MessageConsole con = GUIUtils.createConsole("BB", null, true);
OutputStream s = con.newMessageStream();
s.write("AAAAAAAAAAAAAA".getBytes());
}
catch (IOException e)
{
e.printStackTrace();
}
// try
// {
// IProject proj = WorkspaceUtils.getSelectedProject();

View file

@ -14,6 +14,7 @@ import org.eclipse.swt.widgets.MessageBox;
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 wesnoth_eclipse_plugin.Logger;
@ -116,12 +117,24 @@ public class GUIUtils
public static MessageConsole createConsole(String consoleTitle,
ImageDescriptor imageDescriptor, boolean activate)
{
MessageConsole console = new MessageConsole(consoleTitle, imageDescriptor);
MessageConsole console = null;
IConsoleManager conMan = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = conMan.getConsoles();
for (int i = 0; i < existing.length; i++)
if (consoleTitle.equals(existing[i].getName()))
{
console = (MessageConsole) existing[i];
console.clearConsole();
break;
}
if (console == null) // console not found
{
console = new MessageConsole(consoleTitle, imageDescriptor);
conMan.addConsoles(new IConsole[] { console });
}
if (activate)
console.activate();
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { console });
//TODO: create a single console and add pages instead?
//MessageConsoleStream stream = console.newMessageStream();
return console;
}
}