View Javadoc

1   package de.orangecafe.amazonrcp.binding;
2   
3   import org.springframework.richclient.form.binding.support.CustomBinding;
4   import org.springframework.binding.form.FormModel;
5   import org.springframework.binding.value.ValueModel;
6   
7   import javax.swing.*;
8   
9   import com.amazon.webservices.awsecommerceservice._2007_04_04.Image;
10  
11  import java.awt.*;
12  import java.net.URL;
13  import java.net.MalformedURLException;
14  
15  /**
16   * @author Torsten Strasser
17   */
18  public class ImageBinding extends CustomBinding {
19      private JLabel _label;
20  
21      protected ImageBinding(final JLabel label, final FormModel formModel, final String formPropertyPath) {
22          super(formModel, formPropertyPath, Image.class);
23  
24          _label = label;
25      }
26  
27      protected JComponent doBindControl() {
28          ValueModel valueModel = getValueModel();
29          Image image = (Image) valueModel.getValue();
30  
31          createImage(image);
32  
33          return _label;
34      }
35  
36      protected void readOnlyChanged() {
37          //TODO: check what to do here
38      }
39  
40      protected void enabledChanged() {
41          //TODO: check what to do here
42      }
43  
44      protected void valueModelChanged(final Object newValue) {
45          createImage((Image) newValue);
46      }
47      
48      private void createImage(final Image image) {
49          java.awt.Image picture;
50          try {
51              if (image != null) {
52                  picture = Toolkit.getDefaultToolkit().getImage(new URL(image.getURL()));
53              } else {
54                  picture = getDefaultImage();
55              }
56          } catch (MalformedURLException e) {
57              picture = getDefaultImage();
58          }
59  
60          _label.setIcon(new ImageIcon(picture));
61      }
62  
63      private java.awt.Image getDefaultImage() {
64          try {
65              return Toolkit.getDefaultToolkit().getImage(new URL("http://ec1.images-amazon.com/images/G/03/x-site/icons/no-img-sm._V45782892_AA90_.gif"));
66          } catch (MalformedURLException e) {
67              return null;
68              //TODO: logging
69          }
70      }
71  }