FSF GCC merge 02/23/03
[official-gcc.git] / libjava / javax / swing / DefaultListSelectionModel.java
blob64ae505fd12aaafe5adc8c10108eac7be1fa2d7c
1 /* DefaultListSelectionModel.java --
2 Copyright (C) 2002 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
38 package javax.swing;
40 import javax.swing.event.*;
41 import java.util.*;
43 public class DefaultListSelectionModel implements ListSelectionModel
45 int mode = SINGLE_SELECTION;
47 Vector sel = new Vector();
49 Vector listeners;
51 Vector get_listeners()
53 if (listeners == null)
54 listeners = new Vector();
55 return listeners;
59 public void addListSelectionListener(ListSelectionListener listener)
61 get_listeners().addElement(listener);
64 public void removeListSelectionListener(ListSelectionListener listener)
66 get_listeners().removeElement(listener);
69 class Range
71 int i0, i1;
73 Range(int a, int b)
75 if (a > b)
77 i0 = b;
78 i1 = a;
80 else
82 i0 = a;
83 i1 = b;
89 public int getMinSelectionIndex()
91 if (isSelectionEmpty())
92 return -1;
94 boolean first = true;
95 int min = -1;
96 for (int i=0;i<sel.size();i++)
98 Range r = (Range) sel.get(i);
100 if (first)
102 min = r.i0;
103 first = false;
105 else
107 if (r.i0 > min)
109 min = r.i0;
113 return min;
116 public int getMaxSelectionIndex()
118 if (isSelectionEmpty())
119 return -1;
121 boolean first = true;
122 int max = -1;
123 for (int i=1;i<sel.size();i++)
125 Range r = (Range) sel.get(i);
127 if (first)
129 max = r.i1;
131 else
133 if (r.i1 > max)
135 max = r.i1;
139 return max;
142 public boolean isSelectedIndex(int a)
144 for (int i=0;i<sel.size();i++)
146 Range r = (Range) sel.get(i);
147 if (r.i0 <= a &&
148 r.i1 >= a)
150 return true;
153 return false;
157 public int getSelectionMode()
158 { return mode; }
159 public void setSelectionMode(int a)
160 { mode = a; }
162 boolean isSelectionEmpty()
164 return sel.size() == 0;
167 public void clearSelection()
169 sel.removeAllElements();
172 public void setSelectionInterval(int index0, int index1)
174 if (mode == SINGLE_SELECTION)
176 sel.removeAllElements();
179 sel.addElement(new Range(index0, index1));