home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1995 November
/
PCWK1195.iso
/
inne
/
win95
/
sieciowe
/
hotja32.lzh
/
hotjava
/
classsrc
/
awt
/
list.java
< prev
next >
Wrap
Text File
|
1995-08-11
|
6KB
|
246 lines
/*
* @(#)List.java 1.18 95/02/03 Sami Shaio
*
* Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies. Please refer to the file "copyright.html"
* for further important copyright and licensing information.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/
package awt;
import java.lang.*;
import java.util.*;
/**
* A scrolling list of text items.
*
* @version 1.18 03 Feb 1995
* @author Sami Shaio
*/
public class List extends Component implements ChoiceHandler {
private WServer wServer;
private boolean hFill;
private boolean vFill;
private Vector items;
private ChoiceHandler handler;
/**
* Creates a scrolling list.
* @param p is the parent window for this List.
* @param ch is the object that will handle selections for this List.
* @param visibleLines is the number of items to show.
* @param multipleSelections if true then multiple selections are allowed.
* @param resizable if true then the list will attempt to grow or
* shrink to match the width of the items it contains.
*/
public List(Container p,
ChoiceHandler ch,
String pName,
int visibleLines,
boolean multipleSelections,
boolean resizable) {
super(p, pName);
if (ch == null) {
handler = this;
} else {
handler = ch;
}
Window win = Window.getWindow(p);
wServer = win.wServer;
wServer.listCreate(this,
win,
handler,
visibleLines,
multipleSelections,
resizable);
items = new Vector();
hFill = false;
vFill = false;
}
public List(Container p,
ChoiceHandler ch,
String pName,
int visibleLines,
boolean multipleSelections) {
this(p,ch,pName, visibleLines,multipleSelections,true);
}
/**
* This is the callback method for a ChoiceHandler interface. It
* will be called when the use single-clicks on an item in the
* scrolling list. If pos is -1 then this indicates multiple
* selections. Override to do something useful.
*/
public void selected(Component c, int pos) {
}
/**
* This is invoked when the user double-clicks on an item in the
* list. Override to do something useful.
*/
public void doubleClick(Component c, int pos) {
}
/**
* Return true if the given item has been selected.
*/
public boolean isSelected(int pos) {
if (pos >= 0 && pos < items.size()) {
return wServer.listIsSelected(this, pos);
} else {
throw new IllegalArgumentException();
}
}
/**
* Adds an item to the scrolling list.
*/
public void addItem(String item) {
wServer.listAddItem(this, item);
items.addElement(item);
}
/**
* Gets the string associated with the given position.
*/
public String itemAt(int pos) {
int itemCount = items.size();
if (pos >= 0 && pos < itemCount) {
return (String)items.elementAt(pos);
} else {
return null;
}
}
/**
* Clears the list.
*/
public void clear() {
int itemCount = items.size();
if (itemCount > 0) {
delItems(0, itemCount - 1);
items.removeAllElements();
}
}
/**
* Set the number of visible lines.
*/
public void setNVisible(int nLines) {
wServer.listSetNVisible(this, nLines);
}
/**
* Deletes one item at the given position.
*/
public void delItem(int pos) {
delItems(pos, pos);
}
/**
* Deletes the items from start to end.
*/
public void delItems(int start, int end) {
int i;
int itemCount = items.size();
if (start >= 0 && start < itemCount &&
end >= 0 && end < itemCount) {
for (i=start; i <= end; i++) {
items.removeElementAt(i);
}
wServer.listDelItems(this, start, end);
} else {
throw new IllegalArgumentException();
}
}
/** Sets whether or not this List stretches horizontally. */
public void setHFill(boolean t) {
hFill = t;
}
/** Sets whether or not this List stretches vertically. */
public void setVFill(boolean t) {
vFill = t;
}
public Dimension getPreferredSize() {
wServer.listDimensions(this);
return new Dimension((hFill) ? parent.width : width,
(vFill) ? parent.height : height);
}
public Dimension minDimension() {
Dimension dim;
wServer.listDimensions(this);
dim = new Dimension(width, height);
return dim;
}
public void reshape(int x, int y, int w, int h) {
super.reshape(x, y, w, h);
wServer.listReshape(this, x, y, w, h);
}
public void move(int X, int Y) {
super.move(X,Y);
wServer.listMoveTo(this, X, Y);
}
/**
* Select the given item.
*/
public void select(int pos) {
wServer.listSelect(this, pos);
}
/**
* Deselect the given item.
*/
public void deselect(int pos) {
wServer.listDeselect(this, pos);
}
/**
* Force the given position to be visible.
*/
public void makeVisible(int pos) {
wServer.listMakeVisible(this, pos);
}
/**
* Returns the number of items in the list.
*/
public int nItems() {
return items.size();
}
public void map() {
wServer.listShow(this);
mapped = true;
}
public void unMap() {
wServer.listHide(this);
mapped = false;
}
public void dispose() {
wServer.listDispose(this);
}
}