package org.eclipse.iee.editor.core.container.partitioning;
import org.eclipse.iee.core.document.parser.DocumentStructureConfig;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension3;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
public class PartitioningManager {
public final static String PARTITIONING_ID = "__iee_embedding_partitioning";
/** Content type of embedded partition. */
public final static String CONTENT_TYPE_EMBEDDED = "__embedded";
/** Content type of plain text partition. */
public final static String CONENT_TYPE_PLAINTEXT = "__plaintext";
private final IDocument fDocument;
private IDocumentPartitioner fDocumentPartitioner;
private boolean disposed = false;
public PartitioningManager(DocumentStructureConfig config, IDocument document) {
fDocument = document;
fDocumentPartitioner = new FastPartitioner(
new PartitioningScanner(
DocumentStructureConfig.EMBEDDED_REGION_BEGIN,
DocumentStructureConfig.EMBEDDED_REGION_END),
new String[] { CONTENT_TYPE_EMBEDDED });
fDocumentPartitioner.connect(fDocument);
((IDocumentExtension3) fDocument).setDocumentPartitioner(
PartitioningManager.PARTITIONING_ID, fDocumentPartitioner);
}
public void dispose() {
if (!disposed) {
((IDocumentExtension3) fDocument).setDocumentPartitioner(
PartitioningManager.PARTITIONING_ID, null);
fDocumentPartitioner.disconnect();
fDocumentPartitioner = null;
disposed = true;
}
}
}