diff options
39 files changed, 2037 insertions, 506 deletions
diff --git a/trunk/pdf-over-gui/PDFOver.config b/trunk/pdf-over-gui/PDFOver.config new file mode 100644 index 00000000..e77193d5 --- /dev/null +++ b/trunk/pdf-over-gui/PDFOver.config @@ -0,0 +1,9 @@ +#Configuration file was generated! +#Wed Sep 05 13:37:44 CEST 2012 +OUTPUT_FOLDER=/home/andy/PDF +PROXY_PORT=-1 +EMBLEM=/home/andy/fitzek_andreas_l.jpg +SIGNATURE_POSITION= +PROXY_HOST= +MOBILE_NUMBER=+436504892002 +BKU=NONE diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java index b8cd9ea7..6b5914e0 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java @@ -16,19 +16,23 @@ package at.asit.pdfover.gui; // Imports +import java.io.InputStream; import java.util.EnumMap; import java.util.Map; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.custom.StackLayout; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; @@ -37,6 +41,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.composites.StateComposite; +import at.asit.pdfover.gui.controls.MainBarButton; +import at.asit.pdfover.gui.controls.MainBarEndButton; +import at.asit.pdfover.gui.controls.MainBarMiddleButton; +import at.asit.pdfover.gui.controls.MainBarRectangleButton; +import at.asit.pdfover.gui.controls.MainBarStartButton; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.states.ConfigurationUIState; import at.asit.pdfover.gui.workflow.states.OpenState; @@ -48,64 +57,6 @@ import at.asit.pdfover.gui.workflow.states.PositioningState; public class MainWindow { /** - * - */ - private final class ConfigSelectionListener implements SelectionListener { - /** - * - */ - public ConfigSelectionListener() { - // Nothing to do here - } - - @Override - public void widgetSelected(SelectionEvent e) { - MainWindow.this.stateMachine.jumpToState(new ConfigurationUIState( - MainWindow.this.stateMachine)); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - // Nothing to do here - } - } - - /** - * Selection Listener for Position Button - */ - private final class PositionSelectionListener extends SelectionAdapter { - /** - * Empty constructor - */ - public PositionSelectionListener() { - } - - @Override - public void widgetSelected(SelectionEvent e) { - MainWindow.this.stateMachine.jumpToState(new PositioningState( - MainWindow.this.stateMachine)); - } - } - - /** - * Selection Listener for Open Button - */ - private final class DataSourceSelectionListener extends SelectionAdapter { - /** - * Empty constructor - */ - public DataSourceSelectionListener() { - } - - @Override - public void widgetSelected(SelectionEvent e) { - MainWindow.this.stateMachine - .jumpToState(new OpenState( - MainWindow.this.stateMachine)); - } - } - - /** * SFL4J Logger instance **/ static final Logger log = LoggerFactory.getLogger(MainWindow.class); @@ -115,10 +66,10 @@ public class MainWindow { private Composite container; private StackLayout stack; StateMachine stateMachine; - private Button btn_sign; - private Button btn_position; - private Button btn_open; - private Button btn_config; + private MainBarButton btn_sign; + private MainBarButton btn_position; + private MainBarButton btn_open; + private MainBarButton btn_config; /** * Main bar Buttons @@ -127,7 +78,9 @@ public class MainWindow { CONFIG, OPEN, POSITION, SIGN, FINAL } - private Map<Buttons, Button> buttonMap; + private Map<Buttons, MainBarButton> buttonMap; + + private FormData mainBarFormData; /** * Default constructor @@ -140,7 +93,7 @@ public class MainWindow { this.stateMachine = stateMachine; - this.buttonMap = new EnumMap<MainWindow.Buttons, Button>(Buttons.class); + this.buttonMap = new EnumMap<MainWindow.Buttons, MainBarButton>(Buttons.class); } /** @@ -152,7 +105,7 @@ public class MainWindow { if (this.getShell().isDisposed()) { return; } - this.lbl_status.setText("[DEBUG]: Current workflow state: " + value); + this.lbl_status.setText("[DEBUG]: Current workflow state: " + value); //$NON-NLS-1$ } /** @@ -161,7 +114,7 @@ public class MainWindow { * @param ctrl */ public void setTopControl(Control ctrl) { - log.debug("Top control: " + ctrl.toString()); + log.debug("Top control: " + ctrl.toString()); //$NON-NLS-1$ this.stack.topControl = ctrl; this.doLayout(); } @@ -175,7 +128,9 @@ public class MainWindow { this.shell.layout(true, true); // Note: SWT only layouts children! No grandchildren! if (ctrl instanceof StateComposite) { - ((StateComposite) ctrl).doLayout(); + if (!ctrl.isDisposed()) { + ((StateComposite) ctrl).doLayout(); + } } } @@ -229,62 +184,127 @@ public class MainWindow { getShell().setLayout(new FormLayout()); Composite composite = new Composite(getShell(), SWT.NONE); - FormData fd_composite = new FormData(); - fd_composite.left = new FormAttachment(0, 5); - fd_composite.right = new FormAttachment(100, -5); - fd_composite.top = new FormAttachment(0, 5); - fd_composite.bottom = new FormAttachment(0, 40); - composite.setLayoutData(fd_composite); composite.setLayout(new FormLayout()); - - this.btn_config = new Button(composite, SWT.NONE); - FormData fd_config = new FormData(); - fd_config.left = new FormAttachment(0, 0); - fd_config.right = new FormAttachment(25, 0); - fd_config.top = new FormAttachment(0, 0); - fd_config.bottom = new FormAttachment(100, 0); - this.btn_config.setLayoutData(fd_config); - this.btn_config.setText("Config ..."); - this.btn_config.addSelectionListener(new ConfigSelectionListener()); + this.mainBarFormData = new FormData(); + this.mainBarFormData.left = new FormAttachment(0, 5); + this.mainBarFormData.right = new FormAttachment(100, -5); + this.mainBarFormData.top = new FormAttachment(0, 5); + this.mainBarFormData.bottom = new FormAttachment(0, 60); + composite.setLayoutData(this.mainBarFormData); + + this.btn_config = new MainBarRectangleButton(composite, SWT.NONE); + FormData fd_btn_config = new FormData(); + fd_btn_config.bottom = new FormAttachment(0, 45); + fd_btn_config.right = new FormAttachment(10,0); + fd_btn_config.top = new FormAttachment(0); + fd_btn_config.left = new FormAttachment(0, 2); + this.btn_config.setLayoutData(fd_btn_config); + this.btn_config.setText("Config"); + this.btn_config.addMouseListener(new MouseListener() { + + @Override + public void mouseUp(MouseEvent e) { + MainWindow.this.stateMachine.jumpToState(new ConfigurationUIState( + MainWindow.this.stateMachine)); + } + + @Override + public void mouseDown(MouseEvent e) { + // NOTHING TO DO HERE + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + // NOTHING TO DO HERE + } + }); this.buttonMap.put(Buttons.CONFIG, this.btn_config); - - this.btn_open = new Button(composite, SWT.NONE); - FormData fd_open = new FormData(); - fd_open.left = new FormAttachment(25, 0); - fd_open.right = new FormAttachment(50, 0); - fd_open.top = new FormAttachment(0, 0); - fd_open.bottom = new FormAttachment(100, 0); - this.btn_open.setLayoutData(fd_open); - this.btn_open.setText("Open ..."); - this.btn_open.addSelectionListener(new DataSourceSelectionListener()); + + InputStream is = this.getClass().getResourceAsStream("/img/config.png"); + + this.btn_config.setImage(new Image(Display.getDefault(), new ImageData(is))); + + this.btn_open = new MainBarStartButton(composite, SWT.NONE); + FormData fd_btn_open = new FormData(); + fd_btn_open.bottom = new FormAttachment(0, 45); + fd_btn_open.right = new FormAttachment(35, 5); + fd_btn_open.top = new FormAttachment(0); + fd_btn_open.left = new FormAttachment(10, 0); + this.btn_open.setLayoutData(fd_btn_open); + this.btn_open.setText("Open"); + this.btn_open.addMouseListener(new MouseListener() { + + @Override + public void mouseUp(MouseEvent e) { + MainWindow.this.stateMachine.jumpToState(new OpenState( + MainWindow.this.stateMachine)); + } + + @Override + public void mouseDown(MouseEvent e) { + // NOTHING TO DO HERE + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + // NOTHING TO DO HERE + } + }); this.buttonMap.put(Buttons.OPEN, this.btn_open); - this.btn_position = new Button(composite, SWT.NONE); - FormData fd_position = new FormData(); - fd_position.left = new FormAttachment(50, 0); - fd_position.right = new FormAttachment(75, 0); - fd_position.top = new FormAttachment(0, 0); - fd_position.bottom = new FormAttachment(100, 0); - this.btn_position.setLayoutData(fd_position); + this.btn_position = new MainBarMiddleButton(composite, SWT.NONE); + FormData fd_btn_position = new FormData(); + fd_btn_position.bottom = new FormAttachment(0, 45); + fd_btn_position.right = new FormAttachment(60, 5); + fd_btn_position.top = new FormAttachment(0); + fd_btn_position.left = new FormAttachment(35, -5); + this.btn_position.setLayoutData(fd_btn_position); this.btn_position.setText("Positon ..."); - this.btn_position.addSelectionListener(new PositionSelectionListener()); + this.btn_position.addMouseListener(new MouseListener() { + + @Override + public void mouseUp(MouseEvent e) { + MainWindow.this.stateMachine.jumpToState(new PositioningState( + MainWindow.this.stateMachine)); + } + + @Override + public void mouseDown(MouseEvent e) { + // NOTHING TO DO HERE + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + // NOTHING TO DO HERE + } + }); this.buttonMap.put(Buttons.POSITION, this.btn_position); - this.btn_sign = new Button(composite, SWT.NONE); - FormData fd_sign = new FormData(); - fd_sign.left = new FormAttachment(75, 0); - fd_sign.right = new FormAttachment(100, 0); - fd_sign.top = new FormAttachment(0, 0); - fd_sign.bottom = new FormAttachment(100, 0); - this.btn_sign.setLayoutData(fd_sign); + this.btn_sign = new MainBarMiddleButton(composite, SWT.NONE); + FormData fd_btn_sign = new FormData(); + fd_btn_sign.bottom = new FormAttachment(0, 45); + fd_btn_sign.right = new FormAttachment(85, 5); + fd_btn_sign.top = new FormAttachment(0); + fd_btn_sign.left = new FormAttachment(60, -5); + this.btn_sign.setLayoutData(fd_btn_sign); this.btn_sign.setText("Sign ..."); this.buttonMap.put(Buttons.SIGN, this.btn_sign); + MainBarEndButton end = new MainBarEndButton(composite, SWT.NONE); + FormData fd_btn_end = new FormData(); + fd_btn_end.bottom = new FormAttachment(0, 45); + fd_btn_end.right = new FormAttachment(100, -2); + fd_btn_end.top = new FormAttachment(0); + fd_btn_end.left = new FormAttachment(85, -5); + end.setLayoutData(fd_btn_end); + end.setText("Done"); + this.buttonMap.put(Buttons.FINAL, end); + this.container = new Composite(getShell(), SWT.BORDER | SWT.RESIZE); FormData fd_composite_1 = new FormData(); fd_composite_1.bottom = new FormAttachment(100, -25); fd_composite_1.right = new FormAttachment(100, -5); - fd_composite_1.top = new FormAttachment(0, 45); + fd_composite_1.top = new FormAttachment(0, 60); fd_composite_1.left = new FormAttachment(0, 5); this.container.setLayoutData(fd_composite_1); this.stack = new StackLayout(); @@ -298,7 +318,6 @@ public class MainWindow { fd_lblNewLabel.left = new FormAttachment(0, 5); this.lbl_status.setLayoutData(fd_lblNewLabel); this.lbl_status.setText("New Label"); - } /** @@ -308,21 +327,25 @@ public class MainWindow { MainWindowBehavior behavior = this.stateMachine.getStatus() .getBehavior(); - log.debug("Updating MainWindow state for : " + log.debug("Updating MainWindow state for : " //$NON-NLS-1$ + this.stateMachine.getStatus().getCurrentState().toString()); for (Buttons button : Buttons.values()) { boolean active = behavior.getActive(button); boolean enabled = behavior.getEnabled(button); - Button theButton = this.buttonMap.get(button); - if (theButton != null) - { + MainBarButton theButton = this.buttonMap.get(button); + if (theButton != null) { theButton.setEnabled(enabled); + theButton.setActive(active); } } - //TODO: Display/Hide main bar + if(behavior.getMainBarVisible()) { + this.mainBarFormData.bottom = new FormAttachment(0, 60); + } else { + this.mainBarFormData.bottom = new FormAttachment(0, 0); + } } /** diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java index 1d0094c9..a2f53e63 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java @@ -24,8 +24,19 @@ import at.asit.pdfover.gui.MainWindow.Buttons; * Behavior manipulation for Main Window */ public class MainWindowBehavior { + /** + * Enabled buttons map + */ protected Map<Buttons, Boolean> buttonsEnabled; + + /** + * active buttons map + */ protected Map<Buttons, Boolean> buttonsActive; + + /** + * Main bar visible + */ protected boolean mainBarVisible; /** @@ -37,18 +48,38 @@ public class MainWindowBehavior { reset(); } + /** + * set active buttons + * @param button + * @param active + */ public void setActive(Buttons button, boolean active) { this.buttonsActive.put(button, active); } + /** + * Gets the active state of a button from main bar + * @param button the button + * @return the active state + */ public boolean getActive(Buttons button) { return this.buttonsActive.get(button); } + /** + * Sets the enabled buttons in the main bar + * @param button + * @param enabled + */ public void setEnabled(Buttons button, boolean enabled) { this.buttonsEnabled.put(button, enabled); } + /** + * Get the enabled state of a button in main bar + * @param button the button + * @return the enabled state + */ public boolean getEnabled(Buttons button) { return this.buttonsEnabled.get(button); } @@ -67,10 +98,18 @@ public class MainWindowBehavior { setMainBarVisible(true); } + /** + * Sets the main bar visible + * @param visible + */ public void setMainBarVisible(boolean visible) { this.mainBarVisible = visible; } + /** + * Gets wether the main bar is visible + * @return the visibility of the main bar + */ public boolean getMainBarVisible() { return this.mainBarVisible; } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java index 5b826097..e3869105 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java @@ -17,12 +17,30 @@ package at.asit.pdfover.gui.composites; // Imports import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.TabItem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.asit.pdfover.gui.controls.ErrorDialog; +import at.asit.pdfover.gui.workflow.ConfigurationContainer; import at.asit.pdfover.gui.workflow.states.State; +import at.asit.pdfover.signator.BKUs; + import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.TabFolder; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.events.FocusListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.widgets.DirectoryDialog; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Text; /** * @@ -36,11 +54,234 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { public AdvancedConfigurationComposite(Composite parent, int style, State state, ConfigurationContainer container) { super(parent, style, state, container); + setLayout(new FormLayout()); + + TabFolder tabFolder = new TabFolder(this, SWT.NONE); + FormData fd_tabFolder = new FormData(); + fd_tabFolder.bottom = new FormAttachment(100, -5); + fd_tabFolder.right = new FormAttachment(100, -5); + fd_tabFolder.top = new FormAttachment(0, 5); + fd_tabFolder.left = new FormAttachment(0, 5); + tabFolder.setLayoutData(fd_tabFolder); + + TabItem simpleTabItem = new TabItem(tabFolder, SWT.NULL); + simpleTabItem.setText("Simple"); + + this.simpleComposite = new SimpleConfigurationComposite(tabFolder, + SWT.NONE, state, container); + + simpleTabItem.setControl(this.simpleComposite); + + TabItem advancedTabItem = new TabItem(tabFolder, SWT.NULL); + advancedTabItem.setText("Advanced"); + + Composite advancedComposite = new Composite(tabFolder, SWT.NONE); + + advancedTabItem.setControl(advancedComposite); + advancedComposite.setLayout(new FormLayout()); + + Group grpSignaturPosition = new Group(advancedComposite, SWT.NONE); + grpSignaturPosition.setText("Signatur Position"); + grpSignaturPosition.setLayout(new FormLayout()); + FormData fd_grpSignaturPosition = new FormData(); + fd_grpSignaturPosition.top = new FormAttachment(0, 5); + fd_grpSignaturPosition.bottom = new FormAttachment(33, -5); + fd_grpSignaturPosition.right = new FormAttachment(100, -5); + fd_grpSignaturPosition.left = new FormAttachment(0, 5); + grpSignaturPosition.setLayoutData(fd_grpSignaturPosition); + + this.btnAutomatischePositionierung = new Button(grpSignaturPosition, + SWT.CHECK); + FormData fd_btnAutomatischePositionierung = new FormData(); + fd_btnAutomatischePositionierung.right = new FormAttachment(100, -5); + fd_btnAutomatischePositionierung.top = new FormAttachment(0, 5); + fd_btnAutomatischePositionierung.left = new FormAttachment(0, 5); + this.btnAutomatischePositionierung + .setLayoutData(fd_btnAutomatischePositionierung); + this.btnAutomatischePositionierung.setText("Automatische Positionierung"); - Label lblAdvancedConfigLayout = new Label(this, SWT.NONE); - lblAdvancedConfigLayout.setBounds(113, 126, 243, 15); - lblAdvancedConfigLayout.setText("Advanced Config Layout!"); - // TODO Auto-generated constructor stub + this.btnAutomatischePositionierung.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + AdvancedConfigurationComposite.this.performPositionSelection( + AdvancedConfigurationComposite.this.btnAutomatischePositionierung.getSelection()); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // Nothing to do + } + }); + + Group grpBkuAuswahl = new Group(advancedComposite, SWT.NONE); + grpBkuAuswahl.setText("BKU Selection"); + grpBkuAuswahl.setLayout(new FormLayout()); + FormData fd_grpBkuAuswahl = new FormData(); + fd_grpBkuAuswahl.top = new FormAttachment(33, 5); + fd_grpBkuAuswahl.left = new FormAttachment(0, 5); + fd_grpBkuAuswahl.right = new FormAttachment(100, -5); + fd_grpBkuAuswahl.bottom = new FormAttachment(66, -5); + grpBkuAuswahl.setLayoutData(fd_grpBkuAuswahl); + + this.cmbBKUAuswahl = new Combo(grpBkuAuswahl, SWT.NONE); + FormData fd_cmbBKUAuswahl = new FormData(); + fd_cmbBKUAuswahl.right = new FormAttachment(100, -5); + fd_cmbBKUAuswahl.top = new FormAttachment(0, 5); + fd_cmbBKUAuswahl.left = new FormAttachment(0, 5); + + int blen = BKUs.values().length; + + this.bkuStrings = new String[blen]; + + // TODO: Implement translation into user language for ENUM Values!! + for (int i = 0; i < blen; i++) { + this.bkuStrings[i] = BKUs.values()[i].toString(); + } + + this.cmbBKUAuswahl.setItems(this.bkuStrings); + + this.cmbBKUAuswahl.setLayoutData(fd_cmbBKUAuswahl); + + this.cmbBKUAuswahl.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + int selectionIndex = getBKUElementIndex(AdvancedConfigurationComposite.this.configurationContainer.getBKUSelection()); + if(AdvancedConfigurationComposite.this.cmbBKUAuswahl.getSelectionIndex() != selectionIndex) { + selectionIndex = AdvancedConfigurationComposite.this.cmbBKUAuswahl.getSelectionIndex(); + performBKUSelectionChanged(AdvancedConfigurationComposite.this.cmbBKUAuswahl.getItem(selectionIndex)); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // Nothing to do here + } + }); + + Group grpSpeicherort = new Group(advancedComposite, SWT.NONE); + grpSpeicherort.setText("Outputfolder"); + grpSpeicherort.setLayout(new FormLayout()); + FormData fd_grpSpeicherort = new FormData(); + fd_grpSpeicherort.top = new FormAttachment(66, 5); + fd_grpSpeicherort.left = new FormAttachment(0, 5); + fd_grpSpeicherort.right = new FormAttachment(100, -5); + fd_grpSpeicherort.bottom = new FormAttachment(100, -5); + grpSpeicherort.setLayoutData(fd_grpSpeicherort); + + Label lblDefaultOutputFolder = new Label(grpSpeicherort, SWT.NONE); + FormData fd_lblDefaultOutputFolder = new FormData(); + fd_lblDefaultOutputFolder.top = new FormAttachment(0, 5); + fd_lblDefaultOutputFolder.left = new FormAttachment(0, 5); + lblDefaultOutputFolder.setLayoutData(fd_lblDefaultOutputFolder); + lblDefaultOutputFolder.setText("Default output folder:"); + + this.txtOutputFolder = new Text(grpSpeicherort, SWT.BORDER); + FormData fd_text = new FormData(); + fd_text.top = new FormAttachment(lblDefaultOutputFolder, 5); + fd_text.left = new FormAttachment(0, 5); + this.txtOutputFolder.setLayoutData(fd_text); + + this.txtOutputFolder.addFocusListener(new FocusListener() { + + @Override + public void focusLost(FocusEvent e) { + performOutputFolderChanged(AdvancedConfigurationComposite.this.txtOutputFolder.getText()); + } + + @Override + public void focusGained(FocusEvent e) { + // Nothing to do here! + } + }); + + Button btnBrowse = new Button(grpSpeicherort, SWT.NONE); + fd_text.right = new FormAttachment(btnBrowse, -5); + + FormData fd_btnBrowse = new FormData(); + fd_btnBrowse.top = new FormAttachment(lblDefaultOutputFolder, 5); + fd_btnBrowse.right = new FormAttachment(100, -5); + btnBrowse.setLayoutData(fd_btnBrowse); + btnBrowse.setText("browse"); + + btnBrowse.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + DirectoryDialog dlg = new DirectoryDialog( + AdvancedConfigurationComposite.this.getShell()); + + // Set the initial filter path according + // to anything they've selected or typed in + dlg.setFilterPath(AdvancedConfigurationComposite.this.txtOutputFolder + .getText()); + + // Change the title bar text + dlg.setText("Select Output folder"); + + // Customizable message displayed in the dialog + dlg.setMessage("Select a directory"); + + // Calling open() will open and run the dialog. + // It will return the selected directory, or + // null if user cancels + String dir = dlg.open(); + if (dir != null) { + // Set the text box to the new selection + performOutputFolderChanged(dir); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // Nothing to do + } + }); + } + + void performOutputFolderChanged(String foldername) { + log.debug("Selected Output folder: " + foldername); //$NON-NLS-1$ + this.configurationContainer.setOutputFolder(foldername); + AdvancedConfigurationComposite.this.txtOutputFolder.setText(foldername); + } + + int getBKUElementIndex(BKUs bku) { + // TODO: Translate to user language! + String bkuName = bku.toString(); + + for(int i = 0; i < this.bkuStrings.length; i++) { + if(this.bkuStrings[i].equals(bkuName)) { + log.debug("BKU: " + bkuName + " IDX: " + i); //$NON-NLS-1$ //$NON-NLS-2$ + return i; + } + } + + log.warn("NO BKU match for " + bkuName); //$NON-NLS-1$ + return 0; + } + + void performBKUSelectionChanged(BKUs selected) { + log.debug("Selected BKU: " + selected.toString()); //$NON-NLS-1$ + this.configurationContainer.setBKUSelection(selected); + this.cmbBKUAuswahl.select(this.getBKUElementIndex(selected)); + } + + void performBKUSelectionChanged(String selected) { + try { + BKUs bkuvalue = BKUs.valueOf(selected); + this.performBKUSelectionChanged(bkuvalue); + } catch (Exception ex) { + log.error("Failed to parse BKU value: " + selected, ex); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog(getShell(), SWT.NONE, "Invalid BKU selection. Please check.", ex); + dialog.open(); + } + } + + void performPositionSelection(boolean automatic) { + log.debug("Selected Position: " + automatic); //$NON-NLS-1$ + this.configurationContainer.setAutomaticPosition(automatic); + this.btnAutomatischePositionierung.setSelection(automatic); } /** @@ -48,13 +289,44 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite { **/ private static final Logger log = LoggerFactory .getLogger(AdvancedConfigurationComposite.class); + SimpleConfigurationComposite simpleComposite; + Text txtOutputFolder; + Combo cmbBKUAuswahl; + String[] bkuStrings; + Button btnAutomatischePositionierung; - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.composites.StateComposite#doLayout() */ @Override public void doLayout() { - // TODO Auto-generated method stub - + // Nothing to do here + } + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.composites.BaseConfigurationComposite#loadConfiguration + * () + */ + @Override + public void loadConfiguration() { + this.simpleComposite.loadConfiguration(); + + // load advanced settings + this.performBKUSelectionChanged(this.configurationContainer.getBKUSelection()); + this.performOutputFolderChanged(this.configurationContainer.getOutputFolder()); + this.performPositionSelection(this.configurationContainer.getAutomaticPosition()); + } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.composites.BaseConfigurationComposite#validateSettings() + */ + @Override + public void validateSettings() throws Exception { + this.simpleComposite.validateSettings(); } } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java index 88156343..19b3f46c 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java @@ -19,6 +19,8 @@ package at.asit.pdfover.gui.composites; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; @@ -111,24 +113,32 @@ public class BKUSelectionComposite extends StateComposite { btn_mobile.setText("MOBILE"); //Point mobile_size = btn_mobile.computeSize(SWT.DEFAULT, SWT.DEFAULT); FormData fd_btn_mobile = new FormData(); - fd_btn_mobile.left = new FormAttachment(40, 0); - fd_btn_mobile.right = new FormAttachment(50, 0); - fd_btn_mobile.top = new FormAttachment(45, 0); - fd_btn_mobile.bottom = new FormAttachment(55, 0); + //fd_btn_mobile.left = new FormAttachment(40, 0); + fd_btn_mobile.right = new FormAttachment(50, -5); + fd_btn_mobile.top = new FormAttachment(40, 0); + //fd_btn_mobile.bottom = new FormAttachment(55, 0); btn_mobile.setLayoutData(fd_btn_mobile); btn_mobile.addSelectionListener(new MobileSelectionListener()); + Image mobile = new Image(getDisplay(), new ImageData(this.getClass().getResourceAsStream("/img/handy.gif"))); + + btn_mobile.setImage(mobile); + Button btn_card = new Button(this, SWT.NATIVE | SWT.RESIZE); btn_card.setText("CARD"); //Point card_size = btn_card.computeSize(SWT.DEFAULT, SWT.DEFAULT); FormData fd_btn_card = new FormData(); - fd_btn_card.left = new FormAttachment(50, 0); - fd_btn_card.right = new FormAttachment(60, 0); - fd_btn_card.top = new FormAttachment(45, 0); - fd_btn_card.bottom = new FormAttachment(55, 0); + fd_btn_card.left = new FormAttachment(50, 5); + //fd_btn_card.right = new FormAttachment(60, 0); + fd_btn_card.top = new FormAttachment(40, 0); + //fd_btn_card.bottom = new FormAttachment(55, 0); btn_card.setLayoutData(fd_btn_card); btn_card.addSelectionListener(new LocalSelectionListener()); + Image karte = new Image(getDisplay(), new ImageData(this.getClass().getResourceAsStream("/img/karte.gif"))); + + btn_card.setImage(karte); + this.pack(); } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java index 831a4aa6..3c79e124 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BaseConfigurationComposite.java @@ -17,6 +17,8 @@ package at.asit.pdfover.gui.composites; import org.eclipse.swt.widgets.Composite; + +import at.asit.pdfover.gui.workflow.ConfigurationContainer; import at.asit.pdfover.gui.workflow.states.State; /** @@ -39,4 +41,16 @@ public abstract class BaseConfigurationComposite extends StateComposite { super(parent, style, state); this.configurationContainer = configuration; } + + /** + * Load configuration from ConfigurationContainer + */ + public abstract void loadConfiguration(); + + /** + * Called before exit. + * The method validates every setting in the configuration before exit + * @throws Exception + */ + public abstract void validateSettings() throws Exception; } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java index db58ae4a..0e78e507 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java @@ -16,13 +16,23 @@ package at.asit.pdfover.gui.composites; // Imports +import java.io.IOException; + import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.asit.pdfover.gui.controls.ErrorDialog; +import at.asit.pdfover.gui.exceptions.InvalidEmblemFile; +import at.asit.pdfover.gui.exceptions.InvalidNumberException; +import at.asit.pdfover.gui.exceptions.InvalidPortException; import at.asit.pdfover.gui.workflow.ConfigManipulator; +import at.asit.pdfover.gui.workflow.ConfigProvider; +import at.asit.pdfover.gui.workflow.ConfigurationContainer; +import at.asit.pdfover.gui.workflow.ConfigurationContainerImpl; import at.asit.pdfover.gui.workflow.states.State; +import at.asit.pdfover.signator.SignaturePosition; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; @@ -38,7 +48,7 @@ import org.eclipse.swt.layout.FormAttachment; * */ public class ConfigurationComposite extends StateComposite { - + /** * */ @@ -57,7 +67,7 @@ public class ConfigurationComposite extends StateComposite { // switch to advanced ConfigurationComposite.this.configComposite.dispose(); ConfigurationComposite.this.configComposite = new AdvancedConfigurationComposite( - ConfigurationComposite.this.containerComposite, + ConfigurationComposite.this.containerComposite, ConfigurationComposite.this.style, ConfigurationComposite.this.state, ConfigurationComposite.this.configurationContainer); @@ -66,13 +76,14 @@ public class ConfigurationComposite extends StateComposite { // switch to simple ConfigurationComposite.this.configComposite.dispose(); ConfigurationComposite.this.configComposite = new SimpleConfigurationComposite( - ConfigurationComposite.this.containerComposite, + ConfigurationComposite.this.containerComposite, ConfigurationComposite.this.style, ConfigurationComposite.this.state, ConfigurationComposite.this.configurationContainer); ConfigurationComposite.this.btnAdvanced.setText("Advanced"); } - + + ConfigurationComposite.this.configComposite.loadConfiguration(); ConfigurationComposite.this.compositeStack.topControl = ConfigurationComposite.this.configComposite; ConfigurationComposite.this.doLayout(); } @@ -91,10 +102,12 @@ public class ConfigurationComposite extends StateComposite { ConfigManipulator configManipulator = null; + ConfigProvider configProvider = null; + BaseConfigurationComposite configComposite; ConfigurationContainer configurationContainer = new ConfigurationContainerImpl(); - + StackLayout compositeStack = new StackLayout(); int style; @@ -115,6 +128,54 @@ public class ConfigurationComposite extends StateComposite { } /** + * Sets the configuration provider + * + * @param provider + */ + public void setConfigProvider(ConfigProvider provider) { + this.configProvider = provider; + if (this.configProvider != null) { + + // Initialize Configuration Container + if (this.configProvider.getDefaultSignaturePosition() != null) { + this.configurationContainer + .setAutomaticPosition(this.configProvider + .getDefaultSignaturePosition() + .useAutoPositioning()); + } + + this.configurationContainer.setBKUSelection(this.configProvider + .getDefaultBKU()); + try { + this.configurationContainer.setEmblem(this.configProvider + .getDefaultEmblem()); + } catch (InvalidEmblemFile e) { + log.error("Failed to set emblem!", e); //$NON-NLS-1$ + } + try { + this.configurationContainer.setNumber(this.configProvider + .getDefaultMobileNumber()); + } catch (InvalidNumberException e) { + log.error("Failed to set mobile phone number!", e); //$NON-NLS-1$ + } + + this.configurationContainer.setOutputFolder(this.configProvider + .getDefaultOutputFolder()); + + this.configurationContainer.setProxyHost(this.configProvider + .getProxyHost()); + try { + this.configurationContainer.setProxyPort(this.configProvider + .getProxyPort()); + } catch (InvalidPortException e) { + log.error("Failed to set proxy port!", e); //$NON-NLS-1$ + } + + this.configComposite.loadConfiguration(); + } + } + + /** * Create the composite. * * @param parent @@ -130,7 +191,8 @@ public class ConfigurationComposite extends StateComposite { this.containerComposite = new Composite(this, SWT.FILL | SWT.RESIZE); this.configComposite = new SimpleConfigurationComposite( - this.containerComposite, SWT.FILL | style, state, this.configurationContainer); + this.containerComposite, SWT.FILL | style, state, + this.configurationContainer); FormData fd_composite = new FormData(); fd_composite.top = new FormAttachment(0, 5); @@ -151,6 +213,10 @@ public class ConfigurationComposite extends StateComposite { btnSpeichern.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { + if (ConfigurationComposite.this.storeConfiguration()) { + ConfigurationComposite.this.userDone = true; + ConfigurationComposite.this.state.updateStateMachine(); + } } }); btnSpeichern.setText("Speichern"); @@ -180,16 +246,63 @@ public class ConfigurationComposite extends StateComposite { } - private void storeConfiguration() { - // TODO: Collect info from UI and set in ConfigManipulator + boolean storeConfiguration() { + + try { + this.configComposite.validateSettings(); - // TODO: call save configuration in ConfigManipulator + // Write current Configuration + this.configManipulator.setDefaultBKU(this.configurationContainer + .getBKUSelection()); + this.configManipulator + .setDefaultMobileNumber(this.configurationContainer + .getNumber()); + if (this.configurationContainer.getAutomaticPosition()) { + this.configManipulator + .setDefaultSignaturePosition(new SignaturePosition()); + } else { + this.configManipulator + .setDefaultSignaturePosition(null); + } + + this.configManipulator + .setDefaultOutputFolder(this.configurationContainer + .getOutputFolder()); + + this.configManipulator.setProxyHost(this.configurationContainer + .getProxyHost()); + this.configManipulator.setProxyPort(this.configurationContainer + .getProxyPort()); + this.configManipulator.setDefaultEmblem(this.configurationContainer + .getEmblem()); + + } catch (Exception e) { + log.error("Settings validation failed!", e); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog( + getShell(), + SWT.NONE, + "Invalid settings are still present. Please check your input.", + e); + dialog.open(); + return false; + } + // Save current config to file + try { + this.configManipulator.saveCurrentConfiguration(); + } catch (IOException e) { + log.error("Failed to save configuration to file!", e); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog(getShell(), SWT.NONE, + "Failed to save configuration file!", e); + dialog.open(); + return false; + } + return true; } /** * Checks if the user has finished working with the configuration composite * - * @return + * @return if the user is done */ public boolean isUserDone() { return this.userDone; diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/DataSourceSelectComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/DataSourceSelectComposite.java index 91ac7d6d..ac7494e8 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/DataSourceSelectComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/DataSourceSelectComposite.java @@ -118,9 +118,9 @@ public class DataSourceSelectComposite extends StateComposite { this.setLayout(new FormLayout()); - Color back = new Color(Display.getCurrent(), 77, 190, 250); + //Color back = new Color(Display.getCurrent(), 77, 190, 250); - this.drop_area = new Composite(this, SWT.RESIZE | SWT.BORDER_DASH); + this.drop_area = new Composite(this, SWT.RESIZE | SWT.BORDER); FormData fd_drop_area = new FormData(); fd_drop_area.left = new FormAttachment(0, 0); fd_drop_area.right = new FormAttachment(100, 0); @@ -128,7 +128,7 @@ public class DataSourceSelectComposite extends StateComposite { fd_drop_area.bottom = new FormAttachment(100, 0); this.drop_area.setLayoutData(fd_drop_area); this.drop_area.setLayout(new FormLayout()); - this.drop_area.setBackground(back); + //this.drop_area.setBackground(back); DropTarget dnd_target = new DropTarget(this.drop_area, DND.DROP_DEFAULT | DND.DROP_COPY); @@ -195,17 +195,17 @@ public class DataSourceSelectComposite extends StateComposite { final Label lbl_drag = new Label(this.drop_area, SWT.NONE | SWT.RESIZE); FormData fd_lbl_drag = new FormData(); - fd_lbl_drag.left = new FormAttachment(5, 5); - fd_lbl_drag.right = new FormAttachment(100, -5); - fd_lbl_drag.top = new FormAttachment(5, 5); - fd_lbl_drag.bottom = new FormAttachment(55, -5); + fd_lbl_drag.left = new FormAttachment(0, 10); + fd_lbl_drag.right = new FormAttachment(100, -10); + fd_lbl_drag.top = new FormAttachment(0, 10); + //fd_lbl_drag.bottom = new FormAttachment(100, -10); lbl_drag.setLayoutData(fd_lbl_drag); FontData[] fD = lbl_drag.getFont().getFontData(); fD[0].setHeight(18); lbl_drag.setFont(new Font(Display.getCurrent(), fD[0])); - lbl_drag.setText("Drag and Drop"); + lbl_drag.setText("To sign a document\ndrag and drop it here\nor use the button below"); lbl_drag.setAlignment(SWT.CENTER); - lbl_drag.setBackground(back); + //lbl_drag.setBackground(back); Button btn_open = new Button(this.drop_area, SWT.NATIVE | SWT.RESIZE); btn_open.setText("Choose file ..."); @@ -216,24 +216,9 @@ public class DataSourceSelectComposite extends StateComposite { fd_btn_open.top = new FormAttachment(100, size.y * -1 - 10); fd_btn_open.bottom = new FormAttachment(100, -5); btn_open.setLayoutData(fd_btn_open); - btn_open.setBackground(back); + //btn_open.setBackground(back); btn_open.addSelectionListener(new FileBrowseDialogListener()); this.drop_area.pack(); - - /* - * Button btn = new Button(this, SWT.NATIVE); btn.setBounds(50, 20, 100, - * 50); btn.setText("Click Me"); btn.addSelectionListener(new - * SelectionListener() { - * - * @Override public void widgetSelected(SelectionEvent arg0) { - * DataSourceSelectComposite.this.setPress(true); - * DataSourceSelectComposite.this.workflow.update(); } - * - * @Override public void widgetDefaultSelected(SelectionEvent arg0) { // - * TODO Auto-generated method stub - * - * } }); - */ } private boolean press = false; diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java index bd630f8e..595ca1bd 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java @@ -16,12 +16,9 @@ package at.asit.pdfover.gui.composites; // Imports -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; @@ -37,13 +34,6 @@ import at.asit.pdfover.gui.exceptions.InvalidPasswordException; import at.asit.pdfover.gui.workflow.states.State; import at.asit.pdfover.gui.workflow.states.mobilebku.ATrustHelper; -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; -import org.eclipse.swt.layout.FormLayout; - /** * */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java index f6653da8..26e5480c 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java @@ -147,10 +147,10 @@ public class OutputComposite extends StateComposite { btn_open.setText("OPEN"); // Point mobile_size = btn_mobile.computeSize(SWT.DEFAULT, SWT.DEFAULT); FormData fd_btn_open = new FormData(); - fd_btn_open.left = new FormAttachment(40, 0); - fd_btn_open.right = new FormAttachment(50, 0); - fd_btn_open.top = new FormAttachment(45, 0); - fd_btn_open.bottom = new FormAttachment(55, 0); + //fd_btn_open.left = new FormAttachment(40, 0); + fd_btn_open.right = new FormAttachment(50, -5); + fd_btn_open.top = new FormAttachment(40, 0); + //fd_btn_open.bottom = new FormAttachment(55, 0); btn_open.setLayoutData(fd_btn_open); btn_open.addSelectionListener(new OpenSelectionListener()); @@ -162,10 +162,10 @@ public class OutputComposite extends StateComposite { btn_save.setText("SAVE"); // Point card_size = btn_card.computeSize(SWT.DEFAULT, SWT.DEFAULT); FormData fd_btn_save = new FormData(); - fd_btn_save.left = new FormAttachment(50, 0); - fd_btn_save.right = new FormAttachment(60, 0); - fd_btn_save.top = new FormAttachment(45, 0); - fd_btn_save.bottom = new FormAttachment(55, 0); + fd_btn_save.left = new FormAttachment(50, 5); + //fd_btn_save.right = new FormAttachment(60, 0); + fd_btn_save.top = new FormAttachment(40, 0); + //fd_btn_save.bottom = new FormAttachment(55, 0); btn_save.setLayoutData(fd_btn_save); btn_save.addSelectionListener(new SaveSelectionListener()); diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java index 0e8bea04..3830d6cf 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SimpleConfigurationComposite.java @@ -19,6 +19,12 @@ package at.asit.pdfover.gui.composites; import java.io.File; import org.eclipse.swt.SWT; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.DropTarget; +import org.eclipse.swt.dnd.DropTargetAdapter; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseEvent; @@ -50,6 +56,9 @@ import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.controls.ErrorMarker; import at.asit.pdfover.gui.exceptions.InvalidEmblemFile; +import at.asit.pdfover.gui.exceptions.InvalidNumberException; +import at.asit.pdfover.gui.exceptions.InvalidPortException; +import at.asit.pdfover.gui.workflow.ConfigurationContainer; import at.asit.pdfover.gui.workflow.states.State; import org.eclipse.swt.layout.FillLayout; @@ -195,7 +204,8 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { this.recalculateEmblemSize(); } catch (Exception e) { - this.lblEmblem.setText("No Image"); + this.lblEmblem + .setText("No Image. Drag and Drop a Image. Or use the browse button to select an emblem."); this.lblEmblem.setImage(null); if (this.origEmblem != null) { this.origEmblem.dispose(); @@ -212,27 +222,27 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { void processEmblemChanged(String filename) { try { // String filename = this.txtEmblemFile.getText(); - this.emblemFile = filename; - this.setEmblemFileInternal(filename); - this.btnUseImage.setSelection(true); + plainEmblemSetter(filename); } catch (Exception ex) { // TODO: Show error message! log.error("processEmblemChanged: ", ex); //$NON-NLS-1$ } } + /** + * @param filename + * @throws Exception + */ + private void plainEmblemSetter(String filename) throws Exception { + this.emblemFile = filename; + this.setEmblemFileInternal(filename); + this.btnUseImage.setSelection(true); + } + void processNumberChanged() { try { - this.txtMobileNumberErrorMarker.setVisible(false); - String number = this.txtMobileNumber.getText(); - this.configurationContainer.setNumber(number); - number = this.configurationContainer.getNumber(); - if (number == null) { - this.txtMobileNumber.setText(""); //$NON-NLS-1$ - return; - } - this.txtMobileNumber.setText(number); + plainMobileNumberSetter(); } catch (Exception ex) { // TODO: Show error message! this.txtMobileNumberErrorMarker.setVisible(true); @@ -242,11 +252,24 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { } } + /** + * @throws InvalidNumberException + */ + private void plainMobileNumberSetter() throws InvalidNumberException { + String number = this.txtMobileNumber.getText(); + this.configurationContainer.setNumber(number); + number = this.configurationContainer.getNumber(); + if (number == null) { + this.txtMobileNumber.setText(""); //$NON-NLS-1$ + return; + } + this.txtMobileNumber.setText(number); + } + void processProxyHostChanged() { try { this.proxyHostErrorMarker.setVisible(false); - String host = this.txtProxyHost.getText(); - this.configurationContainer.setProxyHost(host); + plainProxyHostSetter(); } catch (Exception ex) { // TODO: Show error message! this.proxyHostErrorMarker.setVisible(true); @@ -255,17 +278,18 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { } } + /** + * + */ + private void plainProxyHostSetter() { + String host = this.txtProxyHost.getText(); + this.configurationContainer.setProxyHost(host); + } + void processProxyPortChanged() { try { this.txtProxyPortErrorMarker.setVisible(false); - String portString = this.txtProxyPort.getText(); - int port = -1; - if (portString == null || portString.trim().equals("")) { - port = -1; - } else { - port = Integer.parseInt(portString); - } - this.configurationContainer.setProxyPort(port); + plainProxyPortSetter(); } catch (Exception ex) { // TODO: Show error message! this.txtProxyPortErrorMarker.setVisible(true); @@ -274,6 +298,20 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { } } + /** + * @throws InvalidPortException + */ + private void plainProxyPortSetter() throws InvalidPortException { + String portString = this.txtProxyPort.getText(); + int port = -1; + if (portString == null || portString.trim().equals("")) { //$NON-NLS-1$ + port = -1; + } else { + port = Integer.parseInt(portString); + } + this.configurationContainer.setProxyPort(port); + } + ConfigurationComposite configurationComposite; FormData fd_txtProxyPortErrorMarker; @@ -396,45 +434,84 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { } }); - /* - * Label lblDateiname = new Label(grpBildmarke, SWT.NONE); - * lblDateiname.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, - * false, false, 1, 1)); lblDateiname.setText("Dateiname:"); new - * Label(grpBildmarke, SWT.NONE); - */ + DropTarget dnd_target = new DropTarget(this.lblEmblem, DND.DROP_DEFAULT + | DND.DROP_COPY); + final FileTransfer fileTransfer = FileTransfer.getInstance(); + Transfer[] types = new Transfer[] { fileTransfer }; + dnd_target.setTransfer(types); + + dnd_target.addDropListener(new DropTargetAdapter() { + @Override + public void drop(DropTargetEvent event) { + if (fileTransfer.isSupportedType(event.currentDataType)) { + String[] files = (String[]) event.data; + if (files.length > 0) { + // Only taking first file ... + File file = new File(files[0]); + if (!file.exists()) { + log.error("File: " + files[0] + " does not exist!"); //$NON-NLS-1$//$NON-NLS-2$ + return; + } + processEmblemChanged(file.getAbsolutePath()); + } + } + } + + @Override + public void dragOperationChanged(DropTargetEvent event) { + if (event.detail == DND.DROP_DEFAULT) { + if ((event.operations & DND.DROP_COPY) != 0) { + event.detail = DND.DROP_COPY; + } else { + event.detail = DND.DROP_NONE; + } + } + } + + @Override + public void dragEnter(DropTargetEvent event) { + if (event.detail == DND.DROP_DEFAULT) { + if ((event.operations & DND.DROP_COPY) != 0) { + event.detail = DND.DROP_COPY; + } else { + event.detail = DND.DROP_NONE; + } + } + // Only drop one item! + if (event.dataTypes.length > 1) { + event.detail = DND.DROP_NONE; + return; + } + // will accept text but prefer to have files dropped + for (int i = 0; i < event.dataTypes.length; i++) { + if (fileTransfer.isSupportedType(event.dataTypes[i])) { + event.currentDataType = event.dataTypes[i]; + // files should only be copied + if (event.detail != DND.DROP_COPY) { + event.detail = DND.DROP_NONE; + } + break; + } + } + } + }); - /* - * this.txtEmblemFile = new Text(grpBildmarke, SWT.BORDER); GridData - * gd_txtEmblemFile = new GridData(SWT.FILL, SWT.FILL, false, false, 2, - * 1); gd_txtEmblemFile.widthHint = 123; - * this.txtEmblemFile.setLayoutData(gd_txtEmblemFile); - * this.txtEmblemFile.addFocusListener(new FocusListener() { - * - * @Override public void focusLost(FocusEvent e) { - * processEmblemChanged(); } - * - * @Override public void focusGained(FocusEvent e) { // Nothing to do - * here! } }); this.txtEmblemFile.addTraverseListener(new - * TraverseListener() { - * - * @Override public void keyTraversed(TraverseEvent e) { if (e.detail == - * SWT.TRAVERSE_RETURN) { processEmblemChanged(); } } }); new - * Label(grpBildmarke, SWT.NONE); - */ new Label(grpBildmarke, SWT.NONE); new Label(grpBildmarke, SWT.NONE); this.btnUseImage = new Button(grpBildmarke, SWT.CHECK); this.btnUseImage.setText("Use Image"); this.btnUseImage.addSelectionListener(new SelectionListener() { - + @Override public void widgetSelected(SelectionEvent e) { - if(SimpleConfigurationComposite.this.btnUseImage.getSelection()) { + if (SimpleConfigurationComposite.this.btnUseImage + .getSelection()) { processEmblemChanged(SimpleConfigurationComposite.this.emblemFile); } else { try { - SimpleConfigurationComposite.this.configurationContainer.setEmblem(null); + SimpleConfigurationComposite.this.configurationContainer + .setEmblem(null); } catch (InvalidEmblemFile e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -572,35 +649,6 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { } }); - // Initialize form fields from configuration Container - String number = this.configurationContainer.getNumber(); - if (number != null) { - this.txtMobileNumber.setText(number); - } - - String emblemFile = this.configurationContainer.getEmblem(); - if (emblemFile != null && !emblemFile.trim().equals("")) { //$NON-NLS-1$ - // this.txtEmblemFile.setText(emblemFile); - this.emblemFile = emblemFile; - try { - this.setEmblemFileInternal(emblemFile, true); - } catch (Exception e1) { - // TODO Auto-generated catch block - log.error("initialize emblem: ", e1); //$NON-NLS-1$ - } - } - - int port = this.configurationContainer.getProxyPort(); - if (port > 0) { - this.txtProxyPort.setText(Integer.toString(port)); - } - - String host = this.configurationContainer.getProxyHost(); - - if (host != null) { - this.txtProxyHost.setText(host); - } - this.addListener(SWT.Resize, new Listener() { @Override @@ -638,7 +686,7 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { /** * SLF4J Logger instance **/ - private static final Logger log = LoggerFactory + static final Logger log = LoggerFactory .getLogger(SimpleConfigurationComposite.class); private ErrorMarker proxyHostErrorMarker; ErrorMarker txtMobileNumberErrorMarker; @@ -655,7 +703,61 @@ public class SimpleConfigurationComposite extends BaseConfigurationComposite { */ @Override public void doLayout() { - // TODO Auto-generated method stub + // Nothing to do here + } + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.composites.BaseConfigurationComposite#loadConfiguration + * () + */ + @Override + public void loadConfiguration() { + // Initialize form fields from configuration Container + String number = this.configurationContainer.getNumber(); + if (number != null) { + this.txtMobileNumber.setText(number); + } + + String emblemFile = this.configurationContainer.getEmblem(); + if (emblemFile != null && !emblemFile.trim().equals("")) { //$NON-NLS-1$ + // this.txtEmblemFile.setText(emblemFile); + this.emblemFile = emblemFile; + try { + this.setEmblemFileInternal(emblemFile, true); + this.btnUseImage.setSelection(true); + } catch (Exception e1) { + // TODO Auto-generated catch block + log.error("Failed to load emblem: ", e1); //$NON-NLS-1$ + } + } + + int port = this.configurationContainer.getProxyPort(); + if (port > 0) { + this.txtProxyPort.setText(Integer.toString(port)); + } + + String host = this.configurationContainer.getProxyHost(); + + if (host != null) { + this.txtProxyHost.setText(host); + } + } + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.composites.BaseConfigurationComposite#validateSettings + * () + */ + @Override + public void validateSettings() throws Exception { + this.plainMobileNumberSetter(); + this.plainEmblemSetter(this.emblemFile); + this.plainProxyHostSetter(); + this.plainProxyPortSetter(); } } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorDialog.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorDialog.java new file mode 100644 index 00000000..1025c1fe --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorDialog.java @@ -0,0 +1,176 @@ +/* + * 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.controls; + +// Imports +import java.io.InputStream; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Dialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public class ErrorDialog extends Dialog { + /** + * @param parent + * @param style + * @param message + * @param exception + */ + public ErrorDialog(Shell parent, int style, String message, + Throwable exception) { + super(parent, style); + this.message = message; + + final StringBuilder result = new StringBuilder(); + result.append(exception.getLocalizedMessage()); + final String NEW_LINE = System.getProperty("line.separator"); //$NON-NLS-1$ + result.append(NEW_LINE); + result.append(NEW_LINE); + result.append(NEW_LINE); + + // add each element of the stack trace + for (StackTraceElement element : exception.getStackTrace()) { + result.append(element); + result.append(NEW_LINE); + } + this.details = result.toString(); + } + + /** + * @param parent + * @param style + * @param message + * @param details + */ + public ErrorDialog(Shell parent, int style, String message, String details) { + super(parent, style); + this.message = message; + this.details = details; + } + + private String message = null; + + private String details = null; + + /** + * SLF4J Logger instance + **/ + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory + .getLogger(ErrorDialog.class); + + /** + * Open error dialog + */ + public void open() { + Shell parent = getParent(); + final Shell shell = new Shell(parent, SWT.DIALOG_TRIM + | SWT.APPLICATION_MODAL); + shell.setText(getText()); + shell.setLayout(new FormLayout()); + + Label lblErrorImage = new Label(shell, SWT.NONE); + FormData fd_lblErrorImage = new FormData(); + fd_lblErrorImage.top = new FormAttachment(50, -16); + fd_lblErrorImage.left = new FormAttachment(0, 5); + lblErrorImage.setLayoutData(fd_lblErrorImage); + lblErrorImage.setText(""); //$NON-NLS-1$ + + String imgPath = "/img/error.png"; //$NON-NLS-1$ + + InputStream stream = this.getClass().getResourceAsStream(imgPath); + + Image orig = new Image(Display.getCurrent(), + new ImageData(stream).scaledTo(32, 32)); + + lblErrorImage.setImage(orig); + + Label lblerrorMessage = new Label(shell, SWT.NONE); + FormData fd_lblerrorMessage = new FormData(); + fd_lblerrorMessage.top = new FormAttachment(0, 5); + fd_lblerrorMessage.left = new FormAttachment(0, 42); + lblerrorMessage.setLayoutData(fd_lblerrorMessage); + lblerrorMessage.setText(this.message); + + Group group = new Group(shell, SWT.NONE); + group.setLayout(new FormLayout()); + FormData fd_group = new FormData(); + + fd_group.right = new FormAttachment(100, -5); + fd_group.top = new FormAttachment(lblerrorMessage, 5); + fd_group.left = new FormAttachment(lblErrorImage, 5); + group.setLayoutData(fd_group); + group.setText("Details"); + Button btnOk = new Button(shell, SWT.NONE); + btnOk.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + shell.dispose(); + } + }); + fd_group.bottom = new FormAttachment(btnOk, -5); + + ScrolledComposite scrolledComposite = new ScrolledComposite(group, + SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); + FormData fd_scrolledComposite = new FormData(); + fd_scrolledComposite.top = new FormAttachment(0, 5); + fd_scrolledComposite.left = new FormAttachment(0, 5); + fd_scrolledComposite.bottom = new FormAttachment(100, -5); + fd_scrolledComposite.right = new FormAttachment(100, -5); + scrolledComposite.setLayoutData(fd_scrolledComposite); + scrolledComposite.setExpandHorizontal(true); + scrolledComposite.setExpandVertical(true); + + Label lblDetails = new Label(scrolledComposite, SWT.NONE); + + lblDetails.setText(this.details); + + scrolledComposite.setContent(lblDetails); + scrolledComposite.setMinSize(lblDetails.computeSize(SWT.DEFAULT, + SWT.DEFAULT)); + FormData fd_btnOk = new FormData(); + fd_btnOk.bottom = new FormAttachment(100, -5); + fd_btnOk.right = new FormAttachment(100, -5); + btnOk.setLayoutData(fd_btnOk); + btnOk.setText("Ok"); + + shell.pack(); + shell.open(); + shell.pack(); + Display display = parent.getDisplay(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) + display.sleep(); + } + } +} diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorMarker.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorMarker.java index 11cefa13..01505895 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorMarker.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/ErrorMarker.java @@ -18,13 +18,9 @@ package at.asit.pdfover.gui.controls; // Imports import java.io.InputStream; -import org.eclipse.swt.events.PaintEvent; -import org.eclipse.swt.events.PaintListener; -import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; @@ -39,6 +35,7 @@ public class ErrorMarker { /** * SLF4J Logger instance **/ + @SuppressWarnings("unused") private static final Logger log = LoggerFactory .getLogger(ErrorMarker.class); @@ -49,6 +46,7 @@ public class ErrorMarker { * @param style * @param exception * @param message + * @param control */ public ErrorMarker(Composite parent, int style, Throwable exception, String message, Control control) { @@ -74,19 +72,35 @@ public class ErrorMarker { this.lbl.setImage(this.orig); } + /** + * Sets the layout data + * @param object the layout data + */ public void setLayoutData(Object object) { this.lbl.setLayoutData(object); } + /** + * Sets the visibilty + * @param visible the visibilty + */ public void setVisible(boolean visible) { this.lbl.setVisible(visible); } + /** + * Sets the tooltip text + * @param msg the tooltip text + */ public void setToolTipText(String msg) { this.lbl.setToolTipText(msg); } + /** + * Scales the image to the new size + * @param size + */ public void resize(Point size) { String imgPath = "/img/error.png"; //$NON-NLS-1$ @@ -101,6 +115,10 @@ public class ErrorMarker { this.lbl.setImage(this.orig); } + /** + * Gets the size of the underlying label + * @return the size + */ public Point getSize() { return this.lbl.getSize(); } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java new file mode 100644 index 00000000..631ee3e8 --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarButton.java @@ -0,0 +1,183 @@ +/* + * 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.controls; + +// Imports +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Region; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public abstract class MainBarButton extends Canvas { + /** + * @param parent + * @param style + */ + public MainBarButton(Composite parent, int style) { + super(parent, style); + this.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + MainBarButton.this.paintButton(e); + } + }); + + this.addListener(SWT.Resize, new Listener() { + + @Override + public void handleEvent(Event event) { + MainBarButton.this.setRegion(MainBarButton.this + .getCustomRegion()); + MainBarButton.this.redraw(); + } + }); + + this.inactiveBackground = new Color(getDisplay(), 0x4B, 0x95, 0x00); + this.activeBackground = new Color(getDisplay(), 0x98, 0xF2, 0x3D); + + } + + private Color inactiveBackground = null; + + /** + * @param inactiveBackground + * the inactiveBackground to set + */ + public void setInactiveBackground(Color inactiveBackground) { + this.inactiveBackground = inactiveBackground; + } + + /** + * @param activeBackground + * the activeBackground to set + */ + public void setActiveBackground(Color activeBackground) { + this.activeBackground = activeBackground; + } + + private Color activeBackground = null; + + private String text = ""; //$NON-NLS-1$ + + private boolean active = true; + + private Image image = null; + + /** + * @return the imgage + */ + public Image getImage() { + return this.image; + } + + /** + * @param imgage + * the imgage to set + */ + public void setImage(Image image) { + this.image = image; + } + + /** + * Sets if this button is active + * + * @param active + * the active state + */ + public void setActive(boolean active) { + this.active = active; + if (this.active) { + this.setBackground(this.activeBackground); + } else { + this.setBackground(this.inactiveBackground); + } + } + + /** + * Gets if this button is active + * + * @return the active state + */ + public boolean getActive() { + return this.active; + } + + /** + * @return the text + */ + public String getText() { + return this.text; + } + + /** + * @param text + * the text to set + */ + public void setText(String text) { + this.text = text; + } + + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(MainBarButton.class); + + /** + * @param e + */ + protected void paintButton(PaintEvent e) { + Point size = this.getSize(); + int height = size.y - 2; + + int width = size.x; + + if (this.image == null) { + int textlen = 0; + + if (this.getText() != null) { + textlen = this.getText().length(); + } + + int texty = (height - e.gc.getFontMetrics().getHeight()) / 2; + int textx = (width - e.gc.getFontMetrics().getAverageCharWidth() + * textlen) / 2; + e.gc.drawText(this.getText(), textx, texty); + } else { + int imgx = (width - height) / 2; + Image tmp = new Image(getDisplay(), this.image.getImageData().scaledTo(height, height)); + e.gc.drawImage(tmp, imgx, 0); + } + } + + /** + * @return + */ + protected abstract Region getCustomRegion(); +} diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarEndButton.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarEndButton.java new file mode 100644 index 00000000..b80b9645 --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarEndButton.java @@ -0,0 +1,97 @@ +/* + * 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.controls; + +// Imports +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Region; +import org.eclipse.swt.widgets.Composite; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public class MainBarEndButton extends MainBarButton { + /** + * @param parent + * @param style + */ + public MainBarEndButton(Composite parent, int style) { + super(parent, style); + } + + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(MainBarEndButton.class); + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.controls.MainBarButton#paintButton(org.eclipse.swt + * .events.PaintEvent) + */ + /*@Override + protected void paintButton(PaintEvent e) { + Point size = this.getSize(); + int height = size.y - 2; + + int split = 10; + int width = size.x; + + int textlen = 0; + + if(this.getText() != null) { + textlen = this.getText().length(); + } + + e.gc.drawLine(0, 0, width, 0); + e.gc.drawLine(width, 0, width+split, (height) / 2); + e.gc.drawLine(width, height, 0, height); + e.gc.drawLine(0, height, 0+split, (height) / 2); + e.gc.drawLine(0+split, (height) / 2, 0, 0); + + int texty = (height - e.gc.getFontMetrics().getHeight()) / 2; + int textx = (width - e.gc.getFontMetrics().getAverageCharWidth() * textlen) / 2; + e.gc.drawText(this.getText(), textx, texty); + }*/ + + /* + * (non-Javadoc) + * + * @see at.asit.pdfover.gui.controls.MainBarButton#getCustomRegion() + */ + @Override + protected Region getCustomRegion() { + Point size = this.getSize(); + + int height = size.y - 2; + + int split = 10; + + int width = size.x; + + Region reg = new Region(); + reg.add(new int[] { 0, 0, width, 0, width, height, 0, height, + 0 + split, (height) / 2, 0, 0 }); + return reg; + } + +} diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarMiddleButton.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarMiddleButton.java new file mode 100644 index 00000000..5b9b580f --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarMiddleButton.java @@ -0,0 +1,100 @@ +/* + * 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.controls; + +// Imports +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Region; +import org.eclipse.swt.widgets.Composite; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public class MainBarMiddleButton extends MainBarButton { + /** + * @param parent + * @param style + */ + public MainBarMiddleButton(Composite parent, int style) { + super(parent, style); + } + + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(MainBarMiddleButton.class); + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.controls.MainBarButton#paintButton(org.eclipse.swt.events.PaintEvent) + */ + /*@Override + protected void paintButton(PaintEvent e) { + Point size = this.getSize(); + + int height = size.y - 2; + + int split = 10; + int width = size.x - split; + + e.gc.drawLine(0, 0, width, 0); + e.gc.drawLine(width, 0, width+split, (height) / 2); + e.gc.drawLine(width+split, (height) / 2, width, height); + e.gc.drawLine(width, height, 0, height); + e.gc.drawLine(0, height, 0+split, (height) / 2); + e.gc.drawLine(0+split, (height) / 2, 0, 0); + + int textlen = 0; + + if(getText() != null) { + textlen = this.getText().length(); + } + + int texty = (height - e.gc.getFontMetrics().getHeight()) / 2; + int textx = (width - e.gc.getFontMetrics().getAverageCharWidth() * textlen) / 2; + e.gc.drawText(this.getText(), textx, texty); + }*/ + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.controls.MainBarButton#getCustomRegion() + */ + @Override + protected Region getCustomRegion() { + Point size = this.getSize(); + + int height = size.y - 2; + + int split = 10; + + int width = size.x - split; + + Region reg = new Region(); + reg.add(new int[] { + 0, 0, + width, 0, + width + split, (height) / 2, + width, height, + 0, height, + 0+split, (height) / 2, + 0, 0 }); + + return reg; + } + +} diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarRectangleButton.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarRectangleButton.java new file mode 100644 index 00000000..edac29e5 --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarRectangleButton.java @@ -0,0 +1,87 @@ +/* + * 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.controls; + +// Imports +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Region; +import org.eclipse.swt.widgets.Composite; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public class MainBarRectangleButton extends MainBarButton { + /** + * @param parent + * @param style + */ + public MainBarRectangleButton(Composite parent, int style) { + super(parent, style); + this.setActiveBackground(null); + this.setInactiveBackground(null); + } + + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(MainBarRectangleButton.class); + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.controls.MainBarButton#paintButton(org.eclipse.swt.events.PaintEvent) + */ + /*@Override + protected void paintButton(PaintEvent e) { + Point size = this.getSize(); + + int height = size.y - 2; + + int width = size.x; + + int textlen = 0; + if(getText() != null) { + textlen = getText().length(); + } + + e.gc.drawLine(0, 0, width, 0); + e.gc.drawLine(width, 0, width, height); + e.gc.drawLine(width, height, 0, height); + e.gc.drawLine(0, height, 0, 0); + int texty = (height - e.gc.getFontMetrics().getHeight()) / 2; + int textx = (width - e.gc.getFontMetrics().getAverageCharWidth() * textlen) / 2; + e.gc.drawText(getText(), textx, texty); + }*/ + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.controls.MainBarButton#getCustomRegion() + */ + @Override + protected Region getCustomRegion() { + Point size = this.getSize(); + + int height = size.y - 2; + + int width = size.x; + + Region reg = new Region(); + reg.add(new int[] { 0, 0, width, 0, width, height, 0, height, 0, 0 }); + return reg; + } + +} diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarStartButton.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarStartButton.java new file mode 100644 index 00000000..2577ce40 --- /dev/null +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/controls/MainBarStartButton.java @@ -0,0 +1,91 @@ +/* + * 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.controls; + +// Imports +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Region; +import org.eclipse.swt.widgets.Composite; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public class MainBarStartButton extends MainBarButton { + /** + * @param parent + * @param style + */ + public MainBarStartButton(Composite parent, int style) { + super(parent, style); + } + + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(MainBarStartButton.class); + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.controls.MainBarButton#paintButton(org.eclipse.swt.events.PaintEvent) + */ + /* + @Override + protected void paintButton(PaintEvent e) { + Point size = this.getSize(); + + int height = size.y - 2; + + int split = 10; + int width = size.x - split; + + int textlen = 0; + if(getText() != null) { + textlen = getText().length(); + } + + e.gc.drawLine(0, 0, width, 0); + e.gc.drawLine(width, 0, width + split, (height) / 2); + e.gc.drawLine(width + split, (height) / 2, width, height); + e.gc.drawLine(width, height, 0, height); + e.gc.drawLine(0, height, 0, 0); + int texty = (height - e.gc.getFontMetrics().getHeight()) / 2; + int textx = (width - e.gc.getFontMetrics().getAverageCharWidth() * textlen) / 2; + e.gc.drawText(getText(), textx, texty); + }*/ + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.controls.MainBarButton#getRegion() + */ + @Override + protected Region getCustomRegion() { + Point size = this.getSize(); + + int height = size.y - 2; + + int split = 10; + + int width = size.x - split; + + Region reg = new Region(); + reg.add(new int[] { 0, 0, width, 0, width + split, + (height) / 2, width, height, 0, height, 0, 0 }); + return reg; + } + +} diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java index 702fa6bb..a669803b 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigManipulator.java @@ -68,6 +68,12 @@ public interface ConfigManipulator { public static final String PROXY_PORT_CONFIG = "PROXY_PORT"; //$NON-NLS-1$ /** + * The output folder config parameter + */ + public static final String OUTPUT_FOLDER_CONFIG = "OUTPUT_FOLDER"; //$NON-NLS-1$ + + + /** * Sets the default bku type * @param bku the bku type */ @@ -119,6 +125,12 @@ public interface ConfigManipulator { public void setConfigurationFile(String configurationFile); /** + * Sets the default output folder + * @param outputFolder the default output folder + */ + public void setDefaultOutputFolder(String outputFolder); + + /** * Saves the current configuration to the current configuration file * @throws IOException */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java index 8ada4d2d..1adc45a4 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java @@ -15,6 +15,9 @@ */ package at.asit.pdfover.gui.workflow; +import java.io.IOException; +import java.io.InputStream; + import at.asit.pdfover.signator.BKUs; import at.asit.pdfover.signator.SignaturePosition; @@ -25,6 +28,12 @@ public interface ConfigProvider { //TODO: define interface for config provider .... /** + * Regex for parsing signature position + */ + public static final String SIGN_POS_REGEX = "(x=(\\d\\.?\\d?);y=(\\d\\.?\\d?);p=(\\d))|(auto)|(x=(\\d\\.?\\d?);y=(\\d\\.?\\d?))"; //$NON-NLS-1$ + + + /** * Gets the configuration file * @return the configuration file */ @@ -71,4 +80,17 @@ public interface ConfigProvider { * @return the default configured SignaturePosition or null if not configured */ public SignaturePosition getDefaultSignaturePosition(); + + /** + * Gets the default output folder for signed documents + * @return the default output folder + */ + public String getDefaultOutputFolder(); + + /** + * Loads the current configuration to the current configuration file + * @param configSource + * @throws IOException + */ + public void loadConfiguration(InputStream configSource) throws IOException; } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java index 6a128e73..529f9d5c 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java @@ -19,7 +19,10 @@ package at.asit.pdfover.gui.workflow; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,36 +37,46 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { /** * SLF4J Logger instance **/ - @SuppressWarnings("unused") private static final Logger log = LoggerFactory .getLogger(ConfigProviderImpl.class); - + private BKUs defaultBKU = BKUs.NONE; - + private SignaturePosition defaultSignaturePosition = null; - - private String defaultMobileNumber = null; - - private String defaultPassword = null; - - private String emblem = null; - - private String proxyHost = null; - + + /** + * An Emtpy property entry + */ + public static final String STRING_EMPTY = ""; //$NON-NLS-1$ + + private String defaultMobileNumber = STRING_EMPTY; + + private String defaultPassword = STRING_EMPTY; + + private String emblem = STRING_EMPTY; + + private String proxyHost = STRING_EMPTY; + private String configurationFile = ConfigManipulator.DEFAULT_CONFIG_FILE; - + private int proxyPort = -1; - + + private String outputFolder = STRING_EMPTY; + /** * Sets the default bku type - * @param bku the bku type + * + * @param bku + * the bku type */ @Override public void setDefaultBKU(BKUs bku) { this.defaultBKU = bku; } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultBKU() */ @Override @@ -74,15 +87,19 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { /** * Sets the default signature position * - * @param signaturePosition the default signature position + * @param signaturePosition + * the default signature position */ @Override public void setDefaultSignaturePosition(SignaturePosition signaturePosition) { this.defaultSignaturePosition = signaturePosition; } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultSignaturePosition() + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultSignaturePosition() */ @Override public SignaturePosition getDefaultSignaturePosition() { @@ -91,39 +108,47 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { /** * Sets the default mobile number - * @param number the default mobile number + * + * @param number + * the default mobile number */ @Override public void setDefaultMobileNumber(String number) { - if(number == null || number.trim().equals("")) { //$NON-NLS-1$ - this.defaultMobileNumber = null; + if (number == null || number.trim().equals("")) { //$NON-NLS-1$ + this.defaultMobileNumber = STRING_EMPTY; } else { this.defaultMobileNumber = number; } } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultMobileNumber() */ @Override public String getDefaultMobileNumber() { return this.defaultMobileNumber; } - + /** * Sets the default password - * @param password the default password + * + * @param password + * the default password */ @Override public void setDefaultPassword(String password) { - if(password == null || password.trim().equals("")) { //$NON-NLS-1$ - this.defaultPassword = null; + if (password == null || password.trim().equals("")) { //$NON-NLS-1$ + this.defaultPassword = STRING_EMPTY; } else { this.defaultPassword = password; } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultPassword() */ @Override @@ -134,18 +159,21 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { /** * Sets the default emblem * - * @param emblem the default emblem + * @param emblem + * the default emblem */ @Override public void setDefaultEmblem(String emblem) { - if(emblem == null || emblem.trim().equals("")) { //$NON-NLS-1$ - this.emblem = null; + if (emblem == null || emblem.trim().equals("")) { //$NON-NLS-1$ + this.emblem = STRING_EMPTY; } else { this.emblem = emblem; } } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultEmblem() */ @Override @@ -155,18 +183,22 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { /** * Sets the proxy host - * @param host the proxy host + * + * @param host + * the proxy host */ @Override public void setProxyHost(String host) { - if(host == null || host.trim().equals("")) { //$NON-NLS-1$ - this.emblem = null; + if (host == null || host.trim().equals("")) { //$NON-NLS-1$ + this.proxyHost = STRING_EMPTY; } else { - this.emblem = host; + this.proxyHost = host; } } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getProxyHost() */ @Override @@ -177,14 +209,17 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { /** * Sets the proxy port * - * @param port the proxy port + * @param port + * the proxy port */ @Override public void setProxyPort(int port) { this.proxyPort = port; } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getProxyPort() */ @Override @@ -192,15 +227,21 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { return this.proxyPort; } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.ConfigManipulator#setConfigurationFile(java.lang.String) + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.workflow.ConfigManipulator#setConfigurationFile(java + * .lang.String) */ @Override public void setConfigurationFile(String configurationFile) { this.configurationFile = configurationFile; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.ConfigProvider#getConfigurationFile() */ @Override @@ -208,41 +249,188 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator { return this.configurationFile; } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.ConfigManipulator#saveCurrentConfiguration() + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.workflow.ConfigManipulator#saveCurrentConfiguration() */ @Override - public void saveCurrentConfiguration() throws IOException{ + public void saveCurrentConfiguration() throws IOException { String filename = this.getConfigurationFile(); - + File configFile = new File(filename); - + Properties props = new Properties(); - + props.clear(); + props.setProperty(BKU_CONFIG, this.getDefaultBKU().toString()); props.setProperty(PROXY_HOST_CONFIG, this.getProxyHost()); - props.setProperty(PROXY_PORT_CONFIG, Integer.toString(this.getProxyPort())); + props.setProperty(PROXY_PORT_CONFIG, + Integer.toString(this.getProxyPort())); props.setProperty(EMBLEM_CONFIG, this.getDefaultEmblem()); props.setProperty(MOBILE_NUMBER_CONFIG, this.getDefaultMobileNumber()); - + props.setProperty(OUTPUT_FOLDER_CONFIG, this.getDefaultOutputFolder()); + SignaturePosition pos = this.getDefaultSignaturePosition(); - - if(pos == null) { + + if (pos == null) { props.setProperty(SIGNATURE_POSITION_CONFIG, ""); //$NON-NLS-1$ - } else if(pos.useAutoPositioning()) { + } else if (pos.useAutoPositioning()) { props.setProperty(SIGNATURE_POSITION_CONFIG, "auto"); //$NON-NLS-1$ } else { - props.setProperty(SIGNATURE_POSITION_CONFIG, - String.format("x=%f;y=%f;p=%d", //$NON-NLS-1$ - pos.getX(), - pos.getY(), - pos.getPage())); + props.setProperty(SIGNATURE_POSITION_CONFIG, + String.format("x=%f;y=%f;p=%d", //$NON-NLS-1$ + pos.getX(), pos.getY(), pos.getPage())); } - + FileOutputStream outputstream = new FileOutputStream(configFile, false); - + props.store(outputstream, "Configuration file was generated!"); //$NON-NLS-1$ + + log.info("Configuration file saved to " + configFile.getAbsolutePath()); //$NON-NLS-1$ + + } + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.workflow.ConfigManipulator#setDefaultOutputFolder + * (java.lang.String) + */ + @Override + public void setDefaultOutputFolder(String outputFolder) { + this.outputFolder = outputFolder; + } + + /* + * (non-Javadoc) + * + * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultOutputFolder() + */ + @Override + public String getDefaultOutputFolder() { + return this.outputFolder; + } + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.workflow.ConfigProvider#loadConfiguration(java.io + * .InputStream) + */ + @Override + public void loadConfiguration(InputStream configSource) throws IOException { + + Properties config = new Properties(); + config.load(configSource); + + // Set Emblem + this.setDefaultEmblem(config + .getProperty(ConfigManipulator.EMBLEM_CONFIG)); + + // Set Mobile Phone Number + this.setDefaultMobileNumber(config + .getProperty(ConfigManipulator.MOBILE_NUMBER_CONFIG)); + + // Set Proxy Host + this.setProxyHost(config + .getProperty(ConfigManipulator.PROXY_HOST_CONFIG)); + + // Set Output Folder + this.setDefaultOutputFolder(config + .getProperty(ConfigManipulator.OUTPUT_FOLDER_CONFIG)); + + // Set Proxy Port + String proxyPortString = config + .getProperty(ConfigManipulator.PROXY_PORT_CONFIG); + + if (proxyPortString != null && !proxyPortString.trim().equals("")) { //$NON-NLS-1$ + int port = Integer.parseInt(proxyPortString); + + if (port > 0 && port <= 0xFFFF) { + this.setProxyPort(port); + } else { + log.warn("Proxy port is out of range!: " + port); //$NON-NLS-1$ + } + } + + // Set Default BKU + String bkuString = config.getProperty(ConfigManipulator.BKU_CONFIG); + + BKUs defaultBKU = BKUs.NONE; + + try { + defaultBKU = BKUs.valueOf(bkuString); + } catch (IllegalArgumentException ex) { + log.error("Invalid BKU config value " + bkuString + " using none!"); //$NON-NLS-1$ //$NON-NLS-2$ + defaultBKU = BKUs.NONE; + } catch (NullPointerException ex) { + log.error("Invalid BKU config value " + bkuString + " using none!"); //$NON-NLS-1$ //$NON-NLS-2$ + defaultBKU = BKUs.NONE; + } + + this.setDefaultBKU(defaultBKU); + + // Set Signature Position + String signaturePosition = config + .getProperty(ConfigManipulator.SIGNATURE_POSITION_CONFIG); + + SignaturePosition position = null; + + if (signaturePosition != null && !signaturePosition.trim().equals("")) { //$NON-NLS-1$ + + signaturePosition = signaturePosition.trim().toLowerCase(); + + Pattern pattern = Pattern.compile(SIGN_POS_REGEX); + + Matcher matcher = pattern.matcher(signaturePosition); + + if (matcher.matches()) { + if (matcher.groupCount() == 8) { + if (matcher.group(1) != null) { + // we have format: x=..;y=..;p=... + try { + // group 2 = x value + float x = Float.parseFloat(matcher.group(2)); + + // group 3 = y value + float y = Float.parseFloat(matcher.group(3)); + + // group 4 = p value + int p = Integer.parseInt(matcher.group(3)); + + position = new SignaturePosition(x, y, p); + } catch (NumberFormatException ex) { + log.error( + "Signature Position read from config failed: Not a valid number", ex); //$NON-NLS-1$ + } + } else if (matcher.group(5) != null) { + // we have format auto + position = new SignaturePosition(); + } else if (matcher.group(6) != null) { + // we have format x=...;y=...; + // group 7 = x value + float x = Float.parseFloat(matcher.group(7)); + + // group 8 = y value + float y = Float.parseFloat(matcher.group(8)); + + position = new SignaturePosition(x, y); + } + } else { + log.error("Signature Position read from config failed: wrong group Count!"); //$NON-NLS-1$ + } + } else { + log.error("Signature Position read from config failed: not matching string"); //$NON-NLS-1$ + } + + } + + this.setDefaultSignaturePosition(position); } - + } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainer.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigurationContainer.java index 66245123..796a4cec 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainer.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigurationContainer.java @@ -13,7 +13,7 @@ * See the Licence for the specific language governing permissions and * limitations under the Licence. */ -package at.asit.pdfover.gui.composites; +package at.asit.pdfover.gui.workflow; import at.asit.pdfover.gui.exceptions.InvalidEmblemFile; import at.asit.pdfover.gui.exceptions.InvalidNumberException; diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainerImpl.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigurationContainerImpl.java index dd305201..081f4072 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationContainerImpl.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigurationContainerImpl.java @@ -13,7 +13,7 @@ * See the Licence for the specific language governing permissions and * limitations under the Licence. */ -package at.asit.pdfover.gui.composites; +package at.asit.pdfover.gui.workflow; // Imports import java.io.File; @@ -38,6 +38,7 @@ public class ConfigurationContainerImpl implements ConfigurationContainer { /** * SLF4J Logger instance **/ + @SuppressWarnings("unused") private static final Logger log = LoggerFactory .getLogger(ConfigurationContainerImpl.class); diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java index 4b468ad8..52dfb5c9 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java @@ -19,6 +19,9 @@ package at.asit.pdfover.gui.workflow.states; import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.MainWindowBehavior; +import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.composites.ConfigurationComposite; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.Status; @@ -30,6 +33,7 @@ public class ConfigurationUIState extends State { /** * SLF4J Logger instance **/ + @SuppressWarnings("unused") private static final Logger log = LoggerFactory .getLogger(ConfigurationUIState.class); @@ -41,6 +45,7 @@ public class ConfigurationUIState extends State { this.configurationComposite = this.stateMachine.getGUIProvider().createComposite(ConfigurationComposite.class, SWT.RESIZE, this); this.configurationComposite.setConfigManipulator(this.stateMachine.getConfigManipulator()); + this.configurationComposite.setConfigProvider(this.stateMachine.getConfigProvider()); } return this.configurationComposite; @@ -88,6 +93,8 @@ public class ConfigurationUIState extends State { @Override public void updateMainWindowBehavior() { // Leave the state as it is + MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior(); + behavior.setMainBarVisible(false); } } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java index 234cd215..f39deada 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java @@ -41,7 +41,7 @@ public class MobileBKUState extends State { */ public MobileBKUState(StateMachine stateMachine) { super(stateMachine); - this.status = new MobileBKUStatus(); + this.status = new MobileBKUStatus(this.stateMachine.getConfigProvider()); } /** diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java index 50aee387..2ebc3f39 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java @@ -16,6 +16,10 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,8 +27,10 @@ import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.composites.OutputComposite; +import at.asit.pdfover.gui.controls.ErrorDialog; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.Status; +import at.asit.pdfover.signator.DocumentSource; /** * Procduces the output of the signature process. (save file, open file) @@ -42,48 +48,74 @@ public class OutputState extends State { * SFL4J Logger instance **/ @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(OutputState.class); - + private static final Logger log = LoggerFactory + .getLogger(OutputState.class); + private OutputComposite outputComposite = null; private OutputComposite getSelectionComposite() { if (this.outputComposite == null) { - this.outputComposite = - this.stateMachine.getGUIProvider().createComposite(OutputComposite.class, SWT.RESIZE, this); + this.outputComposite = this.stateMachine.getGUIProvider() + .createComposite(OutputComposite.class, SWT.RESIZE, this); } return this.outputComposite; } - + + private boolean saved = false; + @Override public void run() { // TODO Preform output operations ... end workflow - + Status status = this.stateMachine.getStatus(); - - if(status.getSignResult() != null) - { + + if (status.getSignResult() != null) { OutputComposite outputComposite = this.getSelectionComposite(); - outputComposite.setSignedDocument(status.getSignResult().getSignedDocument()); + outputComposite.setSignedDocument(status.getSignResult() + .getSignedDocument()); this.stateMachine.getGUIProvider().display(outputComposite); - - /*DocumentSource signedDocument = status.getSignResult().getSignedDocument(); - - FileOutputStream output; - try { - output = new FileOutputStream(new File("/tmp/test.pdf")); - output.write(signedDocument.getByteArray(), 0, signedDocument.getByteArray().length); - output.close(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - }*/ + + if (!this.saved) { + this.saved = true; + String outputFolder = this.stateMachine.getConfigProvider() + .getDefaultOutputFolder(); + String fileName = status.getDocument().getName(); + if (outputFolder != null && !outputFolder.trim().equals("")) { //$NON-NLS-1$ + DocumentSource signedDocument = status.getSignResult().getSignedDocument(); + FileOutputStream output; + try { + output = new FileOutputStream(new File(outputFolder + "/" + fileName + "_signed.pdf")); //$NON-NLS-1$ //$NON-NLS-2$ + output.write(signedDocument.getByteArray(), 0, + signedDocument.getByteArray().length); + output.close(); + } catch (IOException e) { + log.error("Failed to save signed document to configured output folder.", e); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog(outputComposite.getShell(), SWT.NONE, "Failed to save signed document to configured output folder.", e); + dialog.open(); + } + } + } + + /* + * DocumentSource signedDocument = + * status.getSignResult().getSignedDocument(); + * + * FileOutputStream output; try { output = new FileOutputStream(new + * File("/tmp/test.pdf")); + * output.write(signedDocument.getByteArray(), 0, + * signedDocument.getByteArray().length); output.close(); } catch + * (IOException e) { // TODO Auto-generated catch block + * e.printStackTrace(); } + */ } - - //this.stateMachine.exit(); + + // this.stateMachine.exit(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() */ @Override @@ -92,12 +124,15 @@ public class OutputState extends State { this.outputComposite.dispose(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ @Override public void updateMainWindowBehavior() { - MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior(); + MainWindowBehavior behavior = this.stateMachine.getStatus() + .getBehavior(); behavior.reset(); behavior.setEnabled(Buttons.CONFIG, true); behavior.setEnabled(Buttons.OPEN, true); @@ -110,7 +145,7 @@ public class OutputState extends State { } @Override - public String toString() { + public String toString() { return this.getClass().getName(); } } diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java index b4b05318..a1de09d0 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java @@ -20,9 +20,6 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,9 +32,7 @@ import at.asit.pdfover.gui.cliarguments.PhoneNumberArgument; import at.asit.pdfover.gui.exceptions.InitializationException; import at.asit.pdfover.gui.workflow.ConfigManipulator; import at.asit.pdfover.gui.workflow.StateMachine; -import at.asit.pdfover.signator.BKUs; import at.asit.pdfover.signator.Signator; -import at.asit.pdfover.signator.SignaturePosition; /** * Starting state of workflow proccess @@ -46,11 +41,7 @@ import at.asit.pdfover.signator.SignaturePosition; */ public class PrepareConfigurationState extends State { - /** - * Regex for parsing signature position - */ - public static final String SIGN_POS_REGEX = "(x=(\\d\\.?\\d?);y=(\\d\\.?\\d?);p=(\\d))|(auto)|(x=(\\d\\.?\\d?);y=(\\d\\.?\\d?))"; //$NON-NLS-1$ - + /** * @param stateMachine */ @@ -81,10 +72,12 @@ public class PrepareConfigurationState extends State { private void initializeFromConfigurationFile(String filename) throws InitializationException { try { - Properties config = new Properties(); try { - config.load(new FileInputStream(filename)); + this.stateMachine.getConfigProvider().loadConfiguration(new FileInputStream(filename)); + + log.info("Loaded config from file : " + filename); //$NON-NLS-1$ + } catch (FileNotFoundException ex) { if (filename.equals(ConfigManipulator.DEFAULT_CONFIG_FILE)) { // we only check for resource config file if it is the @@ -92,7 +85,9 @@ public class PrepareConfigurationState extends State { try { InputStream is = this.getClass().getResourceAsStream( "/" + filename); //$NON-NLS-1$ - config.load(is); + this.stateMachine.getConfigProvider().loadConfiguration(is); + + log.info("Loaded config from resource : " + filename); //$NON-NLS-1$ } catch (Exception eex) { throw ex; } @@ -100,112 +95,7 @@ public class PrepareConfigurationState extends State { throw ex; } } - - // Load ok ... - ConfigManipulator configManipulator = this.stateMachine - .getConfigManipulator(); - - // Set Emblem - configManipulator.setDefaultEmblem(config - .getProperty(ConfigManipulator.EMBLEM_CONFIG)); - - // Set Mobile Phone Number - configManipulator.setDefaultMobileNumber(config - .getProperty(ConfigManipulator.MOBILE_NUMBER_CONFIG)); - - // Set Proxy Host - configManipulator.setProxyHost(config - .getProperty(ConfigManipulator.PROXY_HOST_CONFIG)); - - // Set Proxy Port - String proxyPortString = config - .getProperty(ConfigManipulator.PROXY_PORT_CONFIG); - - if (proxyPortString != null && !proxyPortString.trim().equals("")) { //$NON-NLS-1$ - int port = Integer.parseInt(proxyPortString); - - if (port > 0 && port <= 0xFFFF) { - configManipulator.setProxyPort(port); - } else { - log.warn("Proxy port is out of range!: " + port); //$NON-NLS-1$ - } - } - - // Set Default BKU - String bkuString = config.getProperty(ConfigManipulator.BKU_CONFIG); - - BKUs defaultBKU = BKUs.NONE; - - try { - defaultBKU = BKUs.valueOf(bkuString); - } catch (IllegalArgumentException ex) { - log.error("Invalid BKU config value " + bkuString + " using none!"); //$NON-NLS-1$ //$NON-NLS-2$ - defaultBKU = BKUs.NONE; - } catch (NullPointerException ex) { - log.error("Invalid BKU config value " + bkuString + " using none!"); //$NON-NLS-1$ //$NON-NLS-2$ - defaultBKU = BKUs.NONE; - } - - configManipulator.setDefaultBKU(defaultBKU); - - // Set Signature Position - String signaturePosition = config - .getProperty(ConfigManipulator.SIGNATURE_POSITION_CONFIG); - - SignaturePosition position = null; - - if (signaturePosition != null - && !signaturePosition.trim().equals("")) { //$NON-NLS-1$ - - signaturePosition = signaturePosition.trim().toLowerCase(); - - Pattern pattern = Pattern.compile(SIGN_POS_REGEX); - - Matcher matcher = pattern.matcher(signaturePosition); - - if (matcher.matches()) { - if (matcher.groupCount() == 8) { - if (matcher.group(1) != null) { - // we have format: x=..;y=..;p=... - try { - // group 2 = x value - float x = Float.parseFloat(matcher.group(2)); - - // group 3 = y value - float y = Float.parseFloat(matcher.group(3)); - - // group 4 = p value - int p = Integer.parseInt(matcher.group(3)); - - position = new SignaturePosition(x, y, p); - } catch (NumberFormatException ex) { - log.error( - "Signature Position read from config failed: Not a valid number", ex); //$NON-NLS-1$ - } - } else if (matcher.group(5) != null) { - // we have format auto - position = new SignaturePosition(); - } else if (matcher.group(6) != null) { - // we have format x=...;y=...; - // group 7 = x value - float x = Float.parseFloat(matcher.group(7)); - - // group 8 = y value - float y = Float.parseFloat(matcher.group(8)); - - position = new SignaturePosition(x, y); - } - } else { - log.error("Signature Position read from config failed: wrong group Count!"); //$NON-NLS-1$ - } - } else { - log.error("Signature Position read from config failed: not matching string"); //$NON-NLS-1$ - } - - } - - configManipulator.setDefaultSignaturePosition(position); - + } catch (IOException ex) { throw new InitializationException( "Failed to read configuration from config file", ex); //$NON-NLS-1$ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index 1b7ed600..88acc84b 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -23,9 +23,11 @@ import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.composites.WaitingComposite; +import at.asit.pdfover.gui.workflow.ConfigProvider; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.Status; import at.asit.pdfover.signator.BKUs; +import at.asit.pdfover.signator.FileNameEmlbem; import at.asit.pdfover.signator.PDFFileDocumentSource; import at.asit.pdfover.signator.SignatureParameter; import at.asit.pdfover.signator.Signer; @@ -57,6 +59,11 @@ public class PrepareSigningState extends State { @Override public void run() { try { + + Status status = this.state.stateMachine.getStatus(); + + ConfigProvider configuration = this.state.stateMachine.getConfigProvider(); + if(this.state.signer == null) { this.state.signer = this.state.stateMachine.getPDFSigner().getPDFSigner(); } @@ -65,12 +72,15 @@ public class PrepareSigningState extends State { this.state.signatureParameter = this.state.signer.newParameter(); } - this.state.signatureParameter.setInputDocument(new PDFFileDocumentSource(this.state.stateMachine.getStatus().getDocument())); - this.state.signatureParameter.setSignatureDevice(this.state.stateMachine.getStatus().getBKU()); - this.state.signatureParameter.setSignaturePosition(this.state.stateMachine.getStatus().getSignaturePosition()); + this.state.signatureParameter.setInputDocument(new PDFFileDocumentSource(status.getDocument())); + this.state.signatureParameter.setSignatureDevice(status.getBKU()); + this.state.signatureParameter.setSignaturePosition(status.getSignaturePosition()); // TODO: Fill library specific signature Parameters ... - // TODO: setEmblem etc. + + if(configuration.getDefaultEmblem() != null && !configuration.getDefaultEmblem().equals("")) { //$NON-NLS-1$ + this.state.signatureParameter.setEmblem(new FileNameEmlbem(configuration.getDefaultEmblem())); + } this.state.signingState = this.state.signer.prepare(this.state.signatureParameter); diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java index 1ea265ad..a1868462 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/ATrustHelper.java @@ -22,7 +22,6 @@ import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import at.asit.pdfover.gui.composites.MobileBKUEnterNumberComposite; import at.asit.pdfover.gui.exceptions.InvalidNumberException; import at.asit.pdfover.gui.exceptions.InvalidPasswordException; import at.asit.pdfover.gui.exceptions.PasswordTooLongException; diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/MobileBKUStatus.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/MobileBKUStatus.java index 344eaf58..fe85d492 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/MobileBKUStatus.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/MobileBKUStatus.java @@ -19,6 +19,8 @@ package at.asit.pdfover.gui.workflow.states.mobilebku; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.asit.pdfover.gui.workflow.ConfigProvider; + /** * */ @@ -26,16 +28,22 @@ public class MobileBKUStatus { /** * SLF4J Logger instance **/ + @SuppressWarnings("unused") private static final Logger log = LoggerFactory .getLogger(MobileBKUStatus.class); + /** + * Maximum number of TAN tries! + */ public static final int MOBILE_MAX_TAN_TRIES = 3; /** * Constructor + * @param provider */ - public MobileBKUStatus() { - // TODO: Fill number and password with possible config values! + public MobileBKUStatus(ConfigProvider provider) { + this.setPhoneNumber(provider.getDefaultMobileNumber()); + this.setMobilePassword(provider.getDefaultPassword()); } String viewstate; @@ -122,7 +130,7 @@ public class MobileBKUStatus { } /** - * @param credentialsFormAction the credentialsFormAction to set + * @param baseURL */ public void setBaseURL(String baseURL) { this.baseURL = baseURL; diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java index df18c231..bfb6f66a 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostCredentialsThread.java @@ -68,7 +68,7 @@ public class PostCredentialsThread implements Runnable { client.getParams().setParameter("http.useragent", //$NON-NLS-1$ LocalBKUState.PDF_OVER_USER_AGENT_STRING); - PostMethod method = new PostMethod(status.getBaseURL() + "/identification.aspx?sid=" + status.getSessionID()); + PostMethod method = new PostMethod(status.getBaseURL() + "/identification.aspx?sid=" + status.getSessionID()); //$NON-NLS-1$ method.addParameter("__VIEWSTATE", status.getViewstate()); //$NON-NLS-1$ method.addParameter("__EVENTVALIDATION", status.getEventvalidation()); //$NON-NLS-1$ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java index f8f7eac2..bd2f5b53 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/PostSLRequestThread.java @@ -70,10 +70,9 @@ public class PostSLRequestThread implements Runnable { client.getParams().setParameter("http.useragent", //$NON-NLS-1$ LocalBKUState.PDF_OVER_USER_AGENT_STRING); - // TODO: move URL to config!! - - //String url = "https://www.a-trust.at/mobile/https-security-layer-request/default.aspx"; - String url = "https://test1.a-trust.at/https-security-layer-request/default.aspx"; + // TODO: move URL to config? + String url = "https://www.a-trust.at/mobile/https-security-layer-request/default.aspx"; //$NON-NLS-1$ + //String url = "https://test1.a-trust.at/https-security-layer-request/default.aspx"; PostMethod method = new PostMethod(url); diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java index 5e9d8159..91aa6caa 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/mobilebku/TrustedSocketFactory.java @@ -46,7 +46,7 @@ public class TrustedSocketFactory implements ProtocolSocketFactory { private static final Logger log = LoggerFactory .getLogger(TrustedSocketFactory.class); - private SSLSocketFactory getFactory() throws NoSuchAlgorithmException, + private static SSLSocketFactory getFactory() throws NoSuchAlgorithmException, KeyManagementException, Exception { SSLContext sslContext = SSLContext.getInstance("TLS"); //$NON-NLS-1$ sslContext.init(null, new TrustManager[] { new ASITTrustManager() }, @@ -71,7 +71,7 @@ public class TrustedSocketFactory implements ProtocolSocketFactory { return sslSocket; } catch (Exception ex) { - log.error("TrustedSocketFactory: ", ex); + log.error("TrustedSocketFactory: ", ex); //$NON-NLS-1$ if (ex instanceof IOException) { throw (IOException) ex; } else if (ex instanceof UnknownHostException) { @@ -99,7 +99,7 @@ public class TrustedSocketFactory implements ProtocolSocketFactory { return sslSocket; } catch (Exception ex) { - log.error("TrustedSocketFactory: ", ex); + log.error("TrustedSocketFactory: ", ex); //$NON-NLS-1$ if (ex instanceof IOException) { throw (IOException) ex; } else if (ex instanceof UnknownHostException) { @@ -144,7 +144,7 @@ public class TrustedSocketFactory implements ProtocolSocketFactory { } return socket; } catch (Exception ex) { - log.error("TrustedSocketFactory: ", ex); + log.error("TrustedSocketFactory: ", ex); //$NON-NLS-1$ if (ex instanceof IOException) { throw (IOException) ex; } else if (ex instanceof UnknownHostException) { diff --git a/trunk/pdf-over-gui/src/main/resources/img/config.png b/trunk/pdf-over-gui/src/main/resources/img/config.png Binary files differnew file mode 100644 index 00000000..6e52db7c --- /dev/null +++ b/trunk/pdf-over-gui/src/main/resources/img/config.png diff --git a/trunk/pdf-over-gui/src/main/resources/img/handy.gif b/trunk/pdf-over-gui/src/main/resources/img/handy.gif Binary files differnew file mode 100644 index 00000000..5aeb542d --- /dev/null +++ b/trunk/pdf-over-gui/src/main/resources/img/handy.gif diff --git a/trunk/pdf-over-gui/src/main/resources/img/karte.gif b/trunk/pdf-over-gui/src/main/resources/img/karte.gif Binary files differnew file mode 100644 index 00000000..ee9ab7ca --- /dev/null +++ b/trunk/pdf-over-gui/src/main/resources/img/karte.gif diff --git a/trunk/pdf-over-gui/tmp_signed.pdf b/trunk/pdf-over-gui/tmp_signed.pdf Binary files differindex 2968b898..6e7d781a 100644 --- a/trunk/pdf-over-gui/tmp_signed.pdf +++ b/trunk/pdf-over-gui/tmp_signed.pdf diff --git a/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/BKUs.java b/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/BKUs.java index 5720db51..a55d3940 100644 --- a/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/BKUs.java +++ b/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/BKUs.java @@ -17,18 +17,19 @@ package at.asit.pdfover.signator; /** * Enumeration of available BKU types + * */ public enum BKUs { /** * Local bku */ LOCAL, - + /** * Mobile bku */ MOBILE, - + /** * None bku */ diff --git a/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java b/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java new file mode 100644 index 00000000..ac2f9e49 --- /dev/null +++ b/trunk/pdf-over-signator/src/main/java/at/asit/pdfover/signator/FileNameEmlbem.java @@ -0,0 +1,50 @@ +/* + * 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.signator; + +// Imports +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + */ +public class FileNameEmlbem implements Emblem { + /** + * SLF4J Logger instance + **/ + private static final Logger log = LoggerFactory + .getLogger(FileNameEmlbem.class); + + private String fileName = null; + + /** + * Constructor + * @param filename + */ + public FileNameEmlbem(String filename) { + this.fileName = filename; + } + + /* (non-Javadoc) + * @see at.asit.pdfover.signator.Emblem#getFileName() + */ + @Override + public String getFileName() { + return this.fileName; + } + +} |