// Path: src/apidemo/util/HtmlButton.java
// public class HtmlButton extends JLabel {
// 	static Color light = new Color( 220, 220, 220);
// 	
// 	private String m_text;
// 	protected boolean m_selected;
// 	private ActionListener m_al;
// 	private Color m_bg = getBackground();
// 
// 	public boolean isSelected() { return m_selected; }
// 	
// 	public void setSelected( boolean v) { m_selected = v; }
// 	public void addActionListener(ActionListener v) { m_al = v; }
// 
// 	public HtmlButton( String text) {
// 		this( text, null);
// 	}
// 	
// 	public HtmlButton( String text, ActionListener v) {
// 		super( text);
// 		m_text = text;
// 		m_al = v;
// 		setOpaque( true);
// 		setForeground( Color.blue);
// 		
// 		MouseAdapter a = new MouseAdapter() {
// 			public void mousePressed(MouseEvent e) {
// 				onPressed( e);
// 			}
// 			public void mouseReleased(MouseEvent e) {
// 				onClicked(e);
// 				setBackground( m_bg);
// 			}
// 			public void mouseEntered(MouseEvent e) {
// 				onEntered(e);
// 			}
// 			public void mouseExited(MouseEvent e) {
// 				onExited();
// 			}
// 			@Override public void mouseMoved(MouseEvent e) {
// 				onMouseMoved( e);
// 			}
// 		};
// 		addMouseListener( a);
// 		addMouseMotionListener(a);
// 		setFont( getFont().deriveFont( Font.PLAIN) );
// 	}
// 
// 	protected void onMouseMoved(MouseEvent e) {
// 	}
// 
// 	protected void onEntered(MouseEvent e) {
// 		if (!m_selected) {
// 			setText( underline( m_text) );
// 		}
// 	}
// 
// 	protected void onExited() {
// 		setText( m_text);
// 	}
// 
// 	protected void onPressed(MouseEvent e) {
// 		if (!m_selected) {
// 			setBackground( light);
// 		}
// 	}
// 
// 	protected void onClicked(MouseEvent e) {
// 		actionPerformed();
// 	}
// 
// 	protected void actionPerformed() {
// 		if( m_al != null) {
// 			m_al.actionPerformed( null);
// 		}
// 	}
// 
// 	public static class HtmlRadioButton extends HtmlButton {
// 		private HashSet<HtmlRadioButton> m_group;
// 		HtmlRadioButton( String text, HashSet<HtmlRadioButton> group) {
// 			super( text);
// 			m_group = group;
// 			group.add( this);
// 		}
// 		@Override protected void actionPerformed() {
// 			for( HtmlRadioButton but : m_group) {
// 				but.setSelected( false);
// 			}
// 			setSelected( true);
// 			super.actionPerformed();
// 		}
// 	}
// 	
// 	static String underline( String str) {
// 		return String.format( "<html><u>%s</html>", str);
// 	}
// 	
// 	static String bold( String str) {
// 		return String.format( "<html><b>%s</html>", str);
// 	}
// 	
// 	class B implements Border {
// 		@Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
// 		}
// 
// 		@Override public Insets getBorderInsets(Component c) {
// 			return null;
// 		}
// 
// 		@Override public boolean isBorderOpaque() {
// 			return false;
// 		}
// 	}
// }
// 
// Path: src/com/ib/controller/ApiController.java
// public interface ITradeReportHandler {
// 	void tradeReport(String tradeKey, NewContract contract, Execution execution);
// 	void tradeReportEnd();
// 	void commissionReport(String tradeKey, CommissionReport commissionReport);
// }


import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.TitledBorder;
import javax.swing.table.AbstractTableModel;
import apidemo.util.HtmlButton;
import com.ib.client.CommissionReport;
import com.ib.client.Execution;
import com.ib.client.ExecutionFilter;
import com.ib.controller.NewContract;
import com.ib.controller.ApiController.ITradeReportHandler;
/* Copyright (C) 2013 Interactive Brokers LLC. All rights reserved.  This code is subject to the terms
 * and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable. */

package apidemo;






public class TradesPanel extends JPanel implements ITradeReportHandler {
	private ArrayList<FullExec> m_trades = new ArrayList<FullExec>();
	private HashMap<String,FullExec> m_map = new HashMap<String,FullExec>();
	private Model m_model = new Model();
	
