typescript: support blacklist for imports WEB-25902

This commit is contained in:
Andrey Starovoyt
2017-03-13 20:12:44 +03:00
parent 87119d4c46
commit 246fec7c16
2 changed files with 51 additions and 42 deletions
@@ -16,19 +16,30 @@
package com.intellij.util.ui;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.AnActionButton;
import com.intellij.ui.AnActionButtonRunnable;
import com.intellij.ui.ToolbarDecorator;
import com.intellij.ui.components.JBList;
import com.intellij.util.PlatformIcons;
import com.intellij.util.Producer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import static com.intellij.util.containers.ContainerUtil.emptyList;
import static com.intellij.util.containers.ContainerUtil.newArrayList;
public abstract class ListItemsDialogWrapper extends DialogWrapper {
protected final JPanel myPanel;
protected final JList myList = new JBList(new DefaultListModel());
protected ArrayList<String> myData;
protected final JList<String> myList = new JBList<>(new DefaultListModel());
protected List<String> myData;
public ListItemsDialogWrapper(String title) {
super(true);
@@ -68,8 +79,8 @@ public abstract class ListItemsDialogWrapper extends DialogWrapper {
protected abstract String createAddItemDialog();
public void setData(ArrayList<String> data) {
myData = data;
public void setData(List<String> data) {
myData = newArrayList(data);
updateData();
if (!myData.isEmpty()) {
myList.setSelectedIndex(0);
@@ -77,14 +88,15 @@ public abstract class ListItemsDialogWrapper extends DialogWrapper {
}
protected void updateData() {
final DefaultListModel model = ((DefaultListModel)myList.getModel());
final DefaultListModel<String> model = ((DefaultListModel<String>)myList.getModel());
model.clear();
for (String data : myData) {
model.addElement(data);
}
}
public ArrayList<String> getData() {
@Nullable
public List<String> getData() {
return myData;
}
@@ -97,4 +109,33 @@ public abstract class ListItemsDialogWrapper extends DialogWrapper {
public JComponent getPreferredFocusedComponent() {
return myList;
}
@NotNull
public static String createStringPresentation(@Nullable List<String> data) {
return data == null ? "" : StringUtil.join(data, ",");
}
@NotNull
public static List<String> createListPresentation(@Nullable String data) {
if (data == null || data.trim().isEmpty()) {
return emptyList();
}
return newArrayList(data.split(","));
}
public static void installListItemsDialogForTextField(@NotNull TextFieldWithBrowseButton uiField,
@NotNull Producer<ListItemsDialogWrapper> createDialog) {
uiField.getTextField().setEditable(false);
uiField.setButtonIcon(PlatformIcons.OPEN_EDIT_DIALOG_ICON);
uiField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final ListItemsDialogWrapper tagListDialog = createDialog.produce();
tagListDialog.setData(createListPresentation(uiField.getText()));
if (tagListDialog.showAndGet()) {
uiField.setText(createStringPresentation(tagListDialog.getData()));
}
}
});
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,23 +24,19 @@ import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.ui.EnumComboBoxModel;
import com.intellij.ui.components.JBCheckBox;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.util.ArrayUtil;
import com.intellij.util.PlatformIcons;
import com.intellij.util.ui.ListItemsDialogWrapper;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
public class CodeStyleHtmlPanel extends CodeStyleAbstractPanel {
@@ -122,30 +118,7 @@ public class CodeStyleHtmlPanel extends CodeStyleAbstractPanel {
}
private static void customizeField(final String title, final TextFieldWithBrowseButton uiField) {
uiField.getTextField().setEditable(false);
uiField.setButtonIcon(PlatformIcons.OPEN_EDIT_DIALOG_ICON);
uiField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final TagListDialog tagListDialog = new TagListDialog(title);
tagListDialog.setData(createCollectionOn(uiField.getText()));
if (tagListDialog.showAndGet()) {
uiField.setText(createStringOn(tagListDialog.getData()));
}
}
private String createStringOn(final ArrayList<String> data) {
return StringUtil.join(ArrayUtil.toStringArray(data), ",");
}
private ArrayList<String> createCollectionOn(final String data) {
if (data == null || data.trim().isEmpty()) {
return new ArrayList<>();
}
return new ArrayList<>(Arrays.asList(data.split(",")));
}
});
ListItemsDialogWrapper.installListItemsDialogForTextField(uiField, () -> new TagListDialog(title));
}
@Override
@@ -179,11 +152,6 @@ public class CodeStyleHtmlPanel extends CodeStyleAbstractPanel {
myRightMarginForm.apply(settings);
}
@NotNull
protected String getQuotes() {
return ApplicationBundle.message("single.quotes").equals(myQuotesCombo.getSelectedItem()) ? "'" : "\"";
}
private static int getIntValue(JTextField keepBlankLines) {
try {
return Integer.parseInt(keepBlankLines.getText());