package mekhq.gui.adapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.event.MouseInputAdapter;
import mekhq.MekHQ;
import mekhq.campaign.event.ScenarioChangedEvent;
import mekhq.campaign.mission.Mission;
import mekhq.campaign.mission.Scenario;
import mekhq.gui.CampaignGUI;
import mekhq.gui.dialog.CustomizeScenarioDialog;
import mekhq.gui.model.ScenarioTableModel;
public class ScenarioTableMouseAdapter extends MouseInputAdapter implements
ActionListener {
private CampaignGUI gui;
private JTable scenarioTable;
private ScenarioTableModel scenarioModel;
public ScenarioTableMouseAdapter(CampaignGUI gui, JTable scenarioTable,
ScenarioTableModel scenarioModel) {
super();
this.gui = gui;
this.scenarioTable = scenarioTable;
this.scenarioModel = scenarioModel;
}
public void actionPerformed(ActionEvent action) {
String command = action.getActionCommand();
Scenario scenario = scenarioModel.getScenario(scenarioTable.getSelectedRow());
Mission mission = gui.getCampaign().getMission(scenario.getMissionId());
if (command.equalsIgnoreCase("EDIT")) {
if (null != mission && null != scenario) {
CustomizeScenarioDialog csd = new CustomizeScenarioDialog(
gui.getFrame(), true, scenario, mission, gui.getCampaign());
csd.setVisible(true);
MekHQ.triggerEvent(new ScenarioChangedEvent(scenario));
}
} else if (command.equalsIgnoreCase("REMOVE")) {
if (0 == JOptionPane.showConfirmDialog(null,
"Do you really want to delete the scenario?",
"Delete Scenario?", JOptionPane.YES_NO_OPTION)) {
gui.getCampaign().removeScenario(scenario.getId());
}
}
}
@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 = scenarioTable.getSelectedRow();
if (row < 0) {
return;
}
@SuppressWarnings("unused")
// FIXME
Scenario scenario = scenarioModel.getScenario(row);
JMenuItem menuItem = null;
JMenu menu = null;
@SuppressWarnings("unused")
// Placeholder for future expansion
JCheckBoxMenuItem cbMenuItem = null;
// **lets fill the pop up menu**//
menuItem = new JMenuItem("Edit...");
menuItem.setActionCommand("EDIT");
menuItem.addActionListener(this);
popup.add(menuItem);
// GM mode
menu = new JMenu("GM Mode");
// remove scenario
menuItem = new JMenuItem("Remove Scenario");
menuItem.setActionCommand("REMOVE");
menuItem.addActionListener(this);
menuItem.setEnabled(gui.getCampaign().isGM());
menu.add(menuItem);
// end
popup.addSeparator();
popup.add(menu);
popup.show(e.getComponent(), e.getX(), e.getY());
}
}
}