Add right-click actions to separation table
This commit is contained in:
parent
c62320931f
commit
9a572f5746
@ -1,7 +1,6 @@
|
|||||||
package net.sf.openrocket.gui.main.flightconfigpanel;
|
package net.sf.openrocket.gui.main.flightconfigpanel;
|
||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
@ -12,6 +11,7 @@ import javax.swing.JButton;
|
|||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JDialog;
|
import javax.swing.JDialog;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPopupMenu;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.KeyStroke;
|
import javax.swing.KeyStroke;
|
||||||
@ -40,6 +40,13 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
private final JButton selectSeparationButton;
|
private final JButton selectSeparationButton;
|
||||||
private final JButton resetDeploymentButton;
|
private final JButton resetDeploymentButton;
|
||||||
|
|
||||||
|
private final JPopupMenu popupMenuFull; // popup menu containing all the options
|
||||||
|
private final AbstractAction selectSeparationAction;
|
||||||
|
private final AbstractAction resetSeparationAction;
|
||||||
|
private final AbstractAction renameConfigAction;
|
||||||
|
private final AbstractAction removeConfigAction;
|
||||||
|
private final AbstractAction duplicateConfigAction;
|
||||||
|
|
||||||
|
|
||||||
SeparationConfigurationPanel(FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) {
|
SeparationConfigurationPanel(FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) {
|
||||||
super(flightConfigurationPanel,rocket);
|
super(flightConfigurationPanel,rocket);
|
||||||
@ -47,26 +54,30 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
JScrollPane scroll = new JScrollPane(table);
|
JScrollPane scroll = new JScrollPane(table);
|
||||||
this.add(scroll, "span, grow, pushy, wrap");
|
this.add(scroll, "span, grow, pushy, wrap");
|
||||||
|
|
||||||
//// Select deployment
|
// Get all the actions
|
||||||
selectSeparationButton = new SelectColorButton(trans.get("edtmotorconfdlg.but.Selectseparation"));
|
selectSeparationAction = new SelectSeparationAction();
|
||||||
|
resetSeparationAction = new ResetSeparationAction();
|
||||||
|
renameConfigAction = flightConfigurationPanel.getRenameConfigAction();
|
||||||
|
removeConfigAction = flightConfigurationPanel.getRemoveConfigAction();
|
||||||
|
duplicateConfigAction = flightConfigurationPanel.getDuplicateConfigAction();
|
||||||
|
|
||||||
|
// Populate the popup menu
|
||||||
|
popupMenuFull = new JPopupMenu();
|
||||||
|
popupMenuFull.add(selectSeparationAction);
|
||||||
|
popupMenuFull.add(resetSeparationAction);
|
||||||
|
popupMenuFull.addSeparator();
|
||||||
|
popupMenuFull.add(renameConfigAction);
|
||||||
|
popupMenuFull.add(removeConfigAction);
|
||||||
|
popupMenuFull.add(duplicateConfigAction);
|
||||||
|
|
||||||
|
//// Select separation
|
||||||
|
selectSeparationButton = new SelectColorButton(selectSeparationAction);
|
||||||
selectSeparationButton.setEnabled(false);
|
selectSeparationButton.setEnabled(false);
|
||||||
selectSeparationButton.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
selectSeparation();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.add(selectSeparationButton, "split, align right, sizegroup button");
|
this.add(selectSeparationButton, "split, align right, sizegroup button");
|
||||||
|
|
||||||
//// Reset deployment
|
//// Reset separation
|
||||||
resetDeploymentButton = new SelectColorButton(trans.get("edtmotorconfdlg.but.Resetseparation"));
|
resetDeploymentButton = new SelectColorButton(resetSeparationAction);
|
||||||
resetDeploymentButton.setEnabled(false);
|
resetDeploymentButton.setEnabled(false);
|
||||||
resetDeploymentButton.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
resetSeparation();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.add(resetDeploymentButton, "sizegroup button, wrap");
|
this.add(resetDeploymentButton, "sizegroup button, wrap");
|
||||||
|
|
||||||
// Set 'Enter' key action to open the separation selection dialog
|
// Set 'Enter' key action to open the separation selection dialog
|
||||||
@ -108,9 +119,18 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
@Override
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
updateButtonState();
|
updateButtonState();
|
||||||
if (e.getClickCount() == 2) {
|
int selectedColumn = table.getSelectedColumn();
|
||||||
// Double-click edits
|
|
||||||
selectSeparation();
|
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
|
||||||
|
if (selectedColumn > 0) {
|
||||||
|
selectSeparation();
|
||||||
|
}
|
||||||
|
} else if (e.getButton() == MouseEvent.BUTTON3 && e.getClickCount() == 1) {
|
||||||
|
if (selectedColumn > 0) {
|
||||||
|
doPopupFull(e);
|
||||||
|
} else {
|
||||||
|
flightConfigurationPanel.doPopupConfig(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -192,6 +212,11 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
fireTableDataChanged(ComponentChangeEvent.AEROMASS_CHANGE);
|
fireTableDataChanged(ComponentChangeEvent.AEROMASS_CHANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doPopupFull(MouseEvent e) {
|
||||||
|
popupMenuFull.show(e.getComponent(), e.getX(), e.getY());
|
||||||
|
}
|
||||||
|
|
||||||
public void updateButtonState() {
|
public void updateButtonState() {
|
||||||
boolean componentSelected = getSelectedComponent() != null;
|
boolean componentSelected = getSelectedComponent() != null;
|
||||||
selectSeparationButton.setEnabled(componentSelected);
|
selectSeparationButton.setEnabled(componentSelected);
|
||||||
@ -227,5 +252,25 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class SelectSeparationAction extends AbstractAction {
|
||||||
|
public SelectSeparationAction() {
|
||||||
|
putValue(NAME, trans.get("edtmotorconfdlg.but.Selectseparation"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
selectSeparation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private class ResetSeparationAction extends AbstractAction {
|
||||||
|
public ResetSeparationAction() {
|
||||||
|
putValue(NAME, trans.get("edtmotorconfdlg.but.Resetseparation"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
resetSeparation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user