package gui.models;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.Set;
import javax.swing.DefaultComboBoxModel;
import qora.assets.Asset;
import utils.ObserverMessage;
import controller.Controller;
@SuppressWarnings("serial")
public class AssetsComboBoxModel extends DefaultComboBoxModel<Asset> implements Observer {
public AssetsComboBoxModel()
{
Controller.getInstance().addWalletListener(this);
}
@Override
public void update(Observable o, Object arg)
{
try
{
this.syncUpdate(o, arg);
}
catch(Exception e)
{
//GUI ERROR
}
}
@SuppressWarnings("unchecked")
public synchronized void syncUpdate(Observable o, Object arg)
{
ObserverMessage message = (ObserverMessage) arg;
//CHECK IF LIST UPDATED
if(message.getType() == ObserverMessage.LIST_ASSET_FAVORITES_TYPE)
{
//GET SELECTED ITEM
Asset selected = (Asset) this.getSelectedItem();
//EMPTY LIST
this.removeAllElements();
//INSERT ALL ACCOUNTS
Set<Long> keys = (Set<Long>) message.getValue();
List<Asset> assets = new ArrayList<Asset>();
for(Long key: keys)
{
//GET ASSET
Asset asset = Controller.getInstance().getAsset(key);
assets.add(asset);
//ADD
this.addElement(asset);
}
//RESET SELECTED ITEM
if(this.getIndexOf(selected) != -1)
{
for(Asset asset: assets)
{
if(asset.getKey() == selected.getKey())
{
this.setSelectedItem(asset);
return;
}
}
}
}
}
}