[Schmitzm-commits] r1613 - in trunk/schmitzm-core/src/main/java/de/schmitzm/swing: . input
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Jun 23 21:03:27 CEST 2011
Author: mojays
Date: 2011-06-23 21:03:26 +0200 (Thu, 23 Jun 2011)
New Revision: 1613
Added:
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/DateInputOption.java
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingWorker.java
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/ManualInputOption.java
Log:
InputOption: neue Kontruktoren f?\195?\188r Sub-Klassen
NEU: DateInputOption
SwingWorker: check auf "canceled" erweitert
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingWorker.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingWorker.java 2011-06-23 10:54:59 UTC (rev 1612)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingWorker.java 2011-06-23 19:03:26 UTC (rev 1613)
@@ -220,7 +220,7 @@
* manuell durch den Dialog) abgebrochen wurde.
*/
public boolean isCanceled() {
- return canceled;
+ return canceled || (dialog != null && dialog.isCanceled());
}
/**
Added: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/DateInputOption.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/DateInputOption.java 2011-06-23 10:54:59 UTC (rev 1612)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/DateInputOption.java 2011-06-23 19:03:26 UTC (rev 1613)
@@ -0,0 +1,160 @@
+package de.schmitzm.swing.input;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+import javax.swing.JComponent;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import com.toedter.calendar.JDateChooser;
+
+/**
+ * Diese Klasse stellt eine Eingabe-Option dar, in der ein Datum
+ * eingegeben werden kann.
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
+ * @version 1.0
+ */
+public class DateInputOption extends InputOption<Date>{
+
+ private String formatPattern;
+ private String formatMaskPattern;
+ private Character formatPlaceholder;
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ * @param defValue
+ * Wert der im Textfeld vorgeblendet wird
+ * @param formatPattern
+ * Format fuer das Text-Feld der Komponente
+ * @param formatMaskPattern
+ * Mask-Pattern, das fuer das Eingabe-Format des {@link JDateChooser} verwendet wird
+ * @param formatPlaceholder
+ * Placeholder, das fuer das Eingabe-Format des {@link JDateChooser} verwendet wird
+ */
+ public DateInputOption(String label, boolean inputNeeded, Date defValue, String formatPattern, String formatMaskPattern, Character formatPlaceholder) {
+ super();
+ this.formatPattern = formatPattern;
+ this.formatMaskPattern = formatMaskPattern;
+ this.formatPlaceholder = formatPlaceholder;
+ init(label, inputNeeded, false);
+ ((JDateChooser)inpComp).setDate(defValue);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ * @param defValue
+ * Wert der im Textfeld vorgeblendet wird
+ * @param formatPattern
+ * Format fuer das Text-Feld der Komponente
+ */
+ public DateInputOption(String label, boolean inputNeeded, Date defValue, String formatPattern) {
+ this(label,inputNeeded,defValue,formatPattern,null,null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ * @param defValue
+ * Wert der im Textfeld vorgeblendet wird
+ */
+ public DateInputOption(String label, boolean inputNeeded, Date defValue) {
+ this(label,inputNeeded,defValue,null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ */
+ public DateInputOption(String label, boolean inputNeeded) {
+ this(label, inputNeeded, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ */
+ public DateInputOption(String label) {
+ this(label, true, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ * @param defValue
+ * Wert der im Textfeld vorgeblendet wird
+ */
+ public DateInputOption(String label, Date defValue) {
+ this(label, true, defValue);
+ }
+
+ /**
+ * Erzeugt eine neue Instanz von {@link JDateChooser}.
+ */
+ @Override
+ protected JDateChooser createInputComponent() {
+ if ( formatMaskPattern != null && formatPlaceholder != null )
+ return new JDateChooser(formatPattern,formatMaskPattern,formatPlaceholder);
+ return new JDateChooser(null,formatPattern);
+ }
+
+ /**
+ * Liefert die aktuelle Eingabe im {@link JDateChooser}.
+ */
+ @Override
+ protected Date performGetValue() {
+ return ((JDateChooser)inpComp).getDate();
+ }
+
+ /**
+ * Setzt die aktuelle Eingabe im {@link JDateChooser}.
+ * @return immer {@code true}
+ */
+ @Override
+ protected boolean performSetValue(Date newValue) {
+ ((JDateChooser)inpComp).setDate(newValue);
+ return true;
+ }
+
+ /**
+ * Prueft, ob die Eingabe leer ist.
+ */
+ @Override
+ protected boolean performIsInputEmpty() {
+ return ((JDateChooser)inpComp).getDate() == null;
+ }
+
+ /**
+ * Prueft, ob die Eingabe gueltig ist.
+ */
+ @Override
+ protected boolean performIsInputValid() {
+ return ((JDateChooser)inpComp).getDate() != null;
+ }
+
+}
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java 2011-06-23 10:54:59 UTC (rev 1612)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java 2011-06-23 19:03:26 UTC (rev 1613)
@@ -133,6 +133,14 @@
}
/**
+ * Erzeugt eine neue Eingabe-Option. {@link #init(String, boolean, boolean)}
+ * muss nachtraeglich aufgerufen werden!
+ */
+ protected InputOption() {
+ super();
+ }
+
+ /**
* Erzeugt eine neue Eingabe-Option.
*
* @param label
@@ -144,7 +152,8 @@
this(label, inputNeeded, false);
}
- /**
+
+ /**
* Erzeugt eine neue Eingabe-Option.
*
* @param label
@@ -158,49 +167,64 @@
*/
public InputOption(String label, boolean inputNeeded,
boolean centerInputComp) {
- this.inpNeeded = inputNeeded;
-
- // Darstellung des Containers erzeugen
- setLayout(new BorderLayout());
- descLabel = new JLabel(label);
- inputNeededLabel = new JLabel();
- inputNeededLabel.setForeground(defaultInputNeededSignColor);
- inpComp = createInputComponent();
- inpComp.addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent e) {
- oldValue = getValue();
- fireFocusGained();
- }
-
- public void focusLost(FocusEvent e) {
- fireFocusLost();
- if (oldValue == null && getValue() != null || oldValue != null
- && !oldValue.equals(getValue()))
- fireOptionChanged(oldValue, getValue());
- }
- });
- setInputNeeded(inputNeeded);
-
- // Elemente dem Container hinzufuegen
- if (label != null) {
- // put description and mandatory indicator in an
- // container first
- descLabelContainer = new Container();
- descLabelContainer.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
- descLabelContainer.add(descLabel);
- descLabelContainer.add(inputNeededLabel);
- // add container to layout
- add(descLabelContainer, BorderLayout.NORTH);
- add(inpComp, centerInputComp ? BorderLayout.CENTER
- : BorderLayout.SOUTH);
- } else {
- add(inpComp, centerInputComp ? BorderLayout.CENTER
- : BorderLayout.NORTH);
- }
- doLayout();
+ super();
+ init(label, inputNeeded, centerInputComp);
}
/**
+ * Initialisiert die {@link InputOption}.
+ * @param label
+ * Beschreibung (wird im Label angezeigt)
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe in der Option erforderlich ist
+ * @param centerInputComp
+ * bestimmt, ob die Eingabe-Komponente (siehe
+ * {@link #createInputComponent()}) ins Zentrum des
+ * {@link BorderLayout} gelegt wird)
+ */
+ protected void init(String label, boolean inputNeeded, boolean centerInputComp) {
+ this.inpNeeded = inputNeeded;
+ // Darstellung des Containers erzeugen
+ setLayout(new BorderLayout());
+ descLabel = new JLabel(label);
+ inputNeededLabel = new JLabel();
+ inputNeededLabel.setForeground(defaultInputNeededSignColor);
+ inpComp = createInputComponent();
+ inpComp.addFocusListener(new FocusListener() {
+ public void focusGained(FocusEvent e) {
+ oldValue = getValue();
+ fireFocusGained();
+ }
+
+ public void focusLost(FocusEvent e) {
+ fireFocusLost();
+ if (oldValue == null && getValue() != null || oldValue != null
+ && !oldValue.equals(getValue()))
+ fireOptionChanged(oldValue, getValue());
+ }
+ });
+ setInputNeeded(inputNeeded);
+
+ // Elemente dem Container hinzufuegen
+ if (label != null) {
+ // put description and mandatory indicator in an
+ // container first
+ descLabelContainer = new Container();
+ descLabelContainer.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
+ descLabelContainer.add(descLabel);
+ descLabelContainer.add(inputNeededLabel);
+ // add container to layout
+ add(descLabelContainer, BorderLayout.NORTH);
+ add(inpComp, centerInputComp ? BorderLayout.CENTER
+ : BorderLayout.SOUTH);
+ } else {
+ add(inpComp, centerInputComp ? BorderLayout.CENTER
+ : BorderLayout.NORTH);
+ }
+ doLayout();
+ }
+
+ /**
* Deaktiviert die Option, in dem die Eingabe-Komponente deaktiviert wird.
*/
@Override
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/ManualInputOption.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/ManualInputOption.java 2011-06-23 10:54:59 UTC (rev 1612)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/ManualInputOption.java 2011-06-23 19:03:26 UTC (rev 1613)
@@ -639,5 +639,4 @@
}
}
-
}
More information about the Schmitzm-commits
mailing list