Skip to content

Commit a4670e6

Browse files
nikarhFylmTM
authored andcommitted
Fixed profile tab column resizing (#38)
* Fixed profile tab column resizing * Reusing column resizer in TablePanel
1 parent 7ea6966 commit a4670e6

File tree

2 files changed

+19
-27
lines changed

2 files changed

+19
-27
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/table/ColumnResizer.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,18 @@
1111
public class ColumnResizer implements TableModelListener {
1212

1313
private final JTable table;
14+
private final Integer maxWidth;
1415
private final int minMargin;
1516

1617
public ColumnResizer(JTable table) {
1718
this.table = table;
19+
this.maxWidth = null;
20+
minMargin = strWidth("ww");
21+
}
22+
23+
public ColumnResizer(JTable table, Integer maxWidth) {
24+
this.table = table;
25+
this.maxWidth = maxWidth;
1826
minMargin = strWidth("ww");
1927
}
2028

@@ -29,16 +37,22 @@ public void resize() {
2937
for (int c = 0; c < cols; c++) {
3038
TableColumn col = model.getColumn(c);
3139
String header = String.valueOf(col.getHeaderValue());
32-
int headerWidth = strWidth(header) + margin;
40+
int minWidth = strWidth(header) + margin;
3341

3442
for (int r = 0; r < rows; r++) {
3543
TableCellRenderer render = table.getCellRenderer(r, c);
3644
Component component = table.prepareRenderer(render, r, c);
3745
int rendererWidth = component.getPreferredSize().width;
3846

3947
int cellWidth = Math.max(rendererWidth + margin, 1);
48+
minWidth = Math.max(minWidth, cellWidth);
49+
50+
if (maxWidth != null && minWidth >= maxWidth) {
51+
col.setPreferredWidth(maxWidth);
52+
break;
53+
}
4054

41-
col.setPreferredWidth(Math.max(headerWidth, cellWidth));
55+
col.setPreferredWidth(minWidth);
4256
}
4357
}
4458
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/table/TablePanel.java

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
import com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.table.renderer.CompositeTableCellRenderer;
1313

1414
import javax.swing.*;
15-
import javax.swing.table.TableCellRenderer;
16-
import javax.swing.table.TableColumn;
1715
import java.awt.*;
1816
import java.util.ArrayList;
1917
import java.util.List;
@@ -39,6 +37,8 @@ public void initialize(GraphConsoleView graphConsoleView, Project project) {
3937
table.setDefaultEditor(Object.class, new CompositeTableCellEditor());
4038
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
4139

40+
ColumnResizer cr = new ColumnResizer(table, MAX_WIDTH);
41+
4242
messageBus.connect().subscribe(QueryExecutionProcessEvent.QUERY_EXECUTION_PROCESS_TOPIC, new QueryExecutionProcessEvent() {
4343
@Override
4444
public void executionStarted(ExecuteQueryPayload payload) {
@@ -64,7 +64,7 @@ public void resultReceived(ExecuteQueryPayload payload, GraphQueryResult result)
6464

6565
@Override
6666
public void postResultReceived(ExecuteQueryPayload payload) {
67-
updateColumnWidths();
67+
cr.resize();
6868
updateRowHeights();
6969
}
7070

@@ -78,28 +78,6 @@ public void executionCompleted(ExecuteQueryPayload payload) {
7878
});
7979
}
8080

81-
private void updateColumnWidths() {
82-
for (int column = 0; column < table.getColumnCount(); column++) {
83-
TableColumn tableColumn = table.getColumnModel().getColumn(column);
84-
int preferredWidth = tableColumn.getMinWidth();
85-
int maxWidth = MAX_WIDTH;
86-
87-
for (int row = 0; row < table.getRowCount(); row++) {
88-
TableCellRenderer cellRenderer = table.getCellRenderer(row, column);
89-
Component c = table.prepareRenderer(cellRenderer, row, column);
90-
int width = c.getPreferredSize().width + table.getIntercellSpacing().width;
91-
preferredWidth = Math.max(preferredWidth, width);
92-
93-
// We've exceeded the maximum width, no need to check other rows
94-
if (preferredWidth >= MAX_WIDTH) {
95-
preferredWidth = MAX_WIDTH;
96-
break;
97-
}
98-
}
99-
tableColumn.setPreferredWidth(preferredWidth);
100-
}
101-
}
102-
10381
public void updateRowHeights() {
10482
for (int row = 0; row < table.getRowCount(); row++) {
10583
int rowHeight = 1;

0 commit comments

Comments
 (0)