[Schmitzm-commits] r1496 - in trunk/schmitzm-core/src: main/java/de/schmitzm/net/mail main/java/de/schmitzm/swing/input test/java/de/schmitzm/net/mail
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Tue Feb 8 19:31:15 CET 2011
Author: alfonx
Date: 2011-02-08 19:31:15 +0100 (Tue, 08 Feb 2011)
New Revision: 1496
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/net/mail/MailUtil.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
trunk/schmitzm-core/src/test/java/de/schmitzm/net/mail/MailUtilTest.java
Log:
* added a regex to MailUtil to check for valid looking Email-Addresses
* Extended PasswordViewable (Manual Input Option) to disabled the checkbox also, when the component is disabled. Additionally the labels are disabled now.
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/net/mail/MailUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/net/mail/MailUtil.java 2011-02-08 15:07:17 UTC (rev 1495)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/net/mail/MailUtil.java 2011-02-08 18:31:15 UTC (rev 1496)
@@ -6,6 +6,7 @@
import java.util.Locale;
import java.util.Properties;
import java.util.Set;
+import java.util.regex.Pattern;
import javax.mail.Message;
import javax.mail.MessagingException;
@@ -33,6 +34,12 @@
/** Mail address for SCHMITZM bug reports. */
public static final String MAIL_ADDR_SCHMITZM_BUGS = "schmitzm-bugs at wikisquare.de";
+ /**
+ * A RegEx pattern that matches Strings which look like email-addresses.
+ */
+ public static final Pattern EMAIL_ADDRESS_REGEX = Pattern
+ .compile("\\b[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}\\b");
+
private static Logger log = Logger.getLogger(MailUtil.class);
/**
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-02-08 15:07:17 UTC (rev 1495)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/InputOption.java 2011-02-08 18:31:15 UTC (rev 1496)
@@ -42,377 +42,426 @@
import javax.swing.JLabel;
import javax.swing.JPanel;
-
/**
- * Diese Klasse stellt die allgemeine Oberklasse fuer eine Eingabe-Option
- * des {@link MultipleOptionPane} dar. Jede Option besteht aus einem
+ * Diese Klasse stellt die allgemeine Oberklasse fuer eine Eingabe-Option des
+ * {@link MultipleOptionPane} dar. Jede Option besteht aus einem
* {@linkplain #descLabel Label} und einem {@linkplain #inpComp Eingabefeld}.
* Die Art des Eingabefelds wird durch die Unterklassen spezifiziert.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ *
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
* @version 1.0
*/
public abstract class InputOption<E> extends JPanel {
- /** Speichert eine Referenz auf die Eingabe-Option (<code>this</code>), damit
- * in inneren Klassen darauf referenziert werden kann. */
- protected final Component OPTION_COMPONENT = this;
- /** Enhaelt das Label mit der Beschreibung der Option, sowie ggf. das Obligatorisch-Kennzeichen. */
- protected Container descLabelContainer = null;
- /** Speichert die Beschreibung der Option */
- protected JLabel descLabel = null;
- /** Kennzeichnet die Option als obligatorisch. */
- protected JLabel inputNeededLabel = null;
- /** Speichert die Eingabe-Komponente der Option. */
- protected JComponent inpComp = null;
- /** Kann eine Fehlermeldung enthalten, wenn die Eingabe nicht
- * valide ist. Kann direkt von {@link #performIsInputValid()} befuellt
- * werden. Wird automatisch befuellt, wenn {@link #performIsInputValid()}
- * eine Exception wirft. */
- protected String invalidInputMess = "";
+ /**
+ * Speichert eine Referenz auf die Eingabe-Option (<code>this</code>), damit
+ * in inneren Klassen darauf referenziert werden kann.
+ */
+ protected final Component OPTION_COMPONENT = this;
+ /**
+ * Enhaelt das Label mit der Beschreibung der Option, sowie ggf. das
+ * Obligatorisch-Kennzeichen.
+ */
+ protected Container descLabelContainer = null;
+ /** Speichert die Beschreibung der Option */
+ protected JLabel descLabel = null;
+ /** Kennzeichnet die Option als obligatorisch. */
+ protected JLabel inputNeededLabel = null;
+ /** Speichert die Eingabe-Komponente der Option. */
+ protected JComponent inpComp = null;
+ /**
+ * Kann eine Fehlermeldung enthalten, wenn die Eingabe nicht valide ist.
+ * Kann direkt von {@link #performIsInputValid()} befuellt werden. Wird
+ * automatisch befuellt, wenn {@link #performIsInputValid()} eine Exception
+ * wirft.
+ */
+ protected String invalidInputMess = "";
- private boolean inpNeeded = false;
- private Vector listeners = new Vector();
- private E oldValue = null;
-
- /** Label (hinter der Bezeichnung), mit dem obligatorische Felder markiert werden. */
- private static String defaultInputNeededSign = "*";
- /** Farbe, in der die Markierung für obligatorische Felder dargestellt wird. */
- private static Color defaultInputNeededSignColor = Color.RED;//new Color(240,100,100);
+ private boolean inpNeeded = false;
+ private final Vector listeners = new Vector();
+ private E oldValue = null;
-
- /**
- * Liefert das Label (dargestellt hinter der Bezeichnung), mit dem
- * obligatorische Felder markiert werden (Default: "*").
- */
- public static String getInputNeededSign() {
- return defaultInputNeededSign;
- }
-
- /**
- * Setzt das Label (dargestellt hinter der Bezeichnung), mit dem
- * obligatorische Felder markiert werden (Default: "*").<br>
- * Diese Einstellung wirkt sich erst auf neu erzeugte {@link InputOption}
- * aus. Die Darstellung bestehender {@link InputOption}-Objekte aendert sich
- * erst, wenn die inputNeeded-Eigenschaft neu gesetzt wird!
- * @see #setInputNeeded(boolean)
- */
- public static void setInputNeededSign(String sign) {
- defaultInputNeededSign = sign;
- }
+ /**
+ * Label (hinter der Bezeichnung), mit dem obligatorische Felder markiert
+ * werden.
+ */
+ private static String defaultInputNeededSign = "*";
+ /** Farbe, in der die Markierung für obligatorische Felder dargestellt wird. */
+ private static Color defaultInputNeededSignColor = Color.RED;// new
+ // Color(240,100,100);
- /**
- * Liefert die Farbe, mit der obligatorische Felder markiert werden
- * (Default: {@link Color#RED}).
- */
- public static Color getInputNeededSignColor() {
- return defaultInputNeededSignColor;
- }
-
- /**
- * Setzt die Farbe, mit der obligatorische Felder markiert werden
- * (Default: {@link Color#RED}).<br>
- * Diese Einstellung wirkt sich erst auf neu erzeugte {@link InputOption}
- * aus. Die Darstellung bestehender {@link InputOption}-Objekte aendert sich
- * erst, wenn die inputNeeded-Eigenschaft neu gesetzt wird!
- * @see #setInputNeeded(boolean)
- */
- public static void setInputNeededSignColor(Color signColor) {
- defaultInputNeededSignColor = signColor;
- }
+ /**
+ * Liefert das Label (dargestellt hinter der Bezeichnung), mit dem
+ * obligatorische Felder markiert werden (Default: "*").
+ */
+ public static String getInputNeededSign() {
+ return defaultInputNeededSign;
+ }
- /**
- * Erzeugt eine neue Eingabe-Option.
- * @param label Beschreibung (wird im Label angezeigt)
- * @param inputNeeded gibt an, ob eine Eingabe in der Option erforderlich ist
- */
- public InputOption(String label, boolean inputNeeded) {
- this(label,inputNeeded,false);
- }
+ /**
+ * Setzt das Label (dargestellt hinter der Bezeichnung), mit dem
+ * obligatorische Felder markiert werden (Default: "*").<br>
+ * Diese Einstellung wirkt sich erst auf neu erzeugte {@link InputOption}
+ * aus. Die Darstellung bestehender {@link InputOption}-Objekte aendert sich
+ * erst, wenn die inputNeeded-Eigenschaft neu gesetzt wird!
+ *
+ * @see #setInputNeeded(boolean)
+ */
+ public static void setInputNeededSign(String sign) {
+ defaultInputNeededSign = sign;
+ }
- /**
- * Erzeugt eine neue Eingabe-Option.
- * @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)
- */
- public InputOption(String label, boolean inputNeeded, boolean centerInputComp) {
- this.inpNeeded = inputNeeded;
+ /**
+ * Liefert die Farbe, mit der obligatorische Felder markiert werden
+ * (Default: {@link Color#RED}).
+ */
+ public static Color getInputNeededSignColor() {
+ return defaultInputNeededSignColor;
+ }
- // 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);
+ /**
+ * Setzt die Farbe, mit der obligatorische Felder markiert werden (Default:
+ * {@link Color#RED}).<br>
+ * Diese Einstellung wirkt sich erst auf neu erzeugte {@link InputOption}
+ * aus. Die Darstellung bestehender {@link InputOption}-Objekte aendert sich
+ * erst, wenn die inputNeeded-Eigenschaft neu gesetzt wird!
+ *
+ * @see #setInputNeeded(boolean)
+ */
+ public static void setInputNeededSignColor(Color signColor) {
+ defaultInputNeededSignColor = signColor;
+ }
- // 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();
- }
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @param label
+ * Beschreibung (wird im Label angezeigt)
+ * @param inputNeeded
+ * gibt an, ob eine Eingabe in der Option erforderlich ist
+ */
+ public InputOption(String label, boolean inputNeeded) {
+ this(label, inputNeeded, false);
+ }
- /**
- * Deaktiviert die Option, in dem die Eingabe-Komponente deaktiviert wird.
- */
- public void setEnabled(boolean enabled) {
- super.setEnabled(enabled);
- inpComp.setEnabled(enabled);
- }
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ *
+ * @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)
+ */
+ public InputOption(String label, boolean inputNeeded,
+ boolean centerInputComp) {
+ this.inpNeeded = inputNeeded;
- /**
- * Setzt den Hilfetext fuer Eingabe-Komponente und Beschreibungslabel.
- * @param text Hilfe-Text
- */
- public void setToolTipText(String text) {
- super.setToolTipText(text);
- if ( inpComp != null )
- inpComp.setToolTipText(text);
- if ( descLabel != null )
- descLabel.setToolTipText(text);
- }
+ // 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();
+ }
- /**
- * Setzt den Fokus auf das Eingabe-Feld der {@code InputOption}.
- */
- public void grabFocus() {
- inpComp.grabFocus();
- }
+ public void focusLost(FocusEvent e) {
+ fireFocusLost();
+ if (oldValue == null && getValue() != null || oldValue != null
+ && !oldValue.equals(getValue()))
+ fireOptionChanged(oldValue, getValue());
+ }
+ });
+ setInputNeeded(inputNeeded);
- /**
- * Liefert den Wert, der in der Option eingegeben wurde. Prueft zuerst
- * auf Gueltigkeit und ruft dann {@link #performGetValue()} auf.
- * @return <code>null</code> wenn die aktuelle Eingabe nicht zulaessig ist
- * (siehe {@link #isInputValid()})
- */
- public E getValue() {
- if ( !isInputValid() )
- return null;
- return performGetValue();
- }
+ // 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();
+ }
- /**
- * Setzt einen neuen Wert, mit der die Eingabe-Option belegt wird.
- * Ruft {@link #performSetValue(Object)} auf und bewirkt ein
- * {@link InputOptionListener#optionChanged(Object,Object)} fuer alle
- * angeschlossenen {@link InputOptionListener}, falls sich der Wert der
- * Option geaendert hat.
- * @param newValue neuer Wert
- * @return <code>false</code> gdw. der Objekt-Typ fuer die Option nicht
- * zulaessig ist
- */
- public boolean setValue(E newValue) {
- // alten Wert speichern
- oldValue = getValue();
- if ( !performSetValue(newValue) )
- return false;
- newValue = getValue();
- if ( oldValue==null && newValue!=null || oldValue!=null && newValue==null || oldValue!=null && !oldValue.equals( newValue ) )
- fireOptionChanged(oldValue,getValue());
- return true;
- }
+ /**
+ * Deaktiviert die Option, in dem die Eingabe-Komponente deaktiviert wird.
+ */
+ @Override
+ public void setEnabled(boolean enabled) {
+ super.setEnabled(enabled);
+ inpComp.setEnabled(enabled);
+ descLabel.setEnabled(enabled);
+ }
- /**
- * Liefert die Beschreibung der Eingabe-Option.
- */
- public String getLabel() {
- return descLabel.getText();
- }
+ /**
+ * Setzt den Hilfetext fuer Eingabe-Komponente und Beschreibungslabel.
+ *
+ * @param text
+ * Hilfe-Text
+ */
+ @Override
+ public void setToolTipText(String text) {
+ super.setToolTipText(text);
+ if (inpComp != null)
+ inpComp.setToolTipText(text);
+ if (descLabel != null)
+ descLabel.setToolTipText(text);
+ }
- /**
- * Prueft, ob fuer das Feld zwingend eine Eingabe erforderlich ist.
- */
- public boolean inputNeeded() {
- return inpNeeded;
- }
+ /**
+ * Setzt den Fokus auf das Eingabe-Feld der {@code InputOption}.
+ */
+ @Override
+ public void grabFocus() {
+ inpComp.grabFocus();
+ }
- /**
- * Bestimmt, ob fuer das Feld zwingend eine Eingabe erforderlich ist.
- */
- public void setInputNeeded(boolean inpNeeded) {
- this.inpNeeded = inpNeeded;
-// if ( inpComp != null ) {
-// if ( inpNeeded )
-// inpComp.setBackground( defaultInputNeededBackground );
-// else
-// inpComp.setBackground( SwingUtil.getDefaultBackground() );
-// }
- if ( inputNeededLabel != null ) {
- if ( inpNeeded )
- inputNeededLabel.setText( " " + defaultInputNeededSign );
- else
- inputNeededLabel.setText( "" );
- }
-
- }
+ /**
+ * Liefert den Wert, der in der Option eingegeben wurde. Prueft zuerst auf
+ * Gueltigkeit und ruft dann {@link #performGetValue()} auf.
+ *
+ * @return <code>null</code> wenn die aktuelle Eingabe nicht zulaessig ist
+ * (siehe {@link #isInputValid()})
+ */
+ public E getValue() {
+ if (!isInputValid())
+ return null;
+ return performGetValue();
+ }
- /**
- * Prueft, ob die Eingabe in dem Feld zulaessig ist. Die Implementierung
- * prueft zuerst auf Leereingabe und ruft dann {@link #performIsInputValid()}
- * auf.
- * @return <code>false</code> falls die Option leer ist, aber eine Eingabe
- * erforderlich ist
- */
- public boolean isInputValid() {
- // Leereingabe
- if ( inputEmpty() )
- return !inputNeeded();
- try {
- this.invalidInputMess = "";
- return performIsInputValid();
- } catch (Exception err) {
- this.invalidInputMess = err.getMessage();
- return false;
- }
- }
+ /**
+ * Setzt einen neuen Wert, mit der die Eingabe-Option belegt wird. Ruft
+ * {@link #performSetValue(Object)} auf und bewirkt ein
+ * {@link InputOptionListener#optionChanged(Object,Object)} fuer alle
+ * angeschlossenen {@link InputOptionListener}, falls sich der Wert der
+ * Option geaendert hat.
+ *
+ * @param newValue
+ * neuer Wert
+ * @return <code>false</code> gdw. der Objekt-Typ fuer die Option nicht
+ * zulaessig ist
+ */
+ public boolean setValue(E newValue) {
+ // alten Wert speichern
+ oldValue = getValue();
+ if (!performSetValue(newValue))
+ return false;
+ newValue = getValue();
+ if (oldValue == null && newValue != null || oldValue != null
+ && newValue == null || oldValue != null
+ && !oldValue.equals(newValue))
+ fireOptionChanged(oldValue, getValue());
+ return true;
+ }
- /**
- * Prueft, ob die Eingabe in dem Feld zulaessig ist und wird ggf. eine
- * Exception. Die Implementierung
- */
- public void checkInputAndError() throws Exception {
- if ( !isInputValid() )
- throw new Exception( getInvalidInputMessage() );
- }
+ /**
+ * Liefert die Beschreibung der Eingabe-Option.
+ */
+ public String getLabel() {
+ return descLabel.getText();
+ }
- /**
- * Liefert die letzte von {@link #isInputValid()} erzeugte
- * Fehlermeldung.
- */
- public String getInvalidInputMessage() {
- return invalidInputMess;
- }
+ /**
+ * Prueft, ob fuer das Feld zwingend eine Eingabe erforderlich ist.
+ */
+ public boolean inputNeeded() {
+ return inpNeeded;
+ }
- /**
- * Prueft, ob das Feld eine Leereingabe beinhaltet.
- * @see #performIsInputEmpty()
- */
- public boolean inputEmpty() {
- return performIsInputEmpty();
- }
+ /**
+ * Bestimmt, ob fuer das Feld zwingend eine Eingabe erforderlich ist.
+ */
+ public void setInputNeeded(boolean inpNeeded) {
+ this.inpNeeded = inpNeeded;
+ // if ( inpComp != null ) {
+ // if ( inpNeeded )
+ // inpComp.setBackground( defaultInputNeededBackground );
+ // else
+ // inpComp.setBackground( SwingUtil.getDefaultBackground() );
+ // }
+ if (inputNeededLabel != null) {
+ if (inpNeeded)
+ inputNeededLabel.setText(" " + defaultInputNeededSign);
+ else
+ inputNeededLabel.setText("");
+ }
- /**
- * Liefert eine Referenz auf die Eingabe-Komponente.<br>
- * <b>Bemerke:</b><br>
- * Uber diese Referenz sollte hoechsten ihr Layout beeinflusst werden, aber
- * nicht ihr Verhalten, da ansonsten die Funktionalitaet der <code>InputOption</code>
- * negativ beeinflusst werden kann!!
- */
- public JComponent getInputComponent() {
- return inpComp;
- }
+ }
- /**
- * Liefert eine Referenz auf das Beschreibungs-Label.<br>
- * <b>Bemerke:</b><br>
- * Uber diese Referenz sollte hoechsten das Layout beeinflusst werden, aber
- * nicht das Verhalten, da ansonsten die Funktionalitaet der <code>InputOption</code>
- * negativ beeinflusst werden kann!!
- */
- public JLabel getDescriptionLabel() {
- return descLabel;
- }
+ /**
+ * Prueft, ob die Eingabe in dem Feld zulaessig ist. Die Implementierung
+ * prueft zuerst auf Leereingabe und ruft dann
+ * {@link #performIsInputValid()} auf.
+ *
+ * @return <code>false</code> falls die Option leer ist, aber eine Eingabe
+ * erforderlich ist
+ */
+ public boolean isInputValid() {
+ // Leereingabe
+ if (inputEmpty())
+ return !inputNeeded();
+ try {
+ this.invalidInputMess = "";
+ return performIsInputValid();
+ } catch (Exception err) {
+ this.invalidInputMess = err.getMessage();
+ return false;
+ }
+ }
- /**
- * Erzeugt eine neue Instanz der Eingabe-Komponente. z.B. ein Text-Eingabefeld
- * oder eine Combo-Box.
- */
- protected abstract JComponent createInputComponent();
+ /**
+ * Prueft, ob die Eingabe in dem Feld zulaessig ist und wird ggf. eine
+ * Exception. Die Implementierung
+ */
+ public void checkInputAndError() throws Exception {
+ if (!isInputValid())
+ throw new Exception(getInvalidInputMessage());
+ }
- /**
- * Liefert den aktuellen Wert der Eingabe-Option.
- */
- protected abstract E performGetValue();
+ /**
+ * Liefert die letzte von {@link #isInputValid()} erzeugte Fehlermeldung.
+ */
+ public String getInvalidInputMessage() {
+ return invalidInputMess;
+ }
- /**
- * Setzt den aktuellen Wert der Eingabe-Option. Ist der Objekt-Typ fuer die
- * Option nicht zulaessig, sollte nichts gemacht werden und <code>false</code>
- * zurueckgegeben werden.
- * @param newValue neuer Wert
- * @return <code>false</code> gdw. der Objekt-Typ fuer die Eingabe-Option
- * nicht zulaessig ist
- */
- protected abstract boolean performSetValue(E newValue);
+ /**
+ * Prueft, ob das Feld eine Leereingabe beinhaltet.
+ *
+ * @see #performIsInputEmpty()
+ */
+ public boolean inputEmpty() {
+ return performIsInputEmpty();
+ }
- /**
- * Prueft, ob die aktuelle Eingabe leer ist.
- */
- protected abstract boolean performIsInputEmpty();
+ /**
+ * Liefert eine Referenz auf die Eingabe-Komponente.<br>
+ * <b>Bemerke:</b><br>
+ * Uber diese Referenz sollte hoechsten ihr Layout beeinflusst werden, aber
+ * nicht ihr Verhalten, da ansonsten die Funktionalitaet der
+ * <code>InputOption</code> negativ beeinflusst werden kann!!
+ */
+ public JComponent getInputComponent() {
+ return inpComp;
+ }
- /**
- * Prueft, ob die aktuelle Eingabe leer ist.
- */
- protected abstract boolean performIsInputValid();
+ /**
+ * Liefert eine Referenz auf das Beschreibungs-Label.<br>
+ * <b>Bemerke:</b><br>
+ * Uber diese Referenz sollte hoechsten das Layout beeinflusst werden, aber
+ * nicht das Verhalten, da ansonsten die Funktionalitaet der
+ * <code>InputOption</code> negativ beeinflusst werden kann!!
+ */
+ public JLabel getDescriptionLabel() {
+ return descLabel;
+ }
- /**
- * Fuegt der Eingabeoption einen Listener hinzu.
- * @param l neuer Listener
- */
- public void addInputOptionListener(InputOptionListener l) {
- listeners.add(l);
- }
+ /**
+ * Erzeugt eine neue Instanz der Eingabe-Komponente. z.B. ein
+ * Text-Eingabefeld oder eine Combo-Box.
+ */
+ protected abstract JComponent createInputComponent();
- /**
- * Entfernt einen Listener von der Eingabeoption.
- * @param l zu entfernender Listener
- */
- public void removeInputOptionListener(InputOptionListener l) {
- listeners.remove(l);
- }
+ /**
+ * Liefert den aktuellen Wert der Eingabe-Option.
+ */
+ protected abstract E performGetValue();
- /**
- * Informiert alle {@link InputOptionListener}, dass die Eingabe-Option
- * den Fokus erhalten hat.
- */
- protected void fireFocusGained() {
- for (int i=0; i<listeners.size(); i++)
- if ( listeners.elementAt(i) instanceof InputOptionListener )
- ((InputOptionListener)listeners.elementAt(i)).optionGainedFocus(this);
- }
+ /**
+ * Setzt den aktuellen Wert der Eingabe-Option. Ist der Objekt-Typ fuer die
+ * Option nicht zulaessig, sollte nichts gemacht werden und
+ * <code>false</code> zurueckgegeben werden.
+ *
+ * @param newValue
+ * neuer Wert
+ * @return <code>false</code> gdw. der Objekt-Typ fuer die Eingabe-Option
+ * nicht zulaessig ist
+ */
+ protected abstract boolean performSetValue(E newValue);
- /**
- * Informiert alle {@link InputOptionListener}, dass die Eingabe-Option
- * den Fokus verloren hat.
- */
- protected void fireFocusLost() {
- for (int i=0; i<listeners.size(); i++)
- if ( listeners.elementAt(i) instanceof InputOptionListener )
- ((InputOptionListener)listeners.elementAt(i)).optionLostFocus(this);
- }
+ /**
+ * Prueft, ob die aktuelle Eingabe leer ist.
+ */
+ protected abstract boolean performIsInputEmpty();
- /**
- * Informiert alle {@link InputOptionListener}, dass sich der Wert der
- * Eingabeoption geaendert hat.
- * @param oldValue alter Optionswert
- * @param newValue neuer Optionswert
- */
- protected void fireOptionChanged(E oldValue, E newValue) {
- for (int i=0; i<listeners.size(); i++)
- if ( listeners.elementAt(i) instanceof InputOptionListener )
- ((InputOptionListener)listeners.elementAt(i)).optionChanged(this,oldValue,newValue);
- }
+ /**
+ * Prueft, ob die aktuelle Eingabe leer ist.
+ */
+ protected abstract boolean performIsInputValid();
+ /**
+ * Fuegt der Eingabeoption einen Listener hinzu.
+ *
+ * @param l
+ * neuer Listener
+ */
+ public void addInputOptionListener(InputOptionListener l) {
+ listeners.add(l);
+ }
+
+ /**
+ * Entfernt einen Listener von der Eingabeoption.
+ *
+ * @param l
+ * zu entfernender Listener
+ */
+ public void removeInputOptionListener(InputOptionListener l) {
+ listeners.remove(l);
+ }
+
+ /**
+ * Informiert alle {@link InputOptionListener}, dass die Eingabe-Option den
+ * Fokus erhalten hat.
+ */
+ protected void fireFocusGained() {
+ for (int i = 0; i < listeners.size(); i++)
+ if (listeners.elementAt(i) instanceof InputOptionListener)
+ ((InputOptionListener) listeners.elementAt(i))
+ .optionGainedFocus(this);
+ }
+
+ /**
+ * Informiert alle {@link InputOptionListener}, dass die Eingabe-Option den
+ * Fokus verloren hat.
+ */
+ protected void fireFocusLost() {
+ for (int i = 0; i < listeners.size(); i++)
+ if (listeners.elementAt(i) instanceof InputOptionListener)
+ ((InputOptionListener) listeners.elementAt(i))
+ .optionLostFocus(this);
+ }
+
+ /**
+ * Informiert alle {@link InputOptionListener}, dass sich der Wert der
+ * Eingabeoption geaendert hat.
+ *
+ * @param oldValue
+ * alter Optionswert
+ * @param newValue
+ * neuer Optionswert
+ */
+ protected void fireOptionChanged(E oldValue, E newValue) {
+ for (int i = 0; i < listeners.size(); i++)
+ if (listeners.elementAt(i) instanceof InputOptionListener)
+ ((InputOptionListener) listeners.elementAt(i)).optionChanged(
+ this, oldValue, newValue);
+ }
+
}
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-02-08 15:07:17 UTC (rev 1495)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/ManualInputOption.java 2011-02-08 18:31:15 UTC (rev 1496)
@@ -78,6 +78,7 @@
/**
* Erzeugt eine neue Instanz von {@link JTextField}.
*/
+ @Override
protected JTextField createInputComponent() {
return new JTextField();
}
@@ -86,6 +87,7 @@
* Liefert immer <code>true</code>, da keine speziellen Anforderungen an die
* Text-Eingabe gestellt werden.
*/
+ @Override
protected boolean performIsInputValid() {
return true;
}
@@ -93,6 +95,7 @@
/**
* Prueft, ob im Eingabefeld ein Leerstring eingegeben wurde.
*/
+ @Override
protected boolean performIsInputEmpty() {
return ((JTextField) inpComp).getText().trim().equals("");
}
@@ -100,6 +103,7 @@
/**
* Liefert die aktuelle Eingabe im {@link JTextField}.
*/
+ @Override
protected Object performGetValue() {
return ((JTextField) inpComp).getText();
}
@@ -111,6 +115,7 @@
* neuer Wert (muss vom Typ {@link String} sein!)
* @return <code>false</code> wenn kein {@link String} uebergeben wird
*/
+ @Override
protected boolean performSetValue(Object newValue) {
if (newValue == null)
newValue = "";
@@ -178,7 +183,7 @@
public Text(String label, String defValue) {
this(label, true, defValue);
}
-
+
/**
* Liefert den Wert, der in der Option eingegeben wurde. Prueft zuerst
* auf Gueltigkeit und ruft dann {@link #performGetValue()} auf.
@@ -186,6 +191,7 @@
* @return <code>null</code> wenn die aktuelle Eingabe nicht zulaessig
* ist (siehe {@link #isInputValid()})
*/
+ @Override
public String getValue() {
return (String) super.getValue();
}
@@ -210,8 +216,10 @@
* @param defValue
* Wert der im Textfeld vorgeblendet wird
*/
- public Integer(String label, boolean inputNeeded, java.lang.Integer defValue) {
- super(label, inputNeeded, defValue != null ? String.valueOf(defValue) : null);
+ public Integer(String label, boolean inputNeeded,
+ java.lang.Integer defValue) {
+ super(label, inputNeeded, defValue != null ? String
+ .valueOf(defValue) : null);
}
/**
@@ -257,6 +265,7 @@
* @return <code>null</code> wenn die aktuelle Eingabe nicht zulaessig
* ist (siehe {@link #isInputValid()})
*/
+ @Override
public java.lang.Integer getValue() {
return (java.lang.Integer) super.getValue();
}
@@ -266,6 +275,7 @@
*
* @return <code>null</code> falls das Eingabefeld leer ist.
*/
+ @Override
protected java.lang.Integer performGetValue() {
if (inputEmpty())
return null;
@@ -275,6 +285,7 @@
/**
* Prueft, ob ein gueltiger Integer-Wert im Feld eingegeben wurde.
*/
+ @Override
protected boolean performIsInputValid() {
try {
java.lang.Integer.parseInt(((JTextField) inpComp).getText());
@@ -353,6 +364,7 @@
* @return <code>null</code> wenn die aktuelle Eingabe nicht zulaessig
* ist (siehe {@link #isInputValid()})
*/
+ @Override
public java.lang.Double getValue() {
return (java.lang.Double) super.getValue();
}
@@ -362,6 +374,7 @@
*
* @return <code>null</code> falls das Eingabefeld leer ist.
*/
+ @Override
protected java.lang.Double performGetValue() {
if (inputEmpty())
return null;
@@ -372,6 +385,7 @@
/**
* Prueft, ob ein gueltiger Double-Wert im Feld eingegeben wurde.
*/
+ @Override
protected boolean performIsInputValid() {
try {
java.lang.Double.parseDouble(((JTextField) inpComp).getText());
@@ -448,6 +462,7 @@
/**
* Erzeugt eine neue Instanz von {@link JPasswordField}.
*/
+ @Override
protected JPasswordField createInputComponent() {
return new JPasswordField();
}
@@ -455,6 +470,7 @@
/**
* Liefert die aktuelle Eingabe im {@link JPasswordField}.
*/
+ @Override
protected Object performGetValue() {
return ((JPasswordField) inpComp).getPassword();
}
@@ -466,6 +482,7 @@
* @return <code>null</code> wenn die aktuelle Eingabe nicht zulaessig
* ist (siehe {@link #isInputValid()})
*/
+ @Override
public char[] getValue() {
return (char[]) super.getValue();
}
@@ -486,6 +503,13 @@
* @version 1.0
*/
public static class PasswordViewable extends Password {
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ super.setEnabled(enabled);
+ visibleCheckBox.setEnabled(enabled);
+ };
+
private char oldEchoChar = '*';
/**
@@ -566,6 +590,7 @@
/**
* Erzeugt eine neue Instanz von {@link JPasswordField}.
*/
+ @Override
protected JPasswordField createInputComponent() {
JPasswordField pwField = super.createInputComponent();
oldEchoChar = pwField.getEchoChar();
Modified: trunk/schmitzm-core/src/test/java/de/schmitzm/net/mail/MailUtilTest.java
===================================================================
--- trunk/schmitzm-core/src/test/java/de/schmitzm/net/mail/MailUtilTest.java 2011-02-08 15:07:17 UTC (rev 1495)
+++ trunk/schmitzm-core/src/test/java/de/schmitzm/net/mail/MailUtilTest.java 2011-02-08 18:31:15 UTC (rev 1496)
@@ -1,8 +1,11 @@
package de.schmitzm.net.mail;
-
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.util.regex.Pattern;
+
import org.junit.Ignore;
import org.junit.Test;
@@ -11,6 +14,16 @@
public class MailUtilTest extends TestingClass {
@Test
+ public void testEmailRegEx() {
+ Pattern p = MailUtil.EMAIL_ADDRESS_REGEX;
+ assertTrue(p.matcher("tzeggai at wikisquare.de").find());
+ assertFalse(p.matcher("@wikisquare.de").find());
+ assertFalse(p.matcher("tzeggai@").find());
+ assertFalse(p.matcher("aatb").find());
+
+ }
+
+ @Test
public void testSendSmtpMail_BugReport() {
String recipientsAddress = "bugreport at wikisquare.de";
String subject = "junit MailUtilTest";
More information about the Schmitzm-commits
mailing list