package org.nightlabs.jfire.reporting.admin.ui.layout.editor.xml; import org.apache.log4j.Logger; import org.eclipse.birt.report.designer.ui.editors.pages.ReportXMLSourceEditorFormPage; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.IMemento; import org.eclipse.ui.PartInitException; import org.nightlabs.jfire.reporting.admin.ui.layout.editor.JFireRemoteReportEditorInput; /** * @author sschefczyk * */ public class JFireReportXMLSourceEditorFormPage extends ReportXMLSourceEditorFormPage { private static final Logger logger = Logger.getLogger(JFireReportXMLSourceEditorFormPage.class); public static final String ID_PAGE = JFireReportXMLSourceEditorFormPage.class.getName(); private JFireRemoteReportEditorInput editorInput; @Override public void init(IEditorSite site, IEditorInput input) throws PartInitException { super.init(site, input); if (input instanceof JFireRemoteReportEditorInput) { this.editorInput = (JFireRemoteReportEditorInput) input; logger.info("init with input: " + input); } else throw new IllegalArgumentException("input NOT instanceof JFireRemoteReportEditorInput!"); } @Override public void saveState(IMemento memento) { logger.info("saveState:"); super.saveState(memento); } @Override public IEditorInput getEditorInput() { IEditorInput editorInput = super.getEditorInput(); logger.info("getEditorInput() " + editorInput); return editorInput; } @Override public boolean canLeaveThePage() { return super.canLeaveThePage(); } @Override protected void doSetInput(IEditorInput input) throws CoreException { if (input instanceof JFireRemoteReportEditorInput) { super.doSetInput(input); } else { // we only accept JFireRemoteReportEditorInput } } @Override public void doSave(IProgressMonitor progressMonitor) { //store locally as file in jfire-client-runtime: logger.info("doSave:"); super.doSave(progressMonitor); //store remote-side: JFireRemoteReportEditorInput.saveRemoteLayout(editorInput, progressMonitor); } }