1 package com.stateofflow.eclipse.metrics.export.wizard;
2
3 import org.eclipse.core.runtime.CoreException;
4 import org.eclipse.core.runtime.QualifiedName;
5 import org.eclipse.jface.preference.IntegerFieldEditor;
6 import org.eclipse.swt.widgets.Button;
7
8 import com.stateofflow.eclipse.metrics.swt.SWTBuilder;
9
10 class HtmlExportAgent implements Agent {
11 private final Button exportEnabledCheckbox;
12 private final IntegerFieldEditor rowsPerPageEditor;
13 private final Button exportImagesCheckbox;
14 private final Button exportJavaCheckbox;
15
16 public HtmlExportAgent(final SWTBuilder builder, final MetricsExportWizardPage metricsExportWizardPage) {
17 builder.addGroup("HTML").setGridLayout(1);
18 exportEnabledCheckbox = builder.createCheckbox("Export HTML", metricsExportWizardPage);
19 exportJavaCheckbox = builder.createCheckbox("Export Java", metricsExportWizardPage);
20 exportImagesCheckbox = builder.createCheckbox("Histograms and Dashboard");
21 builder.addComposite().setGridLayout(2);
22 rowsPerPageEditor = builder.createIntegerFieldEditor("Rows per Page:", 4, metricsExportWizardPage);
23 builder.pop().pop();
24 }
25
26 public int getRowsPerPage() {
27 return isRowsPerPageEmpty() ? Integer.MAX_VALUE : rowsPerPageEditor.getIntValue();
28 }
29
30 private boolean isRowsPerPageEmpty() {
31 return rowsPerPageEditor.getStringValue().trim().length() == 0;
32 }
33
34 public boolean isEnabled() {
35 return exportEnabledCheckbox.getSelection();
36 }
37
38 public boolean isImageProductionEnabled() {
39 return exportImagesCheckbox.getSelection();
40 }
41
42 public boolean isJavaExportEnabled() {
43 return exportJavaCheckbox.getSelection();
44 }
45
46 private void initialiseExportEnabledEditor(final ProjectProperties properties) throws CoreException {
47 initialiseBooleanEditor(properties, exportEnabledCheckbox, MetricsExportWizard.HTML_EXPORT_ENABLED_QUALIFIED_NAME, true);
48 }
49
50 private void initialiseExportJavaEditor(final ProjectProperties properties) throws CoreException {
51 initialiseBooleanEditor(properties, exportJavaCheckbox, MetricsExportWizard.HTML_EXPORT_JAVA_ENABLED_QUALIFIED_NAME, true);
52 }
53
54 private void initialiseImagesEnabledEditor(final ProjectProperties properties) throws CoreException {
55 initialiseBooleanEditor(properties, exportImagesCheckbox, MetricsExportWizard.HTML_IMAGE_PRODUCTION_ENABLED_QUALIFIED_NAME, true);
56 }
57
58 private void initialiseBooleanEditor(final ProjectProperties properties, final Button checkbox, final QualifiedName propertyName, final boolean defaultValue) throws CoreException {
59 checkbox.setSelection(properties.getBoolean(propertyName, defaultValue));
60 }
61
62 private void initialiseRowsPerPageEditor(final ProjectProperties properties) throws CoreException {
63 final String rowsPerPage = properties.getString(MetricsExportWizard.HTML_ROWS_PER_PAGE_QUALIFIED_NAME);
64 if (rowsPerPage != null && !rowsPerPage.equals(Integer.toString(Integer.MAX_VALUE))) {
65 rowsPerPageEditor.setStringValue(rowsPerPage);
66 } else {
67 rowsPerPageEditor.setStringValue("");
68 }
69 }
70
71 private boolean isRowsPerPageValid() {
72 return !isEnabled() || isRowsPerPageEmpty() || rowsPerPageEditor.isValid() && rowsPerPageEditor.getIntValue() > 0;
73 }
74
75 public void initialise(final ProjectProperties properties) throws CoreException {
76 initialiseExportEnabledEditor(properties);
77 initialiseExportJavaEditor(properties);
78 initialiseRowsPerPageEditor(properties);
79 initialiseImagesEnabledEditor(properties);
80 }
81
82 public void updateStatus(final StatusUpdateable updateable) {
83 updateable.updateStatus(isRowsPerPageValid(), "Rows per page must be a positive integer or blank (no paging)");
84 }
85 }
86