From 6d81b2dfa1a2ddb9192b864cc8f4585469bddadd Mon Sep 17 00:00:00 2001 From: tkellner Date: Mon, 1 Oct 2012 08:30:40 +0000 Subject: Configuration and Main Bar Buttons git-svn-id: https://svn.iaik.tugraz.at/svn/egiz/prj/current/12PDF-OVER-4.0@12534 3a0b52a2-8410-0410-bc02-ff6273a87459 --- .../composites/AdvancedConfigurationComposite.java | 286 ++++++++++++++++++++- 1 file changed, 279 insertions(+), 7 deletions(-) (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java') 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(); } } -- cgit v1.2.3