[Schmitzm-commits] r1135 - in trunk: src/schmitzm/swing src/schmitzm/swing/resource/locales src_junit/schmitzm/swing
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Fri Oct 15 00:32:26 CEST 2010
Author: mojays
Date: 2010-10-15 00:32:26 +0200 (Fri, 15 Oct 2010)
New Revision: 1135
Modified:
trunk/src/schmitzm/swing/ManualInputOption.java
trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties
trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties
trunk/src_junit/schmitzm/swing/SwingUtilTest.java
Log:
new ManualInputOption.PasswordViewable
Modified: trunk/src/schmitzm/swing/ManualInputOption.java
===================================================================
--- trunk/src/schmitzm/swing/ManualInputOption.java 2010-10-14 22:02:58 UTC (rev 1134)
+++ trunk/src/schmitzm/swing/ManualInputOption.java 2010-10-14 22:32:26 UTC (rev 1135)
@@ -29,6 +29,13 @@
******************************************************************************/
package schmitzm.swing;
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
@@ -320,7 +327,7 @@
/**
* Diese Klasse stellt eine Eingabe-Option dar, in der ein (verdecktes) Passwort
- * eingegeben werden kann. Zu brachten ist, dass der Rueckgabewert dieser
+ * eingegeben werden kann. Zu beachten ist, dass der Rueckgabewert dieser
* {@link InputOption} kein {@link String} ist, sondern ein {@code char[]}.
* @see JPasswordField#getPassword()
* @see JPasswordField#getText()
@@ -369,7 +376,7 @@
/**
* Erzeugt eine neue Instanz von {@link JPasswordField}.
*/
- protected JTextField createInputComponent() {
+ protected JPasswordField createInputComponent() {
return new JPasswordField();
}
@@ -389,6 +396,108 @@
public char[] getValue() {
return (char[])super.getValue();
}
+ }
+
+ /**
+ * Diese Klasse stellt eine Eingabe-Option dar, in der ein (verdecktes) Passwort
+ * eingegeben werden kann. Neben dem Textfeld fuer die Passwort-Eingabe enthaelt
+ * die Eingabe-Option noch eine Checkbox, ueber die das Passwort im Klartext
+ * angezeigt werden kann.<br>
+ * Zu beachten ist, dass der Rueckgabewert dieser
+ * {@link InputOption} kein {@link String} ist, sondern ein {@code char[]}.
+ * @see JPasswordField#getPassword()
+ * @see JPasswordField#getText()
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ * @version 1.0
+ */
+ public static class PasswordViewable extends Password {
+ private char oldEchoChar = '*';
+ /** Container enthaelt das Text-Eingabefeld und die Checkbox, um das
+ * Passwort sichtbar zu machen. */
+ protected Container inpCompCont = new Container();
+ /** Der Button fuer die Browse-Aktion. */
+ protected JCheckBox visibleCheckBox = new JCheckBox(SwingUtil.R("ManualInputOption.PasswordVisible.visibility"),false);
+
+ /**
+ * 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 PasswordViewable(String label, boolean inputNeeded, String defValue) {
+ super(label,inputNeeded,defValue);
+
+ visibleCheckBox.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ setPasswortVisible( visibleCheckBox.isSelected() );
+ }
+ });
+
+ // Neben dem Eingabefeld noch ein Browse-Button
+ inpCompCont.setLayout( new BorderLayout() );
+ inpCompCont.add(this.inpComp, BorderLayout.CENTER);
+ inpCompCont.add(this.visibleCheckBox, BorderLayout.EAST);
+ // normale Eingabe-Komponente durch Container ersetzen
+ remove(inpComp);
+ add(inpCompCont,BorderLayout.SOUTH);
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ */
+ public PasswordViewable(String label, boolean inputNeeded) {
+ this(label,inputNeeded,"");
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend erforderlich
+ * ist.
+ * @param label Beschreibung
+ */
+ public PasswordViewable(String label) {
+ this(label,true,"");
+ }
+
+ /**
+ * Erzeugt eine neue Eingabe-Option, in der eine Eingabe zwingend erforderlich
+ * ist.
+ * @param label Beschreibung
+ * @param defValue Wert der im Textfeld vorgeblendet wird
+ */
+ public PasswordViewable(String label, String defValue) {
+ this(label,true,defValue);
+ }
+
+ /**
+ * Erzeugt eine neue Instanz von {@link JPasswordField}.
+ */
+ protected JPasswordField createInputComponent() {
+ JPasswordField pwField = super.createInputComponent();
+ oldEchoChar = pwField.getEchoChar();
+ return pwField;
+ }
+
+ /**
+ * Sets the passwort (in)visible in the component.
+ */
+ public void setPasswortVisible(boolean visible) {
+ // remember old echo character
+ if ( ((JPasswordField)inpComp).getEchoChar() != 0 )
+ oldEchoChar = ((JPasswordField)inpComp).getEchoChar();
+ ((JPasswordField)inpComp).setEchoChar( visible ? 0 : oldEchoChar );
+ visibleCheckBox.setSelected(visible);
+ }
+
+ /**
+ * Return whether the passwort is (in)visible in the component.
+ */
+ public boolean isPasswortVisible() {
+ return ((JPasswordField)inpComp).getEchoChar() == 0;
+ }
+
}
+
}
Modified: trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties
===================================================================
--- trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties 2010-10-14 22:02:58 UTC (rev 1134)
+++ trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle.properties 2010-10-14 22:32:26 UTC (rev 1135)
@@ -93,6 +93,8 @@
ExceptionDialog.CopyToClipboard=Copy to clipboard
ExceptionDialog.CopyToConsole=Copy to console
+ManualInputOption.PasswordVisible.visibility=visible
+
OperationTreePanel.OpDesc.and=AND
OperationTreePanel.OpDesc.or=OR
OperationTreePanel.OpDesc.not=NOT
Modified: trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties
===================================================================
--- trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties 2010-10-14 22:02:58 UTC (rev 1134)
+++ trunk/src/schmitzm/swing/resource/locales/SwingResourceBundle_de.properties 2010-10-14 22:32:26 UTC (rev 1135)
@@ -90,6 +90,8 @@
ExceptionDialog.CopyToClipboard=In die Zwischenablage
ExceptionDialog.CopyToConsole=Auf Console ausgeben
+ManualInputOption.PasswordVisible.visibility=sichtbar
+
OperationTreePanel.OpDesc.and=UND
OperationTreePanel.OpDesc.or=ODER
OperationTreePanel.OpDesc.not=NICHT
@@ -148,7 +150,7 @@
OperationTreePanel.OpTooltip.ite=Spezifiziert einen logischen Test.
OperationTreePanel.OpTooltip.regex=Wertet einen regul\u00E4ren Ausdruck auf einem Text aus.
OperationTreePanel.OpTooltip.substr=Liefert einen Teil-String.
-OperationTreePanel.OpTooltip.split=Liefert das n-te Ergebnis eines Text-Split \u00fcber einem regul\u00E4ren Ausdruck
+OperationTreePanel.OpTooltip.split=Liefert das n-te Ergebnis eines Text-Split \u00FCber einem regul\u00E4ren Ausdruck
OperationTreePanel.OpTooltip.str2millis=Konvertiert einen Datum-Text in Millisekunden
OperationTreePanel.OpTooltip.date2millis=Konvertiert ein Datum in Millisekunden
OperationTreePanel.OpTooltip.millis2str=Konvertiert Millisekunden in einen Datum-Text
Modified: trunk/src_junit/schmitzm/swing/SwingUtilTest.java
===================================================================
--- trunk/src_junit/schmitzm/swing/SwingUtilTest.java 2010-10-14 22:02:58 UTC (rev 1134)
+++ trunk/src_junit/schmitzm/swing/SwingUtilTest.java 2010-10-14 22:32:26 UTC (rev 1135)
@@ -6,6 +6,9 @@
import org.junit.Test;
+import schmitzm.swing.ManualInputOption.Password;
+import schmitzm.swing.ManualInputOption.PasswordViewable;
+
/**
* Tests for the {@link SwingUtil} class.
*/
@@ -16,10 +19,14 @@
if ( !TestingUtil.INTERACTIVE )
return;
+ PasswordViewable pwInputOption = new ManualInputOption.PasswordViewable("Ein Passwort","Geheim");
+ pwInputOption.setPasswortVisible(false);
Object[] values = MultipleOptionPane.showMultipleInputDialog(
null,
"Test Passwort",
- new ManualInputOption.Password("Ein Passwort","Geheim")
+ pwInputOption,
+ new ManualInputOption.Text("blablabla"),
+ new FileInputOption("Eine Datei eingeben:",false)
);
if ( values == null )
System.out.println("Dialog aborted without passwort.");
More information about the Schmitzm-commits
mailing list