// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dataprofiler.core.ui; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Item; import org.talend.dataprofiler.core.ImageLib; /** * The class extends SelectionAdapter can be used on column sorting for StructuredViewer. */ public class ColumnSortListener extends SelectionAdapter { Image ascImage = ImageLib.getImage(ImageLib.ASC_SORT); //$NON-NLS-1$ Image descImage = ImageLib.getImage(ImageLib.DESC_SORT); //$NON-NLS-1$ StructuredViewer viewer; ViewerSorter[][] sorters = null; boolean flag = false; int i = 0; Item[] columns; public ColumnSortListener(Item[] t, int columnIndex, StructuredViewer stViewer, ViewerSorter[][] viewerSorter) { i = columnIndex; columns = t; this.viewer = stViewer; this.sorters = viewerSorter; } public void setSorter(ViewerSorter[][] viewerSorter) { this.sorters = viewerSorter; } /* * (non-Javadoc) * * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) */ public void widgetSelected(SelectionEvent e) { flag = !flag; for (int j = 0; j < columns.length; j++) { if (j == i) { if (flag) { columns[j].setImage(ascImage); } else { columns[j].setImage(descImage); } } else { columns[j].setImage(null); } } viewer.setSorter(flag ? sorters[i][0] : sorters[i][1]); } public void dispose() { ascImage.dispose(); descImage.dispose(); } }