blob: 1b434e73271414606fe408b79d8b050323766840 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 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.ltk.core.refactoring;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* Implementors of refactorings uses instances of <code>RefactoringTickProvider</code>
* to specify the tick distribution during progress reporting when executing the
* check conditions, create change and change initialization steps.
*
* @since 3.2
*/
public class RefactoringTickProvider {
/**
* The default refactoring tick provider
*/
public final static RefactoringTickProvider DEFAULT= new RefactoringTickProvider(4, 40, 22, 11);
private int[] fValues;
private static final int CHECK_INITIAL_CONDITIONS= 0;
private static final int CHECK_FINAL_CONDITIONS= 1;
private static final int CREATE_CHANGE= 2;
private static final int INITIALIZE_CHANGE= 3;
/**
* Creates a new refactoring tick provider with the given values
*
* @param checkInitialConditionsTicks ticks used in the initial condition
* check step
* @param checkFinalConditionsTicks ticks used in the final condition
* check step
* @param createChangeTicks ticks used in the create change step
* @param initializeChangeTicks ticks used in the change validation steps
*/
public RefactoringTickProvider(
int checkInitialConditionsTicks,
int checkFinalConditionsTicks,
int createChangeTicks,
int initializeChangeTicks) {
Assert.isTrue(checkInitialConditionsTicks >= 0 && checkFinalConditionsTicks >= 0 &&
createChangeTicks >= 0 && initializeChangeTicks >= 0);
fValues= new int[4];
fValues[CHECK_INITIAL_CONDITIONS]= checkInitialConditionsTicks;
fValues[CHECK_FINAL_CONDITIONS]= checkFinalConditionsTicks;
fValues[CREATE_CHANGE]= createChangeTicks;
fValues[INITIALIZE_CHANGE]= initializeChangeTicks;
}
/**
* Sum of <code>getCheckConditionsTicks</code>, <code>getCreateChangeTicks</code>
* and <code>getInitializeChangeTicks</code>.
*
* @return the number of ticks, >= 0
*/
public int getAllTicks() {
return getCheckAllConditionsTicks() + fValues[CREATE_CHANGE] + fValues[INITIALIZE_CHANGE];
}
/**
* Sum of <code>getCheckInitialConditionsTicks()</code> and
* <code>getCheckFinalConditionsTicks</code>
*
* @return the number of ticks, >= 0
*/
public int getCheckAllConditionsTicks() {
return fValues[CHECK_INITIAL_CONDITIONS] + fValues[CHECK_FINAL_CONDITIONS];
}
/**
* Number of ticks reserved in the parent progress monitor of the progress monitor
* passed to <code>Refactoring#checkInitialConditions()</code>.
*
* @return the number of ticks, >= 0
*/
public int getCheckInitialConditionsTicks() {
return fValues[CHECK_INITIAL_CONDITIONS];
}
/**
* Number of ticks reserved in the parent progress monitor of the progress monitor
* passed to <code>Refactoring#checkFinalConditions()</code>.
*
* @return the number of ticks, >= 0
*/
public int getCheckFinalConditionsTicks() {
return fValues[CHECK_FINAL_CONDITIONS];
}
/**
* Number of ticks reserved in the parent progress monitor of the progress monitor
* passed to <code>Refactoring#createChange()</code>.
*
* @return the number of ticks, >= 0
*/
public int getCreateChangeTicks() {
return fValues[CREATE_CHANGE];
}
/**
* Number of ticks reserved in the parent progress monitor for the progress monitor
* passed to <code>{@link Change#initializeValidationData(IProgressMonitor)}</code>
* which is executed on the object returned by <code>Refactoring#createChange()</code>.
*
* @return the number of ticks, >= 0
*/
public int getInitializeChangeTicks() {
return fValues[INITIALIZE_CHANGE];
}
}