/*
* Created on Aug 20, 2005
*/
package org.seqcode.viz.utils;
import java.util.*;
import javax.swing.*;
import org.seqcode.gseutils.NamedValue;
import java.awt.*;
/**
* @author tdanford
*/
public class NamedListPanel<X> extends JPanel implements ListPanel<X>, ListPanelListener {
private SimpleListPanel<NamedValue<X>> simpleList;
protected ListPanelEventSource.Default source;
public NamedListPanel() {
super();
setLayout(new BorderLayout());
simpleList = new SimpleListPanel<NamedValue<X>>();
add(simpleList, BorderLayout.CENTER);
source = new ListPanelEventSource.Default(this);
simpleList.addListPanelListener(this);
}
public void addNamedValues(Map<String,X> valMap) {
for(String key : valMap.keySet()) {
addNamedValue(key, valMap.get(key));
}
}
public void panelEvent(ListPanelEvent evt) {
int type = evt.getType();
NamedValue<X> eData = (NamedValue<X>)evt.getData();
source.firePanelEvent(type, eData.getData());
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanel#getNumValues()
*/
public int getNumValues() {
return simpleList.getNumValues();
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanel#getValue(int)
*/
public X getValue(int index) {
return simpleList.getValue(index).getData();
}
public String getName(int index) {
return simpleList.getValue(index).getName();
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanel#addValue(null)
*/
public void addValue(X v) {
NamedValue<X> nv = new NamedValue<X>(v);
simpleList.addValue(nv);
}
public void addNamedValue(String n, X v) {
NamedValue<X> nv = new NamedValue<X>(n, v);
simpleList.addValue(nv);
}
public void addNamedValue(NamedValue<X> nv) {
simpleList.addValue(nv);
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanel#clear()
*/
public void clear() {
simpleList.clear();
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanel#getFirstSelectedValue()
*/
public X getFirstSelectedValue() {
return simpleList.getFirstSelectedValue().getData();
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanel#getSelectedValues()
*/
public Collection<X> getSelectedValues() {
LinkedList<X> dataList = new LinkedList<X>();
Collection<NamedValue<X>> lst = simpleList.getSelectedValues();
for(NamedValue<X> nv : lst) {
dataList.addLast(nv.getData());
}
return dataList;
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanelEventSource#addListPanelListener(org.seqcode.gse.hyperdrive.ui.ListPanelListener)
*/
public void addListPanelListener(ListPanelListener lpl) {
source.addListPanelListener(lpl);
}
/* (non-Javadoc)
* @see org.seqcode.gse.hyperdrive.ui.ListPanelEventSource#removeListPanelListener(org.seqcode.gse.hyperdrive.ui.ListPanelListener)
*/
public void removeListPanelListener(ListPanelListener lpl) {
source.removeListPanelListener(lpl);
}
public void removeValue(int index) {
simpleList.removeValue(index);
}
public int[] getSelectedIndices() {
return simpleList.getSelectedIndices();
}
public void removeSelectedValues() {
simpleList.removeSelectedValues();
}
public Collection<X> getAllValues() {
LinkedList<X> dataList = new LinkedList<X>();
Collection<NamedValue<X>> lst = simpleList.getAllValues();
for(NamedValue<X> nv : lst) {
dataList.addLast(nv.getData());
}
return dataList;
}
}