From 7ee47b9132fe7e8a3dc18d623cf6f54c4c30c8b2 Mon Sep 17 00:00:00 2001 From: Vassiliy Date: Mon, 24 Mar 2014 16:59:10 +0400 Subject: [PATCH] Better usability for focus tracer --- .../internal/focus/FocusTracesDialog.form | 54 ------------------- .../internal/focus/FocusTracesDialog.java | 31 ++++++++--- 2 files changed, 23 insertions(+), 62 deletions(-) delete mode 100644 platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.form diff --git a/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.form b/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.form deleted file mode 100644 index 9dc1d1074339..000000000000 --- a/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.form +++ /dev/null @@ -1,54 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.java b/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.java index a7810c10b435..a9ab36046cc0 100644 --- a/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.java +++ b/platform/platform-impl/src/com/intellij/internal/focus/FocusTracesDialog.java @@ -20,6 +20,8 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.wm.impl.FocusRequestInfo; import com.intellij.ui.JBColor; +import com.intellij.ui.JBSplitter; +import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.table.JBTable; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -39,9 +41,8 @@ import java.util.List; * @author Konstantin Bulenkov */ public class FocusTracesDialog extends DialogWrapper { - private JTextPane myStacktrace; - private JBTable myRequestsTable; - private JPanel myRootPanel; + private final JTextPane myStacktrace = new JTextPane(); + private final JBTable myRequestsTable; private final List myRequests; private static final String[] COLUMNS = {"Time", "Forced", "Component"}; @@ -49,19 +50,24 @@ public class FocusTracesDialog extends DialogWrapper { super(project); myRequests = requests; setTitle("Focus Traces"); - init(); final String[][] data = new String[requests.size()][]; for (int i = 0; i < data.length; i++) { final FocusRequestInfo r = requests.get(i); data[i] = new String[]{r.getDate(), String.valueOf(r.isForced()), String.valueOf(r.getComponent())}; } - myRequestsTable.setModel(new DefaultTableModel(data, COLUMNS)); + myRequestsTable = new JBTable(new DefaultTableModel(data, COLUMNS) { + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }); final ListSelectionListener selectionListener = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { final int index = myRequestsTable.getSelectedRow(); if (-1 < index && index < myRequests.size()) { myStacktrace.setText(myRequests.get(index).getStackTrace()); + myStacktrace.setCaretPosition(0); } else { myStacktrace.setText(""); @@ -70,12 +76,15 @@ public class FocusTracesDialog extends DialogWrapper { }; myRequestsTable.getSelectionModel().addListSelectionListener(selectionListener); final TableColumnModel columnModel = myRequestsTable.getColumnModel(); + columnModel.getColumn(0).setMinWidth(120); columnModel.getColumn(0).setMaxWidth(120); + columnModel.getColumn(0).setPreferredWidth(120); + columnModel.getColumn(1).setMinWidth(60); columnModel.getColumn(1).setMaxWidth(60); - columnModel.getSelectionModel().addListSelectionListener(selectionListener); - columnModel.setColumnSelectionAllowed(false); + columnModel.getColumn(1).setPreferredWidth(60); myRequestsTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); myRequestsTable.changeSelection(0, 0, false, true); + init(); } @Override @@ -85,7 +94,13 @@ public class FocusTracesDialog extends DialogWrapper { @Override protected JComponent createCenterPanel() { - return myRootPanel; + JPanel panel = new JPanel(new BorderLayout()); + JBSplitter splitter = new JBSplitter(true, .5F, .2F, .8F); + splitter.setFirstComponent(new JBScrollPane(myRequestsTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)); + splitter.setSecondComponent( + new JBScrollPane(myStacktrace, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)); + panel.add(splitter, BorderLayout.CENTER); + return panel; } @Override