r254 - in trunk: msm/src/main/java/org/nuiton/mapstoragemanager/ui msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager
Author: dlanglais Date: 2010-03-18 14:20:41 +0100 (Thu, 18 Mar 2010) New Revision: 254 Log: Ajout d'un BootLoaderManager pour les plugins ?\195?\160 charger au d?\195?\169marrage. J'ai l'impression que tu n'as pas re?\195?\167u mon sms florent... Added: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/BootLoaderManager.jaxx Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx Added: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/BootLoaderManager.jaxx =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/BootLoaderManager.jaxx (rev 0) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/BootLoaderManager.jaxx 2010-03-18 13:20:41 UTC (rev 254) @@ -0,0 +1,134 @@ +<Application id='bootLoaderManager' width='640' height='480' onWindowClosing='getInstance().setVisible(false)'> + + <!-- include java files for treatment --> + <script> + <![CDATA[ +import org.nuiton.mapstoragemanager.ui.gui.ApplicationEngine; + +/** + * Logger. + */ +private static final Log LOG = LogFactory.getLog(BootLoaderManager.class); + +/** + * classe instance (singleton pattern). + */ +private static BootLoaderManager instance = null; + +/** + * getInstance method (singleton pattern). + * @return instance of the class + */ +public static BootLoaderManager getInstance() { + if (instance == null){ + instance = new BootLoaderManager(); + } + instance.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + instance.refreshJarList(); + return instance; +} + +/** + * loadAPlugin. + * Call the MSM instance to load a Plugin. + */ +public void loadAPlugin() { + ApplicationEngine.getInstance().loadAPlugin(); + refreshJarList(); +} + +/** + * Refresh the jar list. + * Read .properties of the pluginFolderPath. + * For each .jar file : + * - show a checkBox to load or not the plugin at startup, + * - show the .jar url. + */ +public void refreshJarList() { + + /** Load properties file of the folder. */ + final Properties properties = new Properties(); + final File propertiesFile = new File(ApplicationEngine.getInstance().getMSM_PLUGINS_DIR(), ".properties"); + try { + FileInputStream fis = new FileInputStream(propertiesFile); + properties.load(fis); + } catch (FileNotFoundException e) { + try { + FileOutputStream fos = new FileOutputStream(propertiesFile); + properties.store(fos , null); + fos.close(); + } catch (FileNotFoundException ex) { + LOG.fatal(ex, ex); + } catch (IOException ex) { + LOG.fatal(ex, ex); + } + } catch (IOException ex) { + LOG.error(ex, ex); + } + + /** + * For each Jar file + */ + for (final String propertyName : properties.stringPropertyNames()) { + if(propertyName.endsWith(".jar")) { + final String propertyValue = properties.getProperty(propertyName); + LOG.info(propertyName + " : " + propertyValue); + + final JCheckBox checkBox = new JCheckBox(); + + /** If propertyValue equals true, checkBox selected, + * else not selected. */ + final boolean selected = "true".equals(propertyValue); + checkBox.setSelected(selected); + checkBox.addActionListener(new ActionListener() { + boolean selectedState = selected; + @Override + public void actionPerformed(ActionEvent e) { + /** Invert selected State */ + selectedState = !selectedState; + /** Modify properties */ + properties.put(propertyName, Boolean.toString(selectedState)); + try { + FileOutputStream fos = new FileOutputStream(propertiesFile); + /** Store modified properties */ + properties.store(fos , null); + fos.close(); + } catch (FileNotFoundException ex) { + LOG.fatal(ex, ex); + } catch (IOException ex) { + LOG.fatal(ex, ex); + } + } + }); + + final JLabel label = new JLabel(propertyName); + + final JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + panel.add(checkBox); + panel.add(label); + + this.getBootLoaderPanel().add(panel); + } + } + + this.getBootLoaderPanel().updateUI(); +} + ]]> + </script> + + <!-- style definition --> + <style source='MainUI.css'/> + + <!-- content --> + <JMenuBar> + <JMenu id='menuPlugin'> + <JMenuItem id='menuPluginLoad' + onActionPerformed='this.loadAPlugin()' /> + <JMenuItem id='refreshJarList' + onActionPerformed='this.refreshJarList()' /> + </JMenu> + </JMenuBar> + <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'> + <VBox layout='{new GridLayout(0,1)}' id='bootLoaderPanel' /> + </JPanel> +</Application> \ No newline at end of file Modified: trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx =================================================================== --- trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-18 13:11:33 UTC (rev 253) +++ trunk/msm/src/main/java/org/nuiton/mapstoragemanager/ui/MainUI.jaxx 2010-03-18 13:20:41 UTC (rev 254) @@ -155,6 +155,8 @@ <JMenuItem id='menuPluginSave' onActionPerformed='engine.savePlugin()'/> <JSeparator/> + <JMenuItem id='menuPluginBootLoaderManager' + onActionPerformed='BootLoaderManager.getInstance().setVisible(true)'/> </JMenu> <JMenu id='menuHelp'> Modified: trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx =================================================================== --- trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-18 13:11:33 UTC (rev 253) +++ trunk/msm-pluginmanager/src/main/java/org/nuiton/mapstoragemanager/plugins/pluginmanager/PluginManager.jaxx 2010-03-18 13:20:41 UTC (rev 254) @@ -12,6 +12,7 @@ * classe instance (singleton pattern). */ private static PluginManager instance = null; + /** * MenuItemPlugin. */
participants (1)
-
dlanglais@users.nuiton.org