Bug 553461 - NPE in TextConsoleViewer.lineGetStyle

Change-Id: If5bc348ffc127ac097b34e25a6a835e9891c11ee
Signed-off-by: Paul Pazderski <paul-eclipse@ppazderski.de>
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
index 8437172..c808df6 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
@@ -321,8 +321,8 @@
 		}
 
 		final IDocument document = partitioner.getDocument();
-		document.setDocumentPartitioner(null);
 		partitioner.disconnect();
+		document.setDocumentPartitioner(null);
 
 		super.dispose();
 	}
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsoleViewer.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsoleViewer.java
index 3c35cb4..2e41871 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsoleViewer.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsoleViewer.java
@@ -32,6 +32,7 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IDocumentAdapter;
 import org.eclipse.jface.text.IDocumentListener;
+import org.eclipse.jface.text.IDocumentPartitioner;
 import org.eclipse.jface.text.IPositionUpdater;
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.JFaceTextUtil;
@@ -376,9 +377,13 @@
 			int offset = event.lineOffset;
 			int length = event.lineText.length();
 
-			StyleRange[] partitionerStyles = ((IConsoleDocumentPartitioner) document.getDocumentPartitioner()).getStyleRanges(offset, length);
-			if (partitionerStyles != null) {
-				Collections.addAll(ranges, partitionerStyles);
+			IDocumentPartitioner partitioner = document.getDocumentPartitioner();
+			if (partitioner instanceof IConsoleDocumentPartitioner) {
+				StyleRange[] partitionerStyles = ((IConsoleDocumentPartitioner) partitioner).getStyleRanges(offset,
+						length);
+				if (partitionerStyles != null) {
+					Collections.addAll(ranges, partitionerStyles);
+				}
 			}
 
 			try {
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsoleViewer.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsoleViewer.java
index 609c9f1..7d97706 100644
--- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsoleViewer.java
+++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsoleViewer.java
@@ -98,6 +98,10 @@
 	protected void handleVerifyEvent(VerifyEvent e) {
 		final IConsoleDocumentPartitioner partitioner = (IConsoleDocumentPartitioner) getDocument()
 				.getDocumentPartitioner();
+		if (partitioner == null) {
+			e.doit = false;
+			return;
+		}
 		final IConsoleDocumentPartitionerExtension partitionerExt = (IConsoleDocumentPartitionerExtension) partitioner;
 
 		final StyledTextContent content = getTextWidget().getContent();