Implement right-click popup in rocket view

This commit is contained in:
SiboVG 2022-05-31 03:07:04 +02:00
parent 2ab1bee92c
commit 9e1602b1c9
2 changed files with 17 additions and 9 deletions

View File

@ -911,7 +911,7 @@ public class BasicFrame extends JFrame {
this.setJMenuBar(menubar); this.setJMenuBar(menubar);
} }
protected void doComponentTreePopup(MouseEvent e) { public void doComponentTreePopup(MouseEvent e) {
popupMenu.show(e.getComponent(), e.getX(), e.getY()); popupMenu.show(e.getComponent(), e.getX(), e.getY());
} }

View File

@ -510,8 +510,8 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
public static final int CYCLE_SELECTION_MODIFIER = InputEvent.SHIFT_DOWN_MASK; public static final int CYCLE_SELECTION_MODIFIER = InputEvent.SHIFT_DOWN_MASK;
private void handleMouseClick(MouseEvent event) { private void handleMouseClick(MouseEvent event) {
if (event.getButton() != MouseEvent.BUTTON1) if (event.getButton() == MouseEvent.BUTTON1) {
return; // Get the component that is clicked on
Point p0 = event.getPoint(); Point p0 = event.getPoint();
Point p1 = scrollPane.getViewport().getViewPosition(); Point p1 = scrollPane.getViewport().getViewPosition();
int x = p0.x + p1.x; int x = p0.x + p1.x;
@ -520,6 +520,14 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
RocketComponent[] clicked = figure.getComponentsByPoint(x, y); RocketComponent[] clicked = figure.getComponentsByPoint(x, y);
handleComponentClick(clicked, event); handleComponentClick(clicked, event);
} else if (event.getButton() == MouseEvent.BUTTON3) {
List<RocketComponent> selectedComponents = Arrays.stream(selectionModel.getSelectionPaths())
.map(c -> (RocketComponent) c.getLastPathComponent()).collect(Collectors.toList());
if (selectedComponents.size() == 0) return;
basicFrame.doComponentTreePopup(event);
}
} }
private void handleComponentClick(RocketComponent[] clicked, MouseEvent event) { private void handleComponentClick(RocketComponent[] clicked, MouseEvent event) {