/**
* Դ�������ƣ�SequenceEMFFormEditor.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
* ģ�����ƣ�com.hundsun.ares.studio.jres.database.sequence.ui
* ����˵����$desc
* ����ĵ���
* ���ߣ�
*/
package com.hundsun.ares.studio.jres.database.oracle.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.database.ui.editors.DBSQLPreviewPage;
import com.hundsun.ares.studio.jres.database.ui.editors.DatabaseEMFFormEditor;
import com.hundsun.ares.studio.jres.model.database.oracle.OraclePackage;
import com.hundsun.ares.studio.ui.editor.blocks.RevisionHistoryListPage;
import com.hundsun.ares.studio.ui.editor.text.TextEditorInput;
import com.hundsun.ares.studio.ui.extendpoint.manager.IExtendedPage;
import com.hundsun.ares.studio.ui.page.ExtendPageWithMyDirtySystem;
/**
* @author wangbin
*
*/
public class SequenceEMFFormEditor extends DatabaseEMFFormEditor {
//���б༭ҳ��
private SequenceInfoPage sequenceInfoPage;
//�û�����Ϣҳ��
protected RevisionHistoryListPage historyPage;
@Override
protected EClass getInfoClass() {
return OraclePackage.Literals.SEQUENCE_RESOURCE_DATA;
}
@Override
protected void addPages() {
try {
sequenceInfoPage = new SequenceInfoPage(this, "sequence", "������Ϣ");
addPage(sequenceInfoPage);
addPage(new DBSQLPreviewPage(this, "preview", "SQLԤ��"), new TextEditorInput());
historyPage = new RevisionHistoryListPage(this ,"histroy", "����Ϣ");
addPage(historyPage);
createExtendPage();
// ���SQLԤ����֧��
addPageChangedListener(new SequenceSQLPreviewUpdater());
} catch (PartInitException e) {
e.printStackTrace();
}
}
@SuppressWarnings({ "deprecation", "rawtypes" })
@Override
protected void handleBeforeSave() {
for (IExtendedPage page : extendsPages) {
if (page instanceof ExtendPageWithMyDirtySystem)
((ExtendPageWithMyDirtySystem) page).doSave();
}
super.handleBeforeSave();
}
@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 RevisionHistory) {
historyPage.getEditor().setActivePage(historyPage.getId());
historyPage.getColumnViewer().setSelection(new StructuredSelection(obj), true);
}
else
{
sequenceInfoPage.getEditor().setActivePage(sequenceInfoPage.getId());
}
} catch (CoreException e) {
e.printStackTrace();
}
}
};
}
return super.getAdapter(adapter);
}
}