/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.editor; import org.apache.log4j.Logger; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; import com.hundsun.ares.studio.core.ARESCore; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESElement; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.ui.IARESResourceEditorInput; import com.hundsun.ares.studio.ui.page.FromPageWithMyDirtySystem; /** * ares�����༭�� * �ṩģ��ͨ�����л� * �ṩ�������������� * �ṩֻ��״̬���� * @author maxh * */ public abstract class AbstractHSFormEditorNoUndocontext<T> extends AbstractHSExtendPointFormEditorNoUndocontext<T> { private static Logger logger = Logger.getLogger(AbstractHSFormEditor.class.getName()); protected IARESResource resource; /** * ��ù�����resource * @return the resource */ public IARESResource getResource() { return resource; } @Override protected void addPageContext(FromPageWithMyDirtySystem page){ super.addPageContext(page); page.setResource(resource); } protected String getPartTitleName(){ if (resource != null) { return resource.getName(); } return super.getPartTitleName(); } @Override protected boolean isReadOnly() { if (resource != null) return resource.isReadOnly(); return super.isReadOnly(); } @Override public void setInput(IEditorInput input) { super.setInput(input); if (editingFile != null) { try { IARESElement element = ARESCore.create(editingFile); if (element instanceof IARESResource) { resource = (IARESResource) element; } } catch (Exception e) { logger.error("read model from platform fail!", e); } } else if (input instanceof IARESResourceEditorInput) { resource = ((IARESResourceEditorInput)input).getARESResource(); this.aresProject = resource.getARESProject(); } if (resource != null) { try { info = (T) resource.getWorkingCopy(getModelType()); } catch (ARESModelException e) { e.printStackTrace(); } } //����޷�����Դ��ܻ�ȡģ�� ��newһ�� try { if(info == null && editingFile != null){ info = (T)getModelType().newInstance(); } } catch (Exception e) { logger.error("create new instance failed!", e); } } /* (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor) */ @Override public void doSave(IProgressMonitor monitor) { if (getEditorInput() instanceof IFileEditorInput) { IFile file = ((IFileEditorInput)getEditorInput()).getFile(); IARESElement element = ARESCore.create(file); if (element instanceof IARESResource) { try { ((IARESResource)element).save(info, true, monitor); } catch (ARESModelException e) { logger.error("�ļ��������", e); } } } dirty.setValue(false); } /** * ���� 2010-8-17 17:08:59 * ֻ�DZ����ļ������ı��ļ�����״̬ * �ı��ļ�����״̬��������emf��һЩ���� * ��û���趨���µ���Դǰ�������쳣 * @param monitor */ protected void doSaveFile(IProgressMonitor monitor) { if (getEditorInput() instanceof IFileEditorInput) { IFile file = ((IFileEditorInput)getEditorInput()).getFile(); IARESElement element = ARESCore.create(file); if (element instanceof IARESResource) { try { ((IARESResource)element).save(info, true, monitor); } catch (ARESModelException e) { logger.error("�ļ��������", e); } } } } }