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;