Search in sources :

Example 26 with TableColumn

use of javax.swing.table.TableColumn in project intellij-community by JetBrains.

the class CompoundRendererConfigurable method createChildrenListEditor.

private JComponent createChildrenListEditor(JavaDebuggerEditorsProvider editorsProvider) {
    final MyTableModel tableModel = new MyTableModel();
    myTable = new JBTable(tableModel);
    myListChildrenEditor = new XDebuggerExpressionEditor(myProject, editorsProvider, "NamedChildrenConfigurable", null, XExpressionImpl.EMPTY_EXPRESSION, false, false, false);
    JComponent editorComponent = myListChildrenEditor.getComponent();
    AbstractTableCellEditor editor = new AbstractTableCellEditor() {

        @Override
        public Object getCellEditorValue() {
            return TextWithImportsImpl.fromXExpression(myListChildrenEditor.getExpression());
        }

        @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            myListChildrenEditor.setExpression(TextWithImportsImpl.toXExpression((TextWithImports) value));
            return editorComponent;
        }
    };
    editorComponent.registerKeyboardAction(e -> editor.stopCellEditing(), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    editorComponent.registerKeyboardAction(e -> editor.cancelCellEditing(), KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    TableColumn exprColumn = myTable.getColumnModel().getColumn(EXPRESSION_TABLE_COLUMN);
    exprColumn.setCellEditor(editor);
    exprColumn.setCellRenderer(new DefaultTableCellRenderer() {

        @NotNull
        @Override
        public Component getTableCellRendererComponent(@NotNull JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            final TextWithImports textWithImports = (TextWithImports) value;
            final String text = (textWithImports != null) ? textWithImports.getText() : "";
            return super.getTableCellRendererComponent(table, text, isSelected, hasFocus, row, column);
        }
    });
    return ToolbarDecorator.createDecorator(myTable).setAddAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            tableModel.addRow("", DebuggerUtils.getInstance().createExpressionWithImports(""));
        }
    }).setRemoveAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            int selectedRow = myTable.getSelectedRow();
            if (selectedRow >= 0 && selectedRow < myTable.getRowCount()) {
                getTableModel().removeRow(selectedRow);
            }
        }
    }).setMoveUpAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            TableUtil.moveSelectedItemsUp(myTable);
        }
    }).setMoveDownAction(new AnActionButtonRunnable() {

        @Override
        public void run(AnActionButton button) {
            TableUtil.moveSelectedItemsDown(myTable);
        }
    }).createPanel();
}
Also used : XDebuggerExpressionEditor(com.intellij.xdebugger.impl.ui.XDebuggerExpressionEditor) JBTable(com.intellij.ui.table.JBTable) TableColumn(javax.swing.table.TableColumn) NotNull(org.jetbrains.annotations.NotNull) DefaultTableCellRenderer(javax.swing.table.DefaultTableCellRenderer) AbstractTableCellEditor(com.intellij.util.ui.AbstractTableCellEditor) TextWithImports(com.intellij.debugger.engine.evaluation.TextWithImports)

Example 27 with TableColumn

use of javax.swing.table.TableColumn in project Botnak by Gocnak.

the class BaseTableHeaderUI method getHeaderRenderer.

protected Component getHeaderRenderer(int col) {
    if ((header == null) || (header.getTable() == null)) {
        return null;
    }
    TableColumn tabCol = header.getColumnModel().getColumn(col);
    TableCellRenderer renderer = tabCol.getHeaderRenderer();
    if (renderer == null) {
        renderer = header.getDefaultRenderer();
    }
    return renderer.getTableCellRendererComponent(header.getTable(), tabCol.getHeaderValue(), false, false, -1, col);
}
Also used : TableCellRenderer(javax.swing.table.TableCellRenderer) DefaultTableCellRenderer(javax.swing.table.DefaultTableCellRenderer) TableColumn(javax.swing.table.TableColumn)

Example 28 with TableColumn

use of javax.swing.table.TableColumn in project Botnak by Gocnak.

the class BaseTableHeaderUI method getPreferredSize.

/**
     * Return the preferred size of the header. The preferred height is the maximum of the preferred heights of all of
     * the components provided by the header renderers. The preferred width is the sum of the preferred widths of each
     * column (plus inter-cell spacing).
     */
