[Schmitzm-commits] r1775 - trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Nov 10 17:21:16 CET 2011
Author: mojays
Date: 2011-11-10 17:21:15 +0100 (Thu, 10 Nov 2011)
New Revision: 1775
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/SelectionInputOption.java
Log:
SelectionInputOption: new MultiList subclass which allows to select multiple values from list
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/SelectionInputOption.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/SelectionInputOption.java 2011-11-10 15:09:49 UTC (rev 1774)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/input/SelectionInputOption.java 2011-11-10 16:21:15 UTC (rev 1775)
@@ -35,6 +35,7 @@
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
@@ -813,139 +814,157 @@
}
}
-// /**
-// * Diese Klasse stellt eine Auswahl-Option dar, die durch eine
-// * {@link JList} dargestellt wird, in der mehrere Werte ausgewaehlt
-// * werden koennen. Als Wert liefert diese InputOption einen Array!
-// *
-// * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
-// * @version 1.0
-// */
-// public static class MultiList<E> extends List {
-//
-// /**
-// * Erzeugt eine neue Auswahl-Option.
-// * @param label Beschreibung
-// * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
-// * @param value die zur Auswahl stehenden Objekte
-// * @param defIdx Index der vorgeblendeten Auswahl
-// * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
-// * (kann <code>null</code> sein)
-// * @exception IllegalArgumentException falls sich die Array-Groessen von
-// * <code>value</code> und <code>display</code> unterscheiden
-// */
-// public MultiList(String label, boolean inputNeeded, E[] value, int defIdx, Object[] display, int height, int width) {
-// super(label,inputNeeded,value,defIdx, display,height,width);
-// }
-//
-// /**
-// * Erzeugt eine neue Auswahl-Option.
-// * @param label Beschreibung
-// * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
-// * @param value die zur Auswahl stehenden Objekte
-// * @param defValue vorgeblendetes Auswahlobjekt
-// * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
-// * (kann <code>null</code> sein)
-// * @exception IllegalArgumentException falls sich die Array-Groessen von
-// * <code>value</code> und <code>display</code> unterscheiden
-// */
-// public MultiList(String label, boolean inputNeeded, E[] value, E defvalue, Object[] display, int height, int width) {
-// super(label,inputNeeded,value,defvalue,display,height,width);
-// }
-//
-// /**
-// * Erzeugt eine neue Auswahl-Option.
-// * @param label Beschreibung
-// * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
-// * @param value die zur Auswahl stehenden Objekte
-// * @param defValue vorgeblendetes Auswahlobjekt
-// * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
-// * (kann <code>null</code> sein)
-// * @exception IllegalArgumentException falls sich die Array-Groessen von
-// * <code>value</code> und <code>display</code> unterscheiden
-// */
-// public MultiList(String label, boolean inputNeeded, E[] value, E defValue, Object[] display) {
-// super(label,inputNeeded,value,defValue,display);
-// }
-//
-// /**
-// * Erzeugt eine neue Auswahl-Option.
-// * @param label Beschreibung
-// * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
-// * @param value die zur Auswahl stehenden Objekte
-// * @param defValue vorgeblendetes Auswahlobjekt
-// * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
-// * (kann <code>null</code> sein)
-// * @param tooltip die fuer jedes Auswahl-Objekt angezeigten Tooltips
-// * (kann <code>null</code> sein)
-// * @exception IllegalArgumentException falls sich die Array-Groessen von
-// * <code>value</code> und <code>display</code> unterscheiden
-// */
-// public MultiList(String label, boolean inputNeeded, E[] value, E defValue, Object[] display, int height, int width, Map<Object,String> tooltip) {
-// super(label,inputNeeded,value,defValue,display,height,width,tooltip);
-// }
-//
-// /**
-// * Erzeugt eine neue Auswahl-Option. Es wird das erste Auswahl-Objekt
-// * vorgeblendet.
-// * @param label Beschreibung
-// * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
-// * @param value die zur Auswahl stehenden Objekte
-// * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
-// * (kann <code>null</code> sein)
-// * @exception IllegalArgumentException falls sich die Array-Groessen von
-// * <code>value</code> und <code>display</code> unterscheiden
-// */
-// public MultiList(String label, boolean inputNeeded, E[] value, Object[] display) {
-// super(label,inputNeeded,value,null,display);
-// }
-//
-// /**
-// * Erzeugt eine leere Auswahl-Option. Diese muss nachtraeglich ueber
-// * {@link #setSelectionObjects(Object[],Object[])} befuellt werden.
-// * @param label Beschreibung
-// * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
-// */
-// public MultiList(String label, boolean inputNeeded) {
-// super(label,inputNeeded);
-// }
-//
-// /**
-// * Erzeugt eine neue Instanz von {@link JList}.
-// */
-// protected JList createInputComponent() {
-// JList list = super.createInputComponent();
-// list.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
-// return list;
-// }
-//
-// /**
-// * Liefert die Indizes, die in der {@link JList}-Liste ausgewaehlt wurden.
-// */
-// public int[] getSelectedIndices() {
-// return ((JList)inpComp).getSelectedIndices();
-// }
-//
-// /**
-// * Liefert das Objekt, das zum aktuell ausgewaehlten Eintrag der
-// * Auswahl-Liste gehoert.
-// * @return <code>null</code> falls kein Objekt ausgewaehlt ist
-// */
-// protected E[] performGetValue() {
-// int idx = getSelectedIndex();
-// return null;//idx < 0 ? null : selectionObject[getSelectedIndex()];
-// }
-//
-// /**
-// * Setzt das Objekt, das in der Auswahlliste angewaehlt wird. Ruft
-// * {@link #setSelectedItem(Object)} auf.
-// * @return immer <code>true</code>
-// */
-// protected boolean performSetValue(E[] newValue) {
-// ((JList)inpComp).clearSelection();
-// ((JList)inpComp).getI)getSelectionModel().clearSelection();
-// setSelectedItem(newValue);
-// return true;
-// }
-// }
+ /**
+ * Diese Klasse stellt eine Auswahl-Option dar, die durch eine
+ * {@link JList} dargestellt wird, in der mehrere Werte ausgewaehlt
+ * werden koennen. Als Wert liefert diese InputOption eine
+ * {@code java.util.List<E>}!
+ *
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ * @version 1.0
+ */
+ public static class MultiList<E> extends List {
+
+ /**
+ * Erzeugt eine neue Auswahl-Option.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ * @param value die zur Auswahl stehenden Objekte
+ * @param defIdx Index der vorgeblendeten Auswahl
+ * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
+ * (kann <code>null</code> sein)
+ * @exception IllegalArgumentException falls sich die Array-Groessen von
+ * <code>value</code> und <code>display</code> unterscheiden
+ */
+ public MultiList(String label, boolean inputNeeded, E[] value, int defIdx, Object[] display, int height, int width) {
+ super(label,inputNeeded,value,defIdx, display,height,width);
+ }
+
+ /**
+ * Erzeugt eine neue Auswahl-Option.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ * @param value die zur Auswahl stehenden Objekte
+ * @param defValue vorgeblendetes Auswahlobjekt
+ * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
+ * (kann <code>null</code> sein)
+ * @exception IllegalArgumentException falls sich die Array-Groessen von
+ * <code>value</code> und <code>display</code> unterscheiden
+ */
+ public MultiList(String label, boolean inputNeeded, E[] value, E defvalue, Object[] display, int height, int width) {
+ super(label,inputNeeded,value,defvalue,display,height,width);
+ }
+
+ /**
+ * Erzeugt eine neue Auswahl-Option.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ * @param value die zur Auswahl stehenden Objekte
+ * @param defValue vorgeblendetes Auswahlobjekt
+ * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
+ * (kann <code>null</code> sein)
+ * @exception IllegalArgumentException falls sich die Array-Groessen von
+ * <code>value</code> und <code>display</code> unterscheiden
+ */
+ public MultiList(String label, boolean inputNeeded, E[] value, E defValue, Object[] display) {
+ super(label,inputNeeded,value,defValue,display);
+ }
+
+ /**
+ * Erzeugt eine neue Auswahl-Option.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ * @param value die zur Auswahl stehenden Objekte
+ * @param defValue vorgeblendetes Auswahlobjekt
+ * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
+ * (kann <code>null</code> sein)
+ * @param tooltip die fuer jedes Auswahl-Objekt angezeigten Tooltips
+ * (kann <code>null</code> sein)
+ * @exception IllegalArgumentException falls sich die Array-Groessen von
+ * <code>value</code> und <code>display</code> unterscheiden
+ */
+ public MultiList(String label, boolean inputNeeded, E[] value, E defValue, Object[] display, int height, int width, Map<Object,String> tooltip) {
+ super(label,inputNeeded,value,defValue,display,height,width,tooltip);
+ }
+
+ /**
+ * Erzeugt eine neue Auswahl-Option. Es wird das erste Auswahl-Objekt
+ * vorgeblendet.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ * @param value die zur Auswahl stehenden Objekte
+ * @param display die anstelle der Auswahl-Objekte angezeigten Objekte
+ * (kann <code>null</code> sein)
+ * @exception IllegalArgumentException falls sich die Array-Groessen von
+ * <code>value</code> und <code>display</code> unterscheiden
+ */
+ public MultiList(String label, boolean inputNeeded, E[] value, Object[] display) {
+ super(label,inputNeeded,value,null,display);
+ }
+
+ /**
+ * Erzeugt eine leere Auswahl-Option. Diese muss nachtraeglich ueber
+ * {@link #setSelectionObjects(Object[],Object[])} befuellt werden.
+ * @param label Beschreibung
+ * @param inputNeeded gibt an, ob eine Eingabe erforderlich ist
+ */
+ public MultiList(String label, boolean inputNeeded) {
+ super(label,inputNeeded);
+ }
+
+ /**
+ * Erzeugt eine neue Instanz von {@link JList}, in der mehrere
+ * Werte ausgewaehlt werden koennen.
+ */
+ protected JList createInputComponent() {
+ JList list = super.createInputComponent();
+ list.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
+ return list;
+ }
+
+ /**
+ * Liefert die Indizes, die in der {@link JList}-Liste ausgewaehlt wurden.
+ */
+ public int[] getSelectedIndices() {
+ return ((JList)inpComp).getSelectedIndices();
+ }
+
+ /**
+ * Liefert eine {@code List<E>} der aktuell ausgewaehlten Eintraege.
+ * @return <code>null</code> falls kein Objekt ausgewaehlt ist
+ */
+ @Override
+ protected java.util.List<E> performGetValue() {
+ int[] selIdx = getSelectedIndices();
+ java.util.List<E> selValues = new ArrayList<E>();
+ for (int i=0; i<selIdx.length; i++)
+ selValues.add( (E)selectionObject[selIdx[i]] );
+ return selValues;
+ }
+
+ /**
+ * Setzt die Objekte, die in der Auswahlliste angewaehlt sind.
+ * @return immer <code>true</code>
+ */
+ protected boolean performSetValues(java.util.Collection<E> newValue) {
+ ListSelectionModel sm = ((JList)inpComp).getSelectionModel();
+ sm.setValueIsAdjusting(true);
+ sm.clearSelection();
+ if ( newValue != null) {
+ for (int i=0; i<selectionObject.length; i++)
+ if ( newValue.contains(selectionObject[i]) )
+ sm.addSelectionInterval(i,i);
+ }
+ sm.setValueIsAdjusting(false);
+ return true;
+ }
+
+ /**
+ * Setzt die Auswahl auf ein bestimmtes Objekt. Ist dieses nicht vorhanden,
+ * wird die Auswahlliste auf eine leere Auswahl eingestellt.
+ */
+ public void setSelectedItems(java.util.Collection<E> newValues) {
+ performSetValues(newValues);
+ }
+ }
}
More information about the Schmitzm-commits
mailing list