/* ***************************************************************************** * JFire - it's hot - Free ERP System - http://jfire.org * * Copyright (C) 2004-2005 NightLabs - http://NightLabs.org * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, * * Boston, MA 02110-1301 USA * * * * Or get it online : * * http://www.gnu.org/copyleft/lesser.html * * * * * ******************************************************************************/ package org.nightlabs.jfire.reporting.admin.parameter.ui.page; import java.util.EventObject; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.birt.report.designer.internal.ui.editors.FileReportProvider; import org.eclipse.birt.report.designer.ui.editors.IReportEditorPage; import org.eclipse.birt.report.designer.ui.editors.IReportProvider; import org.eclipse.birt.report.model.api.ModuleHandle; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.gef.commands.CommandStackListener; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.nightlabs.base.ui.composite.XComposite; import org.nightlabs.base.ui.composite.XComposite.LayoutMode; import org.nightlabs.jfire.reporting.admin.parameter.ui.ReportParameterEditor; import org.nightlabs.jfire.reporting.admin.parameter.ui.editpart.ValueAcquisitionSetupEditPart; import org.nightlabs.jfire.reporting.admin.ui.layout.editor.action.IActionUpdateDelegate; import org.nightlabs.jfire.reporting.ui.viewer.ReportViewer; /** * A page for the Report Designer that lets the user preview * his reports within the JFire server environment. * * It uses an adapted {@link ReportViewer} to * view ReportLayouts. * * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> * */ public class ParameterAcquisitionEditorPage extends ReportParameterEditor implements IReportEditorPage, IActionUpdateDelegate { /** * Logger used by this class. */ private static final Logger logger = Logger.getLogger(ParameterAcquisitionEditorPage.class); public static final String ID_PAGE = ParameterAcquisitionEditorPage.class.getName(); private Object model; private IReportProvider provider; private XComposite wrapper; // private XComposite topWrapper; private int staleType; private Control control; private FormEditor editor; private int index; @Override public void createPartControl(Composite arg0) { wrapper = new XComposite(arg0, SWT.BORDER, LayoutMode.TIGHT_WRAPPER); wrapper.setLayout(new FillLayout()); super.createPartControl(wrapper); control = wrapper; getCommandStack().addCommandStackListener(new CommandStackListener() { public void commandStackChanged(EventObject event) { if (getEditor() != null) getEditor().editorDirtyStateChanged(); } }); // ModelNotificationManager.sharedInstance().addPropertyChangeListener(null, new PropertyChangeListener() { // public void propertyChange(PropertyChangeEvent evt) { // getEditor().editorDirtyStateChanged(); // } // }); } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getPartControl() */ public Control getPartControl() { // logger.debug("getPartControl returning "+control); return control; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#initialize(org.eclipse.ui.forms.editor.FormEditor) */ public void initialize(FormEditor editor) { logger.debug("initialize "+editor); //$NON-NLS-1$ this.editor = editor; } /* * (non-Javadoc) * @see org.eclipse.birt.report.designer.ui.editors.IReportEditorPage#onBroughtToTop(org.eclipse.birt.report.designer.ui.editors.IReportEditorPage) */ public boolean onBroughtToTop(IReportEditorPage prePage) { logger.debug("On brought to top "); //$NON-NLS-1$ List rootChildren = getRootEditPart().getChildren(); if (rootChildren.size() > 0 ) { if (rootChildren.get(0) instanceof ValueAcquisitionSetupEditPart) ((ValueAcquisitionSetupEditPart)rootChildren.get(0)).clearAndRefresh(); } return true; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#canLeaveThePage() */ public boolean canLeaveThePage() { logger.debug("Can leave page"); //$NON-NLS-1$ return true; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getEditor() */ public FormEditor getEditor() { logger.debug("getEditor returning "+editor); //$NON-NLS-1$ return editor; } /* * (non-Javadoc) * @see org.eclipse.birt.report.designer.ui.editors.IReportEditorPage#getStaleType() */ public int getStaleType() { logger.debug("getStaleType returning "+staleType); //$NON-NLS-1$ return staleType; } /* * (non-Javadoc) * @see org.eclipse.birt.report.designer.ui.editors.IReportEditorPage#markPageStale(int) */ public void markPageStale(int type) { logger.debug("setStaleType to "+type); //$NON-NLS-1$ staleType = type; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getId() */ public String getId() { logger.debug("getId returning "+ID_PAGE); //$NON-NLS-1$ return ID_PAGE; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getIndex() */ public int getIndex() { logger.debug("getIndex returning "+index); //$NON-NLS-1$ return index; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#getManagedForm() */ public IManagedForm getManagedForm() { logger.debug("getManagedForm returning "+null); //$NON-NLS-1$ return null; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#isActive() */ public boolean isActive() { logger.debug("isActive returning "+false); //$NON-NLS-1$ return false; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#isEditor() */ public boolean isEditor() { logger.debug("isEditor returning "+false); //$NON-NLS-1$ return false; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#selectReveal(java.lang.Object) */ public boolean selectReveal(Object object) { logger.debug("selectReveal returning "+false); //$NON-NLS-1$ return false; } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#setActive(boolean) */ public void setActive(boolean active) { logger.debug("setActive "+active); //$NON-NLS-1$ } /* * (non-Javadoc) * @see org.eclipse.ui.forms.editor.IFormPage#setIndex(int) */ public void setIndex(int index) { logger.debug("setIndex "+index); //$NON-NLS-1$ this.index = index; } /* * (non-Javadoc) * @see org.eclipse.ui.part.EditorPart#setInput(org.eclipse.ui.IEditorInput) */ @Override public void setInput(IEditorInput input) { logger.debug("setInput "+input); //$NON-NLS-1$ super.setInput(input); } /** * {@inheritDoc} * <p> * Returns the provider from the editor set in {@link #initialize(FormEditor)} * in order to share the provider with the other editor pages. * * @see org.nightlabs.jfire.reporting.admin.ui.layout.editor.preview.ReportLayoutPreviewEditor#getProvider() */ protected IReportProvider getProvider() { IReportProvider provider = null; if (editor != null) provider = (IReportProvider) editor.getAdapter(IReportProvider.class); if (provider != null) setProvider(provider); if(provider == null) { provider = getDefaultProvider(); } return provider; } public Object getModel() { if (model == null) model = getProvider().getReportModuleHandle(getEditorInput()); return model; } protected boolean isDirtyModel() { if (getModel() != null && getModel() instanceof ModuleHandle) { return ((ModuleHandle) getModel()).needsSave(); } return false; } @Override public void doSave(IProgressMonitor monitor) { super.doSave(monitor); if (getEditor() != null) getEditor().editorDirtyStateChanged(); } protected IReportProvider getDefaultProvider() { if (provider == null) { provider = new FileReportProvider(); } return provider; } protected void setProvider(IReportProvider provider) { this.provider = provider; } // @Override // public void init(IEditorSite site, IEditorInput input) throws PartInitException { // super.setSite(site); // setInput(input); // initializeActionRegistry(); // } // @Override // public boolean isDirty() { // return super.isDirty(); // } @Override public boolean isSaveAsAllowed() { return false; } @Override public void setFocus() { } @Override public ModuleHandle getReportHandle() { return (ModuleHandle) getModel(); } public void updateActions() { super.updateActions(getSelectionActions()); super.updateActions(getPropertyActions()); super.updateActions(getStackActions()); } @Override public Object getAdapter(Class type) { if (type == IActionUpdateDelegate.class) return this; return super.getAdapter(type); } }