package mekhq.gui.adapter; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTable; import javax.swing.event.MouseInputAdapter; import mekhq.MekHQ; import mekhq.campaign.event.TransactionChangedEvent; import mekhq.campaign.event.TransactionVoidedEvent; import mekhq.campaign.finances.Transaction; import mekhq.gui.CampaignGUI; import mekhq.gui.dialog.EditTransactionDialog; import mekhq.gui.model.FinanceTableModel; public class FinanceTableMouseAdapter extends MouseInputAdapter implements ActionListener { private CampaignGUI gui; private JTable financeTable; private FinanceTableModel financeModel; public FinanceTableMouseAdapter(CampaignGUI gui, JTable financeTable, FinanceTableModel financeModel) { super(); this.gui = gui; this.financeTable = financeTable; this.financeModel = financeModel; } public void actionPerformed(ActionEvent action) { String command = action.getActionCommand(); Transaction transaction = financeModel.getTransaction(financeTable .getSelectedRow()); int row = financeTable.getSelectedRow(); if (null == transaction) { return; } if (command.equalsIgnoreCase("DELETE")) { gui.getCampaign().addReport(transaction.voidTransaction()); financeModel.deleteTransaction(row); MekHQ.triggerEvent(new TransactionVoidedEvent(transaction)); } else if (command.contains("EDIT")) { EditTransactionDialog dialog = new EditTransactionDialog( transaction, gui.getFrame(), true); dialog.setVisible(true); transaction = dialog.getNewTransaction(); financeModel.setTransaction(row, transaction); MekHQ.triggerEvent(new TransactionChangedEvent(dialog.getOldTransaction(), transaction)); gui.getCampaign().addReport( transaction.updateTransaction(dialog .getOldTransaction())); } } @Override public void mousePressed(MouseEvent e) { maybeShowPopup(e); } @Override public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { JPopupMenu popup = new JPopupMenu(); if (e.isPopupTrigger()) { int row = financeTable.getSelectedRow(); if (row < 0) { return; } JMenu menu = new JMenu("GM Mode"); popup.add(menu); JMenuItem deleteItem = new JMenuItem("Delete Transaction"); deleteItem.setActionCommand("DELETE"); deleteItem.addActionListener(this); deleteItem.setEnabled(gui.getCampaign().isGM()); menu.add(deleteItem); JMenuItem editItem = new JMenuItem("Edit Transaction"); editItem.setActionCommand("EDIT"); editItem.addActionListener(this); editItem.setEnabled(gui.getCampaign().isGM()); menu.add(editItem); popup.show(e.getComponent(), e.getX(), e.getY()); } } }