Skip to content

Commit

Permalink
Improve shortcut handling
Browse files Browse the repository at this point in the history
  • Loading branch information
FeldrinH committed Sep 14, 2023
1 parent 15815f8 commit 1ed1d91
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
30 changes: 29 additions & 1 deletion src/main/java/ee/ut/dendroloj/GraphGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
import org.graphstream.graph.implementations.SingleGraph;
import org.graphstream.ui.geom.Point2;
import org.graphstream.ui.geom.Point3;
import org.graphstream.ui.graphicGraph.GraphicGraph;
import org.graphstream.ui.swing_viewer.SwingViewer;
import org.graphstream.ui.swing_viewer.util.DefaultMouseManager;
import org.graphstream.ui.view.View;
import org.graphstream.ui.view.camera.Camera;
import org.graphstream.ui.view.util.MouseManager;
import org.graphstream.ui.view.util.ShortcutManager;

import javax.swing.*;
import java.awt.*;
Expand Down Expand Up @@ -65,7 +67,7 @@ public static void init(double uiScale) {
View view = viewer.addDefaultView(false);
Component viewComponent = (Component) view;

// GraphStream DefaultMouseManager but with event handling enabled only for left click to prevent interference with panning.
// GraphStream DefaultMouseManager but with event handling enabled only for left click, to prevent interference with panning.
MouseManager restrictedDefaultMouseManager = new DefaultMouseManager() {
@Override
public void mousePressed(MouseEvent event) {
Expand Down Expand Up @@ -96,6 +98,19 @@ public void mouseDragged(MouseEvent event) {
};
view.setMouseManager(restrictedDefaultMouseManager);

// Replace shortcut manager with one that does nothing, to disable built-in shortcuts.
// Supported shortcuts are added directly to root pane as key bindings.
ShortcutManager noopShortcutManager = new ShortcutManager() {
@Override
public void init(GraphicGraph graph, View view) {
}

@Override
public void release() {
}
};
view.setShortcutManager(noopShortcutManager);

MouseAdapter zoomAndPanAdapter = new MouseAdapter() {
private static final double ZOOM_FACTOR = 1.25;

Expand Down Expand Up @@ -155,11 +170,24 @@ public void mouseDragged(MouseEvent event) {
root.setTitle("dendroloj");
root.setSize(800, 600);
root.setLocationRelativeTo(null);

root.setLayout(new BorderLayout());
root.add(viewComponent, BorderLayout.CENTER);
root.add(stepSlider, BorderLayout.SOUTH);
root.addWindowListener((WindowListener) viewComponent);
root.addComponentListener((ComponentListener) viewComponent);

// Add shortcuts
InputMap inputMap = root.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_DOWN_MASK), "resetZoom");
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_0, KeyEvent.CTRL_DOWN_MASK), "resetZoom");
root.getRootPane().getActionMap().put("resetZoom", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent event) {
view.getCamera().resetView();
}
});

root.setVisible(true);
}
}
1 change: 0 additions & 1 deletion src/test/java/Katsed.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,5 @@ public static void main(String[] args) {
Dendrologist.wakeUp(1.5, true);

fib(8);
//new OhtlikAsi("A").fib(5, new OhtlikAsi("B"));
}
}

0 comments on commit 1ed1d91

Please sign in to comment.