# HG changeset patch # User Vladimir Voskresensky # Date 1234879984 -10800 # Node ID 84332d64e643149164c220d0363062cc86894eb1 # Parent 3c6332b56d3d56642c2b2ae866fa1661065f88f1 fixed IZ#158663: blocked EDT on opening MacroView from macro tooltip diff --git a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionPanel.java b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionPanel.java --- a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionPanel.java +++ b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionPanel.java @@ -495,12 +495,14 @@ private void fileContextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileContextActionPerformed fileContext.setSelected(true); localContext.setSelected(false); + MacroExpansionTopComponent.setLocalContext(false); update(); }//GEN-LAST:event_fileContextActionPerformed private void localContextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_localContextActionPerformed localContext.setSelected(true); fileContext.setSelected(false); + MacroExpansionTopComponent.setLocalContext(true); update(); }//GEN-LAST:event_localContextActionPerformed diff --git a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionTopComponent.java b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionTopComponent.java --- a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionTopComponent.java +++ b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionTopComponent.java @@ -48,6 +48,7 @@ import org.netbeans.modules.cnd.modelutil.CsmUtilities; import org.openide.util.ImageUtilities; import org.openide.util.NbBundle; +import org.openide.util.NbPreferences; import org.openide.windows.TopComponent; /** @@ -64,7 +65,6 @@ private static final String PREFERRED_ID = "MacroExpansionTopComponent"; // NOI18N private MacroExpansionPanel panel = null; private int lastDividerLocation = -1; - private boolean lastLocalContext = true; private boolean lastSyncCaret = true; private boolean lastSyncContext = false; private Document lastExpandedContextDoc = null; @@ -83,7 +83,6 @@ lastExpandedContextDoc = expandedContextDoc; if (panel != null) { lastDividerLocation = panel.getDividerLocation(); - lastLocalContext = panel.isLocalContext(); lastSyncCaret = panel.isSyncCaret(); lastSyncContext = panel.isSyncContext(); } @@ -94,7 +93,7 @@ if (lastDividerLocation != -1) { panel.setDividerLocation(lastDividerLocation); } - panel.setLocalContext(lastLocalContext); + panel.setLocalContext(isLocalContext()); panel.setSyncCaret(lastSyncCaret); panel.setSyncContext(lastSyncContext); if (panel.isSyncCaret()) { @@ -120,13 +119,13 @@ * * @return is macro expansion local */ - public boolean isLocalContext() { - if (panel != null) { - lastLocalContext = panel.isLocalContext(); - } - return lastLocalContext; + public static boolean isLocalContext() { + return NbPreferences.forModule(MacroExpansionTopComponent.class).getBoolean("show-local-context", true); } + public static void setLocalContext(boolean localContext) { + NbPreferences.forModule(MacroExpansionTopComponent.class).putBoolean("show-local-context", localContext); + } /** * Indicates is caret synchronization enabled or not. * @@ -232,7 +231,6 @@ initComponents(); if (panel != null) { lastDividerLocation = panel.getDividerLocation(); - lastLocalContext = panel.isLocalContext(); lastSyncCaret = panel.isSyncCaret(); lastSyncContext = panel.isSyncContext(); diff --git a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionViewUtils.java b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionViewUtils.java --- a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionViewUtils.java +++ b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/MacroExpansionViewUtils.java @@ -98,7 +98,7 @@ */ public static boolean updateView(int newOffset) { final MacroExpansionTopComponent view = MacroExpansionTopComponent.findInstance(); - boolean localContext = view.isLocalContext(); + boolean localContext = MacroExpansionTopComponent.isLocalContext(); final Document expandedContextDoc = view.getExpandedContextDoc(); if (expandedContextDoc == null) { @@ -165,13 +165,7 @@ if (SwingUtilities.isEventDispatchThread()) { openView.run(); } else { - try { - SwingUtilities.invokeAndWait(openView); - } catch (InterruptedException ex) { - Exceptions.printStackTrace(ex); - } catch (InvocationTargetException ex) { - Exceptions.printStackTrace(ex); - } + SwingUtilities.invokeLater(openView); } return true; } diff --git a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/impl/services/MacroExpansionViewProviderImpl.java b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/impl/services/MacroExpansionViewProviderImpl.java --- a/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/impl/services/MacroExpansionViewProviderImpl.java +++ b/cnd.navigation/src/org/netbeans/modules/cnd/navigation/macroview/impl/services/MacroExpansionViewProviderImpl.java @@ -88,18 +88,15 @@ if (mainDoc == null) { return; } - CsmFile csmFile = CsmUtilities.getCsmFile(mainDoc, true); + final CsmFile csmFile = CsmUtilities.getCsmFile(mainDoc, true); if (csmFile == null) { return; } - final MacroExpansionTopComponent view = MacroExpansionTopComponent.findInstance(); - boolean localContext = view.isLocalContext(); - // Get ofsets int startOffset = 0; int endOffset = mainDoc.getLength(); - if (localContext) { + if (MacroExpansionTopComponent.isLocalContext()) { CsmScope scope = ContextUtils.findInnerFileScope(csmFile, offset); if (CsmKindUtilities.isOffsetable(scope)) { startOffset = ((CsmOffsetable) scope).getStartOffset(); @@ -135,6 +132,7 @@ Runnable openView = new Runnable() { public void run() { + MacroExpansionTopComponent view = MacroExpansionTopComponent.findInstance(); if (!view.isOpened()) { view.open(); } @@ -147,13 +145,7 @@ if (SwingUtilities.isEventDispatchThread()) { openView.run(); } else { - try { - SwingUtilities.invokeAndWait(openView); - } catch (InterruptedException ex) { - Exceptions.printStackTrace(ex); - } catch (InvocationTargetException ex) { - Exceptions.printStackTrace(ex); - } + SwingUtilities.invokeLater(openView); } } }