package gui.models;
import java.math.BigDecimal;
import java.util.Observable;
import java.util.Observer;
import javax.swing.DefaultComboBoxModel;
import org.mapdb.Fun.Tuple2;
import qora.account.Account;
import utils.ObserverMessage;
import utils.Pair;
import controller.Controller;
import database.SortableList;
@SuppressWarnings("serial")
public class BalancesComboBoxModel extends DefaultComboBoxModel<Pair<Tuple2<String, Long>, BigDecimal>> implements Observer {
private SortableList<Tuple2<String, Long>, BigDecimal> balances;
public BalancesComboBoxModel(Account account)
{
Controller.getInstance().addObserver(this);
this.balances = Controller.getInstance().getBalances(account);
this.balances.registerObserver();
this.update();
}
@Override
public void update(Observable o, Object arg)
{
try
{
this.syncUpdate(o, arg);
}
catch(Exception e)
{
//GUI ERROR
}
}
private synchronized void syncUpdate(Observable o, Object arg)
{
ObserverMessage message = (ObserverMessage) arg;
if(message.getType() == ObserverMessage.ADD_BALANCE_TYPE || message.getType() == ObserverMessage.REMOVE_BALANCE_TYPE)
{
this.update();
}
}
private void update()
{
//GET SELECTED ITEM
//Account selected = (Account) this.getSelectedItem();
//EMPTY LIST
this.removeAllElements();
//INSERT ALL ACCOUNTS
for(int i=0; i<this.balances.size(); i++)
{
this.addElement(this.balances.get(i));
}
//RESET SELECTED ITEM
/*if(this.getIndexOf(selected) != -1)
{
this.setSelectedItem(selected);
}*/
}
public void removeObservers()
{
Controller.getInstance().deleteObserver(this);
this.balances.removeObserver();
}
}