From: Lionel <he...@us...> - 2009-11-16 20:03:21
|
Update of /cvsroot/jmri/jmri/jmrit/throttle In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32289/src/jmri/jmrit/throttle Modified Files: SaveThrottlePreferencesAction.java LoadXmlThrottleAction.java WindowPreferences.java ThrottleWindow.java AddressPanel.java ThrottleFrame.java ThrottleFrameManager.java StoreXmlThrottleAction.java StopAllButton.java ThrottlesListPanel.java FunctionPanel.java Log Message: Cleanup of throttle frame xml save, layout save... Index: AddressPanel.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/AddressPanel.java,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** AddressPanel.java 14 Nov 2009 16:04:45 -0000 1.49 --- AddressPanel.java 16 Nov 2009 20:03:12 -0000 1.50 *************** *** 166,177 **** public RosterEntry getRosterEntry(){ if ((rosterEntry == null) && (throttle!=null) && ! (jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesPreferences().isUsingExThrottle()) && ! (jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesPreferences().isEnablingRosterSearch()) && ! addrSelector != null && addrSelector.getAddress() != null ) ! { List<RosterEntry> l = Roster.instance().matchingList(null, null, ""+addrSelector.getAddress().getNumber(), null, null, null, null); ! if (l.size()>0) { ! rosterEntry = l.get(0); ! } } return rosterEntry; --- 166,176 ---- public RosterEntry getRosterEntry(){ if ((rosterEntry == null) && (throttle!=null) && ! (jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesPreferences().isUsingExThrottle()) && ! (jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesPreferences().isEnablingRosterSearch()) && ! addrSelector != null && addrSelector.getAddress() != null ) { ! rosterEntry = null; List<RosterEntry> l = Roster.instance().matchingList(null, null, ""+addrSelector.getAddress().getNumber(), null, null, null, null); ! if (l.size()>0) ! rosterEntry = l.get(0); } return rosterEntry; *************** *** 474,478 **** List<Element> elementList = e.getChildren("locoaddress"); ! if (elementList.size() > 0){ log.debug("found " + elementList.size() +" locoaddress"); addrSelector.setAddress((DccLocoAddress) (new jmri.configurexml.LocoAddressXml()) --- 473,477 ---- List<Element> elementList = e.getChildren("locoaddress"); ! if ((elementList.size() > 0) && (getThrottle() == null)) { log.debug("found " + elementList.size() +" locoaddress"); addrSelector.setAddress((DccLocoAddress) (new jmri.configurexml.LocoAddressXml()) Index: SaveThrottlePreferencesAction.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/SaveThrottlePreferencesAction.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SaveThrottlePreferencesAction.java 13 Oct 2009 18:25:03 -0000 1.5 --- SaveThrottlePreferencesAction.java 16 Nov 2009 20:03:12 -0000 1.6 *************** *** 47,52 **** */ public void actionPerformed(ActionEvent e) { ! ! int throttles = ThrottleFrameManager.instance().getNumberThrottles(); if (throttles == 0){ --- 47,55 ---- */ public void actionPerformed(ActionEvent e) { ! // TODO: was called from commented out Throttle tool menu entry ("MenuItemSaveThrottlePreferences") ! // throttles are saved: linked to roster entry or in global throttle layout ! // to rework for a "save as" throttle menu option ! // actionner to be moved in throttle window tool bar ! int throttles = ThrottleFrameManager.instance().getNumberThrottleWindows(); if (throttles == 0){ *************** *** 87,91 **** doc.addContent(0,p); ! Iterator<ThrottleWindow> i = ThrottleFrameManager.instance().getThrottleFrames(); ThrottleWindow f = i.next(); Element throttleElement = f.getXml(); --- 90,94 ---- doc.addContent(0,p); ! Iterator<ThrottleWindow> i = ThrottleFrameManager.instance().getThrottleWindows(); ThrottleWindow f = i.next(); Element throttleElement = f.getXml(); Index: ThrottleWindow.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/ThrottleWindow.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ThrottleWindow.java 14 Nov 2009 16:04:45 -0000 1.8 --- ThrottleWindow.java 16 Nov 2009 20:03:12 -0000 1.9 *************** *** 13,16 **** --- 13,17 ---- import java.awt.event.WindowEvent; import java.io.File; + import java.util.List; import java.util.ResourceBundle; *************** *** 103,107 **** { ThrottleWindow me = (ThrottleWindow)e.getSource(); ! ThrottleFrameManager.instance().requestThrottleFrameDestruction(me); } --- 104,108 ---- { ThrottleWindow me = (ThrottleWindow)e.getSource(); ! ThrottleFrameManager.instance().requestThrottleWindowDestruction(me); } *************** *** 439,445 **** } ! public Element getXml() { ! ! Element me = new Element("ThrottleFrame"); me.setAttribute("title", titleText); me.setAttribute("titleType", titleTextType); --- 440,445 ---- } ! public Element getXml() { ! Element me = new Element("ThrottleWindow"); me.setAttribute("title", titleText); me.setAttribute("titleType", titleTextType); *************** *** 448,456 **** children.add(WindowPreferences.getPreferences(this)); ! // TODO: save all throttlesFrame inside this Window ! // Iterator<JComponent> ite = throttlesLayout.getIterator() ; ! // while (ite.hasNext() ) ! children.add( curentThrottleFrame.getXml() ); ! me.setContent(children); return me; --- 448,467 ---- children.add(WindowPreferences.getPreferences(this)); ! Component[] cmps = throttlesPanel.getComponents(); ! if (cmps!=null) { ! for (int i=0; i<cmps.length; i++) ! try { ! if (cmps[i] instanceof ThrottleFrame) { ! ThrottleFrame tf = (ThrottleFrame) cmps[i]; ! Element tfe = tf.getXmlFile(); ! if (tfe == null) ! tfe = tf.getXml(); ! children.add( tfe ); ! } ! } catch (Exception ex) { ! log.debug("Got exception (no panic): "+ex); ! } ! } ! me.setContent(children); return me; *************** *** 473,483 **** } public void setXml(Element e) { setTitle(e.getAttribute("title").getValue()); setTitleText ( e.getAttribute("title").getValue() ); setTitleTextType ( e.getAttribute("titleType").getValue()) ; Element window = e.getChild("window"); ! WindowPreferences.setPreferences(this, window); } --- 484,508 ---- } + @SuppressWarnings("unchecked") public void setXml(Element e) { setTitle(e.getAttribute("title").getValue()); setTitleText ( e.getAttribute("title").getValue() ); setTitleTextType ( e.getAttribute("titleType").getValue()) ; + + List<Element> tfes = e.getChildren("ThrottleFrame"); + if ((tfes == null) || (tfes.size()==0)) + curentThrottleFrame.setXml(e); + else + for (int i=0; i<tfes.size(); i++) { + ThrottleFrame tf; + if (i == 0) + tf = getCurentThrottleFrame(); + else + tf = addThrottleFrame(); + tf.setXml(tfes.get(i)); + } Element window = e.getChild("window"); ! WindowPreferences.setPreferences(this, window); } Index: ThrottleFrameManager.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/ThrottleFrameManager.java,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** ThrottleFrameManager.java 19 Oct 2009 20:16:04 -0000 1.18 --- ThrottleFrameManager.java 16 Nov 2009 20:03:12 -0000 1.19 *************** *** 65,73 **** /** ! * Tell this manager that a new ThrottleFrame was created. ! * @return The newly created ThrottleFrame */ ! public ThrottleFrame createThrottleFrame() ! { ThrottleWindow tw = new ThrottleWindow(); tw.pack(); --- 65,72 ---- /** ! * Tell this manager that a new ThrottleWindow was created. ! * @return The newly created ThrottleWindow */ ! public ThrottleWindow createThrottleWindow() { ThrottleWindow tw = new ThrottleWindow(); tw.pack(); *************** *** 75,79 **** throttleWindows.add(tw); activeFrame = throttleWindows.indexOf(tw); ! return tw.getCurentThrottleFrame() ; } --- 74,86 ---- throttleWindows.add(tw); activeFrame = throttleWindows.indexOf(tw); ! return tw ; ! } ! ! /** ! * Tell this manager that a new ThrottleFrame was created. ! * @return The newly created ThrottleFrame ! */ ! public ThrottleFrame createThrottleFrame() { ! return createThrottleWindow().getCurentThrottleFrame() ; } *************** *** 83,92 **** * @param frame The to-be-destroyed ThrottleFrame */ ! public void requestThrottleFrameDestruction(ThrottleWindow frame) { if (frame != null) { throttleWindows.remove(throttleWindows.indexOf(frame)); ! destroyThrottleFrame(frame); if (throttleWindows.size() > 0) { --- 90,99 ---- * @param frame The to-be-destroyed ThrottleFrame */ ! public void requestThrottleWindowDestruction(ThrottleWindow frame) { if (frame != null) { throttleWindows.remove(throttleWindows.indexOf(frame)); ! destroyThrottleWindow(frame); if (throttleWindows.size() > 0) { *************** *** 96,105 **** } ! public void requestAllThrottleFramesDestroyed() { for (Iterator<ThrottleWindow> i = throttleWindows.iterator(); i.hasNext();) { ThrottleWindow frame = i.next(); ! destroyThrottleFrame(frame); } throttleWindows = new ArrayList<ThrottleWindow>(0); --- 103,112 ---- } ! public void requestAllThrottleWindowsDestroyed() { for (Iterator<ThrottleWindow> i = throttleWindows.iterator(); i.hasNext();) { ThrottleWindow frame = i.next(); ! destroyThrottleWindow(frame); } throttleWindows = new ArrayList<ThrottleWindow>(0); *************** *** 109,117 **** * Perform the destruction of a ThrottleFrame. This method will not * affect the throttleFrames list, thus ensuring no synchronozation problems. ! * @param frame The ThrottleFrame to be destroyed. */ ! private void destroyThrottleFrame(ThrottleWindow frame) { ! frame.dispose(); } --- 116,124 ---- * Perform the destruction of a ThrottleFrame. This method will not * affect the throttleFrames list, thus ensuring no synchronozation problems. ! * @param window The ThrottleFrame to be destroyed. */ ! private void destroyThrottleWindow(ThrottleWindow window) { ! window.dispose(); } *************** *** 121,125 **** * @return The Iterator on the list of ThrottleFrames. */ ! public Iterator<ThrottleWindow> getThrottleFrames() { return throttleWindows.iterator(); --- 128,132 ---- * @return The Iterator on the list of ThrottleFrames. */ ! public Iterator<ThrottleWindow> getThrottleWindows() { return throttleWindows.iterator(); *************** *** 152,156 **** } ! public int getNumberThrottles(){ return throttleWindows.size(); } --- 159,163 ---- } ! public int getNumberThrottleWindows(){ return throttleWindows.size(); } *************** *** 205,209 **** } ! public ThrottlesListPanel getThrottlesList() { return throttlesListPanel ; --- 212,216 ---- } ! public ThrottlesListPanel getThrottlesListPanel() { return throttlesListPanel ; Index: StoreXmlThrottleAction.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/StoreXmlThrottleAction.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** StoreXmlThrottleAction.java 13 Oct 2009 18:25:03 -0000 1.20 --- StoreXmlThrottleAction.java 16 Nov 2009 20:03:12 -0000 1.21 *************** *** 63,70 **** "xml-stylesheet", m); doc.addContent(0, p); - java.util.ArrayList<Element> children = new java.util.ArrayList<Element>(5); ! for (Iterator<ThrottleWindow> i = ThrottleFrameManager.instance() ! .getThrottleFrames(); i.hasNext();) { ThrottleWindow f = i.next(); Element throttleElement = f.getXml(); --- 63,73 ---- "xml-stylesheet", m); doc.addContent(0, p); java.util.ArrayList<Element> children = new java.util.ArrayList<Element>(5); ! ! // throttle list window ! children.add(ThrottleFrameManager.instance().getThrottlesListPanel().getXml() ); ! ! // throttle windows ! for (Iterator<ThrottleWindow> i = ThrottleFrameManager.instance().getThrottleWindows(); i.hasNext();) { ThrottleWindow f = i.next(); Element throttleElement = f.getXml(); Index: ThrottleFrame.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/ThrottleFrame.java,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** ThrottleFrame.java 14 Nov 2009 16:04:45 -0000 1.57 --- ThrottleFrame.java 16 Nov 2009 20:03:12 -0000 1.58 *************** *** 1,4 **** --- 1,5 ---- package jmri.jmrit.throttle; + import java.awt.Color; import java.awt.Component; import java.awt.Dimension; *************** *** 15,18 **** --- 16,20 ---- import javax.swing.JInternalFrame; import javax.swing.JOptionPane; + import javax.swing.JPanel; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; *************** *** 38,41 **** --- 40,45 ---- private static int PREV_FRAME_KEY = KeyEvent.VK_LEFT; + private static Color TRANS_COLOR = new Color(200,200,200,75); + private static int ADDRESS_PANEL_INDEX = 0; private static int CONTROL_PANEL_INDEX = 1; *************** *** 56,59 **** --- 60,65 ---- private String _throttlesBasePath = XmlFile.prefsDir()+"throttle"+File.separator ; private String title; + + private String lastUsedSaveFile = null; public ThrottleFrame(ThrottleWindow tw) *************** *** 62,66 **** throttleWindow = tw; initGUI(); ! jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesList().addThrottleFrame(this); } --- 68,72 ---- throttleWindow = tw; initGUI(); ! jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesListPanel().addThrottleFrame(this); } *************** *** 127,137 **** Element throttleElement = getXml(); // don't save the loco address or consist address ! throttleElement.getChild("AddressPanel").removeChild("locoaddress"); ! throttleElement.getChild("AddressPanel").removeChild("locoaddress"); ! // don't save function buttons labels, they're in roster entry ! throttleElement.getChild("FunctionPanel").removeChildren("FunctionButton"); root.setContent(throttleElement); xf.writeXML(file, doc); } catch (Exception ex){ --- 133,144 ---- Element throttleElement = getXml(); // don't save the loco address or consist address ! // throttleElement.getChild("AddressPanel").removeChild("locoaddress"); ! // throttleElement.getChild("AddressPanel").removeChild("locoaddress"); ! if (this.getRosterEntry() != null) // don't save function buttons labels, they're in roster entry ! throttleElement.getChild("FunctionPanel").removeChildren("FunctionButton"); root.setContent(throttleElement); xf.writeXML(file, doc); + setLastUsedSaveFile(sfile); } catch (Exception ex){ *************** *** 147,158 **** Element root = xf.rootFromFile(f); Element conf = root.getChild("ThrottleFrame"); ! // File looks ok, close all existing Jynstruments Component[] cmps = getComponents(); for (int i=0; i<cmps.length; i++) { try { ! JInternalFrame jyf = (JInternalFrame) cmps[i]; ! Jynstrument ins = (Jynstrument) jyf.getContentPane(); ! if (ins!= null) ! jyf.dispose(); } catch (Exception ex) { log.debug("Got exception (no panic) "+ex); --- 154,168 ---- Element root = xf.rootFromFile(f); Element conf = root.getChild("ThrottleFrame"); ! // File looks ok ! setLastUsedSaveFile(sfile); ! // close all existing Jynstruments Component[] cmps = getComponents(); for (int i=0; i<cmps.length; i++) { try { ! if (cmps[i] instanceof JInternalFrame) { ! JInternalFrame jyf = (JInternalFrame) cmps[i]; ! if (jyf.getContentPane() instanceof Jynstrument) ! jyf.dispose(); ! } } catch (Exception ex) { log.debug("Got exception (no panic) "+ex); *************** *** 171,175 **** private void setTransparent(JComponent jcomp) { ! jcomp.setOpaque(false); setTransparent ( jcomp.getComponents() ); } --- 181,189 ---- private void setTransparent(JComponent jcomp) { ! if (jcomp instanceof JPanel) //OS X: Jpanel components are enough ! { ! jcomp.setBackground(TRANS_COLOR);//new Color(0,0,0,0)); ! jcomp.setOpaque(false); ! } setTransparent ( jcomp.getComponents() ); } *************** *** 177,187 **** private void setTransparent(Component[] comps) { - JComponent jcmp2; for (int i=0; i<comps.length; i++) { try { ! jcmp2 = (JComponent) comps[i]; ! setTransparent( jcmp2 ); } catch(Exception e) --- 191,200 ---- private void setTransparent(Component[] comps) { for (int i=0; i<comps.length; i++) { try { ! if (comps[i] instanceof JComponent) ! setTransparent( (JComponent) comps[i] ); } catch(Exception e) *************** *** 254,258 **** addressPanel.addAddressListener(functionPanel); addressPanel.addAddressListener(this); ! addressPanel.addAddressListener(jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesList()); add(controlPanel, PANEL_LAYER); --- 267,271 ---- addressPanel.addAddressListener(functionPanel); addressPanel.addAddressListener(this); ! addressPanel.addAddressListener(jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesListPanel()); add(controlPanel, PANEL_LAYER); *************** *** 353,357 **** for (int i=0; i<cmps.length; i++) { try { ! checkPosition ( (JInternalFrame) cmps[i] ); } catch (Exception ex) { log.debug("Got exception (no panic) "+ex); --- 366,371 ---- for (int i=0; i<cmps.length; i++) { try { ! if (cmps[i] instanceof JInternalFrame) ! checkPosition ( (JInternalFrame) cmps[i] ); } catch (Exception ex) { log.debug("Got exception (no panic) "+ex); *************** *** 375,379 **** public void dispose() { log.debug("Disposing "+getTitle()); ! jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesList().removeThrottleFrame(this); // check for any special disposing in InternalFrames controlPanel.destroy(); --- 389,393 ---- public void dispose() { log.debug("Disposing "+getTitle()); ! jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesListPanel().removeThrottleFrame(this); // check for any special disposing in InternalFrames controlPanel.destroy(); *************** *** 430,436 **** } else { ! try { // #JYNSTRUMENT#, Very important, DO NOT FORGET, clean the Jynstrument ! Jynstrument jyns = (Jynstrument) ((JInternalFrame) e.getSource()).getContentPane() ; ! jyns.quit(); } catch (Exception exc) { if (log.isDebugEnabled()) --- 444,451 ---- } else { ! try { // #JYNSTRUMENT#, Very important, DO NOT FORGET, clean the Jynstrument ! if ( (e.getSource() instanceof JInternalFrame) ! && (((JInternalFrame) e.getSource()).getContentPane() instanceof Jynstrument) ) ! ((Jynstrument) ((JInternalFrame) e.getSource()).getContentPane()).quit(); } catch (Exception exc) { if (log.isDebugEnabled()) *************** *** 489,501 **** for (int i=0; i<cmps.length; i++) { try { ! JInternalFrame intFr = (JInternalFrame) cmps[i]; ! Jynstrument ins = (Jynstrument) intFr.getContentPane(); ! if (ins!= null) { ! Element elt = new Element("Jynstrument"); ! elt.setAttribute("JynstrumentFolder", ins.getFolder()); ! java.util.ArrayList<Element> jychildren = new java.util.ArrayList<Element>(1); ! jychildren.add(WindowPreferences.getPreferences(intFr)); ! elt.setContent(jychildren); ! children.add(elt); } } catch (Exception ex) { --- 504,520 ---- for (int i=0; i<cmps.length; i++) { try { ! if (cmps[i] instanceof JInternalFrame) { ! JInternalFrame intFr = (JInternalFrame) cmps[i]; ! if (intFr.getContentPane() instanceof Jynstrument) { ! Jynstrument ins = (Jynstrument) intFr.getContentPane(); ! if (ins!= null) { ! Element elt = new Element("Jynstrument"); ! elt.setAttribute("JynstrumentFolder", ins.getFolder().substring( System.getProperty("user.dir").length() ) ); ! java.util.ArrayList<Element> jychildren = new java.util.ArrayList<Element>(1); ! jychildren.add(WindowPreferences.getPreferences(intFr)); ! elt.setContent(jychildren); ! children.add(elt); ! } ! } } } catch (Exception ex) { *************** *** 507,510 **** --- 526,537 ---- } + public Element getXmlFile() { + if (getLastUsedSaveFile() == null) + return null; + Element me = new Element("ThrottleFrame"); + me.setAttribute("ThrottleXMLFile", getLastUsedSaveFile().substring(_throttlesBasePath.length()) ); + return me; + } + /** * Set the preferences based on the XML Element. *************** *** 522,525 **** --- 549,560 ---- @SuppressWarnings("unchecked") public void setXml(Element e) { + if (e == null) return; + + String sfile = e.getAttributeValue("ThrottleXMLFile"); + if (sfile != null) { + loadThrottle(_throttlesBasePath+sfile); + return; + } + int bSize = 23; // Get InternalFrame border size *************** *** 542,546 **** if ((jinsts != null) && (jinsts.size()>0)) { for (int i=0; i<jinsts.size(); i++) { ! JInternalFrame jif = ynstrument(jinsts.get(i).getAttributeValue("JynstrumentFolder")); Element window = jinsts.get(i).getChild("window"); if ((window !=null) && (jif!=null)) --- 577,581 ---- if ((jinsts != null) && (jinsts.size()>0)) { for (int i=0; i<jinsts.size(); i++) { ! JInternalFrame jif = ynstrument(System.getProperty("user.dir")+jinsts.get(i).getAttributeValue("JynstrumentFolder")); Element window = jinsts.get(i).getChild("window"); if ((window !=null) && (jif!=null)) *************** *** 635,638 **** --- 670,674 ---- public void notifyAddressReleased(int address, boolean isLong) { + setLastUsedSaveFile(null); setFrameTitle(); } *************** *** 647,649 **** --- 683,693 ---- static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(ThrottleFrame.class.getName()); + + public String getLastUsedSaveFile() { + return lastUsedSaveFile; + } + + public void setLastUsedSaveFile(String lastUsedSaveFile) { + this.lastUsedSaveFile = lastUsedSaveFile; + } } \ No newline at end of file Index: LoadXmlThrottleAction.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/LoadXmlThrottleAction.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** LoadXmlThrottleAction.java 5 Jun 2009 04:29:24 -0000 1.20 --- LoadXmlThrottleAction.java 16 Nov 2009 20:03:12 -0000 1.21 *************** *** 63,67 **** // if exising frames are open ask to destroy those or merge. ! if (ThrottleFrameManager.instance().getThrottleFrames().hasNext()) { Object[] possibleValues = { rb.getString("LabelMerge"), rb.getString("LabelReplace"), rb.getString("LabelCancel") }; --- 63,67 ---- // if exising frames are open ask to destroy those or merge. ! if (ThrottleFrameManager.instance().getThrottleWindows().hasNext()) { Object[] possibleValues = { rb.getString("LabelMerge"), rb.getString("LabelReplace"), rb.getString("LabelCancel") }; *************** *** 74,79 **** if (selectedValue == JOptionPane.NO_OPTION) { // replace chosen - close all then load ! ThrottleFrameManager.instance() ! .requestAllThrottleFramesDestroyed(); } } --- 74,78 ---- if (selectedValue == JOptionPane.NO_OPTION) { // replace chosen - close all then load ! ThrottleFrameManager.instance().requestAllThrottleWindowsDestroyed(); } } *************** *** 97,107 **** Element root = prefs.rootFromFile(f); List<Element> throttles = root.getChildren("ThrottleFrame"); ! for (java.util.Iterator<Element> i = throttles.iterator(); i.hasNext();) { ! ThrottleFrame tf = ThrottleFrameManager.instance() ! .createThrottleFrame(); ! tf.setXml(i.next()); ! tf.setVisible(true); } - } catch (org.jdom.JDOMException ex) { log.warn("Loading Throttles exception",ex); --- 96,118 ---- Element root = prefs.rootFromFile(f); List<Element> throttles = root.getChildren("ThrottleFrame"); ! if ((throttles != null) && (throttles.size()>0)) { // OLD FORMAT ! for (java.util.Iterator<Element> i = throttles.iterator(); i.hasNext();) { ! ThrottleFrame tf = ThrottleFrameManager.instance().createThrottleFrame(); ! tf.setXml(i.next()); ! tf.setVisible(true); ! } ! } ! else { ! throttles = root.getChildren("ThrottleWindow"); ! for (java.util.Iterator<Element> i = throttles.iterator(); i.hasNext();) { ! ThrottleWindow tw = ThrottleFrameManager.instance().createThrottleWindow(); ! tw.setXml(i.next()); ! tw.setVisible(true); ! } ! Element tlp = root.getChild("ThrottlesListPanel"); ! if (tlp!=null) { ! ThrottleFrameManager.instance().getThrottlesListPanel().setXml(tlp); ! } } } catch (org.jdom.JDOMException ex) { log.warn("Loading Throttles exception",ex); Index: WindowPreferences.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/WindowPreferences.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** WindowPreferences.java 14 Nov 2009 16:04:45 -0000 1.7 --- WindowPreferences.java 16 Nov 2009 20:03:12 -0000 1.8 *************** *** 78,81 **** --- 78,82 ---- window.setAttribute("width", String.valueOf(size.width)); window.setAttribute("height", String.valueOf(size.height)); + window.setAttribute("isVisible", String.valueOf(c.isVisible())); return window; } *************** *** 103,106 **** --- 104,109 ---- c.setLocation(x, y); c.setSize(width, height); + if (e.getAttribute("isVisible")!=null) + c.setVisible(e.getAttribute("isVisible").getBooleanValue()); } catch (org.jdom.DataConversionException ex) { Index: ThrottlesListPanel.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/ThrottlesListPanel.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ThrottlesListPanel.java 1 Nov 2009 21:57:56 -0000 1.2 --- ThrottlesListPanel.java 16 Nov 2009 20:03:12 -0000 1.3 *************** *** 18,21 **** --- 18,23 ---- import javax.swing.event.ListSelectionListener; + import org.jdom.Element; + import jmri.DccThrottle; import jmri.jmrit.catalog.NamedIcon; *************** *** 95,97 **** --- 97,113 ---- repaint(); } + + public Element getXml() { + Element me = new Element("ThrottlesListPanel"); + java.util.ArrayList<Element> children = new java.util.ArrayList<Element>(1); + children.add(WindowPreferences.getPreferences(this.getTopLevelAncestor())); + me.setContent(children); + return me; + } + + public void setXml(Element tlp) { + Element window = tlp.getChild("window"); + if (window!=null) + WindowPreferences.setPreferences(this.getTopLevelAncestor(), window); + } } Index: FunctionPanel.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/FunctionPanel.java,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** FunctionPanel.java 14 Nov 2009 16:04:45 -0000 1.51 --- FunctionPanel.java 16 Nov 2009 20:03:12 -0000 1.52 *************** *** 191,194 **** --- 191,195 ---- public void saveFunctionButtonsToRoster (RosterEntry rosterEntry){ + log.debug("saveFunctionButtonsToRoster"); if (rosterEntry == null) return; Index: StopAllButton.java =================================================================== RCS file: /cvsroot/jmri/jmri/jmrit/throttle/StopAllButton.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** StopAllButton.java 19 Oct 2009 20:16:04 -0000 1.1 --- StopAllButton.java 16 Nov 2009 20:03:12 -0000 1.2 *************** *** 21,25 **** addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! Enumeration<ThrottleFrame> tpi = jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesList().getEnumeration() ; while ( tpi.hasMoreElements() ) tpi.nextElement().getControlPanel().stop(); --- 21,25 ---- addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ! Enumeration<ThrottleFrame> tpi = jmri.jmrit.throttle.ThrottleFrameManager.instance().getThrottlesListPanel().getEnumeration() ; while ( tpi.hasMoreElements() ) tpi.nextElement().getControlPanel().stop(); |