[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