| /******************************************************************************* |
| * 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]; |
| } |
| } |