# HG changeset patch # Parent 613ba16e615314b707f67fa39b8086f2aa1f6249 # User Jesse Glick # Date 1377259998 14400 Issue #220995: graph recalculation blocks EQ so make it avoidable. diff --git a/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties b/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties --- a/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties +++ b/maven.graph/src/org/netbeans/modules/maven/graph/Bundle.properties @@ -51,4 +51,5 @@ FixVersionConflictPanel.fixPossibL.text=Fix possibilities: FixVersionConflictPanel.summaryL.text=Fix Summary: -ERR_UpdateModel=Cannot update POM: {0} \ No newline at end of file +ERR_UpdateModel=Cannot update POM: {0} +DependencyGraphTopComponent.btnGraph.text=Show Graph diff --git a/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form b/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form --- a/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form +++ b/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.form @@ -35,6 +35,19 @@ + + + + + + + + + + + + + diff --git a/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java b/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java --- a/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java +++ b/maven.graph/src/org/netbeans/modules/maven/graph/DependencyGraphTopComponent.java @@ -114,10 +114,15 @@ // public static final String ATTRIBUTE_DEPENDENCIES_LAYOUT = "MavenProjectDependenciesLayout"; //NOI18N private static final Logger LOG = Logger.getLogger(DependencyGraphTopComponent.class.getName()); private static final RequestProcessor RP = new RequestProcessor(DependencyGraphTopComponent.class); + private boolean everDisplayed; private final RequestProcessor.Task task_reload = RP.create(new Runnable() { @Override public void run() { - createScene(); + SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { + waitForApproval(); + } + }); } }); @@ -297,26 +302,17 @@ return TopComponent.PERSISTENCE_NEVER; } - @Messages("LBL_Loading=Loading and constructing graph:") @Override public void componentOpened() { super.componentOpened(); pane.setWheelScrollingEnabled(true); - maxPathSpinner.setEnabled(false); - maxPathSpinner.setVisible(false); - lblPath.setVisible(false); - txtFind.setEnabled(false); - btnBigger.setEnabled(false); - btnSmaller.setEnabled(false); - comScopes.setEnabled(false); add(pane, BorderLayout.CENTER); - setPaneText(LBL_Loading(), true); result = getLookup().lookupResult(DependencyNode.class); result.addLookupListener(this); result2 = getLookup().lookupResult(MavenProject.class); result2.addLookupListener(this); result3 = getLookup().lookupResult(POMModel.class); result3.addLookupListener(this); - createScene(); + waitForApproval(); } @Override @@ -355,6 +351,7 @@ jPanel1 = new javax.swing.JPanel(); jToolBar1 = new javax.swing.JToolBar(); + btnGraph = new javax.swing.JButton(); btnBigger = new javax.swing.JButton(); btnSmaller = new javax.swing.JButton(); lblFind = new javax.swing.JLabel(); @@ -371,6 +368,17 @@ jToolBar1.setFloatable(false); jToolBar1.setRollover(true); + org.openide.awt.Mnemonics.setLocalizedText(btnGraph, org.openide.util.NbBundle.getMessage(DependencyGraphTopComponent.class, "DependencyGraphTopComponent.btnGraph.text")); // NOI18N + btnGraph.setFocusable(false); + btnGraph.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnGraph.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnGraph.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnGraphActionPerformed(evt); + } + }); + jToolBar1.add(btnGraph); + btnBigger.setIcon(ImageUtilities.loadImageIcon(ZOOM_IN_ICON, true)); btnBigger.setFocusable(false); btnBigger.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); @@ -454,10 +462,16 @@ depthHighlight(); }//GEN-LAST:event_maxPathSpinnerStateChanged + private void btnGraphActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGraphActionPerformed + btnGraph.setEnabled(false); + createScene(); + }//GEN-LAST:event_btnGraphActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnBigger; + private javax.swing.JButton btnGraph; private javax.swing.JButton btnSmaller; private javax.swing.JComboBox comScopes; private javax.swing.JPanel jPanel1; @@ -510,7 +524,26 @@ return pane; } - @Messages("Err_CannotLoad=Cannot display Artifact's dependency tree.") + @Messages({ + "LBL_waiting_for_approval_first_time=Click Show Graph to compute and display dependencies.", + "LBL_waiting_for_approval_dirty=Model has changed. Click Show Graph to refresh." + }) + private void waitForApproval() { + setPaneText(everDisplayed ? LBL_waiting_for_approval_dirty() : LBL_waiting_for_approval_first_time(), false); + btnGraph.setEnabled(true); + maxPathSpinner.setEnabled(false); + maxPathSpinner.setVisible(false); + lblPath.setVisible(false); + txtFind.setEnabled(false); + btnBigger.setEnabled(false); + btnSmaller.setEnabled(false); + comScopes.setEnabled(false); + } + + @Messages({ + "Err_CannotLoad=Cannot display Artifact's dependency tree.", + "LBL_Loading=Loading and constructing graph (this may take a while)." + }) private void createScene() { Iterator it1 = result.allInstances().iterator(); Iterator it2 = result2.allInstances().iterator(); @@ -518,7 +551,10 @@ final MavenProject prj = it2.hasNext() ? it2.next() : null; if (prj != null && NbMavenProject.isErrorPlaceholder(prj)) { setPaneText(Err_CannotLoad(), false); + return; } + everDisplayed = true; + setPaneText(LBL_Loading(), true); final Project nbProj = getLookup().lookup(Project.class); if (prj != null && it1.hasNext()) { final DependencyNode root = it1.next(); @@ -604,7 +640,9 @@ // Actions.connect(btn, act); // toolbar.add(btn); // } + toolbar.addSeparator(); Dimension space = new Dimension(3, 0); + toolbar.add(btnGraph); toolbar.addSeparator(space); toolbar.add(btnBigger); toolbar.addSeparator(space);