From 78a689e43a8289e3b45e62c6d59e01e2ec0db8d7 Mon Sep 17 00:00:00 2001 From: Brian Remedios Date: Mon, 28 Nov 2011 03:44:54 +0000 Subject: [PATCH] bugfix for 'unselectable' language version comboboxes git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@7497 51baf565-9d33-0410-a72c-fc3788e3496d --- .../ui/preferences/editors/SWTUtil.java | 6 +++++ .../panelmanagers/RulePanelManager.java | 23 +++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/editors/SWTUtil.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/editors/SWTUtil.java index 307615d32e..ba4c3ad2d6 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/editors/SWTUtil.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/editors/SWTUtil.java @@ -8,6 +8,7 @@ import java.util.Set; import net.sourceforge.pmd.eclipse.plugin.PMDPlugin; +import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Listener; /** @@ -87,6 +88,11 @@ public class SWTUtil { return labels; } + public static void deselectAll(Combo combo) { + int count = combo.getItems().length; + for (int i=0; i versions = language.getVersions(); + List versions = new ArrayList(); + versions.add(null); // allow no selection + versions.addAll(language.getVersions()); populate(minLanguageVersionCombo, versions); populate(maxLanguageVersionCombo, versions); } @@ -138,7 +144,7 @@ public class RulePanelManager extends AbstractRulePanelManager { private void populate(Combo field, List versions) { field.removeAll(); for (LanguageVersion version : versions) { - field.add( version.getName() ); + field.add(version == null ? "" : version.getName()); } } @@ -332,7 +338,7 @@ public class RulePanelManager extends AbstractRulePanelManager { maxLanguageLabel.setLayoutData(lblGD); maxLanguageVersionCombo = buildLanguageVersionCombo(dlgArea, false); - maxLanguageVersionCombo.setLayoutData(cmboGD); + maxLanguageVersionCombo.setLayoutData(cmboGD); if (creatingNewRule()) { buildPriorityControls(dlgArea); // put it at the bottom when creating new rules @@ -536,7 +542,10 @@ public class RulePanelManager extends AbstractRulePanelManager { public void widgetSelected(SelectionEvent event) { if (rules == null) return; - final LanguageVersion version = selectedLanguage().getVersions().get(combo.getSelectionIndex()); + final int selIdx = combo.getSelectionIndex(); + final LanguageVersion version = selIdx == 0 ? + null : + selectedLanguage().getVersions().get(selIdx-1); RuleVisitor visitor = new RuleVisitor() { public boolean accept(Rule rule) { @@ -551,7 +560,7 @@ public class RulePanelManager extends AbstractRulePanelManager { rules.rulesDo(visitor); - valueChanged(null, version.getName()); + valueChanged(null, version == null ? "" : version.getName()); } });