diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java index 9283d781aa5..4301e45a5f1 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/Binary.java @@ -394,6 +394,24 @@ public class Binary extends Openable implements IBinary { //} } + /** + * @see org.eclipse.cdt.core.model.IOpenable#getBuffer() + * + * overridden from default as we do not need to create our children to provider a buffer since the buffer just contains + * IBinaryOject contents which is not model specific. + */ + public IBuffer getBuffer() throws CModelException { + if (hasBuffer()) { + IBuffer buffer = getBufferManager().getBuffer(this); + if (buffer == null) { + // try to (re)open a buffer + buffer = openBuffer(null); + } + return buffer; + } + return null; + } + /* (non-Javadoc) * @see org.eclipse.cdt.internal.core.model.Openable#openBuffer(org.eclipse.core.runtime.IProgressMonitor) */ diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java index 810b31034a2..c82286c928d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/CTextTools.java @@ -81,14 +81,6 @@ public class CTextTools { if(store == null) { store = CUIPlugin.getDefault().getPreferenceStore(); } - fPreferenceStore = store; - fPreferenceStore.addPropertyChangeListener(fPreferenceListener); - - fCorePreferenceStore= coreStore; - if (fCorePreferenceStore != null) { - fCorePreferenceStore.addPropertyChangeListener(fPreferenceListener); - } - fColorManager= new CColorManager(); fCodeScanner= new CCodeScanner(fColorManager, store); fCppCodeScanner= new CppCodeScanner(fColorManager, store); @@ -97,6 +89,15 @@ public class CTextTools { fMultilineCommentScanner= new CCommentScanner(fColorManager, store, coreStore, ICColorConstants.C_MULTI_LINE_COMMENT); fSinglelineCommentScanner= new CCommentScanner(fColorManager, store, coreStore, ICColorConstants.C_SINGLE_LINE_COMMENT); fStringScanner= new SingleTokenCScanner(fColorManager, store, ICColorConstants.C_STRING); + + fPreferenceStore = store; + fPreferenceStore.addPropertyChangeListener(fPreferenceListener); + + fCorePreferenceStore= coreStore; + if (fCorePreferenceStore != null) { + fCorePreferenceStore.addPropertyChangeListener(fPreferenceListener); + } + } /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java index 693e248d8a3..fb8cca767ce 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/EditorUtility.java @@ -19,6 +19,7 @@ import java.text.MessageFormat; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.IBinary; +import org.eclipse.cdt.core.model.IBuffer; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ISourceReference; import org.eclipse.cdt.core.model.ITranslationUnit; @@ -438,7 +439,10 @@ public class EditorUtility { public static IStorage getStorage(IBinary bin) { IStorage store = null; try { - store = new FileStorage (new ByteArrayInputStream(bin.getBuffer().getContents().getBytes()), bin.getPath()); + IBuffer buffer = bin.getBuffer(); + if (buffer != null) { + store = new FileStorage (new ByteArrayInputStream(buffer.getContents().getBytes()), bin.getPath()); + } } catch (CModelException e) { // nothing; }