X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.utils.ui.workbench%2Fsrc%2Forg%2Fsimantics%2Futils%2Fui%2Fworkbench%2Fui%2FTableColumnSorter.java;h=c3fdb5b9cc5e98e9d3bb2403720a9ccf8bbc7b47;hb=e18cdb01663e3ebdae25e66bf158348bbf823a07;hp=2ce76b50144c25e59f4cce5e28d99acb77a6be4b;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/ui/TableColumnSorter.java b/bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/ui/TableColumnSorter.java index 2ce76b501..c3fdb5b9c 100644 --- a/bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/ui/TableColumnSorter.java +++ b/bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/ui/TableColumnSorter.java @@ -1,236 +1,236 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management - * in Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -package org.simantics.utils.ui.workbench.ui; - -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.ui.IMemento; - -/** - * This class adds column sorting functionality to SWT Table widget. - *

- * Attach this Sorter after you have created all columns. - *

- * Usage: TableColumnSorter.attachTableColumnSorter(myTable); - * - * @author Toni Kalajainen - */ -public class TableColumnSorter { - - /** The table */ - protected final TableViewer viewer; - - /** the sorter */ - protected final ColumnSorter sorter; - - /** column specific comparators*/ - protected Map> columnComparators = - new HashMap>(); - - public static TableColumnSorter attachTableColumnSorter(TableViewer viewer) { - return new TableColumnSorter(viewer); - } - - public static void unattachTableColumnSorter(TableViewer viewer) { - viewer.setSorter(null); - } - - public void setColumnComparator(int index, Comparator comparator) - { - columnComparators.put(index, comparator); - viewer.refresh(); - } - - private final static String PRI_ASC = "PriAsc"; - private final static String SEC_ASC = "SecAsc"; - private final static String PRI_IND = "PriInd"; - private final static String SEC_IND = "SecInd"; - - public void saveState(String id, IMemento memento) { - memento.putInteger(id+PRI_ASC, sorter.isAscending()?1:0); - memento.putInteger(id+SEC_ASC, sorter.isSecondaryAscending()?1:0); - memento.putInteger(id+PRI_IND, sorter.getIndex()); - memento.putInteger(id+SEC_IND, sorter.getSecondaryIndex()); - } - - public void restoreState(String id, IMemento memento) { - if (!hasState(id, memento)) return; - - sorter.setAscending( memento.getInteger(id+PRI_ASC)==1 ); - sorter.setSecondaryAscending( memento.getInteger(id+SEC_ASC)==1 ); - sorter.setIndex( memento.getInteger(id+PRI_IND) ); - sorter.setSecondaryIndex( memento.getInteger(id+SEC_IND) ); - - viewer.refresh(); - } - - public boolean hasState(String id, IMemento memento) { - return (memento.getInteger(id+PRI_ASC)!=null) && - (memento.getInteger(id+SEC_ASC)!=null) && - (memento.getInteger(id+PRI_IND)!=null) && - (memento.getInteger(id+SEC_IND)!=null); - } - - public void setColumnAscending(int index) - { - sorter.setIndex(index); - sorter.setAscending(true); - viewer.refresh(); - } - - private TableColumnSorter(TableViewer viewer) { - this.viewer = viewer; - this.sorter = new ColumnSorter(); - - // Attach columns - TableColumn columns[] = viewer.getTable().getColumns(); - for(int i=0; i=0)) { - text1 = tlp.getColumnText(e1, secondaryColumnIndex); - text2 = tlp.getColumnText(e2, secondaryColumnIndex); - if (text1==null) text1=""; - if (text2==null) text2=""; - if (!caseSensitive) { - text1 = text1.toLowerCase(); - text2 = text2.toLowerCase(); - } - result = compare(secondaryColumnIndex, text1, text2, e1, e2); - - if (!secondaryAscending) return -result; - } - - return result; - } - - public boolean isCaseSensitive() { - return caseSensitive; - } - - public void setCaseSensitive(boolean caseSensitive) { - this.caseSensitive = caseSensitive; - } - } - - public ColumnSorter getSorter() { - return sorter; - } - -} +/******************************************************************************* + * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.utils.ui.workbench.ui; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerSorter; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.ui.IMemento; + +/** + * This class adds column sorting functionality to SWT Table widget. + *

+ * Attach this Sorter after you have created all columns. + *

+ * Usage: TableColumnSorter.attachTableColumnSorter(myTable); + * + * @author Toni Kalajainen + */ +public class TableColumnSorter { + + /** The table */ + protected final TableViewer viewer; + + /** the sorter */ + protected final ColumnSorter sorter; + + /** column specific comparators*/ + protected Map> columnComparators = + new HashMap>(); + + public static TableColumnSorter attachTableColumnSorter(TableViewer viewer) { + return new TableColumnSorter(viewer); + } + + public static void unattachTableColumnSorter(TableViewer viewer) { + viewer.setSorter(null); + } + + public void setColumnComparator(int index, Comparator comparator) + { + columnComparators.put(index, comparator); + viewer.refresh(); + } + + private final static String PRI_ASC = "PriAsc"; + private final static String SEC_ASC = "SecAsc"; + private final static String PRI_IND = "PriInd"; + private final static String SEC_IND = "SecInd"; + + public void saveState(String id, IMemento memento) { + memento.putInteger(id+PRI_ASC, sorter.isAscending()?1:0); + memento.putInteger(id+SEC_ASC, sorter.isSecondaryAscending()?1:0); + memento.putInteger(id+PRI_IND, sorter.getIndex()); + memento.putInteger(id+SEC_IND, sorter.getSecondaryIndex()); + } + + public void restoreState(String id, IMemento memento) { + if (!hasState(id, memento)) return; + + sorter.setAscending( memento.getInteger(id+PRI_ASC)==1 ); + sorter.setSecondaryAscending( memento.getInteger(id+SEC_ASC)==1 ); + sorter.setIndex( memento.getInteger(id+PRI_IND) ); + sorter.setSecondaryIndex( memento.getInteger(id+SEC_IND) ); + + viewer.refresh(); + } + + public boolean hasState(String id, IMemento memento) { + return (memento.getInteger(id+PRI_ASC)!=null) && + (memento.getInteger(id+SEC_ASC)!=null) && + (memento.getInteger(id+PRI_IND)!=null) && + (memento.getInteger(id+SEC_IND)!=null); + } + + public void setColumnAscending(int index) + { + sorter.setIndex(index); + sorter.setAscending(true); + viewer.refresh(); + } + + private TableColumnSorter(TableViewer viewer) { + this.viewer = viewer; + this.sorter = new ColumnSorter(); + + // Attach columns + TableColumn columns[] = viewer.getTable().getColumns(); + for(int i=0; i=0)) { + text1 = tlp.getColumnText(e1, secondaryColumnIndex); + text2 = tlp.getColumnText(e2, secondaryColumnIndex); + if (text1==null) text1=""; + if (text2==null) text2=""; + if (!caseSensitive) { + text1 = text1.toLowerCase(); + text2 = text2.toLowerCase(); + } + result = compare(secondaryColumnIndex, text1, text2, e1, e2); + + if (!secondaryAscending) return -result; + } + + return result; + } + + public boolean isCaseSensitive() { + return caseSensitive; + } + + public void setCaseSensitive(boolean caseSensitive) { + this.caseSensitive = caseSensitive; + } + } + + public ColumnSorter getSorter() { + return sorter; + } + +}