/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.swing;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;
import com.opengamma.core.config.ConfigSource;
import com.opengamma.core.id.ExternalIdDisplayComparator;
import com.opengamma.core.position.PortfolioNode;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.Trade;
import com.opengamma.core.security.Security;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
/**
* Tree Cell Renderer for portfolio tree.
*/
public class JPortfolioTree extends JTree {
private static final long serialVersionUID = 1L;
private ExternalIdDisplayComparator _idBundleComparator;
public JPortfolioTree(DefaultTreeModel defaultTreeModel, ConfigSource configSource) {
super(defaultTreeModel);
_idBundleComparator = new ExternalIdDisplayComparator(); //.getComparator(configSource, ExternalIdDisplayComparatorUtils.DEFAULT_CONFIG_NAME);
}
@Override
public String convertValueToText(Object value, boolean selected,
boolean expanded, boolean leaf, int row, boolean hasFocus) {
if (value != null) {
if (value instanceof PortfolioNode) {
PortfolioNode portfolioNode = (PortfolioNode) value;
return portfolioNode.getName();
} else if (value instanceof Position) {
Position position = (Position) value;
ExternalIdBundle bundle = position.getSecurityLink().getExternalId();
if (!bundle.isEmpty()) {
SortedSet<ExternalId> sorted = new TreeSet<>(_idBundleComparator);
sorted.addAll(bundle.getExternalIds());
return sorted.iterator().next() + " (" + position.getQuantity() + ")";
} else {
return position.getSecurity().getName() + " (" + position.getQuantity() + ")";
}
} else if (value instanceof Trade) {
Trade trade = (Trade) value;
return trade.getQuantity() + " on " + trade.getTradeDate();
} else if (value instanceof Security) {
Security security = (Security) value;
return security.getName();
}
}
return "";
}
}