diff --git a/java.hints.ui/src/org/netbeans/modules/java/hints/spiimpl/options/HintsPanel.java b/java.hints.ui/src/org/netbeans/modules/java/hints/spiimpl/options/HintsPanel.java --- a/java.hints.ui/src/org/netbeans/modules/java/hints/spiimpl/options/HintsPanel.java +++ b/java.hints.ui/src/org/netbeans/modules/java/hints/spiimpl/options/HintsPanel.java @@ -137,6 +137,8 @@ private final AtomicBoolean initialized = new AtomicBoolean(false); private final ClassPathBasedHintWrapper cpBased; private final QueryStatus queryStatus; + private final boolean showHeavyInspections; + //AWT only: private HintMetadata toSelect = null; @@ -148,6 +150,7 @@ HintsPanel(@NullAllowed final OptionsFilter filter) { this.cpBased = null; this.queryStatus = QueryStatus.SHOW_QUERIES; + this.showHeavyInspections = false; WORKER.post(new Runnable() { @Override @@ -174,12 +177,14 @@ public HintsPanel(Configuration preselected, ClassPathBasedHintWrapper cpBased) { this.cpBased = cpBased; this.queryStatus = QueryStatus.ONLY_ENABLED; + this.showHeavyInspections = true; init(null, false, true, true, true); configCombo.setSelectedItem(preselected); } public HintsPanel(HintMetadata preselected, @NullAllowed final CustomizerContext cc, ClassPathBasedHintWrapper cpBased) { this.cpBased = cpBased; this.queryStatus = cc == null ? QueryStatus.NEVER : QueryStatus.SHOW_QUERIES; + this.showHeavyInspections = true; init(null, false, false, cc == null, false); select(preselected); configurationsPanel.setVisible(false); @@ -200,6 +205,7 @@ public HintsPanel(Preferences configurations, ClassPathBasedHintWrapper cpBased) { this.cpBased = cpBased; this.queryStatus = QueryStatus.SHOW_QUERIES; + this.showHeavyInspections = true; init(null, false, false, false, true); setOverlayPreferences(configurations); configurationsPanel.setVisible(false); @@ -1144,6 +1150,11 @@ for (HintMetadata m : metadata) { if (m.options.contains(Options.NON_GUI)) continue; + if (m.options.contains(Options.HEAVY)) { + if (!showHeavyInspections) { + continue; + } + } if ( m.options.contains(Options.QUERY) && !HintCategory.CUSTOM_CATEGORY.equals(m.category)) { if (queryStatus == QueryStatus.NEVER) { @@ -1152,7 +1163,7 @@ if (queryStatus == QueryStatus.ONLY_ENABLED && logic != null && !logic.isEnabled(m)) { continue; } - } + } HintCategory cat = cat2CatDesc.get(m.category); diff --git a/spi.java.hints/src/org/netbeans/modules/java/hints/providers/spi/HintMetadata.java b/spi.java.hints/src/org/netbeans/modules/java/hints/providers/spi/HintMetadata.java --- a/spi.java.hints/src/org/netbeans/modules/java/hints/providers/spi/HintMetadata.java +++ b/spi.java.hints/src/org/netbeans/modules/java/hints/providers/spi/HintMetadata.java @@ -208,7 +208,8 @@ public enum Options { NON_GUI, QUERY, - NO_BATCH; + NO_BATCH, + HEAVY; public static Set fromHintOptions(Hint.Options... options) { Set result = new HashSet(); diff --git a/spi.java.hints/src/org/netbeans/spi/java/hints/Hint.java b/spi.java.hints/src/org/netbeans/spi/java/hints/Hint.java --- a/spi.java.hints/src/org/netbeans/spi/java/hints/Hint.java +++ b/spi.java.hints/src/org/netbeans/spi/java/hints/Hint.java @@ -117,7 +117,12 @@ QUERY, /**The hint cannot be run inside the Inspect&Refactor dialog. */ - NO_BATCH; + NO_BATCH, + /** + * The hint requires heavyweight processing so it should be run explicitly only by Inspect, Refactor (or similar) + * features + */ + HEAVY; } }