// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2013 uniCenta & previous Openbravo POS works // http://www.unicenta.net/unicentaopos // // This file is part of uniCenta oPOS // // uniCenta oPOS 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. // // uniCenta oPOS 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 uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>. package com.openbravo.data.gui; import com.openbravo.data.loader.IKeyGetter; import com.openbravo.data.loader.KeyGetterBuilder; import java.util.*; import javax.swing.*; /** * * @author adrian */ public class ComboBoxValModel extends AbstractListModel implements ComboBoxModel { private List m_aData; private IKeyGetter m_keygetter; private Object m_selected; /** Creates a new instance of ComboBoxValModel */ public ComboBoxValModel(List aData, IKeyGetter keygetter) { m_aData = aData; m_keygetter = keygetter; m_selected = null; } public ComboBoxValModel(List aData) { this(aData, KeyGetterBuilder.INSTANCE); } public ComboBoxValModel(IKeyGetter keygetter) { this(new ArrayList(), keygetter); } public ComboBoxValModel() { this(new ArrayList(), KeyGetterBuilder.INSTANCE); } public void add(Object c) { m_aData.add(c); } public void del(Object c) { m_aData.remove(c); } public void add(int index, Object c) { m_aData.add(index, c); } public void refresh(List aData) { m_aData = aData; m_selected = null; } public Object getSelectedKey() { if (m_selected == null) { return null; } else { return m_keygetter.getKey(m_selected); // Si casca, excepcion parriba } } public String getSelectedText() { if (m_selected == null) { return null; } else { return m_selected.toString(); } } public void setSelectedKey(Object aKey) { setSelectedItem(getElementByKey(aKey)); } public void setSelectedFirst() { m_selected = (m_aData.isEmpty()) ? null : m_aData.get(0); } 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 Object getSelectedItem() { return m_selected; } @Override public int getSize() { return m_aData.size(); } @Override public void setSelectedItem(Object anItem) { if ((m_selected != null && !m_selected.equals(anItem)) || m_selected == null && anItem != null) { m_selected = anItem; fireContentsChanged(this, -1, -1); } } }