⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sorttablecolumnhandler.java

📁 ULCeclipse的插件集成的swing的框架
💻 JAVA
字号:
package com.canoo.ulc.onlineshop.controller;

import com.canoo.ulc.onlineshop.model.SortedTableModel;
import com.canoo.ulc.onlineshop.util.Constants;
import com.canoo.ulc.onlineshop.util.IconFactory;
import com.ulcjava.base.application.ULCListSelectionModel;
import com.ulcjava.base.application.event.ActionEvent;
import com.ulcjava.base.application.event.IActionListener;
import com.ulcjava.base.application.table.DefaultTableHeaderCellRenderer;
import com.ulcjava.base.application.table.ULCTableColumn;

import java.io.Serializable;

/**
 * This class is an example handler for sorting table columns and displaying proper icons in the table header.
 * <p/>
 * Note: It is assumed that the installed table header renderers are <code>DefaultTableHeaderCellRenderer</code>.
 *
 * @author Etienne.Studer@canoo.com
 */
public class SortTableColumnHandler implements IActionListener, Serializable {
    private SortedTableModel fTableModelSorter;
    private ULCListSelectionModel fSelectionModel;
    private ULCTableColumn fLastSortedColumn;


    public SortTableColumnHandler(SortedTableModel tableModelSorter, ULCListSelectionModel selectionModel) {
        this(tableModelSorter, selectionModel, null);
    }


    public SortTableColumnHandler(SortedTableModel tableModelSorter, ULCListSelectionModel selectionModel, ULCTableColumn lastSortedColumn) {
        fTableModelSorter = tableModelSorter;
        fSelectionModel = selectionModel;
        fLastSortedColumn = lastSortedColumn;
    }


    public void actionPerformed(ActionEvent event) {
        ULCTableColumn column = (ULCTableColumn)event.getSource();
        int[] realRows = getSelectedRows();
        sortTableData(column);
        setSelectedRows(realRows);
        updateHeaderIcons(column);
    }


    private void sortTableData(ULCTableColumn column) {
        if (fLastSortedColumn != column) {
            fTableModelSorter.sort(new int[]{column.getModelIndex()}, true);
        } else {
            fTableModelSorter.sort(!fTableModelSorter.isAscending());
        }
    }


    private void updateHeaderIcons(ULCTableColumn newColumn) {
        if (fLastSortedColumn != null) {
            DefaultTableHeaderCellRenderer renderer = getHeaderRenderer(fLastSortedColumn);
            renderer.setIcon(null);
            fLastSortedColumn.setHeaderRenderer(renderer);
        }

        DefaultTableHeaderCellRenderer renderer = getHeaderRenderer(newColumn);
        renderer.setIcon(IconFactory.getIcon(fTableModelSorter.isAscending() ? Constants.UP_ICON : Constants.DOWN_ICON));
        newColumn.setHeaderRenderer(renderer);

        fLastSortedColumn = newColumn;
    }


    private DefaultTableHeaderCellRenderer getHeaderRenderer(ULCTableColumn column) {
        DefaultTableHeaderCellRenderer renderer = (DefaultTableHeaderCellRenderer)column.getHeaderRenderer();
        if (renderer == null) {
            return new DefaultTableHeaderCellRenderer();
        }
        return renderer;
    }


    private int[] getSelectedRows() {
        int[] mappedRows = fSelectionModel.getSelectedIndices();
        int[] realRows = new int[mappedRows.length];
        for (int i = 0; i < mappedRows.length; i++) {
            realRows[i] = fTableModelSorter.getRealRow(mappedRows[i]);
        }
        return realRows;
    }


    private void setSelectedRows(int[] realRows) {
        for (int i = 0; i < realRows.length; i++) {
            int mappedRow = fTableModelSorter.getMappedRow(realRows[i]);
            fSelectionModel.addSelectionInterval(mappedRow, mappedRow);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -