package gui.assets;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import qora.assets.Asset;
import controller.Controller;
public class AssetDetailsPanel extends JPanel {
private static final long serialVersionUID = 4763074704570450206L;
private Asset asset;
private JButton favoritesButton;
public AssetDetailsPanel(Asset asset)
{
this.asset = asset;
//LAYOUT
this.setLayout(new GridBagLayout());
//PADDING
this.setBorder(new EmptyBorder(5, 5, 5, 5));
//LABEL GBC
GridBagConstraints labelGBC = new GridBagConstraints();
labelGBC.insets = new Insets(0, 5, 5, 0);
labelGBC.fill = GridBagConstraints.HORIZONTAL;
labelGBC.anchor = GridBagConstraints.NORTHWEST;
labelGBC.weightx = 0;
labelGBC.gridx = 0;
//DETAIL GBC
GridBagConstraints detailGBC = new GridBagConstraints();
detailGBC.insets = new Insets(0, 5, 5, 0);
detailGBC.fill = GridBagConstraints.HORIZONTAL;
detailGBC.anchor = GridBagConstraints.NORTHWEST;
detailGBC.weightx = 1;
detailGBC.gridwidth = 2;
detailGBC.gridx = 1;
//LABEL KEY
labelGBC.gridy = 1;
JLabel keyLabel = new JLabel("Key:");
this.add(keyLabel, labelGBC);
//KEY
detailGBC.gridy = 1;
JTextField txtKey = new JTextField(Long.toString(asset.getKey()));
txtKey.setEditable(false);
this.add(txtKey, detailGBC);
//LABEL NAME
labelGBC.gridy = 2;
JLabel nameLabel = new JLabel("Name:");
this.add(nameLabel, labelGBC);
//NAME
detailGBC.gridy = 2;
JTextField txtName = new JTextField(asset.getName());
txtName.setEditable(false);
this.add(txtName, detailGBC);
//LABEL DESCRIPTION
labelGBC.gridy = 3;
JLabel descriptionLabel = new JLabel("Description:");
this.add(descriptionLabel, labelGBC);
//DESCRIPTION
detailGBC.gridy = 3;
JTextArea txtAreaDescription = new JTextArea(asset.getDescription());
txtAreaDescription.setRows(4);
txtAreaDescription.setBorder(txtName.getBorder());
txtAreaDescription.setEditable(false);
this.add(txtAreaDescription, detailGBC);
//LABEL OWNER
labelGBC.gridy = 4;
JLabel ownerLabel = new JLabel("Owner:");
this.add(ownerLabel, labelGBC);
//OWNER
detailGBC.gridy = 4;
JTextField owner = new JTextField(asset.getOwner().getAddress());
owner.setEditable(false);
this.add(owner, detailGBC);
//LABEL QUANTITY
labelGBC.gridy = 5;
JLabel quantityLabel = new JLabel("Quantity:");
this.add(quantityLabel, labelGBC);
//QUANTITY
detailGBC.gridy = 5;
JTextField txtQuantity = new JTextField(asset.getQuantity().toString());
txtQuantity.setEditable(false);
this.add(txtQuantity, detailGBC);
//LABEL DIVISIBLE
labelGBC.gridy = 6;
JLabel divisibleLabel = new JLabel("Divisible:");
this.add(divisibleLabel, labelGBC);
//DIVISIBLE
detailGBC.gridy = 6;
JCheckBox chkDivisible = new JCheckBox();
chkDivisible.setSelected(asset.isDivisible());
chkDivisible.setEnabled(false);
this.add(chkDivisible, detailGBC);
//IF ASSET CONFIRMED AND NOT QORA
if(this.asset.getKey() > 0)
{
//ADD QORA PAIR BUTTON
labelGBC.gridy++;
labelGBC.gridwidth = 2;
JButton openQoraPairButton = new JButton("Open Qora pair");
openQoraPairButton.setPreferredSize(new Dimension(200, 25));
openQoraPairButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onQoraPairClick();
}
});
this.add(openQoraPairButton, labelGBC);
}
//IF ASSET CONFIRMED
if(this.asset.getKey() >= 0)
{
//ADD QORA PAIR BUTTON
labelGBC.gridy++;
labelGBC.gridwidth = 2;
JButton openPairButton = new JButton("Open pair");
openPairButton.setPreferredSize(new Dimension(200, 25));
openPairButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onOpenPairClick();
}
});
this.add(openPairButton, labelGBC);
}
//IF ASSET CONFIRMED AND NOT QORA
if(this.asset.getKey() > 0)
{
//FAVORITES
labelGBC.gridy++;
labelGBC.gridwidth = 2;
this.favoritesButton = new JButton();
//CHECK IF FAVORITES
if(Controller.getInstance().isAssetFavorite(asset))
{
this.favoritesButton.setText("Remove Favorite");
}
else
{
this.favoritesButton.setText("Add Favorite");
}
this.favoritesButton.setPreferredSize(new Dimension(200, 25));
this.favoritesButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onFavoriteClick();
}
});
this.add(this.favoritesButton, labelGBC);
}
//PACK
this.setVisible(true);
}
public void onQoraPairClick() {
//GET QORA ASSET
Asset qoraAsset = Controller.getInstance().getQoraAsset();
new ExchangeFrame(this.asset, qoraAsset);
}
public void onOpenPairClick() {
//GET ASSET
String response = JOptionPane.showInputDialog(new JFrame(), "Asset key:", "Open pair", JOptionPane.QUESTION_MESSAGE);
try
{
long key = Long.parseLong(response);
if(key != this.asset.getKey())
{
Asset asset = Controller.getInstance().getAsset(key);
if(asset != null)
{
new ExchangeFrame(this.asset, asset);
return;
}
}
JOptionPane.showMessageDialog(new JFrame(), "No asset with that key found!", "Error", JOptionPane.ERROR_MESSAGE);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(new JFrame(), "Invalid key!", "Error", JOptionPane.ERROR_MESSAGE);
}
}
public void onFavoriteClick()
{
//CHECK IF FAVORITES
if(Controller.getInstance().isAssetFavorite(asset))
{
this.favoritesButton.setText("Add Favorite");
Controller.getInstance().removeAssetFavorite(this.asset);
}
else
{
this.favoritesButton.setText("Remove Favorite");
Controller.getInstance().addAssetFavorite(this.asset);
}
}
}