blob: ef44b0d21cb47a06b07c5bb223dc04f4ab29227e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2023 Nitin Dahyabhai
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Nitin Dahyabhai - initial implementation
*
*******************************************************************************/
package org.eclipse.wst.sse.core.internal.text;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
import org.eclipse.wst.sse.core.internal.provisional.events.IModelAboutToBeChangedListener;
import org.eclipse.wst.sse.core.internal.provisional.events.IStructuredDocumentListener;
import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegionList;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredTextReParser;
import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.CurrentDocumentRegionCache;
import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument.NullDocumentEvent;
import org.eclipse.wst.sse.core.internal.undo.IStructuredTextUndoManager;
public class DelegatingStructuredDocument extends Document implements IStructuredDocument {
private IDocument fDelegateDocument = null;
private RegionParser fReParser;
private IDocumentListener fDelegateBridge;
private IStructuredDocumentRegion cachedDocumentRegion;
private EncodingMemento encodingMemento;
private CurrentDocumentRegionCache fCurrentDocumentRegionCache;
/**
* Theoretically, a document can contain mixed line delimiters, but the
* user's preference is usually to be internally consistent.
*/
private String fInitialLineDelimiter;
private IStructuredDocumentRegion firstDocumentRegion;
private Object[] fStructuredDocumentAboutToChangeListeners;
private Object[] fStructuredDocumentChangedListeners;
private Object[] fStructuredDocumentChangingListeners;
private NullDocumentEvent NULL_DOCUMENT_EVENT;
DelegatingStructuredDocument() {
}
public DelegatingStructuredDocument(RegionParser parser, IDocument delegate) {
super();
fReParser = parser;
fDelegateDocument = delegate;
fDelegateDocument.addDocumentListener(fDelegateBridge);
fDelegateDocument.addPrenotifiedDocumentListener(null);
}
@Override
public String getPreferredLineDelimiter() {
return fInitialLineDelimiter;
}
@Override
public void setPreferredLineDelimiter(String preferredLineDelimiter) {
fInitialLineDelimiter = preferredLineDelimiter;
}
@Override
public <T> T getAdapter(Class<T> adapter) {
return Platform.getAdapterManager().getAdapter(this, adapter);
}
@Override
public void addDocumentAboutToChangeListener(IModelAboutToBeChangedListener listener) {
}
@Override
public void addDocumentChangedListener(IStructuredDocumentListener listener) {
// TODO Auto-generated method stub
}
@Override
public void addDocumentChangingListener(IStructuredDocumentListener listener) {
// TODO Auto-generated method stub
}
@Override
public void clearReadOnly(int startOffset, int length) {
// TODO Auto-generated method stub
}
@Override
public boolean containsReadOnly(int startOffset, int length) {
// TODO Auto-generated method stub
return false;
}
@Override
public EncodingMemento getEncodingMemento() {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredDocumentRegion getFirstStructuredDocumentRegion() {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredDocumentRegion getLastStructuredDocumentRegion() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getLineDelimiter() {
// TODO Auto-generated method stub
return null;
}
@Override
public RegionParser getParser() {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredDocumentRegionList getRegionList() {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredDocumentRegion getRegionAtCharacterOffset(int offset) {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredDocumentRegion[] getStructuredDocumentRegions(int offset, int length) {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredDocumentRegion[] getStructuredDocumentRegions() {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredTextReParser getReParser() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getText() {
// TODO Auto-generated method stub
return null;
}
@Override
public IStructuredTextUndoManager getUndoManager() {
// TODO Auto-generated method stub
return null;
}
@Override
public void makeReadOnly(int startOffset, int length) {
// TODO Auto-generated method stub
}
@Override
public IStructuredDocument newInstance() {
// TODO Auto-generated method stub
return null;
}
@Override
public void removeDocumentAboutToChangeListener(IModelAboutToBeChangedListener listener) {
// TODO Auto-generated method stub
}
@Override
public void removeDocumentChangedListener(IStructuredDocumentListener listener) {
// TODO Auto-generated method stub
}
@Override
public void removeDocumentChangingListener(IStructuredDocumentListener listener) {
// TODO Auto-generated method stub
}
@Override
public StructuredDocumentEvent replaceText(Object source, int oldStart, int replacementLength, String requestedChange) {
// TODO Auto-generated method stub
return null;
}
@Override
public StructuredDocumentEvent replaceText(Object source, int oldStart, int replacementLength, String requestedChange, boolean ignoreReadOnlySetting) {
// TODO Auto-generated method stub
return null;
}
@Override
public void setEncodingMemento(EncodingMemento encodingMemento) {
// TODO Auto-generated method stub
}
@Override
public void setLineDelimiter(String delimiter) {
// TODO Auto-generated method stub
}
@Override
public StructuredDocumentEvent setText(Object requester, String allText) {
// TODO Auto-generated method stub
return null;
}
@Override
public void setUndoManager(IStructuredTextUndoManager undoManager) {
// TODO Auto-generated method stub
}
}