/** * */ package com.hundsun.ares.studio.ui.editor; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IMarker; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.editors.text.EditorsUI; import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.ide.IDE; import org.eclipse.ui.ide.IGotoMarker; import org.eclipse.ui.texteditor.ChainedPreferenceStore; import org.eclipse.ui.texteditor.DefaultRangeIndicator; import org.eclipse.ui.texteditor.ITextEditorActionConstants; import com.hundsun.ares.studio.ui.editor.editable.IEditableControl; import com.hundsun.ares.studio.ui.editor.text.TextEditorInputDocumentProvider; import com.hundsun.ares.studio.ui.validate.IProblemPool; import com.hundsun.ares.studio.ui.validate.IValidateControl; /** * * ������{@link FormEditor#addPage(org.eclipse.ui.IEditorPart, IEditorInput)} * ����{@link FormEditor#addPage(int, org.eclipse.ui.IEditorPart, IEditorInput)}��� * @author gongyf * */ public class TextEditorEMFFormPage extends TextEditor implements IEMFFormPage, IGotoMarker { private EMFFormEditor fEditor; private Control fControl; private String fId; private int fIndex; private String fTitle = StringUtils.EMPTY; public TextEditorEMFFormPage(EMFFormEditor editor, String id, String title) { fId = id; fTitle = title; initialize(editor); IPreferenceStore[] stores = new IPreferenceStore[2]; stores[0] = EditorsUI.getPreferenceStore(); stores[1] = ARESEditorPlugin.getDefault().getPreferenceStore(); setPreferenceStore(new ChainedPreferenceStore(stores)); setRangeIndicator(new DefaultRangeIndicator()); setDocumentProvider(new TextEditorInputDocumentProvider()); } @Override protected boolean isEditorInputIncludedInContextMenu() { return false; } @Override public String getPartName() { return fTitle; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#initialize(org.eclipse.ui.forms.editor.FormEditor) */ @Override public void initialize(FormEditor editor) { fEditor = (EMFFormEditor) editor; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getManagedForm() */ @Override public IManagedForm getManagedForm() { return null; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#setActive(boolean) */ @Override public void setActive(boolean active) { } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#isActive() */ @Override public boolean isActive() { return false; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#canLeaveThePage() */ @Override public boolean canLeaveThePage() { return true; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getPartControl() */ @Override public Control getPartControl() { return fControl; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getId() */ @Override public String getId() { return fId; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getIndex() */ @Override public int getIndex() { return fIndex; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#setIndex(int) */ @Override public void setIndex(int index) { fIndex = index; } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#isEditor() */ @Override public boolean isEditor() { return true; } @Override protected void editorContextMenuAboutToShow(IMenuManager menu) { menu.add(new Separator(ITextEditorActionConstants.GROUP_UNDO)); menu.add(new GroupMarker(ITextEditorActionConstants.GROUP_SAVE)); menu.add(new Separator(ITextEditorActionConstants.GROUP_COPY)); menu.add(new Separator(ITextEditorActionConstants.GROUP_PRINT)); menu.add(new Separator(ITextEditorActionConstants.GROUP_EDIT)); menu.add(new Separator(ITextEditorActionConstants.GROUP_FIND)); menu.add(new Separator(IWorkbenchActionConstants.GROUP_ADD)); menu.add(new Separator(ITextEditorActionConstants.GROUP_REST)); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.COPY); IAction preferencesAction= getAction(ITextEditorActionConstants.CONTEXT_PREFERENCES); menu.appendToGroup(IWorkbenchActionConstants.MB_ADDITIONS, new Separator(ITextEditorActionConstants.GROUP_SETTINGS)); menu.appendToGroup(ITextEditorActionConstants.GROUP_SETTINGS, preferencesAction); } /* (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#selectReveal(java.lang.Object) */ @Override public boolean selectReveal(Object object) { if (object instanceof IMarker) { IDE.gotoMarker(this, (IMarker) object); return true; } return false; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#infoChange() */ @Override public void infoChange() { } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#validate() */ @Override public void validate() { } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#getProblemPool() */ @Override public IProblemPool getProblemPool() { return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#getValidateControl() */ @Override public IValidateControl getValidateControl() { return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#getEditingDomain() */ @Override public TransactionalEditingDomain getEditingDomain() { return getEditor().getEditingDomain(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#getEditor() */ @Override public EMFFormEditor getEditor() { return fEditor; } public void createPartControl(Composite parent) { super.createPartControl(parent); Control[] children = parent.getChildren(); fControl = children[children.length - 1]; StyledText styledText= getSourceViewer().getTextWidget(); styledText.setFont(JFaceResources.getTextFont()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.form.IEMFFormPage#setEditableControl(com.hundsun.ares.studio.jres.ui.editors.editable.IEditableControl) */ @Override public void setEditableControl(IEditableControl editableControl) { } }