bugfix for 'unselectable' language version comboboxes

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@7497 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Brian Remedios
2011-11-28 03:44:54 +00:00
parent a490e89fd0
commit 78a689e43a
2 changed files with 22 additions and 7 deletions

View File

@ -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<count; i++) combo.deselect(i);
}
public static String[] i18lLabelsIn(Object[][] items, int columnIndex) {
String[] labels = labelsIn(items, columnIndex);

View File

@ -111,12 +111,16 @@ public class RulePanelManager extends AbstractRulePanelManager {
languageCombo.select(-1);
priorityCombo.select(-1);
priorityDisplay.setItems(null);
minLanguageVersionCombo.select(-1);
maxLanguageVersionCombo.select(-1);
usesDfaButton.setSelection(false);
usesTypeResolutionButton.setSelection(false);
clearLanguageVersionCombos();
}
private void clearLanguageVersionCombos() {
SWTUtil.deselectAll(minLanguageVersionCombo);
SWTUtil.deselectAll(maxLanguageVersionCombo);
}
private void showLanguageVersionFields(Language language) {
int versionCount = language == null ? 0 : language.getVersions().size();
@ -129,7 +133,9 @@ public class RulePanelManager extends AbstractRulePanelManager {
maxLanguageVersionCombo.setVisible(hasVersions);
if (hasVersions) {
List<LanguageVersion> versions = language.getVersions();
List<LanguageVersion> versions = new ArrayList<LanguageVersion>();
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<LanguageVersion> 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());
}
});