001package jmri.jmrix.dccpp.swing.messages.configurexml; 002 003import jmri.configurexml.JmriConfigureXmlException; 004import jmri.jmrit.display.*; 005import jmri.jmrit.display.configurexml.PositionableLabelXml; 006import jmri.jmrix.dccpp.swing.messages.MessagesPositionable; 007 008import org.jdom2.Element; 009 010/** Handle configuration for MessagesPositionable objects. */ 011public class MessagesPositionableXml extends PositionableLabelXml { 012 013 public MessagesPositionableXml() { 014 } 015 016 /** Store a MessagesPositionable as a dccex_messages element. */ 017 @Override 018 public Element store(Object o) { 019 020 MessagesPositionable p = (MessagesPositionable) o; 021 if (!p.isActive()) { 022 return null; // if flagged as inactive, don't store 023 } 024 025 Element element = new Element("dccex_messages"); 026 027 element.addContent(MessagesConfigurationXml.store(p.getMessagesPanel())); 028 029 if (p.getId() != null) element.setAttribute("id", p.getId()); 030 element.setAttribute("x", "" + p.getX()); 031 element.setAttribute("y", "" + p.getY()); 032 033 element.setAttribute("class", this.getClass().getName()); 034 035 storeLogixNG_Data(p, element); 036 037 return element; 038 } 039 040 @Override 041 public boolean load(Element shared, Element perNode) { 042 log.error("Invalid method called"); 043 return false; 044 } 045 046 /** Create a MessagesPositionable from a dccex_messages element and add it to the Editor passed as o. */ 047 @Override 048 public void load(Element element, Object o) throws JmriConfigureXmlException { 049 Editor ed = (Editor) o; 050 051 MessagesPositionable l = new MessagesPositionable(ed); 052 053 MessagesConfigurationXml.load(l.getMessagesPanel(), element, false); 054 055 l.initComponents(); 056 057 int x = 0; 058 int y = 0; 059 try { 060 if (element.getAttribute("id") != null) { 061 try { 062 l.setId(element.getAttribute("id").getValue()); 063 } catch (Positionable.DuplicateIdException e) { 064 throw new JmriConfigureXmlException("Positionable id is not unique", e); 065 } 066 } 067 x = element.getAttribute("x").getIntValue(); 068 y = element.getAttribute("y").getIntValue(); 069 } catch (org.jdom2.DataConversionException e) { 070 log.error("failed to convert positional attribute"); 071 } 072 l.setOpaque(false); 073 l.setLocation(x, y); 074 075 l.setDisplayLevel(Editor.ICONS); 076 try { 077 ed.putItem(l, true); 078 } catch (Positionable.DuplicateIdException e) { 079 throw new JmriConfigureXmlException("Positionable id is not unique", e); 080 } 081 082 loadLogixNG_Data(l, element); 083 } 084 085 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MessagesPositionableXml.class); 086}