| Home >> All >> com >> arranger >> jarl >> shell >> views >> [ mainShellPanes Javadoc ] |
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 }