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

Quick Search    Search Deep

Source code: com/arranger/jarl/ui/RenderButtonListener.java


1   package com.arranger.jarl.ui;
2   
3   import com.arranger.jarl.Jarl;
4   import com.arranger.jarl.base.IContext;
5   import com.arranger.jarl.util.XMLUtil;
6   
7   import javax.swing.*;
8   import java.awt.event.ActionListener;
9   import java.awt.event.ActionEvent;
10  import java.awt.*;
11  import java.io.File;
12  import java.util.Stack;
13  
14  /**
15   * RenderButtonListener created on Apr 15, 2003
16   */
17  class RenderButtonListener implements ActionListener {
18  
19      protected String m_lastRawXmlText = null;
20      protected Jarl m_jarl;
21      private MainPanel m_mainPanel;
22  
23      public RenderButtonListener(MainPanel mainPanel) {
24          m_mainPanel = mainPanel;
25      }
26  
27      public void actionPerformed(ActionEvent e) {
28          new Thread() {
29              public void run() {
30                  Cursor oldCursor = m_mainPanel.getCursor();
31                  m_mainPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
32                  try {
33                      String rawXmlText = XMLUtil.preprocesXML(new File(m_mainPanel.m_compConfigFile.getText()), new Stack());
34                      if (m_lastRawXmlText != null && rawXmlText.equals(m_lastRawXmlText)) {
35                          //skip creating a new jarl
36                      } else {
37                          //reset status
38                          m_mainPanel.m_compStatus.setRows(100);
39                          m_mainPanel.m_compDescription.setRows(100);
40                          m_mainPanel.m_compStatus.setText("");
41  
42                          m_jarl = new Jarl();
43                          m_jarl.getContext().addStatusListener(m_mainPanel.m_statusListener);
44                          m_jarl.init(m_mainPanel.m_compConfigFile.getText());
45                          m_lastRawXmlText = rawXmlText;
46  
47                          m_mainPanel.m_compDescription.setText(m_jarl.getDescription());
48  
49                          //update properties
50                          m_mainPanel.m_preferences.setProperty("configFile", m_mainPanel.m_compConfigFile.getText());
51                          m_mainPanel.m_prefManager.storePreferences(m_mainPanel.m_preferences);
52                      }
53  
54                      IContext context = m_jarl.getContext();
55                      m_mainPanel.m_imageWidth = context.getWidth();
56                      m_mainPanel.m_imageHeight = context.getHeight();
57  
58                      int max = m_jarl.getEndTime().getFrame();
59                      m_mainPanel.m_compFPSSlider.setMaximum(max);
60                      m_mainPanel.m_compFPSSlider.setPaintTrack(false);
61                      m_mainPanel.m_compFPSSlider.setMajorTickSpacing(max / 4);
62                      m_mainPanel.m_renderedImage = m_jarl.getRenderManager().renderOneFrame(context, m_mainPanel.m_frameToRender);
63                      m_mainPanel.refresh();
64                  } catch (Throwable exc) {
65                      m_mainPanel.m_statusListener.onError(exc);
66                      String message = exc.getMessage();
67                      if (message == null) {
68                          message = "null";
69                      }
70                      JOptionPane.showMessageDialog(m_mainPanel, message);
71                  } finally {
72                      m_mainPanel.setCursor(oldCursor);
73                  }
74              }
75          }.start();
76      }
77  }