/**
* Դ�������ƣ�MetadataEMFFormEditor.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui
* ����˵����Ԫ�����û��༭��UIչ����ع���
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.metadata.ui.editors;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IGotoMarker;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.RevisionHistory;
import com.hundsun.ares.studio.internal.core.ARESProject;
import com.hundsun.ares.studio.jres.model.metadata.Operation;
import com.hundsun.ares.studio.ui.editor.EMFFormEditor;
import com.hundsun.ares.studio.ui.editor.EMFFormPage;
import com.hundsun.ares.studio.ui.editor.blocks.RevisionHistoryListPage;
/**
* �����༭��ģ�ͣ�ΪԪ���ݱ༭�����ӻ���ҳ���û�����ҳ������Ϣҳ��
* @author qinyuan
*
*/
public abstract class MetadataEMFFormEditor extends EMFFormEditor {
protected OperationEditPage operationPage;
protected RevisionHistoryListPage historyPage;
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#getAdapter(java.lang.Class)
*/
@Override
public Object getAdapter(Class adapter) {
if (adapter == IGotoMarker.class) {
return new IGotoMarker() {
@Override
public void gotoMarker(IMarker marker) {
String uri;
try {
uri = (String) marker.getAttribute(IMarker.LOCATION);
EObject obj = getInfo().eResource().getEObject(uri);
if(obj instanceof Operation) {
operationPage.getEditor().setActivePage(operationPage.getId());
operationPage.getBlock().getViewer().setSelection(new StructuredSelection(obj), true);
}else if(obj instanceof RevisionHistory) {
historyPage.getEditor().setActivePage(historyPage.getId());
historyPage.getColumnViewer().setSelection(new StructuredSelection(obj), true);
}else {
setSelection(obj);
}
// if(obj instanceof MetadataItem) {
// getMetaDataItemPage().getEditor().setActivePage(getMetaDataItemPage().getId());
// getMetaDataItemPage().getColumnViewer().setSelection(new StructuredSelection(obj), true);
// }else if(obj instanceof Operation) {
// operationPage.getEditor().setActivePage(operationPage.getId());
// operationPage.getBlock().getViewer().setSelection(new StructuredSelection(obj), true);
// }else if(obj instanceof RevisionHistory) {
// historyPage.getEditor().setActivePage(historyPage.getId());
// historyPage.getColumnViewer().setSelection(new StructuredSelection(obj), true);
// }else if(obj instanceof DictionaryItem) {
// getMetaDataItemPage().getEditor().setActivePage(getMetaDataItemPage().getId());
// getMetaDataItemPage().getColumnViewer().setSelection(new StructuredSelection(obj.eContainer()), true);
// ((DictionaryListPage)getMetaDataItemPage()).getDetailColumnViewer().setSelection(new StructuredSelection(obj), true);
// }
} catch (CoreException e) {
e.printStackTrace();
}
}
};
}
return super.getAdapter(adapter);
}
/* (non-Javadoc)
* @see org.eclipse.ui.forms.editor.FormEditor#addPages()
*/
@Override
protected void addPages() {
try {
addPage(addMetadataItemPage());
operationPage = new OperationEditPage(this, "oparetion", "�û�����");
addPage(operationPage);
historyPage = new RevisionHistoryListPage(this, "histroy", "����Ϣ");
addPage(historyPage);
// 2013-05-15 sundl ֻ����ref nature�����overviewҳ��
// ע�����������Ϊ�����Ϲ��̵ļ����ԣ���ref nature�IJ���ʾ���ýڵ㣻��ref nature�IJ���ʾ���ýڵ�
IARESResource res = getARESResource();
if (res == null)
return;
IARESProject proj = res.getARESProject();
if (proj != null && !ARESProject.hasRefNature(proj.getProject())) {
EMFFormPage overview = addMetadataItemOverViewPage();
if (overview != null)
addPage(overview);
}
} catch (PartInitException e) {
e.printStackTrace();
}
}
/**
* Ҫ��ӵ�Ԫ���ݻ���ҳ
* @return
*/
protected abstract EMFFormPage addMetadataItemPage();
/**
* gotoMarker
* @param element
*/
protected abstract void setSelection(Object element);
/**
* Ҫ��ӵ�Ԫ���ݻ���ҳ
* @return
*/
protected abstract EMFFormPage addMetadataItemOverViewPage();
}