franta-hg@0: package cz.frantovo.gui.tabulky;
franta-hg@0:
franta-hg@0:
franta-hg@0: import java.awt.Point;
franta-hg@0: import java.awt.event.MouseEvent;
franta-hg@0:
franta-hg@0: import javax.swing.ImageIcon;
franta-hg@0: import javax.swing.table.TableModel;
franta-hg@0:
franta-hg@0: /**
franta-hg@0: * Tahle t��da umo��uje jednoduch�m zp�sobem p�idat va�im tabulk�m funkci
franta-hg@0: * �azen�. Sta�� ve va�� t��d� nahradit:
franta-hg@0: * "import javax.swing.JTable;"
franta-hg@0: * t�mto importem: " import cz.frantovo.gui.tabulky.JTable;
franta-hg@0: *
franta-hg@0: * Pomoc� kl�vesy ctrl jde �adit podle v�ce sloupc�"
franta-hg@0: *
franta-hg@0: * Tak� p�id�v� funkci zobrazov�n� tooltipu (zobrazuje obsah bu�ky)
franta-hg@0: *
franta-hg@0: * Proto�e t��d�c� model a skute�n� model obsahuj� ��dky v jin�m po�ad�,
franta-hg@0: * je pot�eba p�epo��tat index z�skan� metodou getSelectedRow() na index ve skute�n�m modelu
franta-hg@0: *
franta-hg@0: * k tomu slou�� tento postup:
franta-hg@0: * int r = jTable1.getSelectedRow();
franta-hg@0: * int rr = ((TableSorterModel)tabulka.getModel()).modelIndex(r);
franta-hg@0: *
franta-hg@0: * rr je potom index ��dku ve skute�n�m modelu. *
franta-hg@0: *
franta-hg@0: * @author František Kučera
franta-hg@0: */
franta-hg@0: public class JTable extends javax.swing.JTable {
franta-hg@0:
franta-hg@0: private static final long serialVersionUID = -5133441062459764995L;
franta-hg@0:
franta-hg@0: private TableSorterModel tableSorterModel;
franta-hg@0:
franta-hg@0: private TableModel realTableModel;
franta-hg@0:
franta-hg@0: private boolean showTooltips = false;
franta-hg@0:
franta-hg@0: public boolean isShowTooltips ()
franta-hg@0: {
franta-hg@0: return showTooltips;
franta-hg@0: }
franta-hg@0:
franta-hg@0: /** Nastavuje, zda se maj� zobrazovat tooltipy zobrazuj�c� obsah bu�ky */
franta-hg@0: public void setShowTooltips (boolean showTooltips)
franta-hg@0: {
franta-hg@0: this.showTooltips = showTooltips;
franta-hg@0: }
franta-hg@0:
franta-hg@0: /**
franta-hg@0: * Nastav� TableModel a zabal� ho do TableSorterModelu, tabulka t�m
franta-hg@0: * z�sk� schopnost �azen� ��dk�
franta-hg@0: */
franta-hg@0: @Override
franta-hg@0: public void setModel (TableModel dataModel)
franta-hg@0: {
franta-hg@0: realTableModel = dataModel;
franta-hg@0: tableSorterModel = new TableSorterModel(dataModel);
franta-hg@0:
franta-hg@0: tableSorterModel.setTableHeader(getTableHeader());
franta-hg@0:
franta-hg@0: super.setModel(tableSorterModel);
franta-hg@0: }
franta-hg@0:
franta-hg@0: /**
franta-hg@0: * @return TableModel, kter� obsahuje data. Nen� tedy zabalen do
franta-hg@0: * TableSorterModelu
franta-hg@0: */
franta-hg@0: public TableModel getRealTableModel ()
franta-hg@0: {
franta-hg@0: return realTableModel;
franta-hg@0: }
franta-hg@0:
franta-hg@0: /**
franta-hg@0: * @return TableSorterModel, kter� obaluje skute�n� TableModel, kter�
franta-hg@0: * obsahuje data. TableSorterModel slou�� pouze k �azen� polo�ek
franta-hg@0: */
franta-hg@0: @Override
franta-hg@0: public TableModel getModel ()
franta-hg@0: {
franta-hg@0: return super.getModel();
franta-hg@0: }
franta-hg@0:
franta-hg@0: /**
franta-hg@0: * Pokud je nastaveno showTooltips, zobrazuje v tooltipu obsah bu�ky pod
franta-hg@0: * my�� (hod� se, pokud je obsah bu�ky p��li� dlouh�). Pokud bu�ka
franta-hg@0: * obsahuje ImageIcon, pak tooltip zobrazuje ImageIcon.getDescription()
franta-hg@0: */
franta-hg@0: @Override
franta-hg@0: public String getToolTipText (MouseEvent event)
franta-hg@0: {
franta-hg@0: if (showTooltips) {
franta-hg@0: Point p = event.getPoint();
franta-hg@0: int col = columnAtPoint(p);
franta-hg@0: int rw = rowAtPoint(p);
franta-hg@0: if (col >= 0 && rw >= 0) {
franta-hg@0: Object o = getValueAt(rw,
franta-hg@0: col);
franta-hg@0: if (o != null) {
franta-hg@0: if (o instanceof ImageIcon) {
franta-hg@0: return ((ImageIcon) o).getDescription();
franta-hg@0: } else {
franta-hg@0: return o.toString();
franta-hg@0: }
franta-hg@0: }
franta-hg@0: }
franta-hg@0: return super.getToolTipText();
franta-hg@0: } else {
franta-hg@0: return super.getToolTipText();
franta-hg@0: }
franta-hg@0: }
franta-hg@0:
franta-hg@0: }