Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/arranger/jarl/shell/views/RenderedImageViewContext.java


1   package com.arranger.jarl.shell.views;
2   
3   import com.arranger.jarl.shell.models.JarlContextModel;
4   import com.arranger.jarl.ui.ExampleFileFilter;
5   import com.arranger.jarl.util.IOUtil;
6   import com.arranger.jarl.util.ImageUtil;
7   
8   import javax.swing.*;
9   import java.awt.*;
10  import java.awt.event.*;
11  import java.io.File;
12  
13  /**
14   * RenderedImageViewContext created on Apr 19, 2003
15   */
16  public class RenderedImageViewContext {
17      protected ImageLabel m_imageLabel;
18      protected JarlShellFrame m_jarlShellFrame;
19      protected RenderedImageView m_renderedImageView;
20  
21      public RenderedImageViewContext(JarlContextModel jarlContextModel, RenderedImageView renderedImageView) {
22          m_renderedImageView = renderedImageView;
23          Dimension dimension = jarlContextModel.getDimension();
24          m_imageLabel = new ImageLabel(jarlContextModel.getRenderedImage(), dimension);
25          m_jarlShellFrame = JarlShellFrame.createJarlShellFrame(renderedImageView.getJarlShell(), m_imageLabel,
26                  (int) dimension.getWidth() + RenderedImageView.SPACING_WIDTH,
27                  (int) dimension.getHeight() + RenderedImageView.SPACING_HEIGHT,
28                  jarlContextModel.getCurrentConfig() + " frame: " + jarlContextModel.getCurrentFrame());
29  
30          addMenu();
31  
32          m_jarlShellFrame.setResizable(false);
33          m_jarlShellFrame.addWindowClosingListener(new JarlShellFrame.JarlShellFrameClosingListener() {
34              public void onClosing() {
35                  m_jarlShellFrame = null;
36                  m_renderedImageView.detach(RenderedImageViewContext.this);
37              }
38          });
39  
40          m_jarlShellFrame.packAndShow();
41      }
42  
43      public void updateImage(JarlContextModel jarlContextModel) {
44          m_imageLabel.m_image = jarlContextModel.getRenderedImage();
45          m_jarlShellFrame.setTitle(jarlContextModel.getCurrentConfig() + " frame: " + jarlContextModel.getCurrentFrame());
46          m_jarlShellFrame.repaint();
47      }
48  
49      protected void saveImage() throws Exception {
50          if (m_imageLabel == null) {
51              return;
52          }
53  
54          JarlContextModel jarlContextModel = (JarlContextModel) m_renderedImageView.getJarlShell().getModel(JarlContextModel.class.getName());
55          String dir = jarlContextModel.getCurrentOutputDir();
56  
57          JFileChooser jFileChooser = new JFileChooser();
58          ExampleFileFilter filter = new ExampleFileFilter();
59          filter.addExtension("bmp");
60          filter.addExtension("jpg");
61          filter.setDescription("jarl bitmap images");
62          jFileChooser.setFileFilter(filter);
63  
64          if (dir != null) {
65              jFileChooser.setCurrentDirectory(new File(dir));
66          }
67  
68          if (jFileChooser.showSaveDialog(m_jarlShellFrame.getComponent()) == JFileChooser.APPROVE_OPTION) {
69              File currentDir = jFileChooser.getCurrentDirectory();
70              jarlContextModel.setCurrentOutputDir(currentDir.getAbsolutePath());
71              m_renderedImageView.getJarlShell().saveModels();
72              String destFile = jFileChooser.getSelectedFile().getAbsolutePath();
73              boolean isBMP = true;
74              if (destFile.endsWith(".jpg")) {
75                  isBMP = false;
76              }
77  
78              if (isBMP && !destFile.endsWith(".bmp")) {
79                  destFile += ".bmp";
80              }
81  
82              File dest = new File(destFile);
83              if (isBMP) {
84                  IOUtil.save(m_imageLabel.m_image, dest);
85              } else {
86                  IOUtil.saveJPEG(m_imageLabel.m_image, dest);
87              }
88          }
89      }
90  
91      protected void addMenu() {
92          JMenuBar menuBar = new JMenuBar();
93          menuBar.setVisible(true);
94          JMenu menu = new JMenu("Image");
95          menu.setMnemonic(KeyEvent.VK_I);
96          menuBar.add(menu);
97  
98          JMenuItem menuItem = new JMenuItem("Save Image", KeyEvent.VK_S);
99          menuItem.addActionListener(new ActionListener() {
100             public void actionPerformed(ActionEvent e) {
101                 try {
102                     saveImage();
103                 } catch (Exception e1) {
104                     e1.printStackTrace();
105                 }
106             }
107         });
108         menu.add(menuItem);
109         menuItem = new JMenuItem("Close Image", KeyEvent.VK_C);
110         menuItem.addActionListener(new ActionListener() {
111             public void actionPerformed(ActionEvent e) {
112                 if (m_jarlShellFrame != null) {
113                     m_jarlShellFrame.dispose();
114                     m_jarlShellFrame = null;
115                     m_renderedImageView.detach(RenderedImageViewContext.this);
116                 }
117             }
118         });
119         menu.add(menuItem);
120         m_jarlShellFrame.setJMenuBar(menuBar);
121     }
122 
123     protected static class ImageLabel extends JLabel {
124         protected Image m_image;
125         protected Dimension m_dimension;
126 
127         public ImageLabel(Image image, Dimension dimension) {
128             m_image = image;
129             setDimension(dimension);
130         }
131 
132         protected void setDimension(Dimension dimension) {
133             m_dimension = dimension;
134             setPreferredSize(m_dimension);
135             setMinimumSize(m_dimension);
136             setMaximumSize(m_dimension);
137         }
138 
139         protected void paintComponent(Graphics g) {
140             ImageUtil.overlayTransparentImage(g, m_image);
141         }
142     }
143 }