package pbsplugin.fixedTable.veiw;

import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCComponent;
import com.ulcjava.base.application.*;
//import com.ulcjava.base.application.table.*;
import com.ulcjava.base.application.util.Color;
import com.ulcjava.base.client.UITable;
import com.ulcjava.base.client.UIScrollPane;
import com.ulcjava.base.development.DevelopmentRunner;
import com.ulcjava.base.shared.internal.Anything;
import com.ulcjava.environment.applet.application.ULCAppletPane;
import pbsplugin.sortedAndFixedTable.model.SortedTableModel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;


public class UIFixedColumnsTable extends UIScrollPane {
  public UIFixedColumnsTable() {
  }
  public void restoreState(Anything args) {
    super.restoreState(args);
    UITable rowHeader = (UITable) getSession().getManaged(UITable.class,
        args.get("rowHeader"));
    UITable contentTable = (UITable) getSession().getManaged(UITable.class,
        args.get("contentTable"));

    JTable mainTable = (JTable) contentTable.getBasicComponent();
    JTable rowHeaderTable=(JTable)rowHeader.getBasicComponent();
    mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    JScrollPane scrollPane = (JScrollPane) getComponent();

    rowHeaderTable.setSelectionModel(mainTable.getSelectionModel());

    scrollPane.setViewportView(mainTable);
    scrollPane.setRowHeaderView(rowHeaderTable);
    scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,rowHeaderTable.getTableHeader());

    int rowHeaderWidth = 0;
    for (int i = 0; i < rowHeaderTable.getColumnCount(); i++) {
      TableColumn basicColumn = rowHeaderTable.getColumnModel().getColumn(i);
      rowHeaderWidth += basicColumn.getPreferredWidth();
    }

    // height is not accounted by scroll pane layout

    Dimension preferredSize = new Dimension(rowHeaderWidth, -1);
    rowHeaderTable.setMinimumSize(preferredSize);
    rowHeaderTable.setMinimumSize(preferredSize);
    rowHeaderTable.setPreferredSize(preferredSize);

    scrollPane.getRowHeader().setPreferredSize(preferredSize);
  }



}