From 7ee8571fb460c8e5dc84ab4bbf2134fc67ad165a Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 31 Jan 2017 01:00:50 +0300 Subject: [PATCH] correct row sorter & preselect selected row in "new" --- .../util/ui/tree/PerFileConfigurableBase.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/util/ui/tree/PerFileConfigurableBase.java b/platform/lang-impl/src/com/intellij/util/ui/tree/PerFileConfigurableBase.java index 902049aa2040..3d95f0eedc90 100644 --- a/platform/lang-impl/src/com/intellij/util/ui/tree/PerFileConfigurableBase.java +++ b/platform/lang-impl/src/com/intellij/util/ui/tree/PerFileConfigurableBase.java @@ -43,10 +43,7 @@ import com.intellij.ui.*; import com.intellij.ui.components.JBLabel; import com.intellij.ui.speedSearch.SpeedSearchUtil; import com.intellij.ui.table.JBTable; -import com.intellij.util.Consumer; -import com.intellij.util.Function; -import com.intellij.util.IconUtil; -import com.intellij.util.Producer; +import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.AbstractTableCellEditor; import com.intellij.util.ui.JBUI; @@ -207,8 +204,12 @@ public abstract class PerFileConfigurableBase implements SearchableConfigurab } private void doAddAction(@NotNull AnActionButton button) { + int row = myTable.getSelectedRow(); + Pair selectedRow = myModel.data.get(myTable.convertRowIndexToModel(row)); + VirtualFile toSelect = myFileToSelect != null ? myFileToSelect : + row >= 0 ? ObjectUtils.tryCast(selectedRow.first, VirtualFile.class) : null; FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, true, true, true, true); - Set chosen = ContainerUtil.newHashSet(FileChooser.chooseFiles(descriptor, myProject, myFileToSelect)); + Set chosen = ContainerUtil.newHashSet(FileChooser.chooseFiles(descriptor, myProject, toSelect)); Set set = myModel.data.stream().map(o -> o.first).collect(Collectors.toSet()); for (VirtualFile file : chosen) { if (!set.add(file)) continue; @@ -369,10 +370,15 @@ public abstract class PerFileConfigurableBase implements SearchableConfigurab myTable.getTableHeader().setReorderingAllowed(false); TableRowSorter> sorter = new TableRowSorter<>(myModel); sorter.setStringConverter(new TableStringConverter() { + final SimpleColoredText text = new SimpleColoredText(); @Override public String toString(TableModel model, int row, int column) { - return StringUtil.toLowerCase(myTable.getCellRenderer(row, column).getTableCellRendererComponent( - myTable, model.getValueAt(row, column), false, false, row, column).toString()); + text.clear(); + Pair pair = myModel.data.get(row); + if (column == 0) renderTarget(pair.first, text); + else if (pair.second != null) renderValue(pair.first, pair.second, text); + else renderDefaultValue(pair.first, text); + return StringUtil.toLowerCase(text.toString()); } }); sorter.setSortable(0, true);