All Downloads are FREE. Search and download functionalities are using the official Maven repository.

alice.tuprologx.ide.PrologTable Maven / Gradle / Ivy

package alice.tuprologx.ide;

import javax.swing.*;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;

@SuppressWarnings("serial")
public class PrologTable
        extends JTable {
    private boolean[] isExpandedCellArray;
    private boolean[] isBorderedCellArray;

    public PrologTable() {
        super();
    }

    public PrologTable(Object[][] rowData, Object[] columnNames) {
        super(rowData, columnNames);
        initArrayisExpandedCellArray();
        initArrayisBorderedCellArray();
        prepareCellRenderer();
    }

    public PrologTable(Object[][] rowData, Object[] columnNames, boolean[] isBorderedCellArray) {
        super(rowData, columnNames);
        initArrayisExpandedCellArray();
        this.isBorderedCellArray = isBorderedCellArray;
        prepareCellRenderer();
    }

    public PrologTable(TableModel model) {
        super(model);
        initArrayisExpandedCellArray();
        initArrayisBorderedCellArray();
        prepareCellRenderer();
    }

    public PrologTable(TableModel model, boolean[] isBorderedCellArray) {
        super(model);
        initArrayisExpandedCellArray();
        this.isBorderedCellArray = isBorderedCellArray;
        prepareCellRenderer();
    }

    private void prepareCellRenderer() {
        //wrap text
        TableColumnModel columnModel = getColumnModel();
        TextAreaRenderer textAreaRenderer = new TextAreaRenderer(isExpandedCellArray, isBorderedCellArray);
        for (int i = 0; i < columnModel.getColumnCount(); i++) {
            columnModel.getColumn(i).setCellRenderer(textAreaRenderer);
        }
    }

    private void initArrayisExpandedCellArray() {
        isExpandedCellArray = new boolean[getRowCount()];
        for (int j = 0; j < getRowCount(); j++) {
            isExpandedCellArray[j] = false;
        }
    }

    private void initArrayisBorderedCellArray() {
        isBorderedCellArray = new boolean[getRowCount()];
        for (int j = 0; j < getRowCount(); j++) {
            isBorderedCellArray[j] = false;
        }
    }

    public void changeRowStatus(int row) {
        isExpandedCellArray[row] = !isExpandedCellArray[row];
    }

    public boolean[] getIsExpandedCellArray() {
        return isExpandedCellArray;
    }

    public void setIsExpandedCellArray(boolean[] isExpandedCellArray) {
        this.isExpandedCellArray = isExpandedCellArray;
        prepareCellRenderer();
    }

    public boolean[] getIsBorderedCellArray() {
        return isBorderedCellArray;
    }

    public void setIsBorderedCellArray(boolean[] isBorderedCellArray) {
        this.isBorderedCellArray = isBorderedCellArray;
        prepareCellRenderer();
    }

    //cells are enabled, but not editable

    public boolean isCellEditable(int row, int column) {
        return false;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy