package gui.naming; import gui.QoraRowSorter; import gui.models.WalletNamesTableModel; 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 database.wallet.NameMap; import qora.naming.Name; @SuppressWarnings("serial") public class NamingServicePanel extends JPanel { public NamingServicePanel() { 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; //NAMES final WalletNamesTableModel namesModel = new WalletNamesTableModel(); final JTable namesTable = new JTable(namesModel); //NAMES SORTER Map<Integer, Integer> indexes = new TreeMap<Integer, Integer>(); indexes.put(WalletNamesTableModel.COLUMN_NAME, NameMap.NAME_INDEX); indexes.put(WalletNamesTableModel.COLUMN_ADDRESS, NameMap.OWNER_INDEX); QoraRowSorter sorter = new QoraRowSorter(namesModel, indexes); namesTable.setRowSorter(sorter); //CHECKBOX FOR CONFIRMED TableColumn confirmedColumn = namesTable.getColumnModel().getColumn(2); confirmedColumn.setCellRenderer(namesTable.getDefaultRenderer(Boolean.class)); //MENU JPopupMenu menu = new JPopupMenu(); JMenuItem update = new JMenuItem("Update"); update.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = namesTable.getSelectedRow(); row = namesTable.convertRowIndexToModel(row); Name name = namesModel.getName(row); new UpdateNameFrame(name); } }); menu.add(update); JMenuItem sell = new JMenuItem("Sell"); sell.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = namesTable.getSelectedRow(); row = namesTable.convertRowIndexToModel(row); Name name = namesModel.getName(row); new SellNameFrame(name); } }); menu.add(sell); JMenuItem details = new JMenuItem("Details"); details.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = namesTable.getSelectedRow(); row = namesTable.convertRowIndexToModel(row); Name name = namesModel.getName(row); new NameDetailsFrame(name); } }); menu.add(details); namesTable.setComponentPopupMenu(menu); namesTable.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { Point p = e.getPoint(); int row = namesTable.rowAtPoint(p); namesTable.setRowSelectionInterval(row, row); } }); //ADD NAMING SERVICE TABLE this.add(new JScrollPane(namesTable), tableGBC); //ADD REGISTER BUTTON JButton registerButton = new JButton("Register"); registerButton.setPreferredSize(new Dimension(100, 25)); registerButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onRegisterClick(); } }); this.add(registerButton, buttonGBC); //ADD EXCHANGE BUTTON buttonGBC.gridx = 1; JButton exchangeButton = new JButton("Exchange"); exchangeButton.setPreferredSize(new Dimension(100, 25)); exchangeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onExchangeClick(); } }); this.add(exchangeButton, buttonGBC); } public void onRegisterClick() { new RegisterNameFrame(); } public void onExchangeClick() { new NameExchangeFrame(); } }