package com.hundsun.ares.studio.ui.editor.text; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.source.AnnotationModel; import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.ui.texteditor.AbstractDocumentProvider; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.ui.editor.textbase.ITextBased; import com.hundsun.ares.studio.ui.editor.textbase.TextBasedEditorInput; /** * ��������Ԫ������ΪITextBased���͵��ĵ��ṩ���� * <p>CreatedDate: 2008-2-1</p> * @author sundl */ public class ARESElementDocumentProvider extends AbstractDocumentProvider { /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#createAnnotationModel(java.lang.Object) */ @Override protected IAnnotationModel createAnnotationModel(Object element) throws CoreException { if (element instanceof TextBasedEditorInput) { return new AnnotationModel(); } return null; } /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#createDocument(java.lang.Object) */ @Override protected IDocument createDocument(Object element) throws CoreException { IDocument doc = new Document(); ITextBased textBasedInfo = getTextBased(element); if (textBasedInfo != null) { doc.set(textBasedInfo.getText()); return doc; } doc.set(""); return doc; } protected final ITextBased getTextBased(Object element) { if(element instanceof TextBasedEditorInput) { return ((TextBasedEditorInput)element).getTextbased(); } return null; } /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#doSaveDocument(org.eclipse.core.runtime.IProgressMonitor, java.lang.Object, org.eclipse.jface.text.IDocument, boolean) */ @Override protected void doSaveDocument(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) throws CoreException { ITextBased textBasedInfo = getTextBased(element); if (textBasedInfo != null) { textBasedInfo.setText(document.get()); } } /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#getOperationRunner(org.eclipse.core.runtime.IProgressMonitor) */ @Override protected IRunnableContext getOperationRunner(IProgressMonitor monitor) { return null; } /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#isModifiable(java.lang.Object) */ @Override public boolean isModifiable(Object element) { return !getResource(element).isReadOnly(); } /* (non-Javadoc) * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#isReadOnly(java.lang.Object) */ @Override public boolean isReadOnly(Object element) { return getResource(element).isReadOnly(); } private IARESResource getResource(Object element) { if(element instanceof TextBasedEditorInput) { return (IARESResource) ((TextBasedEditorInput)element).getARESElement(); } return null; } }