blob: 7312056aa7017948daff83ed133455eaa4a5d098 [file] [log] [blame]
// RAP [bm]: no animations
///*******************************************************************************
// * Copyright (c) 2007, 2008 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.ui.internal;
//
//import org.eclipse.core.runtime.IProgressMonitor;
//import org.eclipse.core.runtime.IStatus;
//import org.eclipse.core.runtime.Status;
//import org.eclipse.core.runtime.jobs.Job;
//import org.eclipse.jface.preference.IPreferenceStore;
//import org.eclipse.swt.events.DisposeEvent;
//import org.eclipse.swt.events.DisposeListener;
//import org.eclipse.swt.graphics.Rectangle;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Shell;
//import org.eclipse.ui.IWorkbenchPreferenceConstants;
//import org.eclipse.ui.internal.tweaklets.Animations;
//import org.eclipse.ui.internal.tweaklets.Tweaklets;
//import org.eclipse.ui.internal.util.PrefUtil;
//
///**
// * This job creates an Animation Engine that uses an Animation Feedback to render
// * the animation. To begin the animation, instantiate this
// * object then call schedule().
// * @since 3.3
// *
// */
//public class AnimationEngine extends Job {
// public static final int TICK_TIMER = 1;
// public static final int FRAME_COUNT = 2;
// public static final int unlimitedDuration = -1;
//
// private boolean enableAnimations;
// private long startTime;
// private long curTime;
// private long prevTime;
// private int timingStyle = TICK_TIMER;
// private long frameCount;
// private long stepCount;
// private boolean animationCanceled = false;
// private long sleepAmount;
//
// private Display display;
// private AnimationFeedbackBase feedbackRenderer;
// private int duration;
//
// public AnimationEngine(AnimationFeedbackBase animationFeedback,
// int durationIn) {
// this(animationFeedback, durationIn, 0);
// }
//
// /**
// * Creates an Animation that will run for the given number of milliseconds.
// *
// * @param animationFeedback provides renderStep(), initialize() and jobInit() methods
// * @param durationIn number of milliseconds over which the animation will run
// * @param sleepAmountIn number of milliseconds to slow/delay the animation
// */
// public AnimationEngine(AnimationFeedbackBase animationFeedback,
// int durationIn, long sleepAmountIn) {
// super(WorkbenchMessages.RectangleAnimation_Animating_Rectangle);
// sleepAmount = sleepAmountIn;
// feedbackRenderer = animationFeedback;
// duration = durationIn;
//
// // if animations aren't on this is a NO-OP
// IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
// enableAnimations = preferenceStore
// .getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS);
// if (!enableAnimations) {
// return;
// }
//
// animationCanceled = false;
//
// // Capture parameters
// display = feedbackRenderer.getAnimationShell().getDisplay();
//
// animationFeedback.getAnimationShell().addDisposeListener(new DisposeListener() {
// public void widgetDisposed(DisposeEvent e) {
// cancelAnimation();
// }
// });
//
// // Don't show the job in monitors
// setSystem(true);
//
// // Set it up
// feedbackRenderer.initialize(this);
//
// // Set the animation's initial state
// stepCount = 0;
// curTime = startTime = System.currentTimeMillis();
//
// }
//
// /**
// * @return The current renderer
// */
// public AnimationFeedbackBase getFeedback() {
// return feedbackRenderer;
// }
//
// private Runnable animationStep = new Runnable() {
//
// public void run() {
// if (animationCanceled)
// return;
//
// // Capture time
// prevTime = curTime;
// curTime = System.currentTimeMillis();
//
// if (isUpdateStep()) {
// updateDisplay();
// frameCount++;
// }
// stepCount++;
// }
//
// };
//
// protected void updateDisplay() {
// if (animationCanceled)
// return;
//
// feedbackRenderer.renderStep(this);
// }
//
// protected boolean isUpdateStep() {
// if (duration == unlimitedDuration || timingStyle == FRAME_COUNT) {
// return true;
// }
//
// // Default to 'TICK_TIMER', update when the system timer changes
// return prevTime != curTime;
// }
//
// private boolean done() {
// return animationCanceled || amount() >= 1.0;
// }
//
// public double amount() {
// if (duration == unlimitedDuration) {
// return 0;
// }
// double amount = 0.0;
// switch (timingStyle) {
// case TICK_TIMER:
// amount = (double) (curTime - startTime) / (double) duration;
// break;
//
// // For testing purposes
// case FRAME_COUNT:
// amount = (double) frameCount / (double) duration;
// }
//
// if (amount > 1.0)
// amount = 1.0;
//
// return amount;
// }
//
// protected IStatus run(IProgressMonitor monitor) {
// // We use preference value to indicate that the animation should be skipped on this platform.
// if (!enableAnimations) {
// return Status.OK_STATUS;
// }
//
// // We're starting, initialize
// display.syncExec(new Runnable() {
// public void run() {
// // 'jobInit' returns 'false' if it doesn't want to run...
// if (!animationCanceled)
// animationCanceled = !feedbackRenderer.jobInit(AnimationEngine.this);
// }
// });
//
// if (animationCanceled)
// return Status.CANCEL_STATUS;
//
// // Only start the animation timer -after- we've initialized
// curTime = startTime = System.currentTimeMillis();
//
// while (!done() && !animationCanceled) {
// display.syncExec(animationStep);
//
// // Don't pin the CPU
// try {
// Thread.sleep(sleepAmount);
// } catch (InterruptedException e) {
// }
// }
//
// if (animationCanceled)
// return Status.CANCEL_STATUS;
//
// // We're done, clean up
// display.syncExec(new Runnable() {
// public void run() {
// feedbackRenderer.dispose();
// }
// });
//
// return Status.OK_STATUS;
// }
//
// public void cancelAnimation() {
// animationCanceled = true;
// feedbackRenderer.dispose();
// cancel();
// }
//
// public long getFrameCount() {
// return frameCount;
// }
//
// public static void createTweakedAnimation(Shell shell, int duration, Rectangle start, Rectangle end) {
// RectangleAnimationFeedbackBase feedback = ((Animations) Tweaklets
// .get(Animations.KEY)).createFeedback(shell);
// feedback.addStartRect(start);
// feedback.addEndRect(end);
//
// AnimationEngine animation = new AnimationEngine(feedback, 400);
// animation.schedule();
// }
//}