View Javadoc

1   /*
2    *  Copyright (C) 2003-2005 SINTEF
3    *  Author:  Fredrik Vraalsen (fredrik dot vraalsen at sintef dot no)
4    *  Webpage: http://coras.sourceforge.net/
5    *
6    *  This program is free software; you can redistribute it and/or
7    *  modify it under the terms of the GNU Lesser General Public License
8    *  as published by the Free Software Foundation; either version 2.1
9    *  of the License, or (at your option) any later version.
10   *
11   *  This program is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   *  Lesser General Public License for more details.
15   *
16   *  You should have received a copy of the GNU Lesser General Public
17   *  License along with this program; if not, write to the Free
18   *  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19   *  02111-1307 USA
20   */
21  package coras.representations;
22  
23  import java.awt.Component;
24  import java.awt.image.BufferedImage;
25  import java.io.ByteArrayInputStream;
26  import java.io.IOException;
27  
28  import javax.imageio.ImageIO;
29  
30  import no.sintef.assetrepository.Representation;
31  
32  
33  
34  /***
35   * @author fvr
36   *
37   * TODO To change the template for this generated type comment go to
38   * Window - Preferences - Java - Code Style - Code Templates
39   */
40  public class BitmapImage extends DiagramRepresentation implements BinaryRepresentation {
41  
42      private ImagePanel panel = null;
43      /***
44       * @param representation
45       */
46      protected BitmapImage(Representation representation) {
47          super(representation);
48      }
49  
50      /* (non-Javadoc)
51       * @see coras.representations.IDiagramImage#getUIComponent()
52       */
53      public synchronized Component getUIComponent() {
54          if (panel == null) {
55              byte[] imageBytes = getBinaryContent();
56              panel = createUIComponent(imageBytes); 
57          }
58          return panel;
59      }
60  
61  	/* (non-Javadoc)
62       * @see coras.representations.BinaryRepresentation#getBinaryContent()
63       */
64      public byte[] getBinaryContent() {
65          Object content = getContent();
66          if (content == null || content instanceof byte[]) {
67              return (byte[]) content;
68          } else {
69              return null; // FIXME error
70          }
71      }
72  
73  	public static ImagePanel createUIComponent(byte[] imageBytes) {
74  		ImagePanel c = new ImagePanel();
75  		try {
76  		    BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageBytes));
77  		    c.setImage(image);
78  		} catch (IOException e) {
79  		    // TODO Auto-generated catch block
80  		    e.printStackTrace();
81  		}
82  		return c;
83  	}
84  
85  }