/*
 * @(#)CustomAutoFilterTableHearerUIDelegate.java 8/14/2012
 *
 * Copyright 2002 - 2012 JIDE Software Inc. All rights reserved.
 */

import com.jidesoft.combobox.ListChooserPanel;
import com.jidesoft.combobox.ListExComboBox;
import com.jidesoft.combobox.PopupPanel;
import com.jidesoft.converter.ConverterContext;
import com.jidesoft.filter.CustomFilterEditor;
import com.jidesoft.filter.FilterFactory;
import com.jidesoft.filter.FilterFactoryManager;
import com.jidesoft.grid.FilterEditor;
import com.jidesoft.grouper.ObjectGrouper;
import com.jidesoft.plaf.basic.BasicAutoFilterTableHeaderUIDelegate;

import javax.swing.*;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableModel;

public class CustomAutoFilterTableHearerUIDelegate extends BasicAutoFilterTableHeaderUIDelegate {
    ListExComboBox _conditions;

    public CustomAutoFilterTableHearerUIDelegate(JTableHeader header, CellRendererPane rendererPane) {
        super(header, rendererPane);    //To change body of overridden methods use File | Settings | File Templates.
    }

    @Override
    protected PopupPanel createListChooserPanel(TableModel tableModel, int columnIndex, Object[] possibleValues, ObjectGrouper objectGrouper, DefaultComboBoxModel comboBoxModel) {
        ListChooserPanel listChooserPanel = (ListChooserPanel)super.createListChooserPanel(tableModel, columnIndex, possibleValues, objectGrouper, comboBoxModel);
        DefaultComboBoxModel model = (DefaultComboBoxModel) listChooserPanel.getList().getModel();
        for (int i = 0; i < model.getSize(); i++) {
            if (model.getElementAt(i) instanceof String && model.getElementAt(i).equals("(Custom...)")) {
                model.removeElementAt(i);
                break;
            }
        }
        return listChooserPanel;    //To change body of overridden methods use File | Settings | File Templates.
    }

    /*
    @Override
    protected FilterEditor createCustomFilterEditor(FilterFactoryManager filterFactoryManager, Class<?> type, ConverterContext converterContext, Object[] possibleValues) {
        FilterEditor customFilterEditor;
        customFilterEditor = new CustomFilterEditor(filterFactoryManager, type, converterContext, possibleValues) {
            @Override
            protected JComponent createConditionComboBox() {
                _conditions = (ListExComboBox) super.createConditionComboBox();
                return _conditions;
            }
        };
        if (_conditions != null) {
            for (int i = 0; i < _conditions.getModel().getSize(); i++) {
                FilterFactory filterFactory = (FilterFactory) _conditions.getModel().getElementAt(i);
                if (filterFactory.getName().equalsIgnoreCase("contain")) {
                    _conditions.getModel().setSelectedItem(filterFactory);
                    break;
                }
            }
        }
        return customFilterEditor;
    }
*/
}
