Package test.comp

Source Code of test.comp.TestTableBase

/*
* TestTable.java
*
* Created on 6 de diciembre de 2006, 20:58
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package test.comp;

import org.itsnat.comp.button.normal.ItsNatHTMLButton;
import org.itsnat.core.html.ItsNatHTMLDocument;
import org.itsnat.core.event.ItsNatDOMStdEvent;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import org.itsnat.comp.ItsNatComponentManager;
import org.itsnat.comp.table.ItsNatTable;
import org.itsnat.comp.button.toggle.ItsNatHTMLInputCheckBox;
import org.w3c.dom.Element;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import test.shared.TestBaseHTMLDocument;
import test.shared.TestUtil;

/**
*
* @author jmarranz
*/
public class TestTableBase extends TestBaseHTMLDocument implements EventListener,TableModelListener,ListSelectionListener
{
    protected ItsNatTable comp;
    protected ItsNatHTMLButton addButton;
    protected ItsNatHTMLButton removeButton;
    protected ItsNatHTMLInputCheckBox joystickModeCheck;

    /**
     * Creates a new instance of TestTable
     */
    public TestTableBase(ItsNatHTMLDocument itsNatDoc)
    {
        super(itsNatDoc);
    }

    public void initTable(ItsNatTable comp,String addButtonId,String removeButtonId,String joystickCheckboxId)
    {
        this.comp = comp;

        DefaultTableModel dataModel = new DefaultTableModel();
        comp.setTableModel(dataModel);

        dataModel.addColumn("Column 1"); // Se a�ade al patr�n pues no hay filas
        dataModel.addColumn("Column 2"); // "
        dataModel.addRow(new String[]{"Item 1,1","Item 1,2"}); // Fila con dos columnas
        dataModel.addRow(new String[]{"Item 2,1","Item 2,2"}); // "
        dataModel.addColumn("Column 3",new String[]{"Item 1,3","Item 2,3"}); // A�ade una columna a las dos filas
        dataModel.addRow(new String[]{"Item 3,1","Item 3,2","Item 3,3"}); // Nueva fila con tres columnas
        TestUtil.checkError(dataModel.getColumnCount() == 3);
        TestUtil.checkError(dataModel.getRowCount() == 3);
        TestUtil.checkError(dataModel.getValueAt(2,2) != null);

        dataModel.moveRow(0,1,1); // Desplaza las dos primeras filas a ser las dos finales
        dataModel.moveRow(1,2,0); // Las deja como estaba

        dataModel.setColumnCount(5);
        TestUtil.checkError(dataModel.getColumnCount() == 5);

        dataModel.setColumnCount(3); // restauramos quitando las dos �ltimas
        TestUtil.checkError(dataModel.getColumnCount() == 3);

        dataModel.setRowCount(5);
        TestUtil.checkError(dataModel.getRowCount() == 5);

        dataModel.setRowCount(3); // restauramos quitando las dos �ltimas
        TestUtil.checkError(dataModel.getRowCount() == 3);

        //comp.setRowSelectionModel(null);
        //comp.setColumnSelectionModel(null);

        ListSelectionModel rowSelModel = comp.getRowSelectionModel();
        ListSelectionModel columnSelModel = comp.getColumnSelectionModel();

        rowSelModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // Ya es esto por defecto pero para que se vea
        columnSelModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // Ya es esto por defecto pero para que se vea

        //comp.setRowSelectionAllowed(false);
        //comp.setColumnSelectionAllowed(true);
        comp.setCellSelectionEnabled(true);

        rowSelModel.addSelectionInterval(1,1);
        columnSelModel.addSelectionInterval(1,1);

        rowSelModel.addListSelectionListener(this);
        columnSelModel.addListSelectionListener(this);
        dataModel.addTableModelListener(this);


        comp.addEventListener("click",this);

        decorateSelection();

        ItsNatComponentManager componentMgr = itsNatDoc.getItsNatComponentManager();

        this.addButton = (ItsNatHTMLButton)componentMgr.findItsNatComponentById(addButtonId);
        addButton.addEventListener("click",this);

        this.removeButton = (ItsNatHTMLButton)componentMgr.findItsNatComponentById(removeButtonId);
        removeButton.addEventListener("click",this);

        this.joystickModeCheck = (ItsNatHTMLInputCheckBox)componentMgr.findItsNatComponentById(joystickCheckboxId);
        joystickModeCheck.addEventListener("click",this);
        joystickModeCheck.setSelected(itsNatDoc.isJoystickMode());
    }

