summaryrefslogtreecommitdiff
path: root/javax/swing/JList.java
blob: 9131b01a5984dff93204020bcd9749af4fb78369 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
package javax.swing;

import javax.swing.event.*;

import java.awt.*;
import javax.swing.plaf.*;
import java.util.*;


public class JList extends JComponent implements Scrollable
{
    Color select_back, select_fore;
    ListCellRenderer render;
    int visibles = 8;
    
    ListModel          model;
    ListSelectionModel sel_model;

    JList()
    {	
	init();
    }

    JList(Object[] listData)
    {
	init();
	setListData(listData);
    }


    JList(Vector listData)
    {
	init();
	setListData(listData);
    }


    JList(ListModel listData)
    {
	init();
	setModel(listData);
    }
    void init()
    {
	render = new DefaultCellRenderer();
	
	sel_model = new DefaultListSelectionModel();
	setModel(new DefaultListModel());

	select_back = new Color(0,0,255);
	select_fore = new Color(255,255,255);

	updateUI();
    }

    
    public int getVisibleRowCount()
    { return visibles; }
    public void setVisibleRowCount(int visibleRowCount)
    {
	visibles =  visibleRowCount;
	invalidate();
	repaint();
    }

    void addListSelectionListener(ListSelectionListener listener)
    { sel_model.addListSelectionListener(listener);    }
    void removeListSelectionListener(ListSelectionListener listener)
    { sel_model.removeListSelectionListener(listener);    }

    void setSelectionMode(int a)
    {  sel_model.setSelectionMode(a);   }
    void setSelectedIndex(int a)
    {  sel_model.setSelectionInterval(a,a); }
    int getSelectedIndex()
    {	return sel_model.getMinSelectionIndex();    }
    Object getSelectedValue()
    {  
	int index = getSelectedIndex();
	if (index == -1)
	    return null;
	return getModel().getElementAt(index);
    }

    Color getSelectionBackground()
    { return select_back;    }    
    Color getSelectionForeground()
    { return select_fore;    }


    public void setListData(final Object[] listData)
    {
	class AL extends AbstractListModel
	{
	    public int getSize()              { return listData.length; }
	    public Object getElementAt(int i) { return listData[i];     }
	};
	
	setModel (new AL());
    }
    
    public void setListData(final Vector listData)
    {
	class AL extends AbstractListModel 
	{
	    public int getSize()              { return listData.size(); }
	    public Object getElementAt(int i) { return listData.elementAt(i); }
	};
	
        setModel (new AL());
    }
    
    
    public ListCellRenderer getCellRenderer()
    {    return  render; }
    public void setCellRenderer(ListCellRenderer cellRenderer)
    {
	render = cellRenderer;
	invalidate();
	repaint();
    }
    
    public void setModel(ListModel model)
    {
	ListDataListener l = new ListDataListener()
	    {
		public void intervalAdded(ListDataEvent e) {
		    repaint();
		}
		public void intervalRemoved(ListDataEvent e) {
		    repaint();
		}
		public void contentsChanged(ListDataEvent e) {
		    repaint();
		}
	    };
	
	this.model = model;  
	model.addListDataListener(l);	
    }

    public ListModel getModel() 
    {  return model;        }
    
    
    public ListUI getUI()
    {  return (ListUI) ui;    }
    public void setUI(ListUI ui)
    {   super.setUI(ui);      }

    public void updateUI()
    {
        setUI((ListUI)UIManager.getUI(this));
    }

    public String getUIClassID()
    {
	return "JList";
    }


    AccessibleContext getAccessibleContext()
    {
      return null;
    }

    public Dimension getPreferredScrollableViewportSize()
    {
	return null;
    }

    public int getScrollableUnitIncrement(Rectangle visibleRect,
					  int orientation,
					  int direction)
    {
	return 1;
    }

    public int getScrollableBlockIncrement(Rectangle visibleRect,
					   int orientation,
					   int direction)
    {
	return 1;
    }

    public boolean getScrollableTracksViewportWidth()
    {
	return false;
    }

    public boolean getScrollableTracksViewportHeight()
    {
	return false;
    }
    
}