[Schmitzm-commits] r1641 - trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Jul 21 17:21:45 CEST 2011
Author: mojays
Date: 2011-07-21 17:21:44 +0200 (Thu, 21 Jul 2011)
New Revision: 1641
Added:
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/MultiLineTextInputOption.java
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java
Log:
new MultiLineTextInputOption
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-07-21 14:00:45 UTC (rev 1640)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java 2011-07-21 15:21:44 UTC (rev 1641)
@@ -41,6 +41,7 @@
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JScrollPane;
/**
* Diese Klasse stellt die allgemeine Oberklasse fuer eine Eingabe-Option des
@@ -206,6 +207,9 @@
setInputNeeded(inputNeeded);
// Elemente dem Container hinzufuegen
+ Component inputPanel = inpComp;
+ if ( isScrollPaneNeeded() )
+ inputPanel = new JScrollPane(inputPanel);
if (label != null) {
// put description and mandatory indicator in an
// container first
@@ -215,11 +219,11 @@
descLabelContainer.add(inputNeededLabel);
// add container to layout
add(descLabelContainer, BorderLayout.NORTH);
- add(inpComp, centerInputComp ? BorderLayout.CENTER
- : BorderLayout.SOUTH);
+ add(inputPanel, centerInputComp ? BorderLayout.CENTER
+ : BorderLayout.SOUTH);
} else {
- add(inpComp, centerInputComp ? BorderLayout.CENTER
- : BorderLayout.NORTH);
+ add(inputPanel, centerInputComp ? BorderLayout.CENTER
+ : BorderLayout.NORTH);
}
doLayout();
}
@@ -404,6 +408,15 @@
protected abstract JComponent createInputComponent();
/**
+ * Prueft, ob fuer die Eingabe-Komponente ein {@link JScrollPane}
+ * notwendig ist. Diese Standard-Implementierung liefert immer
+ * {@code false}.
+ */
+ protected boolean isScrollPaneNeeded() {
+ return false;
+ }
+
+ /**
* Liefert den aktuellen Wert der Eingabe-Option.
*/
protected abstract E performGetValue();
Added: 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 14:00:45 UTC (rev 1640)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/MultiLineTextInputOption.java 2011-07-21 15:21:44 UTC (rev 1641)
@@ -0,0 +1,105 @@
+package de.schmitzm.swing.input;
+
+import javax.swing.JTextArea;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * Diese Klasse stellt eine Eingabe-Option 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 class MultiLineTextInputOption extends InputOption<String>{
+
+ /**
+ * 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 MultiLineTextInputOption(String label, boolean inputNeeded, String defValue) {
+ super(label, inputNeeded, false);
+ ((JTextArea)inpComp).setText(defValue);
+
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe erforderlich ist
+ */
+ public MultiLineTextInputOption(String label, boolean inputNeeded) {
+ this(label, inputNeeded, null);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend
+ * erforderlich ist.
+ *
+ * @param label
+ * Beschreibung
+ */
+ public MultiLineTextInputOption(String label) {
+ this(label, true, null);
+ }
+
+ /**
+ * Erzeugt eine neue Instanz von {@link JTextArea}.
+ */
+ @Override
+ protected JTextArea createInputComponent() {
+ return new JTextArea();
+ }
+
+ /**
+ * Liefert {@code true}, da die {@link JTextArea} mehr-zeilig
+ * ist.
+ */
+ public boolean isScrollPaneNeeded() {
+ return true;
+ }
+
+ /**
+ * Liefert die aktuelle Eingabe in der {@link JTextArea}.
+ */
+ @Override
+ protected String performGetValue() {
+ return ((JTextArea)inpComp).getText();
+ }
+
+ /**
+ * Setzt die aktuelle Eingabe in der {@link JTextArea}.
+ * @return immer {@code true}
+ */
+ @Override
+ protected boolean performSetValue(String newValue) {
+ ((JTextArea)inpComp).setText(newValue);
+ return true;
+ }
+
+ /**
+ * Prueft, ob die Eingabe leer ist.
+ */
+ @Override
+ protected boolean performIsInputEmpty() {
+ return StringUtils.trimToNull(((JTextArea)inpComp).getText()) == null;
+ }
+
+ /**
+ * Prueft, ob die Eingabe gueltig ist.
+ */
+ @Override
+ protected boolean performIsInputValid() {
+ return StringUtils.trimToNull(((JTextArea)inpComp).getText()) != null;
+ }
+
+}
More information about the Schmitzm-commits
mailing list