public Dimension getPreferredSize(JComponent c) {
    if ((header == null) || (header.getTable() == null)) {
        return new Dimension(0, 0);
    }
    long width = 0;
    Enumeration enumeration = header.getColumnModel().getColumns();
    while (enumeration.hasMoreElements()) {
        TableColumn aColumn = (TableColumn) enumeration.nextElement();
        width = width + aColumn.getPreferredWidth();
    }
    if (width > Integer.MAX_VALUE) {
        width = Integer.MAX_VALUE;
    }
    return new Dimension((int) width, getHeaderHeight());
}
Also used : Enumeration(java.util.Enumeration) TableColumn(javax.swing.table.TableColumn)

Example 29 with TableColumn

use of javax.swing.table.TableColumn in project Botnak by Gocnak.

the class BaseTableHeaderUI method getHeaderHeight.

private int getHeaderHeight() {
    if ((header == null) || (header.getTable() == null)) {
        return 0;
    }
    int height = 0;
    boolean accomodatedDefault = false;
    TableColumnModel columnModel = header.getColumnModel();
    for (int column = 0; column < columnModel.getColumnCount(); column++) {
        TableColumn aColumn = columnModel.getColumn(column);
        boolean isDefault = (aColumn.getHeaderRenderer() == null);
        if (!isDefault || !accomodatedDefault) {
            Component comp = getHeaderRenderer(column);
            int rendererHeight = comp.getPreferredSize().height;
            height = Math.max(height, rendererHeight);
            // it returns for a non-null/non-empty value.
            if (isDefault && rendererHeight > 0) {
                Object headerValue = aColumn.getHeaderValue();
                if (headerValue != null) {
                    headerValue = headerValue.toString();
                    if (headerValue != null && !headerValue.equals("")) {
                        accomodatedDefault = true;
                    }
                }
            }
        }
    }
    return height + 2;
}
Also used : TableColumnModel(javax.swing.table.TableColumnModel) TableColumn(javax.swing.table.TableColumn)

Example 30 with TableColumn

use of javax.swing.table.TableColumn in project ACS by ACS-Community.

the class AlarmDetailTable method setTitleColumnSize.

/**
	 * Calculate the width of the first column to be at least wide 
	 * enough to contain the titles in {@link RowTitles}.
	 * <P>
	 * The width of the column is the greatest between the width needed
	 * to show the title or the passed width
	 * 
	 * @param sz A vector of string (can be <code>null</code>)
	 * @return The width of the first column
	 */
private int setTitleColumnSize(Vector<String> strings) {
    BufferedImage bImg = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
    Graphics2D g2D = bImg.createGraphics();
    FontMetrics fm = g2D.getFontMetrics();
    int sz = 0;
    for (RowTitles row : RowTitles.values()) {
        if (sz < fm.stringWidth(row.title)) {
            sz = fm.stringWidth(row.title);
        }
    }
    if (strings != null) {
        for (String str : strings) {
            if (sz < fm.stringWidth(str)) {
                sz = fm.stringWidth(str);
            }
        }
    }
    sz += 20;
    TableColumn col = getColumnModel().getColumn(0);
    col.setPreferredWidth(sz);
    col.setMinWidth(sz);
    col.setMaxWidth(sz);
    col.setWidth(sz);
    col.setResizable(false);
    col = getColumnModel().getColumn(1);
    col.setResizable(true);
    return sz;
}
Also used : FontMetrics(java.awt.FontMetrics) TableColumn(javax.swing.table.TableColumn) BufferedImage(java.awt.image.BufferedImage) Graphics2D(java.awt.Graphics2D)

Aggregations

TableColumn (javax.swing.table.TableColumn)215 TableColumnModel (javax.swing.table.TableColumnModel)66 JTable (javax.swing.JTable)44 JScrollPane (javax.swing.JScrollPane)37 JPanel (javax.swing.JPanel)31 TableCellRenderer (javax.swing.table.TableCellRenderer)30 BoxLayout (javax.swing.BoxLayout)25 JLabel (javax.swing.JLabel)24 Component (java.awt.Component)21 ActionEvent (java.awt.event.ActionEvent)20 FlowLayout (java.awt.FlowLayout)16 ActionListener (java.awt.event.ActionListener)16 DefaultCellEditor (javax.swing.DefaultCellEditor)16 JButton (javax.swing.JButton)16 DefaultTableCellRenderer (javax.swing.table.DefaultTableCellRenderer)15 JComboBox (javax.swing.JComboBox)14 Dimension (java.awt.Dimension)13 DefaultTableModel (javax.swing.table.DefaultTableModel)12 JTableHeader (javax.swing.table.JTableHeader)12 XTableColumnModel (jmri.util.swing.XTableColumnModel)12