/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * *******************************************************************************/ package com.liferay.ide.project.ui.migration; import com.liferay.blade.api.Problem; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; /** * @author Lovett li */ public class MigratorComparator extends ViewerComparator { private int columnIndex; private static final int DESCENDING = 1; private int direction = DESCENDING; public MigratorComparator() { this.columnIndex = 1; direction = DESCENDING; } public int getDirection() { return direction == 1 ? SWT.DOWN : SWT.UP; } public void setColumn( int column ) { if( column == this.columnIndex ) { direction = 1 - direction; } else { this.columnIndex = column; direction = DESCENDING; } } @Override public int compare( Viewer viewer, Object e1, Object e2 ) { final Problem t1 = (Problem) e1; final Problem t2 = (Problem) e2; int flag = 0; switch( columnIndex ) { case 0: flag = ( t1.getStatus() == Problem.STATUS_RESOLVED ) ? 1 : -1; break; case 1: flag = t1.getLineNumber() >= t2.getLineNumber() ? 1 : -1; break; case 2: flag = t1.getTitle().compareTo( t2.getTitle() ) >= 0 ? 1 : -1; break; default: flag = 0; } if( direction != DESCENDING ) { flag = -flag; } return flag; } }