package org.geogebra.desktop.cas.view; import javax.swing.BorderFactory; import javax.swing.JList; import javax.swing.ListSelectionModel; import org.geogebra.common.cas.view.RowHeader; import org.geogebra.common.main.GeoGebraColorConstants; import org.geogebra.desktop.awt.GColorD; import org.geogebra.desktop.main.AppD; /** * Row headers for CAS cells */ public class RowHeaderD extends JList implements RowHeader { private static final long serialVersionUID = 1L; /** * Width of row headers */ public static final int ROW_HEADER_WIDTH = 50; private RowHeaderRenderer renderer; /** * @param table * CAS table * @param multipleIntervalSelection * whether multiple intervals should be possible to select * @param lsModel * selection model */ public RowHeaderD(CASTableD table, boolean multipleIntervalSelection, ListSelectionModel lsModel, AppD app) { setModel(new RowHeaderListModel(table)); setSelectionModel(lsModel); if (multipleIntervalSelection) { setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); } else { setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); } setFixedCellWidth(ROW_HEADER_WIDTH); setFocusable(true); setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, GColorD.getAwtColor(GeoGebraColorConstants.TABLE_GRID_COLOR))); // renderer renderer = new RowHeaderRenderer(table); setCellRenderer(renderer); // listener RowHeaderListener rhl = new RowHeaderListener(table, this, app); addMouseListener(rhl); addMouseMotionListener(rhl); addKeyListener(rhl); // this.getSelectionModel().addListSelectionListener(rhl); table.getSelectionModel().setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // table.getSelectionModel().addListSelectionListener(this); table.setRowSelectionAllowed(true); } public void updateIcons() { renderer.updateIcons(); } }