summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/configuration/ConfigurationCompositeBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/configuration/ConfigurationCompositeBase.java')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/configuration/ConfigurationCompositeBase.java145
1 files changed, 145 insertions, 0 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/configuration/ConfigurationCompositeBase.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/configuration/ConfigurationCompositeBase.java
new file mode 100644
index 00000000..6d2bdf0f
--- /dev/null
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/configuration/ConfigurationCompositeBase.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://joinup.ec.europa.eu/software/page/eupl
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ */
+package at.asit.pdfover.gui.composites.configuration;
+
+
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+import at.asit.pdfover.gui.composites.StateComposite;
+import at.asit.pdfover.gui.workflow.PDFSigner;
+import at.asit.pdfover.gui.workflow.config.ConfigManipulator;
+import at.asit.pdfover.gui.workflow.config.ConfigurationContainer;
+import at.asit.pdfover.gui.workflow.config.PersistentConfigProvider;
+import at.asit.pdfover.gui.workflow.states.State;
+
+/**
+ * Base class for configuration composites
+ */
+public abstract class ConfigurationCompositeBase extends StateComposite {
+
+ /**
+ * the configuration container
+ */
+ protected ConfigurationContainer configurationContainer;
+
+ /**
+ * The PDF Signer used to produce signature block preview
+ */
+ protected PDFSigner signer;
+
+ /**
+ * @return the signer
+ */
+ public PDFSigner getSigner() {
+ return this.signer;
+ }
+
+ /**
+ * @param signer the signer to set
+ */
+ public void setSigner(PDFSigner signer) {
+ this.signer = signer;
+ this.signerChanged();
+ }
+
+ /**
+ * Called when the signer is changed!
+ */
+ protected abstract void signerChanged();
+
+ protected static void setFontHeight(Control c, int height)
+ {
+ FontData[] fD = c.getFont().getFontData();
+ fD[0].setHeight(height);
+ c.setFont(new Font(Display.getCurrent(), fD[0]));
+ }
+
+ protected static class AnchorSetter
+ {
+ private final Control c;
+ private final FormData fd = new FormData();
+ private AnchorSetter(Control c) { this.c = c; }
+
+ public void set() { this.c.setLayoutData(this.fd); }
+
+ public AnchorSetter top(FormAttachment a) { fd.top = a; return this; }
+ public AnchorSetter left(FormAttachment a) { fd.left = a; return this; }
+ public AnchorSetter right(FormAttachment a) { fd.right = a; return this; }
+
+ public AnchorSetter top(Control control, int offset) { return top(new FormAttachment(control, offset)); }
+ public AnchorSetter top(int num, int offset) { return top(new FormAttachment(num, offset)); }
+ public AnchorSetter top(int num) { return top(new FormAttachment(num)); }
+
+ public AnchorSetter left(Control control, int offset) { return left(new FormAttachment(control, offset)); }
+ public AnchorSetter left(int num, int offset) { return left(new FormAttachment(num, offset)); }
+ public AnchorSetter left(int num) { return left(new FormAttachment(num)); }
+
+ public AnchorSetter right(Control control, int offset) { return right(new FormAttachment(control, offset)); }
+ public AnchorSetter right(int num, int offset) { return right(new FormAttachment(num, offset)); }
+ public AnchorSetter right(int num) { return right(new FormAttachment(num)); }
+ }
+
+ protected static AnchorSetter anchor(Control c) { return new AnchorSetter(c); }
+
+ /**
+ * @param parent
+ * @param style
+ * @param state
+ * @param configuration
+ */
+ public ConfigurationCompositeBase(Composite parent, int style, State state, ConfigurationContainer configuration) {
+ super(parent, style, state);
+ this.configurationContainer = configuration;
+ }
+
+ /**
+ * Initialize ConfigurationContainer from PersistentConfigProvider
+ * @param provider the PersistentConfigProvider to load config from
+ */
+ public abstract void initConfiguration(PersistentConfigProvider provider);
+
+ /**
+ * Load configuration from ConfigurationContainer
+ */
+ public abstract void loadConfiguration();
+
+ /**
+ * Store configuration from ConfigurationContainer to ConfigManipulator
+ * @param store the ConfigManipulator to store config to
+ * @param provider the PersistentConfigProvider containing the old config
+ */
+ public abstract void storeConfiguration(ConfigManipulator store, PersistentConfigProvider provider);
+
+ /**
+ * Called before exit.
+ * The method validates every setting in the configuration before exit
+ *
+ * There might be settings when the user can decide to ignore a validation exception
+ * (for example the Outputfolder validation)
+ * In this case, the validator throws a ResumableException, which includes the
+ * validator index to resume from (should the user choose to ignore the error)
+ *
+ * @param resumeFrom Resume from this validator index (initially 0)
+ * @throws Exception
+ */
+ public abstract void validateSettings(int resumeFrom) throws Exception;
+}