/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.utils.ui;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public abstract class ListPanel<T> extends ItemsPanel<T> {
protected JList<ItemContainer> list;
private class MyListModel implements ListModel<ItemContainer> {
@Override
public int getSize() {
return items.size();
}
@Override
public ItemContainer getElementAt(int index) {
return new ItemContainer(items.get(index), index);
}
@Override
public void addListDataListener(ListDataListener l) {
// TODO Auto-generated method stub
}
@Override
public void removeListDataListener(ListDataListener l) {
// TODO Auto-generated method stub
}
}
@Override
protected JComponent createItemsComponent(){
list = new JList<>();
// add list selection changed listener
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
updateAppearance();
}
});
return list;
}
public ListPanel(List<T> items, String itemName) {
super(items, itemName);
}
@Override
protected void updateList() {
list.setModel(new MyListModel());
}
@Override
protected void setSelectedIndex(int index){
list.setSelectedIndex(index);
}
@Override
protected int getSelectedIndx(){
return list.getSelectedIndex();
}
}