Log Console improvements
diff --git a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/LogConsoleManager.java b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/LogConsoleManager.java
index 0752225..c8ca6f1 100644
--- a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/LogConsoleManager.java
+++ b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/LogConsoleManager.java
@@ -11,7 +11,9 @@
*******************************************************************************/
package org.eclipse.dltk.internal.logconsole;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.eclipse.dltk.logconsole.ILogConsole;
@@ -24,7 +26,7 @@
return getConsole(consoleType, null);
}
- private static final LogConsoleType DEFAULT_CONSOLE_TYPE = new LogConsoleType(
+ protected static final LogConsoleType DEFAULT_CONSOLE_TYPE = new LogConsoleType(
"org.eclipse.dltk.logconsole.DEFAULT");
private static class ConsoleKey {
@@ -99,4 +101,16 @@
return new NopLogConsole(key.consoleType, key.identifier);
}
+ public ILogConsole[] list(LogConsoleType consoleType) {
+ final List<ILogConsole> result = new ArrayList<ILogConsole>();
+ synchronized (lock) {
+ for (Map.Entry<ConsoleKey, ILogConsole> entry : consoles.entrySet()) {
+ if (consoleType.equals(entry.getKey().consoleType)) {
+ result.add(entry.getValue());
+ }
+ }
+ }
+ return result.toArray(new ILogConsole[result.size()]);
+ }
+
}
diff --git a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/NopLogConsole.java b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/NopLogConsole.java
index 3695421..8507f0f 100644
--- a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/NopLogConsole.java
+++ b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/internal/logconsole/NopLogConsole.java
@@ -11,6 +11,7 @@
*******************************************************************************/
package org.eclipse.dltk.internal.logconsole;
+import org.eclipse.dltk.logconsole.ILogCategory;
import org.eclipse.dltk.logconsole.ILogConsoleStream;
import org.eclipse.dltk.logconsole.LogConsoleType;
import org.eclipse.dltk.logconsole.impl.AbstractLogConsole;
@@ -24,4 +25,7 @@
public void println(ILogConsoleStream stream, Object message) {
}
+ public void println(ILogCategory category, Object message) {
+ }
+
}
diff --git a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogCategory.java b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogCategory.java
new file mode 100644
index 0000000..48a39dc
--- /dev/null
+++ b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogCategory.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2011 NumberFour AG
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * NumberFour AG - initial API and Implementation (Alex Panchenko)
+ *******************************************************************************/
+package org.eclipse.dltk.logconsole;
+
+public interface ILogCategory {
+
+ String name();
+
+ ILogConsoleStream stream();
+
+}
diff --git a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsole.java b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsole.java
index 000ba79..59c7252 100644
--- a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsole.java
+++ b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsole.java
@@ -60,6 +60,15 @@
void println(ILogConsoleStream stream, Object message);
/**
+ * Prints the message
+ *
+ * @param stream
+ * @param message
+ * @since 4.0
+ */
+ void println(ILogCategory category, Object message);
+
+ /**
* Activates this console - makes it visible to the user
*/
void activate();
diff --git a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsoleManager.java b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsoleManager.java
index c2edeab..4259489 100644
--- a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsoleManager.java
+++ b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/ILogConsoleManager.java
@@ -38,4 +38,13 @@
* @return
*/
ILogConsole getConsole(LogConsoleType consoleType, Object identifier);
+
+ /**
+ * Lists all the consoles of the specified type.
+ *
+ * @param logConsoleType
+ * @return array of consoles, if there are no matching consoles empty array
+ * is returned
+ */
+ ILogConsole[] list(LogConsoleType logConsoleType);
}
diff --git a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/LogConsoleType.java b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/LogConsoleType.java
index a1c1cdf..2cc411a 100644
--- a/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/LogConsoleType.java
+++ b/core/plugins/org.eclipse.dltk.logconsole/src/org/eclipse/dltk/logconsole/LogConsoleType.java
@@ -59,4 +59,8 @@
return LogConsolePlugin.getConsoleManager()
.getConsole(this, identifier);
}
+
+ public ILogConsole[] list() {
+ return LogConsolePlugin.getConsoleManager().list(this);
+ }
}