    public void decorateSelection()
    {
        int rowCount = comp.getTableModel().getRowCount();
        for(int i = 0; i < rowCount; i++)
        {
            decorateRowSelection(i);
        }

        int columnCount = comp.getTableModel().getColumnCount();
        for(int i = 0; i < columnCount; i++)
        {
            decorateColumnSelection(i);
        }
    }

    public void decorateRowSelection(int row)
    {
        int cols = comp.getTableModel().getColumnCount();
        for(int i = 0; i < cols; i++)
        {
            Element cellContentElem = comp.getItsNatTableUI().getCellContentElementAt(row,i);
            if (cellContentElem == null) continue;
            decorateCellSelection(row,i,cellContentElem);
        }
    }

    public void decorateColumnSelection(int column)
    {
        int rows = comp.getTableModel().getRowCount();
        for(int i = 0; i < rows; i++)
        {
            Element cellContentElem = comp.getItsNatTableUI().getCellContentElementAt(i,column);
            decorateCellSelection(i,column,cellContentElem);
        }
    }

    public void decorateCellSelection(int row,int column,Element cell)
    {
        boolean selected = comp.isCellSelected(row,column); // Es el que decide en �ltima instancia si se est� seleccionado o no teniendo en cuenta los modos de selecci�n
        TestSelectionUtil.decorateSelection(cell,selected);
    }

    public void handleEvent(Event evt)
    {
        if (evt.getCurrentTarget() == addButton.getElement())
        {
            DefaultTableModel dataModel = (DefaultTableModel)comp.getTableModel();
            int rows = dataModel.getRowCount();
            rows++;
            // dataModel.addRow(new String[]{ new Integer(rows).toString(),new Integer(rows+1).toString(),new Integer(rows+2).toString()});  // Para ver si se manifiesta en el navegador y genera un evento TableDataEvent
            dataModel.insertRow(0,new String[]{ new Integer(rows).toString(),new Integer(rows+1).toString(),new Integer(rows+2).toString()})// Para ver si se manifiesta en el navegador y genera un evento TableDataEvent
        }
        else if (evt.getCurrentTarget() == removeButton.getElement())
        {
            DefaultTableModel dataModel = (DefaultTableModel)comp.getTableModel();
            int rows = dataModel.getRowCount();
            if (rows > 0)
            {
                // dataModel.removeRow(rows - 1);
                dataModel.removeRow(0);
            }
        }
        else if (evt.getCurrentTarget() == joystickModeCheck.getElement())
            comp.setJoystickMode(joystickModeCheck.isSelected());
        else
        {
            ItsNatDOMStdEvent itsNatEvent = (ItsNatDOMStdEvent)evt;
            ItsNatHTMLDocument itsNatDoc = (ItsNatHTMLDocument)itsNatEvent.getItsNatDocument();

            int[] selectedRows = comp.getSelectedRows();
            int[] selectedCols = comp.getSelectedColumns();

            outText("OK " + evt.getType() + " (rows.sel. " + selectedRows.length + ", cols.sel. " + selectedCols.length + " ) "); // Para que se vea
        }
    }

    public void valueChanged(ListSelectionEvent e)
    {
        ListSelectionModel selModel = (ListSelectionModel)e.getSource();
        if (selModel.getValueIsAdjusting())
            return;

        int first = e.getFirstIndex();
        int last = e.getLastIndex();

        boolean isRow = (selModel == comp.getRowSelectionModel());
        boolean isCol = (selModel == comp.getColumnSelectionModel());
        String rowOrColStr;
        if (isRow) rowOrColStr = "row";
        else rowOrColStr = "col";

        String msg = "OK ";
        for(int i = first; i <= last; i++)
        {
            boolean selected = selModel.isSelectedIndex(i);
            if (selected)
                msg += "(sel " + rowOrColStr + " " + i + ") ";
            else
                msg += "(desel " + rowOrColStr + " " + i + ") ";
        }

        outText(msg);

        if (isRow)
        {
            for(int i = first; i <= last; i++)
                decorateRowSelection(i);
        }
        else if (isCol)
        {
            for(int i = first; i <= last; i++)
                decorateColumnSelection(i);
        }
    }

    public void tableChanged(TableModelEvent e)
    {
        // HACER
    }
}
TOP

Related Classes of test.comp.TestTableBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.