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