// Chromis POS - The New Face of Open Source POS
// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
//
// Chromis POS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Chromis POS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see <http://www.gnu.org/licenses/>.
package uk.chromis.data.gui;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.ListModel;
import uk.chromis.data.loader.IKeyGetter;
import uk.chromis.data.loader.KeyGetterBuilder;
/**
*
* @author adrian
*/
public class ListValModel extends AbstractListModel implements ListModel {
private List m_aData;
private IKeyGetter m_keygetter;
/** Creates a new instance of ComboBoxValModel
* @param aData
* @param keygetter */
public ListValModel(List aData, IKeyGetter keygetter) {
m_aData = aData;
m_keygetter = keygetter;
}
/**
*
* @param aData
*/
public ListValModel(List aData) {
this(aData, KeyGetterBuilder.INSTANCE);
}
/**
*
* @param keygetter
*/
public ListValModel(IKeyGetter keygetter) {
this(new ArrayList(), keygetter);
}
/**
*
*/
public ListValModel() {
this(new ArrayList(), KeyGetterBuilder.INSTANCE);
}
/**
*
* @param c
*/
public void add(Object c) {
m_aData.add(c);
}
/**
*
* @param c
*/
public void del(Object c) {
m_aData.remove(c);
}
/**
*
* @param index
* @param c
*/
public void add(int index, Object c) {
m_aData.add(index, c);
}
/**
*
* @param aData
*/
public void refresh(List aData) {
m_aData = aData;
}
/**
*
* @param aKey
* @return
*/
public Object getElementByKey(Object aKey) {
if (aKey != null) {
Iterator it = m_aData.iterator();
while (it.hasNext()) {
Object value = it.next();
if (aKey.equals(m_keygetter.getKey(value))) {
return value;
}
}
}
return null;
}
@Override
public Object getElementAt(int index) {
return m_aData.get(index);
}
@Override
public int getSize() {
return m_aData.size();
}
}