diff --git a/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.form b/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.form index fc8ae107c270..dbb1daca8c19 100644 --- a/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.form +++ b/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.form @@ -31,14 +31,7 @@ - - - - - - - - + diff --git a/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.java b/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.java index 7e79a9ad6be3..736a28c3067c 100644 --- a/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.java +++ b/xml/impl/src/com/intellij/application/options/emmet/XmlEmmetConfigurable.java @@ -19,10 +19,8 @@ import com.intellij.codeInsight.template.emmet.filters.ZenCodingFilter; import com.intellij.openapi.Disposable; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; -import com.intellij.ui.CheckBoxList; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.components.JBCheckBox; -import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.xml.XmlBundle; import org.jetbrains.annotations.Nls; @@ -30,35 +28,50 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.List; +import java.util.Map; import java.util.Set; public class XmlEmmetConfigurable implements Configurable, Disposable, Configurable.NoScroll { private JPanel myPanel; private JBCheckBox myEnableEmmetJBCheckBox; private JBCheckBox myEnablePreviewJBCheckBox; - private CheckBoxList myFiltersCheckBoxList; private JPanel myFiltersListPanel; private JBCheckBox myEnableHrefAutodetectJBCheckBox; + private Map myFilterCheckboxes = ContainerUtil.newHashMap(); + public XmlEmmetConfigurable() { myEnableEmmetJBCheckBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean selected = myEnableEmmetJBCheckBox.isSelected(); myEnablePreviewJBCheckBox.setEnabled(selected); - myFiltersCheckBoxList.setEnabled(selected); + myFiltersListPanel.setEnabled(selected); myEnableHrefAutodetectJBCheckBox.setEnabled(selected); } }); - myFiltersListPanel.setBorder(IdeBorderFactory.createTitledBorder(XmlBundle.message("emmet.filters.enabled.by.default"), false)); - myFiltersCheckBoxList.setItems(ZenCodingFilter.getInstances(), new Function() { - @Override - public String fun(ZenCodingFilter filter) { - return filter.getDisplayName(); - } - }); + myFiltersListPanel.setBorder(IdeBorderFactory.createTitledBorder(XmlBundle.message("emmet.filters.enabled.by.default"))); + createFiltersCheckboxes(); + } + + public void createFiltersCheckboxes() { + final List filters = ZenCodingFilter.getInstances(); + final GridBagLayout layoutManager = new GridBagLayout(); + final GridBagConstraints constraints = new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, + new Insets(0, 0, 0, 0), 0, 0); + myFiltersListPanel.setLayout(layoutManager); + for (int i = 0; i < filters.size(); i++) { + ZenCodingFilter filter = filters.get(i); + final JBCheckBox checkBox = new JBCheckBox(filter.getDisplayName()); + myFilterCheckboxes.put(filter.getSuffix(), checkBox); + constraints.gridy = i; + myFiltersListPanel.add(checkBox, constraints); + } + myFiltersListPanel.revalidate(); } @Override @@ -101,7 +114,11 @@ public class XmlEmmetConfigurable implements Configurable, Disposable, Configura Set enabledByDefault = emmetOptions.getFiltersEnabledByDefault(); for (ZenCodingFilter filter : ZenCodingFilter.getInstances()) { - myFiltersCheckBoxList.setItemSelected(filter, enabledByDefault.contains(filter.getSuffix())); + final String filterSuffix = filter.getSuffix(); + final JBCheckBox checkBox = myFilterCheckboxes.get(filterSuffix); + if (checkBox != null) { + checkBox.setSelected(enabledByDefault.contains(filterSuffix)); + } } } @@ -112,9 +129,9 @@ public class XmlEmmetConfigurable implements Configurable, Disposable, Configura @NotNull private Set enabledFilters() { Set result = ContainerUtil.newHashSet(); - for (ZenCodingFilter filter : ZenCodingFilter.getInstances()) { - if (myFiltersCheckBoxList.isItemSelected(filter)) { - result.add(filter.getSuffix()); + for (Map.Entry checkbox : myFilterCheckboxes.entrySet()) { + if (checkbox.getValue().isSelected()) { + result.add(checkbox.getKey()); } } return result;