diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/ConsolePlugin.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/ConsolePlugin.java
index b43b475..f55935e 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/ConsolePlugin.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/ConsolePlugin.java
@@ -56,6 +56,8 @@
 
 	/**
 	 * Returns the singleton instance of the console plug-in.
+	 *
+	 * @return the singleton instance of this console plug-in
 	 */
 	public static ConsolePlugin getDefault() {
 		return fgPlugin;
@@ -68,6 +70,8 @@
 
 	/**
 	 * Convenience method which returns the unique identifier of this plug-in.
+	 *
+	 * @return this plug-in's unique identifier
 	 */
 	public static String getUniqueIdentifier() {
 		return PI_UI_CONSOLE;
@@ -120,6 +124,8 @@
 
 	/**
 	 * Returns the workbench display.
+	 *
+	 * @return the workbench display
 	 */
 	public static Display getStandardDisplay() {
 		return PlatformUI.getWorkbench().getDisplay();
@@ -127,6 +133,11 @@
 
 	/**
 	 * Utility method with conventions
+	 *
+	 * @param shell   the parent shell for the dialog
+	 * @param title   dialog title
+	 * @param message dialog message
+	 * @param t       error to show in dialog
 	 */
 	public static void errorDialog(Shell shell, String title, String message, Throwable t) {
 		IStatus status;
@@ -146,11 +157,12 @@
 	}
 
 	/**
-	 * Returns the <code>Image</code> identified by the given key,
-	 * or <code>null</code> if it does not exist.
+	 * Returns the <code>Image</code> identified by the given key, or
+	 * <code>null</code> if it does not exist.
 	 *
-	 * @return the <code>Image</code> identified by the given key,
-	 * or <code>null</code> if it does not exist
+	 * @param key the image's key
+	 * @return the <code>Image</code> identified by the given key, or
+	 *         <code>null</code> if it does not exist
 	 * @since 3.1
 	 */
 	public static Image getImage(String key) {
@@ -158,11 +170,12 @@
 	}
 
 	/**
-	 * Returns the <code>ImageDescriptor</code> identified by the given key,
-	 * or <code>null</code> if it does not exist.
+	 * Returns the <code>ImageDescriptor</code> identified by the given key, or
+	 * <code>null</code> if it does not exist.
 	 *
-	 * @return the <code>ImageDescriptor</code> identified by the given key,
-	 * or <code>null</code> if it does not exist
+	 * @param key the image's key
+	 * @return the <code>ImageDescriptor</code> identified by the given key, or
+	 *         <code>null</code> if it does not exist
 	 * @since 3.1
 	 */
 	public static ImageDescriptor getImageDescriptor(String key) {
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleOutputStream.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleOutputStream.java
index dd1a505..2faaa36 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleOutputStream.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleOutputStream.java
@@ -79,6 +79,7 @@
 	 * Constructs a new output stream on the given console.
 	 *
 	 * @param console I/O console
+	 * @param charset the encoding used to write to console
 	 */
 	IOConsoleOutputStream(IOConsole console, Charset charset) {
 		this.decoder = new StreamDecoder(charset);
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsoleStream.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsoleStream.java
index da454eb..be35b23 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsoleStream.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsoleStream.java
@@ -43,7 +43,8 @@
 	private MessageConsole fMessageConsole;
 
 	/**
-	 * Constructs a new stream connected to the given console.
+	 * Constructs a new stream connected to the given console with workbench default
+	 * encoding.
 	 *
 	 * @param console the console to write messages to
 	 */
@@ -55,6 +56,7 @@
 	 * Constructs a new stream connected to the given console.
 	 *
 	 * @param console the console to write messages to
+	 * @param charset encoding used to write to console
 	 * @since 3.7
 	 */
 	public MessageConsoleStream(MessageConsole console, Charset charset) {
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerGotoLineAction.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerGotoLineAction.java
index 6b5fb10..00c747e 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerGotoLineAction.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerGotoLineAction.java
@@ -64,7 +64,10 @@
 	protected ITextViewer fTextViewer;
 
 	/**
-	 * Constructs a goto line action for the viewer using the provided resource bundle
+	 * Constructs a goto line action for the viewer using the provided resource
+	 * bundle.
+	 * 
+	 * @param viewer the viewer to jump in
 	 */
 	public TextViewerGotoLineAction(ITextViewer viewer) {
 		super(viewer, -1);
@@ -83,6 +86,8 @@
 
 	/**
 	 * Jumps to the line.
+	 *
+	 * @param line the target line. First line is line <code>0</code>.
 	 */
 	protected void gotoLine(int line) {
 
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java
index 7c27120..59ea1d4 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java
@@ -338,16 +338,20 @@
 	}
 
 	/**
-	 * Returns whether the given console view should be brought to the top.
-	 * The view should not be brought to the top if the view is pinned on
-	 * a console other than the given console.
+	 * Returns whether the given console view should be brought to the top. The view
+	 * should not be brought to the top if the view is pinned on a console other
+	 * than the given console.
+	 *
+	 * @param console     the console to be shown in the view
+	 * @param consoleView the view which should be brought to the top
+	 * @return whether the given console view should be brought to the top
 	 */
 	private boolean shouldBringToTop(IConsole console, IViewPart consoleView) {
-		boolean bringToTop= true;
+		boolean bringToTop = true;
 		if (consoleView instanceof IConsoleView) {
-			IConsoleView cView= (IConsoleView)consoleView;
+			IConsoleView cView = (IConsoleView) consoleView;
 			if (cView.isPinned()) {
-				IConsole pinnedConsole= cView.getConsole();
+				IConsole pinnedConsole = cView.getConsole();
 				bringToTop = console.equals(pinnedConsole);
 			}
 		}
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePluginImages.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePluginImages.java
index b299c81..e4bf047 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePluginImages.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePluginImages.java
@@ -98,6 +98,8 @@
 
 	/**
 	 * Returns the ImageRegistry.
+	 *
+	 * @return the ImageRegistry
 	 */
 	public static ImageRegistry getImageRegistry() {
 		if (imageRegistry == null) {
@@ -107,11 +109,12 @@
 	}
 
 	/**
-	 *	Initialize the image registry by declaring all of the required
-	 *	graphics. This involves creating JFace image descriptors describing
-	 *	how to create/find the image should it be needed.
-	 *	The image is not actually allocated until requested.
+	 * Initialize the image registry by declaring all of the required graphics. This
+	 * involves creating JFace image descriptors describing how to create/find the
+	 * image should it be needed. The image is not actually allocated until
+	 * requested.
 	 *
+	 * <pre>
 	 * 	Prefix conventions
 	 *		Wizard Banners			WIZBAN_
 	 *		Preference Banners		PREF_BAN_
@@ -132,25 +135,36 @@
 	 *		This may mean the same package directory as the package holding this class.
 	 *		The images are declared using this.getClass() to ensure they are looked up via
 	 *		this plugin class.
-	 *	@see org.eclipse.jface.resource.ImageRegistry
+	 * </pre>
+	 *
+	 * @return the initialized ImageRegistry
+	 * @see org.eclipse.jface.resource.ImageRegistry
 	 */
 	public static ImageRegistry initializeImageRegistry() {
-		imageRegistry= new ImageRegistry(ConsolePlugin.getStandardDisplay());
+		imageRegistry = new ImageRegistry(ConsolePlugin.getStandardDisplay());
 		declareImages();
 		return imageRegistry;
 	}
 
 	/**
-	 * Returns the <code>Image<code> identified by the given key,
-	 * or <code>null</code> if it does not exist.
+	 * Returns the <code>Image</code> identified by the given key, or
+	 * <code>null</code> if it does not exist.
+	 *
+	 * @param key the image's key
+	 * @return the <code>Image</code> identified by the given key, or
+	 *         <code>null</code> if it does not exist
 	 */
 	public static Image getImage(String key) {
 		return getImageRegistry().get(key);
 	}
 
 	/**
-	 * Returns the <code>ImageDescriptor<code> identified by the given key,
-	 * or <code>null</code> if it does not exist.
+	 * Returns the <code>ImageDescriptor</code> identified by the given key, or
+	 * <code>null</code> if it does not exist.
+	 * 
+	 * @param key the image's key
+	 * @return the <code>ImageDescriptor</code> identified by the given key, or
+	 *         <code>null</code> if it does not exist
 	 */
 	public static ImageDescriptor getImageDescriptor(String key) {
 		return getImageRegistry().getDescriptor(key);
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleWorkbenchPart.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleWorkbenchPart.java
index 393f0ce..d73caf6 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleWorkbenchPart.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleWorkbenchPart.java
@@ -40,8 +40,10 @@
 	}
 
 	/**
-	 * Constructs a part for the given console that binds to the given
-	 * site
+	 * Constructs a part for the given console that binds to the given site.
+	 * 
+	 * @param console the console which is part of the part
+	 * @param site    the site to bind the part to
 	 */
 	public ConsoleWorkbenchPart(IConsole console, IWorkbenchPartSite site) {
 		fConsole = console;
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/FollowHyperlinkAction.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/FollowHyperlinkAction.java
index 67a84a3..adb455a 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/FollowHyperlinkAction.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/FollowHyperlinkAction.java
@@ -28,7 +28,9 @@
 	private TextConsoleViewer viewer;
 
 	/**
-	 * Constructs a follow link action
+	 * Constructs a follow link action.
+	 * 
+	 * @param consoleViewer the viewer containing the link
 	 */
 	public FollowHyperlinkAction(TextConsoleViewer consoleViewer) {
 		super(ConsoleMessages.FollowHyperlinkAction_0);
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PinConsoleAction.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PinConsoleAction.java
index 9c5bfb9..ded7b08 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PinConsoleAction.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PinConsoleAction.java
@@ -27,7 +27,9 @@
 	private IConsoleView fView = null;
 
 	/**
-	 * Constructs a 'pin console' action
+	 * Constructs a 'pin console' action.
+	 * 
+	 * @param view the view to pin with this action
 	 */
 	public PinConsoleAction(IConsoleView view) {
 		super(ConsoleMessages.PinConsoleAction_0, IAction.AS_CHECK_BOX);
