| // RAP [bm]: animations |
| ///******************************************************************************* |
| // * Copyright (c) 2007 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.IStatus; |
| //import org.eclipse.swt.SWTException; |
| //import org.eclipse.swt.graphics.Color; |
| //import org.eclipse.swt.graphics.GC; |
| //import org.eclipse.swt.graphics.Image; |
| //import org.eclipse.swt.graphics.ImageData; |
| //import org.eclipse.swt.widgets.Display; |
| //import org.eclipse.swt.widgets.Shell; |
| //import org.eclipse.ui.internal.misc.StatusUtil; |
| //import org.eclipse.ui.statushandlers.StatusManager; |
| // |
| ///** |
| // * Base class for Cyclic animations. |
| // * |
| // * @since 3.3 |
| // * |
| // */ |
| //public abstract class ImageCycleFeedbackBase extends AnimationFeedbackBase { |
| // protected Image[] images; |
| // protected Image stoppedImage; |
| // private Image offScreenImage; |
| // private GC offScreenImageGC; |
| // private int imageDataIndex; |
| // private Image image; |
| // private ImageData imageData; |
| // protected Display display; |
| // protected Color background; |
| // |
| // /** |
| // * @param parentShell |
| // */ |
| // public ImageCycleFeedbackBase(Shell parentShell) { |
| // super(parentShell); |
| // // TODO Auto-generated constructor stub |
| // } |
| // |
| // /** |
| // * |
| // * @param parentShell |
| // * @param images : |
| // * an array of images |
| // */ |
| // public ImageCycleFeedbackBase(Shell parentShell, Image[] images) { |
| // super(parentShell); |
| // this.images = images; |
| // } |
| // |
| // /** |
| // * Set the image during progress without caching. |
| // * |
| // * @param image |
| // */ |
| // public abstract void showImage(Image image); |
| // |
| // /** |
| // * Save initial Image which would be stoppedImage |
| // * |
| // */ |
| // public abstract void saveStoppedImage(); |
| // |
| // /** |
| // * Set the stopped Image upon animation completion |
| // * |
| // * @param image |
| // */ |
| // public abstract void setStoppedImage(Image image); |
| // |
| // public void dispose() { |
| // // TODO Auto-generated method stub |
| // if (stoppedImage == null || stoppedImage.isDisposed()) |
| // return; |
| // setStoppedImage(stoppedImage); |
| // |
| // if (offScreenImageGC != null && !offScreenImageGC.isDisposed()) |
| // offScreenImageGC.dispose(); |
| // |
| // if (offScreenImage != null && !offScreenImage.isDisposed()) |
| // offScreenImage.dispose(); |
| // } |
| // |
| // public boolean jobInit(AnimationEngine engine) { |
| // return super.jobInit(engine); |
| // } |
| // |
| // public void renderStep(AnimationEngine engine) { |
| // // TODO Auto-generated method stub |
| // if (offScreenImage == null) { |
| // offScreenImage = getOffscreenImage(); |
| // } |
| // |
| // try { |
| // imageDataIndex = (imageDataIndex + 1) % images.length; |
| // image = images[imageDataIndex]; |
| // imageData = image.getImageData(); |
| // |
| // offScreenImageGC.drawImage(image, 0, 0, imageData.width, |
| // imageData.height, imageData.x, imageData.y, |
| // imageData.width, imageData.height); |
| // |
| // final Image finalImage = image; |
| // |
| // display.syncExec(new Runnable() { |
| // /* |
| // * (non-Javadoc) |
| // * |
| // * @see java.lang.Runnable#run() |
| // */ |
| // public void run() { |
| // showImage(finalImage); |
| // |
| // } |
| // }); |
| // |
| // /* |
| // * Sleep for the specified delay time (adding commonly-used |
| // * slow-down fudge factors). |
| // */ |
| // // try { |
| // // Thread.sleep(30); |
| // // } catch (InterruptedException e) { |
| // // } |
| // if (images == null) |
| // return; |
| // } catch (SWTException ex) { |
| // IStatus status = StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH, |
| // ex); |
| // StatusManager.getManager().handle(status); |
| // } |
| // } |
| // |
| // private Image getOffscreenImage() { |
| // saveStoppedImage(); |
| // imageDataIndex = 0; |
| // image = images[imageDataIndex]; |
| // imageData = image.getImageData(); |
| // /* |
| // * Create an off-screen image to draw on, and fill it with the shell |
| // * background. |
| // */ |
| // offScreenImage = new Image(display, imageData.width, imageData.height); |
| // |
| // offScreenImageGC = new GC(offScreenImage); |
| // offScreenImageGC.setBackground(background); |
| // offScreenImageGC.fillRectangle(0, 0, imageData.width, imageData.height); |
| // |
| // /* |
| // * Create the first image and draw it on the off-screen image. |
| // */ |
| // |
| // offScreenImageGC.drawImage(image, 0, 0, imageData.width, |
| // imageData.height, imageData.x, imageData.y, imageData.width, |
| // imageData.height); |
| // |
| // return offScreenImage; |
| // } |
| // |
| //} |