LaunchModeActionComparator.java
package com.codeaffine.extras.launch.internal.dialog;
import static org.eclipse.debug.core.ILaunchManager.DEBUG_MODE;
import static org.eclipse.debug.core.ILaunchManager.RUN_MODE;
import java.util.Comparator;
import org.eclipse.debug.core.ILaunchMode;
public class LaunchModeActionComparator implements Comparator<LaunchModeAction> {
@Override
public int compare( LaunchModeAction action1, LaunchModeAction action2 ) {
return compare( action1.getLaunchMode(), action2.getLaunchMode() );
}
private static int compare( ILaunchMode launchMode1, ILaunchMode launchMode2 ) {
int result;
if( isRunMode( launchMode1 ) ) {
result = -1;
} else if( isRunMode( launchMode2 ) ) {
result = 1;
} else if( isDebugMode( launchMode1 ) ) {
if( isRunMode( launchMode2 ) ) {
result = 1;
} else {
result = -1;
}
} else if( isDebugMode( launchMode2 ) ) {
if( isRunMode( launchMode1 ) ) {
result = -1;
} else {
result = 1;
}
} else {
result = launchMode1.getLabel().compareTo( launchMode2.getLabel() );
}
return result;
}
private static boolean isRunMode( ILaunchMode launchMode ) {
return RUN_MODE.equals( launchMode.getIdentifier() );
}
private static boolean isDebugMode( ILaunchMode launchMode ) {
return DEBUG_MODE.equals( launchMode.getIdentifier() );
}
}