summaryrefslogtreecommitdiff
path: root/javax/swing/DefaultListSelectionModel.java
diff options
context:
space:
mode:
authorRonald Veldema <rveldema@cs.vu.nl>2002-03-11 15:48:06 +0000
committerRonald Veldema <rveldema@cs.vu.nl>2002-03-11 15:48:06 +0000
commit5158e5cd020ca88753de8793a40dcda66f3ea8ae (patch)
treee8ff44926abd1e1fd9f058139dc1476c54d24f9c /javax/swing/DefaultListSelectionModel.java
parenteed4707c499f072d7e36d8499638b859a370fc57 (diff)
downloadclasspath-5158e5cd020ca88753de8793a40dcda66f3ea8ae.tar.gz
Added my embryonic javax.swing implementation,
since there are no makefiles for it yet nobody should notice its addition (it shouldn't break anything by adding it this early) R.
Diffstat (limited to 'javax/swing/DefaultListSelectionModel.java')
-rw-r--r--javax/swing/DefaultListSelectionModel.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/javax/swing/DefaultListSelectionModel.java b/javax/swing/DefaultListSelectionModel.java
new file mode 100644
index 000000000..b6cd70175
--- /dev/null
+++ b/javax/swing/DefaultListSelectionModel.java
@@ -0,0 +1,144 @@
+package javax.swing;
+
+import javax.swing.event.*;
+import java.util.*;
+
+public class DefaultListSelectionModel implements ListSelectionModel
+{
+ int mode = SINGLE_SELECTION;
+
+ Vector sel = new Vector();
+
+ Vector listeners;
+
+ Vector get_listeners()
+ {
+ if (listeners == null)
+ listeners = new Vector();
+ return listeners;
+ }
+
+
+ public void addListSelectionListener(ListSelectionListener listener)
+ {
+ get_listeners().addElement(listener);
+ }
+
+ public void removeListSelectionListener(ListSelectionListener listener)
+ {
+ get_listeners().removeElement(listener);
+ }
+
+ class Range
+ {
+ int i0, i1;
+
+ Range(int a, int b)
+ {
+ if (a > b)
+ {
+ i0 = b;
+ i1 = a;
+ }
+ else
+ {
+ i0 = a;
+ i1 = b;
+ }
+ }
+ }
+
+
+ public int getMinSelectionIndex()
+ {
+ if (isSelectionEmpty())
+ return -1;
+
+ boolean first = true;
+ int min = -1;
+ for (int i=0;i<sel.size();i++)
+ {
+ Range r = (Range) sel.get(i);
+
+ if (first)
+ {
+ min = r.i0;
+ first = false;
+ }
+ else
+ {
+ if (r.i0 > min)
+ {
+ min = r.i0;
+ }
+ }
+ }
+ return min;
+ }
+
+ public int getMaxSelectionIndex()
+ {
+ if (isSelectionEmpty())
+ return -1;
+
+ boolean first = true;
+ int max = -1;
+ for (int i=1;i<sel.size();i++)
+ {
+ Range r = (Range) sel.get(i);
+
+ if (first)
+ {
+ max = r.i1;
+ }
+ else
+ {
+ if (r.i1 > max)
+ {
+ max = r.i1;
+ }
+ }
+ }
+ return max;
+ }
+
+ public boolean isSelectedIndex(int a)
+ {
+ for (int i=0;i<sel.size();i++)
+ {
+ Range r = (Range) sel.get(i);
+ if (r.i0 <= a &&
+ r.i1 >= a)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ public int getSelectionMode()
+ { return mode; }
+ public void setSelectionMode(int a)
+ { mode = a; }
+
+ boolean isSelectionEmpty()
+ {
+ return sel.size() == 0;
+ }
+
+ public void clearSelection()
+ {
+ sel.removeAllElements();
+ }
+
+ public void setSelectionInterval(int index0, int index1)
+ {
+ if (mode == SINGLE_SELECTION)
+ {
+ sel.removeAllElements();
+ }
+
+ sel.addElement(new Range(index0, index1));
+ }
+}