-package org.simantics.document.linking.wizard;\r
-\r
-import java.io.File;\r
-import java.lang.reflect.InvocationTargetException;\r
-\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.jface.operation.IRunnableWithProgress;\r
-import org.eclipse.jface.wizard.WizardPage;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.ui.PartInitException;\r
-import org.simantics.Simantics;\r
-import org.simantics.db.Resource;\r
-import org.simantics.document.linking.report.ExportToPDF;\r
-import org.simantics.document.linking.report.templates.ReportWriter;\r
-import org.simantics.editors.Editors;\r
-import org.simantics.utils.ui.ErrorLogger;\r
-import org.simantics.utils.ui.ExceptionUtils;\r
-\r
-\r
-/**\r
- * Wizard page for generating a report.\r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public class ReportGeneratePage extends WizardPage {\r
- \r
- private Resource model;\r
- private String filename;\r
- private ReportWriter<?> reportWriter;\r
- \r
- \r
- private Label fileLabel;\r
- private Label reportLabel;\r
- private Label statusLabel;\r
- private Button generateButton;\r
- private Button showButton;\r
- private boolean generated = false;\r
- \r
- protected ReportGeneratePage(String pageName) {\r
- super(pageName,pageName,null);\r
- setGenerated(false);\r
- }\r
- \r
- public void setFilename(String filename) {\r
- this.filename = filename;\r
- setGenerated(false);\r
- }\r
- \r
- public void setReportWriter(ReportWriter<?> reportWriter) {\r
- this.reportWriter = reportWriter;\r
- setGenerated(false);\r
- }\r
- \r
- public void setModel(Resource model) {\r
- this.model = model;\r
- setGenerated(false);\r
- }\r
-\r
- @Override\r
- public void createControl(Composite parent) {\r
- Composite composite = new Composite(parent, SWT.NONE);\r
- composite.setLayout(new GridLayout(2,false));\r
- Label label = new Label(composite, SWT.NONE);\r
- label.setText("File:");\r
- fileLabel = new Label(composite, SWT.NONE);\r
- label = new Label(composite, SWT.NONE);\r
- label.setText("Report:");\r
- reportLabel = new Label(composite, SWT.NONE);\r
- label = new Label(composite, SWT.NONE);\r
- label.setText("Status:");\r
- this.statusLabel = new Label(composite, SWT.NONE);\r
- this.statusLabel.setText("Report has not been generated");\r
- generateButton = new Button(composite, SWT.PUSH);\r
- generateButton.setText("Generate report");\r
- generateButton.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- generate();\r
- }\r
- });\r
- showButton = new Button(composite, SWT.PUSH);\r
- showButton.setText("Show Report");\r
- showButton.addSelectionListener(new SelectionAdapter() {\r
- \r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- File file = new File(filename);\r
- if (file.exists() && file.canRead()) {\r
- try {\r
- Editors.openExternalEditor(file);\r
- } catch (PartInitException err) {\r
- ExceptionUtils.logAndShowError(err);\r
- }\r
- }\r
- }\r
- });\r
- showButton.setEnabled(false);\r
- updateContent();\r
- setControl(composite);\r
- }\r
- \r
- private void updateContent() {\r
- fileLabel.setText(filename == null ? "File has not been selected" : filename);\r
- reportLabel.setText(reportWriter == null ? "Report Writer has not been selected" : reportWriter.getName());\r
- generateButton.setEnabled(filename != null && reportWriter != null && model != null);\r
- showButton.setEnabled(generated);\r
- generateButton.setEnabled(!generated);\r
- if (!generated)\r
- statusLabel.setText("Report has not been generated");\r
- }\r
- \r
- public void setGenerated(boolean b) {\r
- generated = b;\r
- setPageComplete(generated);\r
- }\r
- \r
- private void generate() {\r
- generateButton.setEnabled(false);\r
- statusLabel.setText("Generating report");\r
- try {\r
- getWizard().getContainer().run(true, false, new IRunnableWithProgress() {\r
- \r
- @Override\r
- public void run(final IProgressMonitor monitor) throws InvocationTargetException,\r
- InterruptedException {\r
-\r
- ExportToPDF exportToPDF = new ExportToPDF(Simantics.getSession(), model);\r
- final IStatus status = exportToPDF.export(filename, reportWriter, monitor);\r
- Display.getDefault().asyncExec(new Runnable() {\r
- public void run() {\r
- if (!statusLabel.isDisposed()) {\r
- if (status.isOK())\r
- statusLabel.setText(status.getMessage());\r
- else {\r
- statusLabel.setText(status.getMessage());\r
- ExceptionUtils.logError(status.getException());\r
- }\r
- setPageComplete(true); \r
- ((Composite)getControl()).layout(true, true);\r
- }\r
- \r
- };\r
- });\r
- monitor.done();\r
- }\r
- });\r
- } catch (InterruptedException err) {\r
- setErrorMessage("Report failed: " + err.getMessage());\r
- ErrorLogger.defaultLogError("Report failed.",err);\r
- statusLabel.setText("Report failed.");\r
- } catch (InvocationTargetException e) {\r
- Throwable err = e.getCause();\r
- setErrorMessage("Report failed: " + err.getMessage());\r
- ErrorLogger.defaultLogError("Report failed.",err);\r
- statusLabel.setText("Report failed.");\r
- }\r
- setGenerated(true);\r
- \r
- showButton.setEnabled(true);\r
- generateButton.setEnabled(false);\r
- getContainer().updateButtons();\r
- }\r
- \r
- @Override\r
- public void setVisible(boolean visible) {\r
- if (visible) {\r
- updateContent();\r
- } else {\r
- setGenerated(false);\r
- }\r
- super.setVisible(visible);\r
- }\r
- \r
- public boolean isGenerated() {\r
- return generated;\r
- }\r
-\r
-}\r
+package org.simantics.document.linking.wizard;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.PartInitException;
+import org.simantics.Simantics;
+import org.simantics.db.Resource;
+import org.simantics.document.linking.report.ExportToPDF;
+import org.simantics.document.linking.report.templates.ReportWriter;
+import org.simantics.editors.Editors;
+import org.simantics.utils.ui.ErrorLogger;
+import org.simantics.utils.ui.ExceptionUtils;
+
+
+/**
+ * Wizard page for generating a report.
+ *
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public class ReportGeneratePage extends WizardPage {
+
+ private Resource model;
+ private String filename;
+ private ReportWriter<?> reportWriter;
+
+
+ private Label fileLabel;
+ private Label reportLabel;
+ private Label statusLabel;
+ private Button generateButton;
+ private Button showButton;
+ private boolean generated = false;
+
+ protected ReportGeneratePage(String pageName) {
+ super(pageName,pageName,null);
+ setGenerated(false);
+ }
+
+ public void setFilename(String filename) {
+ this.filename = filename;
+ setGenerated(false);
+ }
+
+ public void setReportWriter(ReportWriter<?> reportWriter) {
+ this.reportWriter = reportWriter;
+ setGenerated(false);
+ }
+
+ public void setModel(Resource model) {
+ this.model = model;
+ setGenerated(false);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(2,false));
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("File:");
+ fileLabel = new Label(composite, SWT.NONE);
+ label = new Label(composite, SWT.NONE);
+ label.setText("Report:");
+ reportLabel = new Label(composite, SWT.NONE);
+ label = new Label(composite, SWT.NONE);
+ label.setText("Status:");
+ this.statusLabel = new Label(composite, SWT.NONE);
+ this.statusLabel.setText("Report has not been generated");
+ generateButton = new Button(composite, SWT.PUSH);
+ generateButton.setText("Generate report");
+ generateButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ generate();
+ }
+ });
+ showButton = new Button(composite, SWT.PUSH);
+ showButton.setText("Show Report");
+ showButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ File file = new File(filename);
+ if (file.exists() && file.canRead()) {
+ try {
+ Editors.openExternalEditor(file);
+ } catch (PartInitException err) {
+ ExceptionUtils.logAndShowError(err);
+ }
+ }
+ }
+ });
+ showButton.setEnabled(false);
+ updateContent();
+ setControl(composite);
+ }
+
+ private void updateContent() {
+ fileLabel.setText(filename == null ? "File has not been selected" : filename);
+ reportLabel.setText(reportWriter == null ? "Report Writer has not been selected" : reportWriter.getName());
+ generateButton.setEnabled(filename != null && reportWriter != null && model != null);
+ showButton.setEnabled(generated);
+ generateButton.setEnabled(!generated);
+ if (!generated)
+ statusLabel.setText("Report has not been generated");
+ }
+
+ public void setGenerated(boolean b) {
+ generated = b;
+ setPageComplete(generated);
+ }
+
+ private void generate() {
+ generateButton.setEnabled(false);
+ statusLabel.setText("Generating report");
+ try {
+ getWizard().getContainer().run(true, false, new IRunnableWithProgress() {
+
+ @Override
+ public void run(final IProgressMonitor monitor) throws InvocationTargetException,
+ InterruptedException {
+
+ ExportToPDF exportToPDF = new ExportToPDF(Simantics.getSession(), model);
+ final IStatus status = exportToPDF.export(filename, reportWriter, monitor);
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ if (!statusLabel.isDisposed()) {
+ if (status.isOK())
+ statusLabel.setText(status.getMessage());
+ else {
+ statusLabel.setText(status.getMessage());
+ ExceptionUtils.logError(status.getException());
+ }
+ setPageComplete(true);
+ ((Composite)getControl()).layout(true, true);
+ }
+
+ };
+ });
+ monitor.done();
+ }
+ });
+ } catch (InterruptedException err) {
+ setErrorMessage("Report failed: " + err.getMessage());
+ ErrorLogger.defaultLogError("Report failed.",err);
+ statusLabel.setText("Report failed.");
+ } catch (InvocationTargetException e) {
+ Throwable err = e.getCause();
+ setErrorMessage("Report failed: " + err.getMessage());
+ ErrorLogger.defaultLogError("Report failed.",err);
+ statusLabel.setText("Report failed.");
+ }
+ setGenerated(true);
+
+ showButton.setEnabled(true);
+ generateButton.setEnabled(false);
+ getContainer().updateButtons();
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ if (visible) {
+ updateContent();
+ } else {
+ setGenerated(false);
+ }
+ super.setVisible(visible);
+ }
+
+ public boolean isGenerated() {
+ return generated;
+ }
+
+}