1 package org.columba.core.gui.base; 19 20 import java.awt.Component ; 21 import java.awt.Dimension ; 22 import java.awt.Graphics ; 23 import java.awt.Image ; 24 import java.awt.MediaTracker ; 25 26 32 33 public class AnimatedGIFComponent extends Component { 34 private Image image; 35 private Image restImage; 36 private boolean stop = false; 37 38 public AnimatedGIFComponent(Image image, Image restImage) { 39 40 super(); 41 42 this.image = image; 43 this.restImage = restImage; 44 45 MediaTracker mt = new MediaTracker (this); 46 mt.addImage(image, 9); 47 try { 48 mt.waitForAll(); 49 } catch (Exception e) { 50 e.printStackTrace(); 51 } 52 53 stop(); 54 } 55 56 public void paint(Graphics g) { 57 if ( stop ) 58 g.drawImage(restImage, 0, 0, this); 59 else 60 g.drawImage(image, 0, 0, this); 61 } 62 63 public void update(Graphics g) { 64 paint(g); 65 } 66 67 public boolean imageUpdate(Image img, int infoflags, int x, int y, 68 int width, int height) { 69 if (stop) 70 return false; 71 72 if ((infoflags & FRAMEBITS) != 0) { 73 75 javax.swing.SwingUtilities.invokeLater(new Runnable () { 76 public void run() { 77 repaint(); 78 } 79 }); 80 81 } 82 83 return true; 84 } 85 86 public void stop() { 87 this.stop = true; 88 89 javax.swing.SwingUtilities.invokeLater(new Runnable () { 90 public void run() { 91 repaint(); 92 } 93 }); 94 } 95 96 public void go() { 97 this.stop = false; 98 99 javax.swing.SwingUtilities.invokeLater(new Runnable () { 100 public void run() { 101 repaint(); 102 } 103 }); 104 } 105 106 public boolean stopped() { 107 return this.stop; 108 } 109 110 public Dimension getMinimumSize() { 111 return new Dimension (image.getWidth(this), image.getHeight(this)); 112 } 113 114 public Dimension getPreferredSize() { 115 return getMinimumSize(); 116 } 117 118 } 119 | Popular Tags |