From da7f771df8adca9db6611f96f8600b20d752bd4c Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 3 Jan 2014 17:04:05 +0100 Subject: [PATCH] TableUtil.setupCheckboxColumn --- .../EncapsulateFieldsDialog.java | 2 +- .../naming/AutomaticUsageRenamingDialog.java | 10 +------ .../safeDelete/OverridingMethodsDialog.java | 10 +++---- .../refactoring/util/ParameterTablePanel.java | 7 +++-- .../ui/classFilter/ClassFilterEditor.java | 4 +-- .../ide/todo/configurable/FilterDialog.java | 10 ++----- .../AbstractParameterTablePanel.java | 2 +- .../rename/AutomaticRenamingDialog.java | 4 +-- .../ui/AbstractMemberSelectionTable.java | 9 +++--- .../src/com/intellij/ui/OrderPanel.java | 16 +++++----- .../com/intellij/ide/plugins/PluginTable.java | 6 +--- .../intellij/ide/util/ElementsChooser.java | 4 +-- .../util/src/com/intellij/ui/TableUtil.java | 20 +++++++++++++ .../intelliLang/InjectionsSettingsUI.java | 2 +- .../devkit/src/util/ChooseModulesDialog.java | 3 +- .../extract/ParameterTablePanel.java | 29 ++++++++++++++----- .../testIntegration/CreateTestDialog.java | 8 ++--- .../ide/browsers/BrowserSettingsPanel.java | 11 +++++-- 18 files changed, 85 insertions(+), 72 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsDialog.java b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsDialog.java index 11c77dd05cb1..8905ce202211 100644 --- a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsDialog.java @@ -368,7 +368,7 @@ public class EncapsulateFieldsDialog extends RefactoringDialog implements Encaps columnModel.getColumn(FIELD_COLUMN).setCellRenderer(renderer); columnModel.getColumn(GETTER_COLUMN).setCellRenderer(renderer); columnModel.getColumn(SETTER_COLUMN).setCellRenderer(renderer); - columnModel.getColumn(CHECKED_COLUMN).setMaxWidth(new JCheckBox().getPreferredSize().width); + TableUtil.setupCheckboxColumn(columnModel.getColumn(CHECKED_COLUMN)); myTable.setPreferredScrollableViewportSize(new Dimension(550, myTable.getRowHeight() * 12)); myTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); diff --git a/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java b/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java index f74b28472052..152c037d91fc 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/naming/AutomaticUsageRenamingDialog.java @@ -30,7 +30,6 @@ import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.event.*; import javax.swing.table.AbstractTableModel; -import javax.swing.table.TableColumn; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -147,7 +146,7 @@ public class AutomaticUsageRenamingDialog extends DialogWrapper { } }); - setupCheckColumn(); + TableUtil.setupCheckboxColumn(myTable, CHECK_COLUMN); setupOldNameColumn(); setupNewNameColumn(); @@ -284,13 +283,6 @@ public class AutomaticUsageRenamingDialog extends DialogWrapper { }); } - private void setupCheckColumn() { - TableColumn column = myTable.getColumnModel().getColumn(CHECK_COLUMN); - int checkBoxWidth = new JCheckBox().getPreferredSize().width; - column.setMaxWidth(checkBoxWidth); - column.setMinWidth(checkBoxWidth); - } - private void removeListener(JTextField textField) { if (myCellEditorListener != null) { textField.getDocument().removeDocumentListener(myCellEditorListener); diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/OverridingMethodsDialog.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/OverridingMethodsDialog.java index 4217acec0330..8bdcddbc44ad 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/OverridingMethodsDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/OverridingMethodsDialog.java @@ -28,6 +28,7 @@ import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.safeDelete.usageInfo.SafeDeleteOverridingMethodUsageInfo; import com.intellij.ui.BooleanTableCellRenderer; import com.intellij.ui.ScrollPaneFactory; +import com.intellij.ui.TableUtil; import com.intellij.usageView.UsageInfo; import com.intellij.usages.impl.UsagePreviewPanel; import com.intellij.util.ui.Table; @@ -38,6 +39,7 @@ import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import java.awt.*; import java.awt.event.ActionEvent; @@ -130,11 +132,9 @@ class OverridingMethodsDialog extends DialogWrapper { TableColumnModel columnModel = myTable.getColumnModel(); // columnModel.getColumn(DISPLAY_NAME_COLUMN).setCellRenderer(new MemberSelectionTable.MyTableRenderer()); - final int checkBoxWidth = new JCheckBox().getPreferredSize().width; - columnModel.getColumn(CHECK_COLUMN).setCellRenderer(new BooleanTableCellRenderer()); - columnModel.getColumn(CHECK_COLUMN).setMaxWidth(checkBoxWidth); - columnModel.getColumn(CHECK_COLUMN).setMinWidth(checkBoxWidth); - + TableColumn checkboxColumn = columnModel.getColumn(CHECK_COLUMN); + TableUtil.setupCheckboxColumn(checkboxColumn); + checkboxColumn.setCellRenderer(new BooleanTableCellRenderer()); // make SPACE check/uncheck selected rows @NonNls InputMap inputMap = myTable.getInputMap(); diff --git a/java/java-impl/src/com/intellij/refactoring/util/ParameterTablePanel.java b/java/java-impl/src/com/intellij/refactoring/util/ParameterTablePanel.java index 256c3a9e9508..83fba883184c 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/ParameterTablePanel.java +++ b/java/java-impl/src/com/intellij/refactoring/util/ParameterTablePanel.java @@ -15,13 +15,13 @@ */ package com.intellij.refactoring.util; -import com.intellij.ui.ListCellRendererWrapper; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.refactoring.ui.TypeSelector; import com.intellij.refactoring.ui.TypeSelectorManager; import com.intellij.refactoring.ui.TypeSelectorManagerImpl; import com.intellij.ui.BooleanTableCellRenderer; +import com.intellij.ui.ListCellRendererWrapper; import com.intellij.ui.TableUtil; import com.intellij.ui.ToolbarDecorator; import com.intellij.ui.components.JBComboBoxLabel; @@ -82,8 +82,9 @@ public abstract class ParameterTablePanel extends JPanel { myTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); myTable.setCellSelectionEnabled(true); - myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN).setCellRenderer(new CheckBoxTableCellRenderer()); - myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN).setMaxWidth(new JCheckBox().getPreferredSize().width); + TableColumn checkboxColumn = myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN); + TableUtil.setupCheckboxColumn(checkboxColumn); + checkboxColumn.setCellRenderer(new CheckBoxTableCellRenderer()); myTable.getColumnModel().getColumn(MyTableModel.PARAMETER_NAME_COLUMN).setCellRenderer(new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); diff --git a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java index 85d92f5c0e5b..980b4a652ba6 100644 --- a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java +++ b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java @@ -116,9 +116,7 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText TableColumnModel columnModel = myTable.getColumnModel(); TableColumn column = columnModel.getColumn(FilterTableModel.CHECK_MARK); - int width = new JCheckBox().getPreferredSize().width; - column.setPreferredWidth(width); - column.setMaxWidth(width); + TableUtil.setupCheckboxColumn(column); column.setCellRenderer(new EnabledCellRenderer(myTable.getDefaultRenderer(Boolean.class))); columnModel.getColumn(FilterTableModel.FILTER).setCellRenderer(new FilterCellRenderer()); diff --git a/platform/lang-impl/src/com/intellij/ide/todo/configurable/FilterDialog.java b/platform/lang-impl/src/com/intellij/ide/todo/configurable/FilterDialog.java index 0c73893db82e..2002246d4a05 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/configurable/FilterDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/configurable/FilterDialog.java @@ -25,13 +25,13 @@ import com.intellij.openapi.ui.Messages; import com.intellij.psi.search.TodoPattern; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.ScrollPaneFactory; +import com.intellij.ui.TableUtil; import com.intellij.util.ui.Table; import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.border.Border; import javax.swing.table.AbstractTableModel; -import javax.swing.table.TableColumn; import java.awt.*; import java.util.List; @@ -143,13 +143,7 @@ class FilterDialog extends DialogWrapper { new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); // Column "Available" - - int width = new JCheckBox().getPreferredSize().width; - TableColumn availableColumn = myTable.getColumnModel().getColumn(0); - availableColumn.setPreferredWidth(width); - availableColumn.setMaxWidth(width); - availableColumn.setMinWidth(width); - + TableUtil.setupCheckboxColumn(myTable, 0); // panel.add(patternsPanel, diff --git a/platform/lang-impl/src/com/intellij/refactoring/extractMethod/AbstractParameterTablePanel.java b/platform/lang-impl/src/com/intellij/refactoring/extractMethod/AbstractParameterTablePanel.java index 70d33b3eb652..122845f6793d 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/extractMethod/AbstractParameterTablePanel.java +++ b/platform/lang-impl/src/com/intellij/refactoring/extractMethod/AbstractParameterTablePanel.java @@ -62,7 +62,7 @@ public abstract class AbstractParameterTablePanel extends JPanel { myTable.setTableHeader(null); myTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN).setMaxWidth(new JCheckBox().getPreferredSize().width); + TableUtil.setupCheckboxColumn(myTable, MyTableModel.CHECKMARK_COLUMN); myTable.getColumnModel().getColumn(MyTableModel.PARAMETER_NAME_COLUMN).setCellRenderer(new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/AutomaticRenamingDialog.java b/platform/lang-impl/src/com/intellij/refactoring/rename/AutomaticRenamingDialog.java index 44a4788a0abe..844fe60ac29d 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/AutomaticRenamingDialog.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/AutomaticRenamingDialog.java @@ -176,9 +176,7 @@ public class AutomaticRenamingDialog extends DialogWrapper { final TableColumnModel columnModel = myTable.getColumnModel(); columnModel.getColumn(CHECK_COLUMN).setCellRenderer(new BooleanTableCellRenderer()); - final int checkBoxWidth = new JCheckBox().getPreferredSize().width; - columnModel.getColumn(CHECK_COLUMN).setMaxWidth(checkBoxWidth); - columnModel.getColumn(CHECK_COLUMN).setMinWidth(checkBoxWidth); + TableUtil.setupCheckboxColumn(columnModel.getColumn(CHECK_COLUMN)); columnModel.getColumn(NEW_NAME_COLUMN).setCellEditor(new StringTableCellEditor(myProject)); mySelectAllButton.addActionListener(new ActionListener() { diff --git a/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionTable.java b/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionTable.java index 6f22ffa2580a..1e3a776a3ad4 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionTable.java +++ b/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionTable.java @@ -19,7 +19,6 @@ package com.intellij.refactoring.ui; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.actionSystem.DataSink; -import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.TypeSafeDataProvider; import com.intellij.openapi.util.Iconable; import com.intellij.psi.PsiElement; @@ -35,6 +34,7 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import java.awt.*; import java.util.ArrayList; @@ -78,10 +78,9 @@ public abstract class AbstractMemberSelectionTable(this)); - model.getColumn(CHECKED_COLUMN).setCellRenderer(new MyBooleanRenderer(this)); - final int checkBoxWidth = new JCheckBox().getPreferredSize().width; - model.getColumn(CHECKED_COLUMN).setMaxWidth(checkBoxWidth); - model.getColumn(CHECKED_COLUMN).setMinWidth(checkBoxWidth); + TableColumn checkBoxColumn = model.getColumn(CHECKED_COLUMN); + TableUtil.setupCheckboxColumn(checkBoxColumn); + checkBoxColumn.setCellRenderer(new MyBooleanRenderer(this)); if (myAbstractEnabled) { int width = (int)(1.3 * getFontMetrics(getFont()).charsWidth(myAbstractColumnHeader.toCharArray(), 0, myAbstractColumnHeader.length())); model.getColumn(ABSTRACT_COLUMN).setMaxWidth(width); diff --git a/platform/platform-api/src/com/intellij/ui/OrderPanel.java b/platform/platform-api/src/com/intellij/ui/OrderPanel.java index e1bacf37ca39..d744780c1f88 100644 --- a/platform/platform-api/src/com/intellij/ui/OrderPanel.java +++ b/platform/platform-api/src/com/intellij/ui/OrderPanel.java @@ -91,22 +91,20 @@ public abstract class OrderPanel extends JPanel { } public void setCheckboxColumnName(final String name) { - final int width; + TableColumn checkboxColumn = myEntryTable.getColumnModel().getColumn(getCheckboxColumn()); if (StringUtil.isEmpty(name)) { CHECKBOX_COLUMN_NAME = ""; - width = new JCheckBox().getPreferredSize().width; + TableUtil.setupCheckboxColumn(checkboxColumn); } else { CHECKBOX_COLUMN_NAME = name; final FontMetrics fontMetrics = myEntryTable.getFontMetrics(myEntryTable.getFont()); - width = fontMetrics.stringWidth(" " + name + " ") + 4; + final int width = fontMetrics.stringWidth(" " + name + " ") + 4; + checkboxColumn.setWidth(width); + checkboxColumn.setPreferredWidth(width); + checkboxColumn.setMaxWidth(width); + checkboxColumn.setMinWidth(width); } - - final TableColumn checkboxColumn = myEntryTable.getColumnModel().getColumn(getCheckboxColumn()); - checkboxColumn.setWidth(width); - checkboxColumn.setPreferredWidth(width); - checkboxColumn.setMaxWidth(width); - checkboxColumn.setMinWidth(width); } public void moveSelectedItemsUp() { diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java index e205a5ffeded..deb5e8286125 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java @@ -49,11 +49,7 @@ public class PluginTable extends JBTable { final ColumnInfo columnInfo = model.getColumnInfos()[i]; column.setCellEditor(columnInfo.getEditor(null)); if (columnInfo.getColumnClass() == Boolean.class) { - final int width = new JCheckBox().getPreferredSize().width; - column.setWidth(width); - column.setPreferredWidth(width); - column.setMaxWidth(width); - column.setMinWidth(width); + TableUtil.setupCheckboxColumn(column); } } diff --git a/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java b/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java index 83d489386775..2b8a8a499621 100644 --- a/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java +++ b/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java @@ -71,13 +71,11 @@ public class ElementsChooser extends JPanel implements ComponentWithEmptyText myTable.setColumnSelectionAllowed(false); JScrollPane pane = ScrollPaneFactory.createScrollPane(myTable); pane.setPreferredSize(new Dimension(100, 155)); - int width = new JCheckBox().getPreferredSize().width; TableColumnModel columnModel = myTable.getColumnModel(); if (elementsCanBeMarked) { TableColumn checkMarkColumn = columnModel.getColumn(myTableModel.CHECK_MARK_COLUM_INDEX); - checkMarkColumn.setPreferredWidth(width); - checkMarkColumn.setMaxWidth(width); + TableUtil.setupCheckboxColumn(checkMarkColumn); checkMarkColumn.setCellRenderer(new CheckMarkColumnCellRenderer(myTable.getDefaultRenderer(Boolean.class))); } columnModel.getColumn(myTableModel.ELEMENT_COLUMN_INDEX).setCellRenderer(new MyElementColumnCellRenderer()); diff --git a/platform/util/src/com/intellij/ui/TableUtil.java b/platform/util/src/com/intellij/ui/TableUtil.java index 51a98cb4c6ec..c421d9a3d532 100644 --- a/platform/util/src/com/intellij/ui/TableUtil.java +++ b/platform/util/src/com/intellij/ui/TableUtil.java @@ -21,6 +21,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.table.TableCellEditor; +import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import java.awt.*; import java.util.ArrayList; @@ -196,4 +197,23 @@ public class TableUtil { if (table.getSelectedRow() != -1 || table.getRowCount() == 0) return; table.setRowSelectionInterval(0, 0); } + + /** + * @return column width + */ + public static int setupCheckboxColumn(@NotNull JTable table, int columnIndex) { + return setupCheckboxColumn(table.getColumnModel().getColumn(columnIndex)); + } + + /** + * @return column width + */ + public static int setupCheckboxColumn(@NotNull TableColumn column) { + int checkboxWidth = new JCheckBox().getPreferredSize().width; + column.setResizable(false); + column.setPreferredWidth(checkboxWidth); + column.setMaxWidth(checkboxWidth); + column.setMinWidth(checkboxWidth); + return checkboxWidth; + } } \ No newline at end of file diff --git a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java index 414500ba2096..bf1f45114740 100644 --- a/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java +++ b/plugins/IntelliLang/src/org/intellij/plugins/intelliLang/InjectionsSettingsUI.java @@ -543,7 +543,7 @@ public class InjectionsSettingsUI implements SearchableConfigurable.Parent, Conf setShowGrid(false); setShowVerticalLines(false); setGridColor(getForeground()); - getColumnModel().getColumn(0).setMaxWidth(new JCheckBox().getPreferredSize().width); + TableUtil.setupCheckboxColumn(getColumnModel().getColumn(0)); new DoubleClickListener() { @Override diff --git a/plugins/devkit/src/util/ChooseModulesDialog.java b/plugins/devkit/src/util/ChooseModulesDialog.java index 28eabdb7d0a2..dcc43c17b7e9 100644 --- a/plugins/devkit/src/util/ChooseModulesDialog.java +++ b/plugins/devkit/src/util/ChooseModulesDialog.java @@ -27,6 +27,7 @@ import com.intellij.psi.xml.XmlFile; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.SimpleTextAttributes; +import com.intellij.ui.TableUtil; import com.intellij.ui.components.JBList; import com.intellij.ui.table.JBTable; import org.jetbrains.annotations.NonNls; @@ -98,7 +99,7 @@ public class ChooseModulesDialog extends DialogWrapper { myView.setShowGrid(false); myView.setTableHeader(null); myView.setIntercellSpacing(new Dimension(0, 0)); - myView.getColumnModel().getColumn(0).setMaxWidth(new JCheckBox().getPreferredSize().width); + TableUtil.setupCheckboxColumn(myView, 0); myView.getModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { getOKAction().setEnabled(getSelectedModules().size() > 0); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ParameterTablePanel.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ParameterTablePanel.java index cccdaa336a3d..3125f080437b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ParameterTablePanel.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/extract/ParameterTablePanel.java @@ -16,17 +16,13 @@ package org.jetbrains.plugins.groovy.refactoring.extract; -import com.intellij.ui.ListCellRendererWrapper; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiManager; import com.intellij.psi.PsiPrimitiveType; import com.intellij.psi.PsiType; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.ui.TypeSelector; -import com.intellij.ui.BooleanTableCellRenderer; -import com.intellij.ui.IdeBorderFactory; -import com.intellij.ui.TableUtil; -import com.intellij.ui.ToolbarDecorator; +import com.intellij.ui.*; import com.intellij.ui.table.JBTable; import com.intellij.util.ui.AbstractTableCellEditor; import com.intellij.util.ui.EditableModel; @@ -38,6 +34,7 @@ import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellEditor; +import javax.swing.table.TableColumn; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; @@ -71,9 +68,13 @@ public abstract class ParameterTablePanel extends JPanel { myTable.setTableHeader(null); myTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN).setCellRenderer(new CheckBoxTableCellRenderer()); - myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN).setMaxWidth(new JCheckBox().getPreferredSize().width); + + TableColumn checkBoxColumn = myTable.getColumnModel().getColumn(MyTableModel.CHECKMARK_COLUMN); + TableUtil.setupCheckboxColumn(checkBoxColumn); + checkBoxColumn.setCellRenderer(new CheckBoxTableCellRenderer()); + myTable.getColumnModel().getColumn(MyTableModel.PARAMETER_NAME_COLUMN).setCellRenderer(new DefaultTableCellRenderer() { + @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); ParameterInfo info = myParameterInfos[row]; @@ -111,10 +112,12 @@ public abstract class ParameterTablePanel extends JPanel { myTable.getColumnModel().getColumn(MyTableModel.PARAMETER_TYPE_COLUMN).setCellEditor(new AbstractTableCellEditor() { TypeSelector myCurrentSelector; + @Override public Object getCellEditorValue() { return myCurrentSelector.getSelectedType(); } + @Override public Component getTableCellEditorComponent(final JTable table, final Object value, final boolean isSelected, @@ -126,6 +129,7 @@ public abstract class ParameterTablePanel extends JPanel { }); myTable.getColumnModel().getColumn(MyTableModel.PARAMETER_TYPE_COLUMN).setCellRenderer(new DefaultTableCellRenderer() { + @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (myParameterTypeSelectors[row].getComponent() instanceof JComboBox) { myTypeRendererCombo.setSelectedIndex(row); @@ -149,6 +153,7 @@ public abstract class ParameterTablePanel extends JPanel { inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "enable_disable"); @NonNls final ActionMap actionMap = myTable.getActionMap(); actionMap.put("enable_disable", new AbstractAction() { + @Override public void actionPerformed(ActionEvent e) { if (myTable.isEditing()) return; int[] rows = myTable.getSelectedRows(); @@ -171,6 +176,7 @@ public abstract class ParameterTablePanel extends JPanel { // F2 should edit the name inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), "edit_parameter_name"); actionMap.put("edit_parameter_name", new AbstractAction() { + @Override public void actionPerformed(ActionEvent e) { if (!myTable.isEditing()) { int row = myTable.getSelectedRow(); @@ -184,6 +190,7 @@ public abstract class ParameterTablePanel extends JPanel { // make ENTER work when the table has focus inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "invokeImpl"); actionMap.put("invokeImpl", new AbstractAction() { + @Override public void actionPerformed(ActionEvent e) { TableCellEditor editor = myTable.getCellEditor(); if (editor != null) { @@ -197,6 +204,7 @@ public abstract class ParameterTablePanel extends JPanel { // make ESCAPE work when the table has focus actionMap.put("doCancel", new AbstractAction() { + @Override public void actionPerformed(ActionEvent e) { TableCellEditor editor = myTable.getCellEditor(); if (editor != null) { @@ -256,14 +264,17 @@ public abstract class ParameterTablePanel extends JPanel { return true; } + @Override public int getRowCount() { return myParameterInfos.length; } + @Override public int getColumnCount() { return 3; } + @Override public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case CHECKMARK_COLUMN: { @@ -281,6 +292,7 @@ public abstract class ParameterTablePanel extends JPanel { return null; } + @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { switch (columnIndex) { case CHECKMARK_COLUMN: { @@ -308,6 +320,7 @@ public abstract class ParameterTablePanel extends JPanel { } } + @Override public boolean isCellEditable(int rowIndex, int columnIndex) { switch (columnIndex) { case CHECKMARK_COLUMN: @@ -323,6 +336,7 @@ public abstract class ParameterTablePanel extends JPanel { } } + @Override public Class getColumnClass(int columnIndex) { if (columnIndex == CHECKMARK_COLUMN) { return Boolean.class; @@ -332,6 +346,7 @@ public abstract class ParameterTablePanel extends JPanel { } private class CheckBoxTableCellRenderer extends BooleanTableCellRenderer { + @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component rendererComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); rendererComponent.setEnabled(ParameterTablePanel.this.isEnabled()); diff --git a/python/src/com/jetbrains/python/codeInsight/testIntegration/CreateTestDialog.java b/python/src/com/jetbrains/python/codeInsight/testIntegration/CreateTestDialog.java index 08f3d190ab48..c01a1b27d8d4 100644 --- a/python/src/com/jetbrains/python/codeInsight/testIntegration/CreateTestDialog.java +++ b/python/src/com/jetbrains/python/codeInsight/testIntegration/CreateTestDialog.java @@ -22,6 +22,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.BooleanTableCellRenderer; +import com.intellij.ui.TableUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -29,7 +30,6 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; -import javax.swing.table.TableColumnModel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -72,14 +72,12 @@ public class CreateTestDialog extends DialogWrapper { myTableModel = new DefaultTableModel(methods, 2); myMethodsTable.setModel(myTableModel); - TableColumnModel model = myMethodsTable.getColumnModel(); - model.getColumn(0).setMaxWidth(new JCheckBox().getPreferredSize().width); - TableColumn checkColumn = myMethodsTable.getColumnModel().getColumn(0); + TableUtil.setupCheckboxColumn(checkColumn); checkColumn.setCellRenderer(new BooleanTableCellRenderer()); checkColumn.setCellEditor(new DefaultCellEditor(new JCheckBox())); - model.getColumn(1).setHeaderValue("Test method"); + myMethodsTable.getColumnModel().getColumn(1).setHeaderValue("Test method"); checkColumn.setHeaderValue(""); getOKAction().setEnabled(true); } diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java b/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java index fd3ca6a90959..d0e0384b6e4e 100644 --- a/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java +++ b/xml/impl/src/com/intellij/ide/browsers/BrowserSettingsPanel.java @@ -26,6 +26,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.IdeBorderFactory; +import com.intellij.ui.TableUtil; import com.intellij.ui.ToolbarDecorator; import com.intellij.ui.table.TableView; import com.intellij.util.ui.ColumnInfo; @@ -107,7 +108,7 @@ public class BrowserSettingsPanel { } private void createUIComponents() { - ColumnInfo[] columns = {new ColumnInfo("") { + ColumnInfo activeColumn = new ColumnInfo("") { @Override public Class getColumnClass() { return Boolean.class; @@ -127,7 +128,8 @@ public class BrowserSettingsPanel { public void setValue(WebBrowserSettings info, Boolean value) { getMutable(info).setActive(value); } - }, new ColumnInfo("Name") { + }; + ColumnInfo[] columns = {activeColumn, new ColumnInfo("Name") { @Override public String valueOf(WebBrowserSettings info) { return getEffective(info).getName(); @@ -149,7 +151,10 @@ public class BrowserSettingsPanel { } }}; ListTableModel tableModel = new ListTableModel(columns, WebBrowserManager.getInstance().getInfos()); - browsersTable = ToolbarDecorator.createDecorator(new TableView(tableModel)).createPanel(); + TableView table = new TableView(tableModel); + TableUtil.setupCheckboxColumn(table.getColumnModel().getColumn(0)); + + browsersTable = ToolbarDecorator.createDecorator(table).createPanel(); } @NotNull