[Schmitzm-commits] r1642 - trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Jul 21 19:20:37 CEST 2011
Author: mojays
Date: 2011-07-21 19:20:36 +0200 (Thu, 21 Jul 2011)
New Revision: 1642
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/DateInputOption.java
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/MultiLineTextInputOption.java
Log:
MultiLineTextInputOption splitted in .TextArea and .TextPane
DateInputOption splitted in .DateOnly and .DateTime
Modified: 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-07-21 15:21:44 UTC (rev 1641)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/DateInputOption.java 2011-07-21 17:20:36 UTC (rev 1642)
@@ -1,9 +1,18 @@
package de.schmitzm.swing.input;
+import java.awt.FlowLayout;
import java.util.Date;
+import javax.swing.JComponent;
+import javax.swing.JSpinner;
+import javax.swing.JSpinner.DateEditor;
+import javax.swing.SpinnerDateModel;
+
import com.toedter.calendar.JDateChooser;
+import de.schmitzm.lang.LangUtil;
+import de.schmitzm.swing.JPanel;
+
/**
* Diese Klasse stellt eine Eingabe-Option dar, in der ein Datum
* eingegeben werden kann.
@@ -11,13 +20,21 @@
* (University of Bonn/Germany)
* @version 1.0
*/
-public class DateInputOption extends InputOption<Date>{
+public abstract class DateInputOption extends InputOption<Date>{
- private String formatPattern;
- private String formatMaskPattern;
- private Character formatPlaceholder;
+ protected String formatPattern;
+ protected String formatMaskPattern;
+ protected Character formatPlaceholder;
/**
+ * Erzeugt eine neue Eingabe-Option. {@link #init(String, boolean, boolean)}
+ * muss nachtraeglich aufgerufen werden!
+ */
+ protected DateInputOption() {
+ super();
+ }
+
+ /**
* Erzeugt eine neue Eingabe-Option.
*
* @param label
@@ -39,7 +56,6 @@
this.formatMaskPattern = formatMaskPattern;
this.formatPlaceholder = formatPlaceholder;
init(label, inputNeeded, false);
- ((JDateChooser)inpComp).setDate(defValue);
}
/**
@@ -109,47 +125,319 @@
}
/**
- * Erzeugt eine neue Instanz von {@link JDateChooser}.
+ * Diese Klasse stellt eine Eingabe-Option dar, in der ein Datum (ohne Zeit)
+ * eingegeben werden kann.
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
+ * @version 1.0
*/
- @Override
- protected JDateChooser createInputComponent() {
- if ( formatMaskPattern != null && formatPlaceholder != null )
- return new JDateChooser(formatPattern,formatMaskPattern,formatPlaceholder);
- return new JDateChooser(null,formatPattern);
- }
+ public static class DateOnly extends DateInputOption{
+
+ /**
+ * 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 DateOnly(String label, boolean inputNeeded, Date defValue, String formatPattern, String formatMaskPattern, Character formatPlaceholder) {
+ super(label,inputNeeded,defValue,formatPattern,formatMaskPattern,formatPlaceholder);
+ ((JDateChooser)inpComp).setDate(defValue);
+ }
- /**
- * Liefert die aktuelle Eingabe im {@link JDateChooser}.
- */
- @Override
- protected Date performGetValue() {
- return ((JDateChooser)inpComp).getDate();
- }
+ /**
+ * 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 DateOnly(String label, boolean inputNeeded, Date defValue, String formatPattern) {
+ this(label,inputNeeded,defValue,formatPattern,null,null);
+ }
- /**
- * Setzt die aktuelle Eingabe im {@link JDateChooser}.
- * @return immer {@code true}
- */
- @Override
- protected boolean performSetValue(Date newValue) {
- ((JDateChooser)inpComp).setDate(newValue);
- return true;
+ /**
+ * 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 DateOnly(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 DateOnly(String label, boolean inputNeeded) {
+ this(label, inputNeeded, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ */
+ public DateOnly(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 DateOnly(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;
+ }
+
}
+
/**
- * Prueft, ob die Eingabe leer ist.
+ * Diese Klasse stellt eine Eingabe-Option dar, in der ein Datum zusammen
+ * mit einer Uhrzeit eingegeben werden kann.
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
+ * @version 1.0
*/
- @Override
- protected boolean performIsInputEmpty() {
- return ((JDateChooser)inpComp).getDate() == null;
- }
+ public static class DateTime extends DateInputOption{
+ /** Eingabe fuer das Datum */
+ protected JDateChooser dateChooser;
+ /** Eingabe fuer die Uhrzeit */
+ protected JSpinner timeSpinner = null;
+ protected String timeFormatPattern;
+
+ /**
+ * 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
+ * @param timeFormatPattern
+ * Format fuer die Uhrzeit im {@link JSpinner}
+ */
+ public DateTime(String label, boolean inputNeeded, Date defValue, String formatPattern, String formatMaskPattern, Character formatPlaceholder, String timeFormatPattern) {
+ super();
+ this.formatPattern = formatPattern;
+ this.formatMaskPattern = formatMaskPattern;
+ this.formatPlaceholder = formatPlaceholder;
+ this.timeFormatPattern = timeFormatPattern;
+ init(label, inputNeeded, false);
+ dateChooser.setDate(defValue);
+ timeSpinner.setValue(defValue);
+ }
- /**
- * Prueft, ob die Eingabe gueltig ist.
- */
- @Override
- protected boolean performIsInputValid() {
- return ((JDateChooser)inpComp).getDate() != 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
+ * @param formatPattern
+ * Format fuer das Text-Feld der Komponente
+ * @param timeFormatPattern
+ * Format fuer die Uhrzeit im {@link JSpinner}
+ */
+ public DateTime(String label, boolean inputNeeded, Date defValue, String formatPattern, String timeFormatPattern) {
+ this(label,inputNeeded,defValue,formatPattern,null,null,timeFormatPattern);
+ }
+
+ /**
+ * 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 DateTime(String label, boolean inputNeeded, Date defValue) {
+ this(label,inputNeeded,defValue,null,"HH:mm:ss");
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ */
+ public DateTime(String label, boolean inputNeeded) {
+ this(label, inputNeeded, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ */
+ public DateTime(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 DateTime(String label, Date defValue) {
+ this(label, true, defValue);
+ }
+
+ /**
+ * Erzeugt ein Panel, mit einem {@link JDateChooser} und einem {@link JSpinner}
+ * fuer die Uhrzeit.
+ */
+ @Override
+ protected JPanel createInputComponent() {
+ // Komponente fuer das Datum
+ if ( formatMaskPattern != null && formatPlaceholder != null )
+ dateChooser = new JDateChooser(formatPattern,formatMaskPattern,formatPlaceholder);
+ else
+ dateChooser = new JDateChooser(null,formatPattern);
+ // Komponente fuer die Uhrzeit
+ SpinnerDateModel model = new SpinnerDateModel();
+ timeSpinner = new JSpinner(model);
+ DateEditor editor = new JSpinner.DateEditor(timeSpinner, timeFormatPattern);
+ timeSpinner.setEditor(editor);
+
+ // Komponenten in Panel zusammenfassen
+ JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ panel.add(dateChooser);
+ panel.add(timeSpinner);
+ return panel;
+
+ }
+
+ /**
+ * Liefert die aktuelle Eingabe im {@link JDateChooser} kombiniert
+ * mit der Uhrzeit aus dem {@link JSpinner}.
+ */
+ @Override
+ protected Date performGetValue() {
+ return LangUtil.combineDate(dateChooser.getDate(), (Date)timeSpinner.getValue());
+ }
+
+ /**
+ * Setzt die aktuelle Eingabe im {@link JDateChooser} und {@link JSpinner}.
+ * @return immer {@code true}
+ */
+ @Override
+ protected boolean performSetValue(Date newValue) {
+ dateChooser.setDate(newValue);
+ timeSpinner.setValue(newValue);
+ return true;
+ }
+
+ /**
+ * Prueft, ob die Eingabe leer ist.
+ */
+ @Override
+ protected boolean performIsInputEmpty() {
+ return dateChooser.getDate() == null || timeSpinner.getValue() == null;
+ }
+
+ /**
+ * Prueft, ob die Eingabe gueltig ist.
+ */
+ @Override
+ protected boolean performIsInputValid() {
+ return dateChooser.getDate() != null && timeSpinner.getValue() != null;
+ }
+
}
-
}
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/MultiLineTextInputOption.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/MultiLineTextInputOption.java 2011-07-21 15:21:44 UTC (rev 1641)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/MultiLineTextInputOption.java 2011-07-21 17:20:36 UTC (rev 1642)
@@ -1,6 +1,10 @@
package de.schmitzm.swing.input;
+import java.awt.Dimension;
+
import javax.swing.JTextArea;
+import javax.swing.JTextPane;
+import javax.swing.text.JTextComponent;
import org.apache.commons.lang.StringUtils;
@@ -11,7 +15,35 @@
* (University of Bonn/Germany)
* @version 1.0
*/
-public class MultiLineTextInputOption extends InputOption<String>{
+public abstract class MultiLineTextInputOption extends InputOption<String>{
+ /** Initiale Hoehe des Textfeldes. */
+ protected int height;
+ /** Initiale Breite des Textfeldes. */
+ protected int width;
+
+
+ /**
+ * 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 rows
+ * Anzahl Zeilen fuer das Text-Feld
+ * @param cols
+ * Anzahl Spalten (Breite in Zeichen) das Text-Feld
+ */
+ public MultiLineTextInputOption(String label, boolean inputNeeded, String defValue, int rows, int cols) {
+ super();
+ this.width = cols;
+ this.height = rows;
+ init(label, inputNeeded, false);
+ ((JTextComponent)inpComp).setText(defValue);
+
+ }
/**
* Erzeugt eine neue Eingabe-Option.
@@ -24,8 +56,7 @@
* Wert der im Textfeld vorgeblendet wird
*/
public MultiLineTextInputOption(String label, boolean inputNeeded, String defValue) {
- super(label, inputNeeded, false);
- ((JTextArea)inpComp).setText(defValue);
+ this(label, inputNeeded, defValue, 5, 20);
}
@@ -53,15 +84,13 @@
}
/**
- * Erzeugt eine neue Instanz von {@link JTextArea}.
+ * Erzeugt eine neue Instanz von {@link JTextComponent}.
*/
@Override
- protected JTextArea createInputComponent() {
- return new JTextArea();
- }
+ protected abstract JTextComponent createInputComponent();
/**
- * Liefert {@code true}, da die {@link JTextArea} mehr-zeilig
+ * Liefert {@code true}, da die {@link JTextComponent} mehr-zeilig
* ist.
*/
public boolean isScrollPaneNeeded() {
@@ -69,20 +98,20 @@
}
/**
- * Liefert die aktuelle Eingabe in der {@link JTextArea}.
+ * Liefert die aktuelle Eingabe in der {@link JTextComponent}.
*/
@Override
protected String performGetValue() {
- return ((JTextArea)inpComp).getText();
+ return ((JTextComponent)inpComp).getText();
}
/**
- * Setzt die aktuelle Eingabe in der {@link JTextArea}.
+ * Setzt die aktuelle Eingabe in der {@link JTextComponent}.
* @return immer {@code true}
*/
@Override
protected boolean performSetValue(String newValue) {
- ((JTextArea)inpComp).setText(newValue);
+ ((JTextComponent)inpComp).setText(newValue);
return true;
}
@@ -91,7 +120,7 @@
*/
@Override
protected boolean performIsInputEmpty() {
- return StringUtils.trimToNull(((JTextArea)inpComp).getText()) == null;
+ return StringUtils.trimToNull(((JTextComponent)inpComp).getText()) == null;
}
/**
@@ -99,7 +128,160 @@
*/
@Override
protected boolean performIsInputValid() {
- return StringUtils.trimToNull(((JTextArea)inpComp).getText()) != null;
+ return StringUtils.trimToNull(((JTextComponent)inpComp).getText()) != null;
}
+ /**
+ * Diese Klasse stellt eine Eingabe-Option in Form einer {@link JTextArea}
+ * dar, in der ein mehr-zeiliger Text eingegeben werden kann.
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
+ * @version 1.0
+ */
+ public static class TextArea extends MultiLineTextInputOption {
+
+ /**
+ * 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 rows
+ * Anzahl Zeilen fuer das Text-Feld
+ * @param cols
+ * Anzahl Spalten (Breite in Zeichen) das Text-Feld
+ */
+ public TextArea(String label, boolean inputNeeded, String defValue, int rows, int cols) {
+ super(label,inputNeeded,defValue,rows,cols);
+
+ }
+
+ /**
+ * 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 TextArea(String label, boolean inputNeeded, String defValue) {
+ this(label, inputNeeded, defValue, 5, 20);
+
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ */
+ public TextArea(String label, boolean inputNeeded) {
+ this(label, inputNeeded, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ */
+ public TextArea(String label) {
+ this(label, true, null);
+ }
+
+ /**
+ * Erzeugt eine neue Instanz von {@link JTextArea}.
+ */
+ @Override
+ protected JTextArea createInputComponent() {
+ return new JTextArea(height,width);
+ }
+ }
+
+
+ /**
+ * Diese Klasse stellt eine Eingabe-Option in Form einer {@link JTextPane}
+ * dar, in der ein mehr-zeiliger Text eingegeben werden kann.
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
+ * @version 1.0
+ */
+ public static class TextPane extends MultiLineTextInputOption {
+
+ /**
+ * 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 height
+ * Hoehe des Text-Felds
+ * @param width
+ * Breite des Text-Felds
+ */
+ public TextPane(String label, boolean inputNeeded, String defValue, int height, int width) {
+ super(label,inputNeeded,defValue,height,width);
+
+ }
+
+ /**
+ * 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 TextPane(String label, boolean inputNeeded, String defValue) {
+ this(label, inputNeeded, defValue, 80, 200);
+
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ */
+ public TextPane(String label, boolean inputNeeded) {
+ this(label, inputNeeded, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ */
+ public TextPane(String label) {
+ this(label, true, null);
+ }
+
+ /**
+ * Erzeugt eine neue Instanz von {@link JTextArea}.
+ */
+ @Override
+ protected JTextPane createInputComponent() {
+ JTextPane textPane = new JTextPane();
+ textPane.setPreferredSize( new Dimension(width, height) );
+
+ return textPane;
+ }
+ }
}
More information about the Schmitzm-commits
mailing list