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.EClass;
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.model.RevisionHistory;
import com.hundsun.ares.studio.jres.model.metadata.Function;
import com.hundsun.ares.studio.jres.model.metadata.MenuList;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
import com.hundsun.ares.studio.jres.model.metadata.Operation;
import com.hundsun.ares.studio.ui.editor.EMFFormEditor;
import com.hundsun.ares.studio.ui.editor.blocks.RevisionHistoryListPage;
import com.hundsun.ares.studio.ui.editor.sync.JRESDefaultSyncnizeUnit;
import com.hundsun.ares.studio.ui.editor.sync.JRESEditorSyncManager;
public class MenuEditor extends EMFFormEditor {
protected OperationEditPage operationPage;
protected RevisionHistoryListPage historyPage;
private MenuListPage metadataItemPage;
private FunctionPage functionPage;
@Override
protected EClass getInfoClass() {
return MetadataPackage.Literals.MENU_LIST;
}
@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 if(obj instanceof Function) {
functionPage.getEditor().setActivePage(functionPage.getId());
functionPage.getColumnViewer().setSelection(new StructuredSelection(obj), true);
}else {
setSelection(obj);
}
} catch (CoreException e) {
e.printStackTrace();
}
}
};
}
return super.getAdapter(adapter);
}
protected void setSelection(EObject element) {
if(element instanceof MenuList){
metadataItemPage.getMenuListViewerBlock().getColumnViewer().setSelection(new StructuredSelection(element), true);
}else{
metadataItemPage.getMenuListViewerBlock().getColumnViewer().setSelection(new StructuredSelection(((EObject)element).eContainer()), true);
metadataItemPage.getFunctionProxyViewerBlock().getColumnViewer().setSelection(new StructuredSelection(element), true);
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.forms.editor.FormEditor#addPages()
*/
@Override
protected void addPages() {
// //����ļ�ͬ��
// fileSyncUnit = new JRESDefaultSyncnizeUnit(this);
// JRESEditorSyncManager.getInstance().addSyncUnit(fileSyncUnit);
try {
metadataItemPage = new MenuListPage(this, "list", "�˵��빦��");
addPage(metadataItemPage);
functionPage = new FunctionPage(this, "function", "���ܶ���");
addPage(functionPage);
operationPage = new OperationEditPage(this, "oparetion", "�û�����");
addPage(operationPage);
historyPage = new RevisionHistoryListPage(this, "histroy", "����Ϣ");
addPage(historyPage);
} catch (PartInitException e) {
e.printStackTrace();
}
}
/**
* @return the functionPage
*/
public FunctionPage getFunctionPage() {
return functionPage;
}
}