Index: src/org/teiid/designer/extension/ui/editors/ModelExtensionDefinitionEditor.java =================================================================== --- src/org/teiid/designer/extension/ui/editors/ModelExtensionDefinitionEditor.java (revision 2129) +++ src/org/teiid/designer/extension/ui/editors/ModelExtensionDefinitionEditor.java (working copy) @@ -54,7 +54,6 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.dialogs.SaveAsDialog; import org.eclipse.ui.editors.text.FileDocumentProvider; -import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.IMessageManager; import org.eclipse.ui.forms.editor.FormPage; @@ -102,8 +101,9 @@ private ModelExtensionDefinition medBeingEdited; private MedEditorPage overviewPage; - private MedEditorPage propertiesPage; + private MedEditorPage sourcePage; + private ScrolledForm scrolledForm; private final Collection pages = new ArrayList(2); @@ -137,22 +137,12 @@ @Override protected void addPages() { // NOTE: pages are added in reverse order + try { // last page is a readonly text editor - TextEditor sourceEditor = new TextEditor() { - /** - * {@inheritDoc} - * - * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#isEditable() - */ - @Override - public boolean isEditable() { - return false; - } - }; - - // add text editor - addPage(0, sourceEditor, getEditorInput()); + this.sourcePage = new SourceEditorPage(this); + addPage(0, this.sourcePage); + this.pages.add(this.sourcePage); // add properties editor this.propertiesPage = new PropertiesEditorPage(this); @@ -165,7 +155,6 @@ this.pages.add(this.overviewPage); // set text editor title and initialize header text to first page - setPageText((getPageCount() - 1), Messages.medEditorSourcePageTitle); this.scrolledForm.setText(getPageText(0)); // handle page changes @@ -563,6 +552,7 @@ // pass event on to pages this.overviewPage.handlePropertyChanged(e); this.propertiesPage.handlePropertyChanged(e); + this.sourcePage.handlePropertyChanged(e); } /** @@ -655,7 +645,10 @@ this.overviewPage.getManagedForm().refresh(); this.propertiesPage.setResourceReadOnly(this.readOnly); - this.overviewPage.getManagedForm().refresh(); + this.propertiesPage.getManagedForm().refresh(); + + this.sourcePage.setResourceReadOnly(this.readOnly); + this.sourcePage.getManagedForm().refresh(); } } Index: src/org/teiid/designer/extension/ui/editors/SourceEditorPage.java =================================================================== --- src/org/teiid/designer/extension/ui/editors/SourceEditorPage.java (revision 0) +++ src/org/teiid/designer/extension/ui/editors/SourceEditorPage.java (revision 0) @@ -0,0 +1,106 @@ +/* + * JBoss, Home of Professional Open Source. + * + * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. + * + * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. + */ +package org.teiid.designer.extension.ui.editors; + +import static org.teiid.designer.extension.ui.UiConstants.EditorIds.MED_SOURCE_PAGE; + +import java.beans.PropertyChangeEvent; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.teiid.designer.extension.definition.ModelExtensionDefinitionWriter; +import org.teiid.designer.extension.ui.Messages; + +/** + * + */ +public class SourceEditorPage extends MedEditorPage { + + private Text content; + private final ModelExtensionDefinitionWriter writer; + + /** + * @param medEditor the MED editor this page belongs to (cannot be null) + */ + protected SourceEditorPage( ModelExtensionDefinitionEditor medEditor ) { + super(medEditor, MED_SOURCE_PAGE, Messages.medEditorSourcePageTitle); + this.writer = new ModelExtensionDefinitionWriter(); + } + + /** + * {@inheritDoc} + * + * @see org.teiid.designer.extension.ui.editors.MedEditorPage#createBody(org.eclipse.swt.widgets.Composite, + * org.eclipse.ui.forms.widgets.FormToolkit) + */ + @Override + protected void createBody( Composite body, + FormToolkit toolkit ) { + body.setLayout(new GridLayout()); + body.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + body.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW)); + + this.content = new Text(body, SWT.READ_ONLY | SWT.MULTI | SWT.WRAP); + this.content.setBackground(body.getBackground()); + setContent(); + } + + /** + * {@inheritDoc} + * + * @see org.teiid.designer.extension.ui.editors.MedEditorPage#handlePropertyChanged(java.beans.PropertyChangeEvent) + */ + @Override + protected void handlePropertyChanged( PropertyChangeEvent e ) { + if ((this.content != null) && !this.content.isDisposed()) { + // make sure UI thread + this.content.getDisplay().syncExec(new Runnable() { + + /** + * {@inheritDoc} + * + * @see java.lang.Runnable#run() + */ + @Override + public void run() { + setContent(); + } + }); + } + } + + void setContent() { + this.content.setText(this.writer.writeAsText(getMed())); + } + + /** + * {@inheritDoc} + * + * @see org.teiid.designer.extension.ui.editors.MedEditorPage#setResourceReadOnly(boolean) + */ + @Override + protected void setResourceReadOnly( boolean readOnly ) { + // nothing to do + } + + /** + * {@inheritDoc} + * + * @see org.teiid.designer.extension.ui.editors.MedEditorPage#updateAllMessages() + */ + @Override + protected void updateAllMessages() { + // nothing to do + } + +} Index: src/org/teiid/designer/extension/ui/UiConstants.java =================================================================== --- src/org/teiid/designer/extension/ui/UiConstants.java (revision 2129) +++ src/org/teiid/designer/extension/ui/UiConstants.java (working copy) @@ -27,6 +27,7 @@ String MED_EDITOR = PLUGIN_ID + ".modelDefinitionEditor"; //$NON-NLS-1$ String MED_OVERVIEW_PAGE = PLUGIN_ID + ".overviewPage"; //$NON-NLS-1$ String MED_PROPERTIES_PAGE = PLUGIN_ID + ".propertiesPage"; //$NON-NLS-1$ + String MED_SOURCE_PAGE = PLUGIN_ID + ".sourcePage"; //$NON-NLS-1$ } interface ExtensionIds {