/**
*
*/
package org.nightlabs.jfire.reporting.ui.viewer.editor.action;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.Action;
import org.nightlabs.base.ui.job.Job;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.base.ui.resource.SharedImages.ImageDimension;
import org.nightlabs.jfire.reporting.ui.ReportingPlugin;
import org.nightlabs.jfire.reporting.ui.layout.action.print.PrintReportLayoutUtil;
import org.nightlabs.jfire.reporting.ui.resource.Messages;
import org.nightlabs.jfire.reporting.ui.viewer.editor.ReportViewerEditor;
import org.nightlabs.progress.ProgressMonitor;
/**
* Prints the entryURL of a report shown by an {@link ReportViewerEditor}.
*
* @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
*
*/
public class PrintLayoutFromViewerAction extends Action {
private ReportViewerEditor reportViewerEditor;
/**
* @param text
*/
public PrintLayoutFromViewerAction(ReportViewerEditor reportViewerEditor) {
super(Messages.getString("org.nightlabs.jfire.reporting.ui.viewer.editor.action.PrintLayoutFromViewerAction.text")); //$NON-NLS-1$
setImageDescriptor(SharedImages.getSharedImageDescriptor(ReportingPlugin.getDefault(), PrintLayoutFromViewerAction.class, "", ImageDimension._24x24)); //$NON-NLS-1$
this.reportViewerEditor = reportViewerEditor;
}
@Override
public void run() {
Job printJob = new Job(Messages.getString("org.nightlabs.jfire.reporting.ui.viewer.editor.action.PrintLayoutFromViewerAction.printJob.name")) { //$NON-NLS-1$
@Override
protected IStatus run(ProgressMonitor monitor) {
try {
// PrintReportLayoutUtil.printReportLayout(
// reportViewerEditor.getReportRegistryItemID(),
// new File(reportViewerEditor.getReportEntryURL().toURI()),
// monitor
// );
if (!PrintReportLayoutUtil.canPrint(reportViewerEditor.getPreparedRenderedReportLayout().getRenderedReportLayout().getHeader().getOutputFormat()))
return Status.OK_STATUS;
PrintReportLayoutUtil.printReportLayout(
reportViewerEditor.getReportRegistryItemID(),
reportViewerEditor.getPreparedRenderedReportLayout().getEntryFile(),
monitor
);
} catch (Exception e) {
throw new RuntimeException(e);
}
return Status.OK_STATUS;
}
};
printJob.schedule();
}
public void setReportViewerEditor(ReportViewerEditor reportViewerEditor) {
this.reportViewerEditor = reportViewerEditor;
}
}