package com.github.jknack.antlr4ide.ui.console; import java.util.Arrays; import com.google.inject.Inject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleFactory; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.IOConsole; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.xtext.ui.IImageHelper; public class AntlrConsoleFactory implements IConsoleFactory { public static final String ANTLR_CONSOLE = "ANTLR Console"; @Inject private static IImageHelper.IImageDescriptorHelper imageHelper; @Override public void openConsole() { IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); final IOConsole console = getConsole(); manager.showConsoleView(console); } protected static IOConsole getConsole() { final IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); final IConsole[] existing = manager.getConsoles(); final int size = existing.length; for (int i = 0; i < size; i++) { final IConsole console = existing[i]; if (ANTLR_CONSOLE == console.getName()) { return (IOConsole)console; } } ImageDescriptor imageDescriptor = imageHelper.getImageDescriptor("console.png"); final IOConsole console = new IOConsole(ANTLR_CONSOLE, imageDescriptor); final IConsole[] consoles = Arrays.copyOf(existing, size + 1); consoles[size] = console; manager.addConsoles(consoles); return console; } }