diff options
author | Ronald Veldema <rveldema@cs.vu.nl> | 2002-03-11 15:48:06 +0000 |
---|---|---|
committer | Ronald Veldema <rveldema@cs.vu.nl> | 2002-03-11 15:48:06 +0000 |
commit | 5158e5cd020ca88753de8793a40dcda66f3ea8ae (patch) | |
tree | e8ff44926abd1e1fd9f058139dc1476c54d24f9c /javax/swing/DefaultListSelectionModel.java | |
parent | eed4707c499f072d7e36d8499638b859a370fc57 (diff) | |
download | classpath-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.java | 144 |
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)); + } +} |