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/MSPJarlFile.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.ui.ExampleFileFilter;
6   
7   import javax.swing.*;
8   import java.awt.*;
9   import java.awt.event.ActionEvent;
10  import java.awt.event.ActionListener;
11  import java.awt.event.FocusAdapter;
12  import java.awt.event.FocusEvent;
13  import java.io.File;
14  
15  /**
16   * MSPJarlFile created on Apr 21, 2003
17   */
18  public class MSPJarlFile extends BaseMSP {
19  
20      protected JTextField m_textField;
21      protected JButton m_button;
22  
23      /**
24       * Create a component
25       * @return
26       */
27      public Component createComponent() {
28          JPanel topPane = new JPanel(new GridLayout(1, 2, 10, 10));
29          m_textField = new JTextField(getJarlContextModel().getCurrentConfig());
30          m_textField.addFocusListener(new FocusAdapter() {
31              public void focusLost(FocusEvent e) {
32                  onFileChange(m_textField.getText().trim());
33              }
34          });
35          topPane.add(m_textField);
36          m_button = new JButton("...");
37          m_button.addActionListener(new ButtonActionListener());
38          topPane.add(m_button);
39          topPane.setBorder(BorderFactory.createTitledBorder("Jarl File"));
40          return topPane;
41      }
42  
43      protected void onFileChange(String configFile) {
44          JarlContextModel jarlContextModel = getJarlContextModel();
45          if (!configFile.equals(jarlContextModel.getCurrentConfig())) {
46              updateConfigFile(configFile);
47          }
48      }
49  
50      /**
51       * Events have been fired
52       * @param baseModel
53       * @param propertyName
54       */
55      public void onChange(BaseModel baseModel, String propertyName) {
56          if (baseModel instanceof JarlContextModel && propertyName.equals(JarlContextModel.CURRENT_CONFIG)) {
57              m_textField.setText(getJarlContextModel().getCurrentConfig());
58          }
59      }
60  
61      protected void updateConfigFile(String configFile) {
62          try {
63              JarlContextModel jarlContextModel = (JarlContextModel) m_jarlShell.createModel(JarlContextModel.class.getName());
64              m_jarlShell.setModel(jarlContextModel);       //this needs to be set, so subscribers are hooked up
65              jarlContextModel.setCurrentConfig(configFile);
66              m_jarlShell.saveModels();
67          } catch (Exception e) {
68              e.printStackTrace();
69          }
70      }
71  
72      protected class ButtonActionListener implements ActionListener {
73          public void actionPerformed(ActionEvent e) {
74              JarlContextModel jarlContextModel = MSPJarlFile.this.getJarlContextModel();
75              String currentConfig = jarlContextModel.getCurrentConfig();
76              File currentFile = new File(currentConfig);
77              File parentFile = null;
78              if (currentFile.exists()) {
79                  parentFile = currentFile.getParentFile();
80              }
81  
82              JFileChooser fileChooser = new JFileChooser();
83              ExampleFileFilter filter = new ExampleFileFilter();
84              filter.addExtension("xml");
85              filter.addExtension("jarlml");
86              filter.setDescription("XML & JARLML configFiles");
87              fileChooser.setFileFilter(filter);
88  
89              if (parentFile != null) {
90                  fileChooser.setCurrentDirectory(parentFile);
91              } else {
92                  fileChooser.setCurrentDirectory(new File("."));
93              }
94  
95              if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
96                  updateConfigFile(fileChooser.getSelectedFile().getAbsolutePath());
97              }
98          }
99      }
100 }