Skip to content

Commit 28556e8

Browse files
nikarhFylmTM
authored andcommitted
UI bugfixes in Profile tab (#36)
- Row selection instead of column selection - Columns in tree table are now resized acording to content
1 parent 54dcafa commit 28556e8

File tree

3 files changed

+60
-26
lines changed

3 files changed

+60
-26
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/plan/ColumnDefinitions.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.plan;
22

3-
import com.intellij.openapi.util.text.StringUtil;
43
import com.intellij.ui.treeStructure.treetable.TreeTableModel;
54
import com.intellij.util.ui.ColumnInfo;
65
import com.neueda.jetbrains.plugin.graphdb.database.api.query.GraphQueryPlan;
7-
import org.jetbrains.annotations.NonNls;
86
import org.jetbrains.annotations.NotNull;
97
import org.jetbrains.annotations.Nullable;
108

@@ -58,12 +56,6 @@ public Class<?> getColumnClass() {
5856
public String valueOf(DefaultMutableTreeNode o) {
5957
return ((GraphQueryPlan) o.getUserObject()).getOperatorType();
6058
}
61-
62-
@Override
63-
@NonNls
64-
public String getPreferredStringValue() {
65-
return StringUtil.repeatSymbol('m', 25);
66-
}
6759
};
6860

6961
private static final ColumnInfo<DefaultMutableTreeNode, String> ESTIMATED_ROWS_COL =
@@ -86,12 +78,6 @@ public String valueOf(DefaultMutableTreeNode o) {
8678
.map(Object::toString)
8779
.collect(joining(", "));
8880
}
89-
90-
@Override
91-
@NonNls
92-
public String getPreferredStringValue() {
93-
return StringUtil.repeatSymbol('m', 15);
94-
}
9581
};
9682

9783
private static final ColumnInfo<DefaultMutableTreeNode, String> IDENTIFIERS_COL =
@@ -102,12 +88,6 @@ public String valueOf(DefaultMutableTreeNode o) {
10288
return ((GraphQueryPlan) o.getUserObject()).getIdentifiers().stream()
10389
.collect(joining(", "));
10490
}
105-
106-
@Override
107-
@NonNls
108-
public String getPreferredStringValue() {
109-
return StringUtil.repeatSymbol('m', 12);
110-
}
11191
};
11292

11393
@NotNull
@@ -129,12 +109,6 @@ public String valueOf(DefaultMutableTreeNode o) {
129109
})
130110
.orElse("0");
131111
}
132-
133-
@Override
134-
@NonNls
135-
public String getPreferredStringValue() {
136-
return StringUtil.repeatSymbol('m', 5);
137-
}
138112
};
139113
}
140114
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/plan/QueryPlanPanel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.intellij.ui.treeStructure.treetable.TreeTableModel;
1616
import com.neueda.jetbrains.plugin.graphdb.database.api.query.GraphQueryPlan;
1717
import com.neueda.jetbrains.plugin.graphdb.database.api.query.GraphQueryResult;
18+
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.table.ColumnResizer;
1819
import com.neueda.jetbrains.plugin.graphdb.platform.ShouldNeverHappenException;
1920
import org.jetbrains.annotations.NotNull;
2021

@@ -59,6 +60,7 @@ public void initialize(Container container) {
5960
treeTable.setAutoCreateColumnsFromModel(true);
6061
treeTable.setRootVisible(true);
6162
treeTable.setCellSelectionEnabled(false);
63+
treeTable.setRowSelectionAllowed(true);
6264
treeTable.setAutoResizeMode(TreeTableView.AUTO_RESIZE_OFF);
6365

6466
treeTable.getTree().setShowsRootHandles(true);
@@ -75,6 +77,8 @@ public void initialize(Container container) {
7577
container.add(new JBScrollPane(treeTable, JBScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
7678
JBScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);
7779
container.add(infoLabel, BorderLayout.SOUTH);
80+
81+
new ColumnResizer(treeTable).resize();
7882
}
7983

8084
private void initTreeCellRenderer(ListTreeTableModelOnColumns model) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.table;
2+
3+
import javax.swing.*;
4+
import javax.swing.event.TableModelEvent;
5+
import javax.swing.event.TableModelListener;
6+
import javax.swing.table.TableCellRenderer;
7+
import javax.swing.table.TableColumn;
8+
import javax.swing.table.TableColumnModel;
9+
import java.awt.*;
10+
11+
public class ColumnResizer implements TableModelListener {
12+
13+
private final JTable table;
14+
private final int minMargin;
15+
16+
public ColumnResizer(JTable table) {
17+
this.table = table;
18+
minMargin = strWidth("ww");
19+
}
20+
21+
public void resize() {
22+
23+
int cols = table.getColumnCount();
24+
int rows = table.getRowCount();
25+
int margin = Math.max(table.getIntercellSpacing().width, minMargin);
26+
27+
TableColumnModel model = table.getColumnModel();
28+
29+
for (int c = 0; c < cols; c++) {
30+
TableColumn col = model.getColumn(c);
31+
String header = String.valueOf(col.getHeaderValue());
32+
int headerWidth = strWidth(header) + margin;
33+
34+
for (int r = 0; r < rows; r++) {
35+
TableCellRenderer render = table.getCellRenderer(r, c);
36+
Component component = table.prepareRenderer(render, r, c);
37+
int rendererWidth = component.getPreferredSize().width;
38+
39+
int cellWidth = Math.max(rendererWidth + margin, 1);
40+
41+
col.setPreferredWidth(Math.max(headerWidth, cellWidth));
42+
}
43+
}
44+
}
45+
46+
private int strWidth(String str) {
47+
return table.getFontMetrics(table.getFont())
48+
.charsWidth(str.toCharArray(), 0, str.length());
49+
}
50+
51+
@Override
52+
public void tableChanged(TableModelEvent e) {
53+
resize();
54+
}
55+
56+
}

0 commit comments

Comments
 (0)