| /******************************************************************************* |
| * Copyright (c) 2009, 2011 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.internal.ui.workingsets; |
| |
| import java.util.Comparator; |
| |
| import com.ibm.icu.text.Collator; |
| |
| import org.eclipse.ui.IWorkingSet; |
| |
| |
| /** |
| * Comparator class to sort working sets, optionally keeping the default working set at the top. |
| * |
| * @since 3.5 |
| */ |
| public class WorkingSetComparator implements Comparator<IWorkingSet> { |
| |
| private Collator fCollator= Collator.getInstance(); |
| |
| /** |
| * Boolean value to determine whether to keep default working set on the top while sorting. |
| */ |
| private boolean fIsOtherWorkingSetOnTop; |
| |
| |
| /** |
| * Creates new instance of the working set comparator. |
| */ |
| public WorkingSetComparator() { |
| fIsOtherWorkingSetOnTop= false; |
| } |
| |
| /** |
| * Creates a new instance of working set comparator and initializes the boolean field value to |
| * the given value, which determines whether or not the default working set is kept on top while |
| * sorting the working sets. |
| * |
| * @param isOtherWorkingSetOnTop <code>true</code> if default working set is to be retained at |
| * the top, <code>false</code> otherwise |
| */ |
| public WorkingSetComparator(boolean isOtherWorkingSetOnTop) { |
| fIsOtherWorkingSetOnTop= isOtherWorkingSetOnTop; |
| } |
| |
| /** |
| * Returns <code>-1</code> if the first argument is the default working set, <code>1</code> if |
| * the second argument is the default working set and if the boolean |
| * <code>fIsOtherWorkingSetOnTop</code> is set, to keep the default working set on top while |
| * sorting. |
| * |
| * @see Comparator#compare(Object, Object) |
| */ |
| public int compare(IWorkingSet w1, IWorkingSet w2) { |
| |
| if (fIsOtherWorkingSetOnTop && IWorkingSetIDs.OTHERS.equals(w1.getId())) |
| return -1; |
| |
| if (fIsOtherWorkingSetOnTop && IWorkingSetIDs.OTHERS.equals(w2.getId())) |
| return 1; |
| |
| return fCollator.compare(w1.getLabel(), w2.getLabel()); |
| } |
| } |
| |