下面列出了怎么用org.eclipse.ui.console.ConsolePlugin的API类实例代码及写法,或者点击链接到github查看源代码。
public static <T extends IConsole> T getOrCreateToolsConsole(String name, boolean clearConsole,
Class<T> klass, SimpleGetter<T> consoleCreator) {
T console = findConsole(name, klass);
if(console != null) {
if(clearConsole) {
// In order to clear a console, we recreate it.
// This is to avoid using console.clearConsole() , because of poor concurrency behavior:
// if more than one cleanConsole is requested per a console lifetime,
// these aditional clears may appear out of order with regards
// to input written to the console output streams.
// since org.eclipse.ui.console_3.5.200.v20130514-0954
ConsolePlugin.getDefault().getConsoleManager().removeConsoles(array(console));
console = null;
} else {
return console;
}
}
// create a new one
console = consoleCreator.get();
ConsolePlugin.getDefault().getConsoleManager().addConsoles(array(console));
return console;
}
@Override
public OutputStream getOutputStream(final OutputStreamType type, OutputRedirection redirect) {
if (!PlatformUI.isWorkbenchRunning()) {
return DEFAULT.getOutputStream(type, redirect);
}
final MessageConsole console = consoleSupplier.get();
boolean silent = redirect == OutputRedirection.SUPPRESS;
if (!silent) {
console.activate();
}
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { console });
final MessageConsoleStream stream = console.newMessageStream();
getDisplay().asyncExec(() -> {
stream.setColor(toColor(type));
showConsoleView(silent);
});
return stream;
}
@Override
public void log(final Object o) {
final IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
final BuilderStateConsole console = from(asList(manager.getConsoles())).filter(BuilderStateConsole.class)
.first()
.orNull();
if (console != null) {
if (o instanceof Throwable) {
console.println(getStackTraceAsString((Throwable) o));
} else {
console.println(String.valueOf(o));
}
manager.showConsoleView(console);
}
}
@Override
public Object execute ( final ExecutionEvent event ) throws ExecutionException
{
final List<IConsole> consoles = new ArrayList<IConsole> ();
for ( final Item item : SelectionHelper.iterable ( getSelection (), Item.class ) )
{
final IConsole console = createConsole ( item ).getConsole ();
if ( console != null )
{
consoles.add ( console );
}
}
final IConsoleManager cm = ConsolePlugin.getDefault ().getConsoleManager ();
if ( !consoles.isEmpty () )
{
cm.addConsoles ( consoles.toArray ( new IConsole[consoles.size ()] ) );
cm.showConsoleView ( consoles.get ( 0 ) );
}
return null;
}
@Override
public void log(Object obj) {
if (delegate != null) {
delegate.log(obj);
}
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
XtextBuildConsole console = null;
for (IConsole c : consoleManager.getConsoles()) {
if (c instanceof XtextBuildConsole) {
console = (XtextBuildConsole) c;
break;
}
}
if (console != null) {
String str = null;
if (obj instanceof Throwable) {
str = Throwables.getStackTraceAsString((Throwable) obj);
} else {
str = obj.toString();
}
console.println("[" + Thread.currentThread().getName() + "] " + str);
consoleManager.showConsoleView(console);
}
}
public IXdsConsole getAndConfigureConsole(String id) {
final IXdsConsole console = consoleFactory.getXdsConsole(id);
// default encoding required to print text with println(String) to ConsoleProxy.getInstance()
console.setEncoding(null);
if (XdsConsoleSettings.getShowOnBuild()) {
ConsolePlugin.getDefault().getConsoleManager().showConsoleView((IConsole)console);
}
if (XdsConsoleSettings.getClearBeforeBuild()) {
console.clearConsole();
}
// Console.setBackground is ignored in console constructor (console has no view at that time) so set it here:
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
console.setBackground(ColorStreamType.BACKGROUND.getRgb());
}
});
return console;
}
private void doApply() {
// TODO : these settings should be stored under com.excelsior.xds.ui preference store.
XdsConsoleSettings.setShowOnBuild(cbShowWhenBuild.getSelection());
XdsConsoleSettings.setClearBeforeBuild(cbClearBeforeBuild.getSelection());
ColorStreamType.NORMAL.setRgb(csText.getColorValue());
ColorStreamType.SYSTEM.setRgb(csInfo.getColorValue());
ColorStreamType.ERROR.setRgb(csError.getColorValue());
ColorStreamType.XDS_LOG_ERROR.setRgb(csCompError.getColorValue());
ColorStreamType.XDS_LOG_WARNING.setRgb(csCompWarning.getColorValue());
ColorStreamType.USER_INPUT.setRgb(csUserInput.getColorValue());
ColorStreamType.BACKGROUND.setRgb(csBackground.getColorValue());
// Force background change:
for (IConsole con : ConsolePlugin.getDefault().getConsoleManager().getConsoles()) {
if (con instanceof TextConsole) {
((TextConsole) con).setBackground(new Color(Display.getDefault(), csBackground.getColorValue()));
}
}
WorkspacePreferencesManager.getInstance().flush();
}
public static FindBugsConsole showConsole() {
IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
boolean exists = false;
if (console != null) {
IConsole[] existing = manager.getConsoles();
for (int i = 0; i < existing.length; i++) {
if (console == existing[i]) {
exists = true;
}
}
} else {
console = new FindBugsConsole("SpotBugs",
FindbugsPlugin.getDefault().getImageDescriptor(AbstractFindbugsView.PERSPECTIVE_IMG), true);
}
if (!exists) {
manager.addConsoles(new IConsole[] { console });
}
ITheme theme = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme();
theme.addPropertyChangeListener(console);
console.setConsoleFont();
manager.showConsoleView(console);
return console;
}
@Override
public void openConsole() {
console = getConsole();
if (console != null) {
IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = manager.getConsoles();
boolean exists = false;
for (int i = 0; i < existing.length; i++) {
if(console == existing[i])
exists = true;
}
if(!exists)
manager.addConsoles(new IConsole[] {console});
manager.showConsoleView(console);
}
}
/**
* Fins the console with a given name
* @param name, name of the console
* @return
*/
private static IOConsole findConsole(String name)
{
if (name == null)
{
throw new IllegalArgumentException("Console name must be not null");
}
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = consoleManager.getConsoles();
// try to find existing
for (int i = 0; i < existing.length; i++)
{
if (name.equals(existing[i].getName()))
{
return (IOConsole) existing[i];
}
}
// no console found, create a new one
IOConsole myConsole = new IOConsole(name, null);
consoleManager.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
/**
* Finds the console with a given name.
*
* @param name, name of the console
* @return
*/
private static MessageConsole findConsole(String name)
{
if (name == null)
{
throw new IllegalArgumentException("Console name must be not null");
}
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = consoleManager.getConsoles();
// try to find existing
for (int i = 0; i < existing.length; i++)
{
if (name.equals(existing[i].getName()))
{
return (MessageConsole) existing[i];
}
}
// no console found, create a new one
MessageConsole myConsole = new MessageConsole(name, null);
consoleManager.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
protected Control createDialogArea(Composite parent) {
String fileTypeName = "File";
// create composite
Composite composite = (Composite) super.createDialogArea(parent);
// create combo
typeCombo = new Combo(composite,SWT.LEFT);
GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
typeCombo.setLayoutData(data);
// fill
IConsole[] consoles = ConsolePlugin.getDefault().getConsoleManager().getConsoles();
typeCombo.add(fileTypeName);
value = fileTypeName;
for (int i=0;i<consoles.length;i++) {
typeCombo.add("Console: " + consoles[i].getName());
}
applyDialogFont(composite);
return composite;
}
private IConsole findConsole() throws FileNotFoundException {
ConsolePlugin conPlugin = ConsolePlugin.getDefault();
IConsoleManager conMan = conPlugin.getConsoleManager();
IConsole[] existing = conMan.getConsoles();
int nameFoundIndex = -1;
for (int i = 0; i < existing.length; i++) {
// check full name first
if (getConsolePath(existing[i]).equals(getPath())) {
return existing[i];
}
// check short name if not already found
int flags = 0;
flags = java.util.regex.Pattern.CASE_INSENSITIVE | java.util.regex.Pattern.UNICODE_CASE;
regexp = Pattern.compile(getNamePattern(), flags);
if ((nameFoundIndex == -1) && regexp.matcher(existing[i].getName()).matches()) {
nameFoundIndex = i;
}
}
if (nameFoundIndex != -1) {
return existing[nameFoundIndex];
}
throw new FileNotFoundException("no console found");
}
/**
* Returns a {@link CustomMessageConsole} with the given
* <code>consoleName</code>. If no console by that name exists then one is
* created. The returned console is cleared; callers of this method can decide
* when to activate it.
*
* @param consoleName name of the console
* @param imageDescriptor image descriptor to use
* @return {@link CustomMessageConsole} with the given
* <code>consoleName</code>
*/
public static CustomMessageConsole getMessageConsole(String consoleName,
ImageDescriptor imageDescriptor) {
CustomMessageConsole messageConsole = null;
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
for (IConsole console : consoleManager.getConsoles()) {
if (console.getName().equals(consoleName)
&& console instanceof CustomMessageConsole) {
messageConsole = (CustomMessageConsole) console;
break;
}
}
if (messageConsole == null) {
messageConsole = new CustomMessageConsole(consoleName, imageDescriptor);
consoleManager.addConsoles(new IConsole[] {messageConsole});
} else {
messageConsole.clearConsole();
}
return messageConsole;
}
public static CustomMessageConsole getMessageConsoleKeepLog(String consoleName,
ImageDescriptor imageDescriptor) {
CustomMessageConsole messageConsole = null;
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
for (IConsole console : consoleManager.getConsoles()) {
if (console.getName().equals(consoleName)
&& console instanceof CustomMessageConsole) {
messageConsole = (CustomMessageConsole) console;
break;
}
}
if (messageConsole == null) {
messageConsole = new CustomMessageConsole(consoleName, imageDescriptor);
consoleManager.addConsoles(new IConsole[] {messageConsole});
} else {
//messageConsole.clearConsole();
}
return messageConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
// no console found, so create a new one
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
// no console found, so create a new one
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
private static MessageConsole findConsole(String name) {//Find and return console, otherwise make one
if (ConsolePlugin.getDefault() == null)
return null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager YangConsole = plugin.getConsoleManager();
IConsole[] existing = YangConsole.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName())) {
YangConsole.showConsoleView(existing[i]);
return (MessageConsole) existing[i];
}
MessageConsole myConsole = new MessageConsole(name, null);
YangConsole.addConsoles(new IConsole[] { myConsole });
return myConsole;
}
/**
* Searches for a console with the name "Sequence Diagram Console" and
* returns it if it was found. If the console was not found creates a new
* one and returns it.
*/
private MessageConsole findConsole() {
final String seqDiagConsoleName = "Sequence Diagram Console";
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
IConsole[] existing = conMan.getConsoles();
Optional<IConsole> seqConsole = Stream.of(existing)
.filter(console -> console.getName().equals(seqDiagConsoleName)).findFirst();
if (seqConsole.isPresent()) {
return (MessageConsole) seqConsole.get();
} else {
MessageConsole newSeqConsole = new MessageConsole(seqDiagConsoleName, null);
conMan.addConsoles(new IConsole[] { newSeqConsole });
return newSeqConsole;
}
}
public static CppStyleMessageConsole buildConsole() {
CppStyleMessageConsole console = null;
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
IConsole[] existing = conMan.getConsoles();
for (int i = 0; i < existing.length; i++) {
if (CppStyleConstants.CONSOLE_NAME.equals(existing[i].getName())) {
console = (CppStyleMessageConsole) existing[i];
}
}
if (console == null) {
// no console found, so create a new one
CppStyleConsolePatternMatchListener listener = new CppStyleConsolePatternMatchListener();
console = new CppStyleMessageConsole(listener);
conMan.addConsoles(new IConsole[] { console });
}
console.clear();
return console;
}
public static <T extends IConsole> T findConsole(String name, Class<T> klass) {
IConsoleManager consoleMgr = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = consoleMgr.getConsoles();
for (IConsole console : existing) {
if (name.equals(console.getName()) && klass.isAssignableFrom(console.getClass())) {
return klass.cast(console);
}
}
return null;
}
@Override
public synchronized void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if (!enabled) {
// Clean up the launch
clearDebugger();
// Clean up the consoles
if (!activeConsoles.isEmpty()) {
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
consoleManager.removeConsoles(activeConsoles.toArray(new IConsole[activeConsoles.size()]));
activeConsoles.clear();
}
}
}
public static Optional<IConsole> getConsoleForLaunch(ILaunch launch) {
List<IProcess> processes = Arrays.asList(launch.getProcesses());
return Arrays.stream(ConsolePlugin.getDefault().getConsoleManager().getConsoles())
.filter(console -> console instanceof org.eclipse.debug.ui.console.IConsole
&& processes.contains(((org.eclipse.debug.ui.console.IConsole) console).getProcess()))
.findFirst();
}
private IOConsole findOrCreateConsole(String name) {
ConsolePlugin plugin = ConsolePlugin.getDefault();
IConsoleManager conMan = plugin.getConsoleManager();
IConsole[] existing = conMan.getConsoles();
for (int i = 0; i < existing.length; i++)
if (name.equals(existing[i].getName()))
return (IOConsole) existing[i];
IOConsole console = new IOConsole(name, null);
conMan.addConsoles(new IConsole[] { console });
return console;
}