	TradesPanel() {
		JTable table = new JTable( m_model);
		JScrollPane scroll = new JScrollPane( table);
		scroll.setBorder( new TitledBorder( "Trade Log"));
		
// Path: src/apidemo/util/HtmlButton.java
// public class HtmlButton extends JLabel {
// 	static Color light = new Color( 220, 220, 220);
// 	
// 	private String m_text;
// 	protected boolean m_selected;
// 	private ActionListener m_al;
// 	private Color m_bg = getBackground();
// 
// 	public boolean isSelected() { return m_selected; }
// 	
// 	public void setSelected( boolean v) { m_selected = v; }
// 	public void addActionListener(ActionListener v) { m_al = v; }
// 
// 	public HtmlButton( String text) {
// 		this( text, null);
// 	}
// 	
// 	public HtmlButton( String text, ActionListener v) {
// 		super( text);
// 		m_text = text;
// 		m_al = v;
// 		setOpaque( true);
// 		setForeground( Color.blue);
// 		
// 		MouseAdapter a = new MouseAdapter() {
// 			public void mousePressed(MouseEvent e) {
// 				onPressed( e);
// 			}
// 			public void mouseReleased(MouseEvent e) {
// 				onClicked(e);
// 				setBackground( m_bg);
// 			}
// 			public void mouseEntered(MouseEvent e) {
// 				onEntered(e);
// 			}
// 			public void mouseExited(MouseEvent e) {
// 				onExited();
// 			}
// 			@Override public void mouseMoved(MouseEvent e) {
// 				onMouseMoved( e);
// 			}
// 		};
// 		addMouseListener( a);
// 		addMouseMotionListener(a);
// 		setFont( getFont().deriveFont( Font.PLAIN) );
// 	}
// 
// 	protected void onMouseMoved(MouseEvent e) {
// 	}
// 
// 	protected void onEntered(MouseEvent e) {
// 		if (!m_selected) {
// 			setText( underline( m_text) );
// 		}
// 	}
// 
// 	protected void onExited() {
// 		setText( m_text);
// 	}
// 
// 	protected void onPressed(MouseEvent e) {
// 		if (!m_selected) {
// 			setBackground( light);
// 		}
// 	}
// 
// 	protected void onClicked(MouseEvent e) {
// 		actionPerformed();
// 	}
// 
// 	protected void actionPerformed() {
// 		if( m_al != null) {
// 			m_al.actionPerformed( null);
// 		}
// 	}
// 
// 	public static class HtmlRadioButton extends HtmlButton {
// 		private HashSet<HtmlRadioButton> m_group;
// 		HtmlRadioButton( String text, HashSet<HtmlRadioButton> group) {
// 			super( text);
// 			m_group = group;
// 			group.add( this);
// 		}
// 		@Override protected void actionPerformed() {
// 			for( HtmlRadioButton but : m_group) {
// 				but.setSelected( false);
// 			}
// 			setSelected( true);
// 			super.actionPerformed();
// 		}
// 	}
// 	
// 	static String underline( String str) {
// 		return String.format( "<html><u>%s</html>", str);
// 	}
// 	
// 	static String bold( String str) {
// 		return String.format( "<html><b>%s</html>", str);
// 	}
// 	
// 	class B implements Border {
// 		@Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
// 		}
// 
// 		@Override public Insets getBorderInsets(Component c) {
// 			return null;
// 		}
// 
// 		@Override public boolean isBorderOpaque() {
// 			return false;
// 		}
// 	}
// }
// 
// Path: src/com/ib/controller/ApiController.java
// public interface ITradeReportHandler {
// 	void tradeReport(String tradeKey, NewContract contract, Execution execution);
// 	void tradeReportEnd();
// 	void commissionReport(String tradeKey, CommissionReport commissionReport);
// }


// Path: src/apidemo/TradesPanel.java
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.TitledBorder;
import javax.swing.table.AbstractTableModel;
import apidemo.util.HtmlButton;
import com.ib.client.CommissionReport;
import com.ib.client.Execution;
import com.ib.client.ExecutionFilter;
import com.ib.controller.NewContract;
import com.ib.controller.ApiController.ITradeReportHandler;

/* Copyright (C) 2013 Interactive Brokers LLC. All rights reserved.  This code is subject to the terms
 * and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable. */

package apidemo;






public class TradesPanel extends JPanel implements ITradeReportHandler {
	private ArrayList<FullExec> m_trades = new ArrayList<FullExec>();
	private HashMap<String,FullExec> m_map = new HashMap<String,FullExec>();
	private Model m_model = new Model();
	
	TradesPanel() {
		JTable table = new JTable( m_model);
		JScrollPane scroll = new JScrollPane( table);
		scroll.setBorder( new TitledBorder( "Trade Log"));
		
		HtmlButton but = new HtmlButton( "Refresh") {