package com.limegroup.gnutella.gui.search;

import com.limegroup.gnutella.gui.tables.DataLineModel;
import com.limegroup.gnutella.gui.tables.DefaultColumnPreferenceHandler;
import com.limegroup.gnutella.gui.tables.LimeJTable;
import com.limegroup.gnutella.gui.tables.LimeTableColumn;

/**
 * Column preference handler for Search columns.
 *
 * Extends DefaultColumnPreferenceHandler to store/read data in memory
 * instead of to/from disk.
 */
final class SearchColumnPreferenceHandler
    extends DefaultColumnPreferenceHandler {
    
    SearchColumnPreferenceHandler(LimeJTable table) {
        super(table);
    }
    
    protected void setVisibility(LimeTableColumn col, boolean vis) {
        ((SearchColumn)col).setCurrentVisibility(vis);
    }

    protected void setOrder(LimeTableColumn col, int order) {
        ((SearchColumn)col).setCurrentOrder(order);
    }

    protected void setWidth(LimeTableColumn col, int width) {
        ((SearchColumn)col).setCurrentWidth(width);
    }

    protected boolean getVisibility(LimeTableColumn col) {
        return ((SearchColumn)col).getCurrentVisibility();
    }

    protected int getOrder(LimeTableColumn col) {
        return ((SearchColumn)col).getCurrentOrder();
    }

    protected int getWidth(LimeTableColumn col) {
        return ((SearchColumn)col).getCurrentWidth();
    }
    
    protected boolean isDefaultWidth(LimeTableColumn col) {
        return ((SearchColumn)col).getCurrentWidth() ==
                col.getDefaultWidth();
    }

    protected boolean isDefaultOrder(LimeTableColumn col) {
        return ((SearchColumn)col).getCurrentOrder() ==
                col.getDefaultOrder();
    }

    protected boolean isDefaultVisibility(LimeTableColumn col) {
        return ((SearchColumn)col).getCurrentOrder() ==
                col.getDefaultOrder();
    }
    
    protected void save() {
        DataLineModel dlm = (DataLineModel)table.getModel();
        for(int i = 0; i < dlm.getColumnCount(); i++) {
            LimeTableColumn ltc = dlm.getTableColumn(i);
            super.setVisibility(ltc, getVisibility(ltc));
            super.setOrder(ltc, getOrder(ltc));
            super.setWidth(ltc, getWidth(ltc));
        }
        super.save();
    }
}
    