From 74a420254a3bfec77c84059cc2dc156b6066517d Mon Sep 17 00:00:00 2001 From: Kirill Kalishev Date: Tue, 16 Nov 2010 13:42:01 +0300 Subject: [PATCH] traffic lights info fix --- .../daemon/impl/TrafficProgressPanel.java | 137 +++++++++--------- 1 file changed, 67 insertions(+), 70 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java index 24fa0d3936aa..da106ca963ef 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/TrafficProgressPanel.java @@ -161,78 +161,75 @@ public class TrafficProgressPanel extends JPanel { public void updatePanel(TrafficLightRenderer.DaemonCodeAnalyzerStatus status, boolean isFake) { if (status == null) return; - if (PowerSaveMode.isEnabled()) { - statusLabel.setText("Code analysis is disabled in power save mode"); - myPassStatuses.setVisible(false); - statistics.setText(""); - return; - } - if (status.errorAnalyzingFinished) { - statusLabel.setText(DaemonBundle.message("analysis.completed")); - myPassStatuses.setVisible(true); - setPassesEnabled(false, Boolean.TRUE); - return; - } - if (!status.enabled) { - statusLabel.setText("Code analysis has been suspended"); - myPassStatuses.setVisible(true); - setPassesEnabled(false, Boolean.FALSE); - statistics.setText(""); - return; - } - if (status.noHighlightingRoots != null && status.noHighlightingRoots.length == status.rootsNumber) { - statusLabel.setText(DaemonBundle.message("analysis.hasnot.been.run")); - myPassStatuses.setVisible(true); - setPassesEnabled(false, Boolean.FALSE); - statistics.setText(""); - return; - } - - statusLabel.setText(DaemonBundle.message("performing.code.analysis")); - myPassStatuses.setVisible(true); - setPassesEnabled(true, null); - - if (!status.passStati.equals(new ArrayList(passes.keySet()))) { - // passes set has changed - rebuildPassesPanel(status); - } - - for (ProgressableTextEditorHighlightingPass pass : status.passStati) { - double progress = pass.getProgress(); - Pair pair = passes.get(pass); - JProgressBar progressBar = pair.first; - int percent = (int)Math.round(progress * MAX); - progressBar.setValue(percent); - JLabel percentage = pair.second; - percentage.setText(percent + "%"); - } - - int currentSeverityErrors = 0; - @Language("HTML") - String text = ""; - for (int i = status.errorCount.length - 1; i >= 0; i--) { - if (status.errorCount[i] > 0) { - final HighlightSeverity severity = SeverityRegistrar.getInstance(myTrafficLightRenderer.getProject()).getSeverityByIndex(i); - String name = status.errorCount[i] > 1 ? StringUtil.pluralize(severity.toString().toLowerCase()) : severity.toString().toLowerCase(); - text += status.errorAnalyzingFinished - ? DaemonBundle.message("errors.found", status.errorCount[i], name) - : DaemonBundle.message("errors.found.so.far", status.errorCount[i], name); - text += "
"; - currentSeverityErrors += status.errorCount[i]; + try { + if (PowerSaveMode.isEnabled()) { + statusLabel.setText("Code analysis is disabled in power save mode"); + myPassStatuses.setVisible(false); + statistics.setText(""); + } else if (status.errorAnalyzingFinished) { + statusLabel.setText(DaemonBundle.message("analysis.completed")); + myPassStatuses.setVisible(true); + setPassesEnabled(false, Boolean.TRUE); + } else if (!status.enabled) { + statusLabel.setText("Code analysis has been suspended"); + myPassStatuses.setVisible(true); + setPassesEnabled(false, Boolean.FALSE); + statistics.setText(""); + } else if (status.noHighlightingRoots != null && status.noHighlightingRoots.length == status.rootsNumber) { + statusLabel.setText(DaemonBundle.message("analysis.hasnot.been.run")); + myPassStatuses.setVisible(true); + setPassesEnabled(false, Boolean.FALSE); + statistics.setText(""); + } else { + statusLabel.setText(DaemonBundle.message("performing.code.analysis")); + myPassStatuses.setVisible(true); + setPassesEnabled(true, null); } - } - if (currentSeverityErrors == 0) { - text += status.errorAnalyzingFinished - ? DaemonBundle.message("no.errors.or.warnings.found") - : DaemonBundle.message("no.errors.or.warnings.found.so.far") + "
"; - } - statistics.setText(text); - if (isFake) { - myEmptyPassStatuses.setPreferredSize(myPassStatuses.getPreferredSize()); - myPassStatusesContainer.setContent(myEmptyPassStatuses); - } else { - myPassStatusesContainer.setContent(myPassStatuses); + + if (!status.passStati.equals(new ArrayList(passes.keySet()))) { + // passes set has changed + rebuildPassesPanel(status); + } + + for (ProgressableTextEditorHighlightingPass pass : status.passStati) { + double progress = pass.getProgress(); + Pair pair = passes.get(pass); + JProgressBar progressBar = pair.first; + int percent = (int)Math.round(progress * MAX); + progressBar.setValue(percent); + JLabel percentage = pair.second; + percentage.setText(percent + "%"); + } + + int currentSeverityErrors = 0; + @Language("HTML") + String text = ""; + for (int i = status.errorCount.length - 1; i >= 0; i--) { + if (status.errorCount[i] > 0) { + final HighlightSeverity severity = SeverityRegistrar.getInstance(myTrafficLightRenderer.getProject()).getSeverityByIndex(i); + String name = status.errorCount[i] > 1 ? StringUtil.pluralize(severity.toString().toLowerCase()) : severity.toString().toLowerCase(); + text += status.errorAnalyzingFinished + ? DaemonBundle.message("errors.found", status.errorCount[i], name) + : DaemonBundle.message("errors.found.so.far", status.errorCount[i], name); + text += "
"; + currentSeverityErrors += status.errorCount[i]; + } + } + if (currentSeverityErrors == 0) { + text += status.errorAnalyzingFinished + ? DaemonBundle.message("no.errors.or.warnings.found") + : DaemonBundle.message("no.errors.or.warnings.found.so.far") + "
"; + } + statistics.setText(text); + } + finally { + if (isFake) { + myEmptyPassStatuses.setPreferredSize(myPassStatuses.getPreferredSize()); + myPassStatusesContainer.setContent(myEmptyPassStatuses); + } else { + myPassStatusesContainer.setContent(myPassStatuses); + } } }