// Path: src/opaide/editors/opasrc/OpaPartitioner.java
// public enum OPA_PARTITION {
// 	OPA_STRING {
// 		@Override
// 		public IPredicateRule getPredicateRule() {
// 			IToken token = new Token(this.getContentType());
// 			return new MultiLineRule("\"", "\"", token, '\\');
// 		}
// 
// 		@Override
// 		public ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider) {
// 			return new OpaStringScanner(styleProvider);
// 		}
// 
// 		@Override
// 		public SavedTextAttribute getTextAttribute() {
// 			return new SavedTextAttribute(new RGB(64, 144, 225), new FontData("Georgia", 10, SWT.ITALIC));
// 		}
// 	},
// 	OPA_COMMENT_LINE {
// 		@Override
// 		public IPredicateRule getPredicateRule() {
// 			IToken token = new Token(this.getContentType());
// 			return new EndOfLineRule("//", token);
// 		}
// 
// 		@Override
// 		public ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider) {
// 			return new OpaCommentLineScanner(styleProvider);
// 		}
// 
// 		@Override
// 		public SavedTextAttribute getTextAttribute() {
// 			return new SavedTextAttribute(new RGB(63, 127, 95), new FontData("Serif", 10, TextAttribute.STRIKETHROUGH));
// 		}
// 	},
// 	OPA_COMMENT_BLOCK {
// 		@Override
// 		public IPredicateRule getPredicateRule() {
// 			IToken token = new Token(this.getContentType());
// 			return new MultiLineRule("/*", "*/", token);
// 		}
// 
// 		@Override
// 		public ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider) {
// 			return new OpaCommentBlockScanner(styleProvider);
// 		}
// 
// 		@Override
// 		public SavedTextAttribute getTextAttribute() {
// 			return new SavedTextAttribute(new RGB(63, 95, 191), createDefaultFontData(SWT.NORMAL));
// 		}
// 	};
// 		
// 	@Override
// 	public String toString() {
// 		return this.getClass().getCanonicalName() + "." + super.toString();
// 	}
// 		
// 	public String getContentType() {
// 		return String.format("__%s_%s", OPA_PARTITION.class.getName(), this.name());
// 	}
// 		
// 	private static List<String> contentTypes;
// 	public static List<String> getContentTypes() {
// 		if (contentTypes == null) {
// 			List<String> result = new ArrayList<String>();
// 			for (OPA_PARTITION p : OPA_PARTITION.values())
// 				result.add(p.getContentType());
// 			contentTypes = result;
// 		}
// 		return contentTypes;
// 	}
// 		
// 	public abstract IPredicateRule getPredicateRule();
// 	public abstract ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider);
// 	public abstract SavedTextAttribute getTextAttribute();
// 		
// 	private static FontData createDefaultFontData(int style) {
// 		return new FontData("Monospace", 10, style);
// 	}
// 
// };


import java.util.List;
import opaide.editors.opasrc.OpaPartitioner.OPA_PARTITION;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.editors.text.FileDocumentProvider;
import org.eclipse.ui.texteditor.ResourceMarkerAnnotationModel;
package opaide.editors.opasrc;





public class OpaDocumentProvider extends FileDocumentProvider {

	protected IDocument createDocument(Object element) throws CoreException {
		IDocument document = super.createDocument(element);
		if (document != null) {
// Path: src/opaide/editors/opasrc/OpaPartitioner.java
// public enum OPA_PARTITION {
// 	OPA_STRING {
// 		@Override
// 		public IPredicateRule getPredicateRule() {
// 			IToken token = new Token(this.getContentType());
// 			return new MultiLineRule("\"", "\"", token, '\\');
// 		}
// 
// 		@Override
// 		public ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider) {
// 			return new OpaStringScanner(styleProvider);
// 		}
// 
// 		@Override
// 		public SavedTextAttribute getTextAttribute() {
// 			return new SavedTextAttribute(new RGB(64, 144, 225), new FontData("Georgia", 10, SWT.ITALIC));
// 		}
// 	},
// 	OPA_COMMENT_LINE {
// 		@Override
// 		public IPredicateRule getPredicateRule() {
// 			IToken token = new Token(this.getContentType());
// 			return new EndOfLineRule("//", token);
// 		}
// 
// 		@Override
// 		public ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider) {
// 			return new OpaCommentLineScanner(styleProvider);
// 		}
// 
// 		@Override
// 		public SavedTextAttribute getTextAttribute() {
// 			return new SavedTextAttribute(new RGB(63, 127, 95), new FontData("Serif", 10, TextAttribute.STRIKETHROUGH));
// 		}
// 	},
// 	OPA_COMMENT_BLOCK {
// 		@Override
// 		public IPredicateRule getPredicateRule() {
// 			IToken token = new Token(this.getContentType());
// 			return new MultiLineRule("/*", "*/", token);
// 		}
// 
// 		@Override
// 		public ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider) {
// 			return new OpaCommentBlockScanner(styleProvider);
// 		}
// 
// 		@Override
// 		public SavedTextAttribute getTextAttribute() {
// 			return new SavedTextAttribute(new RGB(63, 95, 191), createDefaultFontData(SWT.NORMAL));
// 		}
// 	};
// 		
// 	@Override
// 	public String toString() {
// 		return this.getClass().getCanonicalName() + "." + super.toString();
// 	}
// 		
// 	public String getContentType() {
// 		return String.format("__%s_%s", OPA_PARTITION.class.getName(), this.name());
// 	}
// 		
// 	private static List<String> contentTypes;
// 	public static List<String> getContentTypes() {
// 		if (contentTypes == null) {
// 			List<String> result = new ArrayList<String>();
// 			for (OPA_PARTITION p : OPA_PARTITION.values())
// 				result.add(p.getContentType());
// 			contentTypes = result;
// 		}
// 		return contentTypes;
// 	}
// 		
// 	public abstract IPredicateRule getPredicateRule();
// 	public abstract ITokenScanner getTokenScanner(OpaPreferencesInitializer styleProvider);
// 	public abstract SavedTextAttribute getTextAttribute();
// 		
// 	private static FontData createDefaultFontData(int style) {
// 		return new FontData("Monospace", 10, style);
// 	}
// 
// };


// Path: src/opaide/editors/opasrc/OpaDocumentProvider.java
import java.util.List;
import opaide.editors.opasrc.OpaPartitioner.OPA_PARTITION;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.editors.text.FileDocumentProvider;
import org.eclipse.ui.texteditor.ResourceMarkerAnnotationModel;

package opaide.editors.opasrc;





public class OpaDocumentProvider extends FileDocumentProvider {

	protected IDocument createDocument(Object element) throws CoreException {
		IDocument document = super.createDocument(element);
		if (document != null) {
			List<String> tmp = OPA_PARTITION.getContentTypes();