diff --git a/java/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties b/java/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties index 18dc9a84980c..769594f6bf56 100644 --- a/java/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties +++ b/java/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties @@ -29,4 +29,6 @@ FixVersionConflictPanel.fixPossibL.text=Fix possibilities: FixVersionConflictPanel.summaryL.text=Fix Summary: ERR_UpdateModel=Cannot update POM: {0} -DependencyGraphTopComponent.btnGraph.text=Show Graph \ No newline at end of file +DependencyGraphTopComponent.btnGraph.text=Show Graph +DependencyGraphTopComponent.btnBigger.toolTipText=Zoom in (Alt+- or Ctrl+mousewheel) +DependencyGraphTopComponent.btnSmaller.toolTipText=Zoom out (Alt++ or Ctrl+mousewheel) diff --git a/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form b/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form index 309532513129..1ec966a5cfee 100644 --- a/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form +++ b/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form @@ -50,7 +50,6 @@ - @@ -74,6 +73,9 @@ + + + @@ -87,6 +89,9 @@ + + + diff --git a/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java b/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java index e31eac9cae44..fde107b7713b 100644 --- a/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java +++ b/java/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java @@ -29,6 +29,7 @@ import java.awt.Stroke; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; @@ -41,6 +42,7 @@ import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; +import javax.swing.AbstractAction; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListCellRenderer; import javax.swing.Icon; @@ -51,6 +53,7 @@ import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JToolBar; +import javax.swing.KeyStroke; import javax.swing.SpinnerNumberModel; import javax.swing.SwingUtilities; import javax.swing.Timer; @@ -326,6 +329,41 @@ public void componentActivated() { } } + /** + * Adds key bindings to move the graph with the cursor-keys around. + * Zoom-in/-out with Alt++ and Alt+- + */ + public void addKeyboardBindings() { + + getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.ALT_DOWN_MASK), "zoomIn"); + getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.ALT_DOWN_MASK), "zoomIn"); + getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, KeyEvent.ALT_DOWN_MASK), "zoomOut"); + getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, KeyEvent.ALT_DOWN_MASK), "zoomOut"); + + getActionMap().put("zoomIn", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + btnBiggerActionPerformed(e); + } + }); + + getActionMap().put("zoomOut", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + btnSmallerActionPerformed(e); + } + }); + + if (scene != null) { + JComponent sceneView = scene.getView(); + if (sceneView == null) { + sceneView = scene.createView(); + } + pane.setViewportView(sceneView); + sceneView.requestFocusInWindow(); + } + } + @Override public void componentClosed() { super.componentClosed(); @@ -371,7 +409,6 @@ private void initComponents() { jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); - jToolBar1.setFloatable(false); jToolBar1.setRollover(true); org.openide.awt.Mnemonics.setLocalizedText(btnGraph, org.openide.util.NbBundle.getMessage(DependencyGraphTopComponent.class, "DependencyGraphTopComponent.btnGraph.text")); // NOI18N @@ -386,6 +423,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jToolBar1.add(btnGraph); btnBigger.setIcon(ImageUtilities.loadImageIcon(ZOOM_IN_ICON, true)); + btnBigger.setToolTipText(org.openide.util.NbBundle.getMessage(DependencyGraphTopComponent.class, "DependencyGraphTopComponent.btnBigger.toolTipText")); // NOI18N btnBigger.setFocusable(false); btnBigger.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btnBigger.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -397,6 +435,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jToolBar1.add(btnBigger); btnSmaller.setIcon(ImageUtilities.loadImageIcon(ZOOM_OUT_ICON, true)); + btnSmaller.setToolTipText(org.openide.util.NbBundle.getMessage(DependencyGraphTopComponent.class, "DependencyGraphTopComponent.btnSmaller.toolTipText")); // NOI18N btnSmaller.setFocusable(false); btnSmaller.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); btnSmaller.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); @@ -621,6 +660,7 @@ public Stroke getStroke(MavenDependencyNode source, MavenDependencyNode target) sceneView = scene.createView(); // vlv: print sceneView.putClientProperty("print.printable", true); // NOI18N + addKeyboardBindings(); } pane.setViewportView(sceneView); scene.setSurroundingScrollPane(pane);