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/mainShellPanes/MSPRenderPane.java


1   package com.arranger.jarl.shell.views.mainShellPanes;
2   
3   import com.arranger.jarl.shell.models.BaseModel;
4   import com.arranger.jarl.shell.models.JarlContextModel;
5   import com.arranger.jarl.shell.models.JarlAnimationContextModel;
6   import com.arranger.jarl.util.Debug;
7   
8   import javax.swing.*;
9   import java.awt.*;
10  import java.awt.event.ActionEvent;
11  import java.awt.event.ActionListener;
12  import java.awt.event.KeyEvent;
13  
14  /**
15   * MSPRenderPane created on Apr 21, 2003
16   */
17  public class MSPRenderPane extends BaseMSP {
18      protected JButton m_renderFrameButton;
19      protected JButton m_renderFullAnimationButton;
20      protected boolean m_renderingFrame = false;
21  
22      /**
23       * Create a component
24       * @return
25       */
26      public Component createComponent() {
27          JPanel renderPanel = new JPanel(new GridLayout(2, 1));
28          m_renderFrameButton = new JButton("Render Single Frame");
29          m_renderFrameButton.setMnemonic(KeyEvent.VK_R);
30          m_renderFrameButton.addActionListener(new ActionListener() {
31              public void actionPerformed(ActionEvent e) {
32                  m_renderingFrame = true;
33                  m_renderFrameButton.setEnabled(false);
34                  getJarlContextModel().render();
35              }
36          });
37  
38          renderPanel.add(m_renderFrameButton);
39          m_renderFullAnimationButton = new JButton("Render Full Animation");
40          m_renderFullAnimationButton.setMnemonic(KeyEvent.VK_A);
41          m_renderFullAnimationButton.addActionListener(new ActionListener() {
42              public void actionPerformed(ActionEvent e) {
43                  confirmAnimation();
44              }
45          });
46  
47          renderPanel.add(m_renderFullAnimationButton);
48          renderPanel.setBorder(BorderFactory.createTitledBorder("Render"));
49          return renderPanel;
50      }
51  
52      private void confirmAnimation() {
53          try {
54              JarlAnimationContextModel jacm = (JarlAnimationContextModel) m_jarlShell.createModel(JarlAnimationContextModel.class.getName());
55              String outputDir = JOptionPane.showInputDialog(m_jarlShell.getMainJarlShellFrame(),
56                      "Please enter output directory for animation series: " + jacm.getCurrentConfig(),
57                      jacm.getCurrentOutputDir());
58              jacm.setCurrentOutputDir(outputDir);
59              m_jarlShell.saveModels();
60  
61              m_jarlShell.setModel(jacm);
62              jacm.renderAnimation();
63          } catch (Exception e) {
64              e.printStackTrace();
65          }
66      }
67  
68      /**
69       * Events have been fired
70       * @param baseModel
71       * @param propertyName
72       */
73      public void onChange(BaseModel baseModel, String propertyName) {
74          if (baseModel instanceof JarlContextModel) {
75  
76              //show error message?
77              if (JarlContextModel.ERROR.equals(propertyName)) {
78                  //show msg box
79                  Throwable t = ((JarlContextModel) baseModel).getLastThrowable();
80                  String msg = (t.getMessage() == null) ? "Null Pointer Exception" : t.getMessage();
81                  msg += "\r\n" + Debug.getStackTrace(t);
82                  JOptionPane.showMessageDialog(m_jarlShell.getMainJarlShellFrame(),
83                          msg,
84                          "Rendering exception occurred",
85                          JOptionPane.WARNING_MESSAGE);
86              }
87  
88              //enable the frame button?
89              if (JarlContextModel.ERROR.equals(propertyName) || JarlContextModel.RENDERED_IMAGE.equals(propertyName)) {
90                  m_renderingFrame = false;
91                  m_renderFrameButton.setEnabled(true);
92              }
93          }
94      }
95  }