package org.easyb.ui.utils;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentExtension3;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.IDocumentPartitionerExtension2;
/**
* Provides method to aid with converting to IDocumentExtension3
* Document classes have been extended using the mixin interfaces
* IDocumentExtension2,3,4 and 5. Every where uses a a IDocument
* At the very least the IDocumentExtension3 should be used as the api
* changed with Eclipse 3.0 specifically with regards to partitioners
* as partitoners can now be shared and need an id.
* So IDocumentExtension3 methods should be used instead of IDocument methods
* @author whiteda
*
*/
public class DocumentUtil {
public static void setDocumentPartitioner(IDocument document,
String partionerId,
IDocumentPartitioner partitioner){
if(!(document instanceof IDocumentExtension3)){
return;
}
((IDocumentExtension3)document).setDocumentPartitioner(
partionerId,partitioner);
}
public static String[] getManagingPositionCategories(String partionerId,IDocument document){
if(!(document instanceof IDocumentExtension3)){
return null;
}
IDocumentPartitioner partitioner =
((IDocumentExtension3)document).getDocumentPartitioner(partionerId);
if(!(partitioner instanceof IDocumentPartitionerExtension2)){
return null;
}
return ((IDocumentPartitionerExtension2)partitioner).getManagingPositionCategories();
}
}