package gui.assets;
import gui.QoraRowSorter;
import gui.models.WalletAssetsTableModel;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.JButton;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableColumn;
import qora.assets.Asset;
@SuppressWarnings("serial")
public class AssetsPanel extends JPanel
{
public AssetsPanel()
{
this.setLayout(new GridBagLayout());
//PADDING
this.setBorder(new EmptyBorder(10, 10, 10, 10));
//TABLE GBC
GridBagConstraints tableGBC = new GridBagConstraints();
tableGBC.fill = GridBagConstraints.BOTH;
tableGBC.anchor = GridBagConstraints.NORTHWEST;
tableGBC.weightx = 1;
tableGBC.weighty = 1;
tableGBC.gridwidth = 10;
tableGBC.gridx = 0;
tableGBC.gridy= 0;
//BUTTON GBC
GridBagConstraints buttonGBC = new GridBagConstraints();
buttonGBC.insets = new Insets(10, 0, 0, 10);
buttonGBC.fill = GridBagConstraints.NONE;
buttonGBC.anchor = GridBagConstraints.NORTHWEST;
buttonGBC.gridx = 0;
buttonGBC.gridy = 1;
//TABLE
final WalletAssetsTableModel assetsModel = new WalletAssetsTableModel();
final JTable table = new JTable(assetsModel);
//POLLS SORTER
Map<Integer, Integer> indexes = new TreeMap<Integer, Integer>();
QoraRowSorter sorter = new QoraRowSorter(assetsModel, indexes);
table.setRowSorter(sorter);
//CHECKBOX FOR DIVISIBLE
TableColumn divisibleColumn = table.getColumnModel().getColumn(WalletAssetsTableModel.COLUMN_DIVISIBLE);
divisibleColumn.setCellRenderer(table.getDefaultRenderer(Boolean.class));
//CHECKBOX FOR CONFIRMED
TableColumn confirmedColumn = table.getColumnModel().getColumn(WalletAssetsTableModel.COLUMN_CONFIRMED);
confirmedColumn.setCellRenderer(table.getDefaultRenderer(Boolean.class));
//MENU
JPopupMenu assetsMenu = new JPopupMenu();
JMenuItem details = new JMenuItem("Details");
details.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
row = table.convertRowIndexToModel(row);
Asset asset = assetsModel.getAsset(row);
new AssetFrame(asset);
}
});
assetsMenu.add(details);
JMenuItem dividend = new JMenuItem("Pay dividend");
dividend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
row = table.convertRowIndexToModel(row);
Asset asset = assetsModel.getAsset(row);
new PayDividendFrame(asset);
}
});
assetsMenu.add(dividend);
table.setComponentPopupMenu(assetsMenu);
//MOUSE ADAPTER
table.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
Point p = e.getPoint();
int row = table.rowAtPoint(p);
table.setRowSelectionInterval(row, row);
}
});
table.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
Point p = e.getPoint();
int row = table.rowAtPoint(p);
table.setRowSelectionInterval(row, row);
if(e.getClickCount() == 2)
{
row = table.convertRowIndexToModel(row);
Asset asset = assetsModel.getAsset(row);
new AssetFrame(asset);
}
}
});
//ADD NAMING SERVICE TABLE
this.add(new JScrollPane(table), tableGBC);
//ADD REGISTER BUTTON
JButton issueButton = new JButton("Issue Asset");
issueButton.setPreferredSize(new Dimension(100, 25));
issueButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onIssueClick();
}
});
this.add(issueButton, buttonGBC);
//ADD ALL BUTTON
buttonGBC.gridx = 1;
JButton allButton = new JButton("All Assets");
allButton.setPreferredSize(new Dimension(100, 25));
allButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onAllClick();
}
});
this.add(allButton, buttonGBC);
//ADD MY ORDERS BUTTON
buttonGBC.gridx = 2;
JButton myOrdersButton = new JButton("My Orders");
myOrdersButton.setPreferredSize(new Dimension(100, 25));
myOrdersButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onMyOrdersClick();
}
});
this.add(myOrdersButton, buttonGBC);
}
public void onIssueClick()
{
new IssueAssetFrame();
}
public void onAllClick()
{
new AllAssetsFrame();
}
public void onMyOrdersClick()
{
new MyOrdersFrame();
}
}