Search in sources :

Example 51 with Attribute

use of org.jdom2.Attribute in project JMRI by JMRI.

the class BlockValueFile method readBlockValues.

/*
     *  Reads Block values from a file in the user's preferences directory
     *  If the file containing block values does not exist this routine returns quietly.
     *  If a Block named in the file does not exist currently, that entry is quietly ignored.
     */
@SuppressWarnings("unchecked")
public void readBlockValues() throws org.jdom2.JDOMException, java.io.IOException {
    log.debug("entered readBlockValues");
    List<String> blocks = blockManager.getSystemNameList();
    // check if file exists
    if (checkFile(defaultFileName)) {
        // file is present, 
        root = rootFromName(defaultFileName);
        if ((root != null) && (blocks.size() > 0)) {
            // there is a file and there are Blocks defined
            Element blockvalues = root.getChild("blockvalues");
            if (blockvalues != null) {
                // there are values defined, read and set block values if Block exists.
                List<Element> blockList = blockvalues.getChildren("block");
                for (int i = 0; i < blockList.size(); i++) {
                    if ((blockList.get(i)).getAttribute("systemname") == null) {
                        log.warn("unexpected null in systemName " + blockList.get(i) + " " + blockList.get(i).getAttributes());
                        break;
                    }
                    String sysName = blockList.get(i).getAttribute("systemname").getValue();
                    // get Block - ignore entry if block not found
                    Block b = blockManager.getBySystemName(sysName);
                    if (b != null) {
                        // Block was found, set its value
                        Object v = blockList.get(i).getAttribute("value").getValue();
                        if (blockList.get(i).getAttribute("valueClass") != null) {
                            if (blockList.get(i).getAttribute("valueClass").getValue().equals("jmri.jmrit.roster.RosterEntry")) {
                                jmri.jmrit.roster.RosterEntry re = jmri.jmrit.roster.Roster.getDefault().getEntryForId(((String) v));
                                if (re != null) {
                                    v = re;
                                }
                            }
                        }
                        b.setValue(v);
                        // set direction if there is one
                        int dd = jmri.Path.NONE;
                        Attribute a = blockList.get(i).getAttribute("dir");
                        if (a != null) {
                            try {
                                dd = a.getIntValue();
                            } catch (org.jdom2.DataConversionException e) {
                                log.error("failed to convert direction attribute");
                            }
                        }
                        b.setDirection(dd);
                    }
                }
            }
        }
    }
}
Also used : Attribute(org.jdom2.Attribute) Element(org.jdom2.Element) Block(jmri.Block)

Example 52 with Attribute

use of org.jdom2.Attribute in project JMRI by JMRI.

the class LayoutEditorXml method load.

/**
     * Create a LayoutEditor object, then register and fill it, then pop it in a
     * JFrame
     *
     * @param shared Top level Element to unpack.
     */
@Override
public boolean load(Element shared, Element perNode) {
    boolean result = true;
    Attribute a;
    // find coordinates
    int x = 0;
    int y = 0;
    // From this version onwards separate sizes for window and panel are used
    int windowHeight = 400;
    int windowWidth = 300;
    int panelHeight = 340;
    int panelWidth = 280;
    int sidetrackwidth = 3;
    int mainlinetrackwidth = 3;
    try {
        x = shared.getAttribute("x").getIntValue();
        y = shared.getAttribute("y").getIntValue();
        // For compatibility with previous versions, try and see if height and width tags are contained in the file
        if ((a = shared.getAttribute("height")) != null) {
            windowHeight = a.getIntValue();
            panelHeight = windowHeight - 60;
        }
        if ((a = shared.getAttribute("width")) != null) {
            windowWidth = a.getIntValue();
            panelWidth = windowWidth - 18;
        }
        // For files created by the new version, retrieve window and panel sizes
        if ((a = shared.getAttribute("windowheight")) != null) {
            windowHeight = a.getIntValue();
        }
        if ((a = shared.getAttribute("windowwidth")) != null) {
            windowWidth = a.getIntValue();
        }
        if ((a = shared.getAttribute("panelheight")) != null) {
            panelHeight = a.getIntValue();
        }
        if ((a = shared.getAttribute("panelwidth")) != null) {
            panelWidth = a.getIntValue();
        }
        mainlinetrackwidth = shared.getAttribute("mainlinetrackwidth").getIntValue();
        sidetrackwidth = shared.getAttribute("sidetrackwidth").getIntValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert LayoutEditor's attribute");
        result = false;
    }
    double xScale = 1.0;
    double yScale = 1.0;
    a = shared.getAttribute("xscale");
    if (a != null) {
        try {
            xScale = (Float.parseFloat(a.getValue()));
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    a = shared.getAttribute("yscale");
    if (a != null) {
        try {
            yScale = (Float.parseFloat(a.getValue()));
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    // find the name and default track color
    String name = "";
    if (shared.getAttribute("name") != null) {
        name = shared.getAttribute("name").getValue();
    }
    if (jmri.jmrit.display.PanelMenu.instance().isPanelNameUsed(name)) {
        JFrame frame = new JFrame("DialogDemo");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        log.warn("File contains a panel with the same name (" + name + ") as an existing panel");
        int n = JOptionPane.showConfirmDialog(frame, java.text.MessageFormat.format(rb.getString("DuplicatePanel"), new Object[] { name }), rb.getString("DuplicatePanelTitle"), JOptionPane.YES_NO_OPTION);
        if (n == JOptionPane.NO_OPTION) {
            return false;
        }
    }
    String defaultColor = "black";
    String defaultTextColor = "black";
    if (shared.getAttribute("defaulttrackcolor") != null) {
        defaultColor = shared.getAttribute("defaulttrackcolor").getValue();
    }
    if (shared.getAttribute("defaulttextcolor") != null) {
        defaultTextColor = shared.getAttribute("defaulttextcolor").getValue();
    }
    //default to using use default track color for circle color
    String turnoutCircleColor = "track";
    if (shared.getAttribute("turnoutcirclecolor") != null) {
        turnoutCircleColor = shared.getAttribute("turnoutcirclecolor").getValue();
    }
    int turnoutCircleSize = 2;
    if (shared.getAttribute("turnoutcirclesize") != null) {
        try {
            turnoutCircleSize = shared.getAttribute("turnoutcirclesize").getIntValue();
        } catch (DataConversionException e1) {
            //leave at default if cannot convert
            log.warn("unable to convert turnoutcirclesize");
        }
    }
    boolean turnoutDrawUnselectedLeg = true;
    if ((a = shared.getAttribute("turnoutdrawunselectedleg")) != null && a.getValue().equals("no")) {
        turnoutDrawUnselectedLeg = false;
    }
    // create the objects
    LayoutEditor panel = new LayoutEditor(name);
    panel.setLayoutName(name);
    panel.setMainlineTrackWidth(mainlinetrackwidth);
    panel.setSideTrackWidth(sidetrackwidth);
    panel.setDefaultTrackColor(defaultColor);
    panel.setDefaultTextColor(defaultTextColor);
    panel.setTurnoutCircleColor(turnoutCircleColor);
    panel.setTurnoutCircleSize(turnoutCircleSize);
    panel.setTurnoutDrawUnselectedLeg(turnoutDrawUnselectedLeg);
    panel.setXScale(xScale);
    panel.setYScale(yScale);
    // turnout size parameters
    double sz = 20.0;
    a = shared.getAttribute("turnoutbx");
    if (a != null) {
        try {
            sz = (Float.parseFloat(a.getValue()));
            panel.setTurnoutBX(sz);
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    a = shared.getAttribute("turnoutcx");
    if (a != null) {
        try {
            sz = (Float.parseFloat(a.getValue()));
            panel.setTurnoutCX(sz);
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    a = shared.getAttribute("turnoutwid");
    if (a != null) {
        try {
            sz = (Float.parseFloat(a.getValue()));
            panel.setTurnoutWid(sz);
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    a = shared.getAttribute("xoverlong");
    if (a != null) {
        try {
            sz = (Float.parseFloat(a.getValue()));
            panel.setXOverLong(sz);
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    a = shared.getAttribute("xoverhwid");
    if (a != null) {
        try {
            sz = (Float.parseFloat(a.getValue()));
            panel.setXOverHWid(sz);
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    a = shared.getAttribute("xovershort");
    if (a != null) {
        try {
            sz = (Float.parseFloat(a.getValue()));
            panel.setXOverShort(sz);
        } catch (Exception e) {
            log.error("failed to convert to float - " + a.getValue());
            result = false;
        }
    }
    // grid size parameter
    // this value is never used but it's the default
    int iz = 10;
    a = shared.getAttribute("gridSize");
    if (a != null) {
        try {
            iz = (Integer.parseInt(a.getValue()));
            panel.setGridSize(iz);
        } catch (Exception e) {
            log.error("failed to convert to int - " + a.getValue());
            result = false;
        }
    }
    // second grid size parameter
    // this value is never used but it's the default
    iz = 10;
    a = shared.getAttribute("gridSize2nd");
    if (a != null) {
        try {
            iz = (Integer.parseInt(a.getValue()));
            panel.setGridSize2nd(iz);
        } catch (Exception e) {
            log.error("failed to convert to int - " + a.getValue());
            result = false;
        }
    }
    // set contents state
    String slValue = "both";
    if ((a = shared.getAttribute("sliders")) != null && a.getValue().equals("no")) {
        slValue = "none";
    }
    if ((a = shared.getAttribute("scrollable")) != null) {
        slValue = a.getValue();
    }
    boolean edValue = true;
    if ((a = shared.getAttribute("editable")) != null && a.getValue().equals("no")) {
        edValue = false;
    }
    boolean value = true;
    if ((a = shared.getAttribute("positionable")) != null && a.getValue().equals("no")) {
        value = false;
    }
    panel.setAllPositionable(value);
    value = true;
    if ((a = shared.getAttribute("controlling")) != null && a.getValue().equals("no")) {
        value = false;
    }
    panel.setAllControlling(value);
    value = true;
    if ((a = shared.getAttribute("animating")) != null && a.getValue().equals("no")) {
        value = false;
    }
    panel.setTurnoutAnimation(value);
    boolean hbValue = true;
    if ((a = shared.getAttribute("showhelpbar")) != null && a.getValue().equals("no")) {
        hbValue = false;
    }
    boolean dgValue = false;
    if ((a = shared.getAttribute("drawgrid")) != null && a.getValue().equals("yes")) {
        dgValue = true;
    }
    boolean sgaValue = false;
    if ((a = shared.getAttribute("snaponadd")) != null && a.getValue().equals("yes")) {
        sgaValue = true;
    }
    boolean sgmValue = false;
    if ((a = shared.getAttribute("snaponmove")) != null && a.getValue().equals("yes")) {
        sgmValue = true;
    }
    boolean aaValue = false;
    if ((a = shared.getAttribute("antialiasing")) != null && a.getValue().equals("yes")) {
        aaValue = true;
    }
    value = false;
    if ((a = shared.getAttribute("turnoutcircles")) != null && a.getValue().equals("yes")) {
        value = true;
    }
    panel.setTurnoutCircles(value);
    value = false;
    if ((a = shared.getAttribute("tooltipsnotedit")) != null && a.getValue().equals("yes")) {
        value = true;
    }
    panel.setTooltipsNotEdit(value);
    value = false;
    if ((a = shared.getAttribute("autoblkgenerate")) != null && a.getValue().equals("yes")) {
        value = true;
    }
    panel.setAutoBlockAssignment(value);
    value = true;
    if ((a = shared.getAttribute("tooltipsinedit")) != null && a.getValue().equals("no")) {
        value = false;
    }
    panel.setTooltipsInEdit(value);
    // set default track color
    if ((a = shared.getAttribute("defaulttrackcolor")) != null) {
        panel.setDefaultTrackColor(a.getValue());
    }
    // set default track color
    if ((a = shared.getAttribute("defaultoccupiedtrackcolor")) != null) {
        panel.setDefaultOccupiedTrackColor(a.getValue());
    }
    // set default track color
    if ((a = shared.getAttribute("defaultalternativetrackcolor")) != null) {
        panel.setDefaultAlternativeTrackColor(a.getValue());
    }
    try {
        int red = shared.getAttribute("redBackground").getIntValue();
        int blue = shared.getAttribute("blueBackground").getIntValue();
        int green = shared.getAttribute("greenBackground").getIntValue();
        panel.setDefaultBackgroundColor(ColorUtil.colorToString(new Color(red, green, blue)));
        panel.setBackgroundColor(new Color(red, green, blue));
    } catch (org.jdom2.DataConversionException e) {
        log.warn("Could not parse color attributes!");
    } catch (NullPointerException e) {
    // considered normal if the attributes are not present
    }
    if (shared.getAttribute("useDirectTurnoutControl") != null) {
        if (shared.getAttribute("useDirectTurnoutControl").getValue().equals("yes")) {
            panel.setDirectTurnoutControl(true);
        }
    }
    // note: moving zoom attribute into per-window user preference
    //if (shared.getAttribute("zoom") != null) {
    //    panel.setZoom(Double.valueOf(shared.getAttribute("zoom").getValue()));
    //}
    // Set editor's option flags, load content after
    // this so that individual item flags are set as saved
    panel.initView();
    // load the contents
    List<Element> items = shared.getChildren();
    for (int i = 0; i < items.size(); i++) {
        // get the class, hence the adapter object to do loading
        Element item = items.get(i);
        String adapterName = item.getAttribute("class").getValue();
        if (log.isDebugEnabled()) {
            String id = "<null>";
            try {
                id = item.getAttribute("ident").getValue();
                log.debug("Load " + id + " for [" + panel.getName() + "] via " + adapterName);
            } catch (Exception e) {
                log.debug("Load layout object for [" + panel.getName() + "] via " + adapterName);
            }
        }
        try {
            XmlAdapter adapter = (XmlAdapter) Class.forName(adapterName).newInstance();
            // and do it
            adapter.load(item, panel);
            if (!panel.loadOK()) {
                result = false;
            }
        } catch (Exception e) {
            log.error("Exception while loading " + item.getName() + ":" + e);
            result = false;
            e.printStackTrace();
        }
    }
    // dispose of url correction data
    panel.disposeLoadData();
    // final initialization of objects
    panel.setConnections();
    // display the results
    // set first since other attribute use this setting
    panel.setAllEditable(edValue);
    panel.setShowHelpBar(hbValue);
    panel.setDrawGrid(dgValue);
    panel.setSnapOnAdd(sgaValue);
    panel.setSnapOnMove(sgmValue);
    panel.setAntialiasingOn(aaValue);
    panel.setScroll(slValue);
    panel.pack();
    panel.setLayoutDimensions(windowWidth, windowHeight, x, y, panelWidth, panelHeight);
    // always show the panel
    panel.setVisible(true);
    panel.resetDirty();
    // register the resulting panel for later configuration
    ConfigureManager cm = InstanceManager.getNullableDefault(jmri.ConfigureManager.class);
    if (cm != null) {
        cm.registerUser(panel);
    }
    //open Dispatcher frame if any Transits are defined, and open Dispatcher flag set on
    if (jmri.InstanceManager.getDefault(jmri.TransitManager.class).getSystemNameList().size() > 0) {
        if (shared.getAttribute("openDispatcher") != null) {
            if (shared.getAttribute("openDispatcher").getValue().equals("yes")) {
                panel.setOpenDispatcherOnLoad(true);
                jmri.jmrit.dispatcher.DispatcherFrame df = jmri.jmrit.dispatcher.DispatcherFrame.instance();
                df.loadAtStartup();
            } else {
                panel.setOpenDispatcherOnLoad(false);
            }
        }
    }
    return result;
}
Also used : LayoutEditor(jmri.jmrit.display.layoutEditor.LayoutEditor) Attribute(org.jdom2.Attribute) Color(java.awt.Color) Element(org.jdom2.Element) DataConversionException(org.jdom2.DataConversionException) ConfigureManager(jmri.ConfigureManager) JFrame(javax.swing.JFrame) DataConversionException(org.jdom2.DataConversionException) DataConversionException(org.jdom2.DataConversionException) AbstractXmlAdapter(jmri.configurexml.AbstractXmlAdapter) XmlAdapter(jmri.configurexml.XmlAdapter)

Example 53 with Attribute

use of org.jdom2.Attribute in project JMRI by JMRI.

the class LayoutTurnoutXml method load.

/**
     * Load, starting with the levelxing element, then all the other data
     *
     * @param element Top level Element to unpack.
     * @param o       LayoutEditor as an Object
     */
@Override
public void load(Element element, Object o) {
    // create the objects
    LayoutEditor p = (LayoutEditor) o;
    // get center point
    String name = element.getAttribute("ident").getValue();
    double x = 0.0;
    double y = 0.0;
    int tType = LayoutTurnout.RH_TURNOUT;
    try {
        x = element.getAttribute("xcen").getFloatValue();
        y = element.getAttribute("ycen").getFloatValue();
        tType = element.getAttribute("type").getIntValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert layoutturnout attribute");
    }
    int version = 1;
    try {
        version = element.getAttribute("ver").getIntValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert layoutturnout b coords attribute");
    } catch (java.lang.NullPointerException e) {
    //can be ignored as panel file may not support method
    }
    // create the new LayoutTurnout
    LayoutTurnout l = new LayoutTurnout(name, tType, new Point2D.Double(x, y), 0.0, 1.0, 1.0, p, version);
    // get remaining attributes
    Attribute a = element.getAttribute("blockname");
    if (a != null) {
        l.tBlockName = a.getValue();
    }
    a = element.getAttribute("blockbname");
    if (a != null) {
        l.tBlockBName = a.getValue();
    }
    a = element.getAttribute("blockcname");
    if (a != null) {
        l.tBlockCName = a.getValue();
    }
    a = element.getAttribute("blockdname");
    if (a != null) {
        l.tBlockDName = a.getValue();
    }
    a = element.getAttribute("turnoutname");
    if (a != null) {
        l.tTurnoutName = a.getValue();
    }
    a = element.getAttribute("secondturnoutname");
    if (a != null) {
        l.tSecondTurnoutName = a.getValue();
    }
    a = element.getAttribute("connectaname");
    if (a != null) {
        l.connectAName = a.getValue();
    }
    a = element.getAttribute("connectbname");
    if (a != null) {
        l.connectBName = a.getValue();
    }
    a = element.getAttribute("connectcname");
    if (a != null) {
        l.connectCName = a.getValue();
    }
    a = element.getAttribute("connectdname");
    if (a != null) {
        l.connectDName = a.getValue();
    }
    a = element.getAttribute("signala1name");
    if (a != null) {
        l.setSignalA1Name(a.getValue());
    }
    a = element.getAttribute("signala2name");
    if (a != null) {
        l.setSignalA2Name(a.getValue());
    }
    a = element.getAttribute("signala3name");
    if (a != null) {
        l.setSignalA3Name(a.getValue());
    }
    a = element.getAttribute("signalb1name");
    if (a != null) {
        l.setSignalB1Name(a.getValue());
    }
    a = element.getAttribute("signalb2name");
    if (a != null) {
        l.setSignalB2Name(a.getValue());
    }
    a = element.getAttribute("signalc1name");
    if (a != null) {
        l.setSignalC1Name(a.getValue());
    }
    a = element.getAttribute("signalc2name");
    if (a != null) {
        l.setSignalC2Name(a.getValue());
    }
    a = element.getAttribute("signald1name");
    if (a != null) {
        l.setSignalD1Name(a.getValue());
    }
    a = element.getAttribute("signald2name");
    if (a != null) {
        l.setSignalD2Name(a.getValue());
    }
    a = element.getAttribute("linkedturnoutname");
    if (a != null) {
        l.linkedTurnoutName = a.getValue();
        try {
            l.linkType = element.getAttribute("linktype").getIntValue();
        } catch (org.jdom2.DataConversionException e) {
            log.error("failed to convert linked layout turnout type");
        }
    }
    a = element.getAttribute("continuing");
    if (a != null) {
        int continuing = Turnout.CLOSED;
        try {
            continuing = element.getAttribute("continuing").getIntValue();
        } catch (org.jdom2.DataConversionException e) {
            log.error("failed to convert continuingsense attribute");
        }
        l.setContinuingSense(continuing);
    }
    boolean value = false;
    if ((a = element.getAttribute("disabled")) != null && a.getValue().equals("yes")) {
        value = true;
    }
    l.setDisabled(value);
    value = false;
    if ((a = element.getAttribute("disableWhenOccupied")) != null && a.getValue().equals("yes")) {
        value = true;
    }
    l.setDisableWhenOccupied(value);
    boolean hide = false;
    if (element.getAttribute("hidden") != null) {
        if (element.getAttribute("hidden").getValue().equals("yes")) {
            hide = true;
        }
    }
    l.setHidden(hide);
    if (version == 2) {
        try {
            x = element.getAttribute("xa").getFloatValue();
            y = element.getAttribute("ya").getFloatValue();
            l.setCoordsA(new Point2D.Double(x, y));
        } catch (org.jdom2.DataConversionException e) {
            log.error("failed to convert layoutturnout b coords attribute");
        } catch (java.lang.NullPointerException e) {
        //can be ignored as panel file may not support method
        }
    }
    try {
        x = element.getAttribute("xb").getFloatValue();
        y = element.getAttribute("yb").getFloatValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert layoutturnout b coords attribute");
    }
    l.setCoordsB(new Point2D.Double(x, y));
    try {
        x = element.getAttribute("xc").getFloatValue();
        y = element.getAttribute("yc").getFloatValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert layoutturnout c coords attribute");
    }
    l.setCoordsC(new Point2D.Double(x, y));
    if (version == 2) {
        try {
            x = element.getAttribute("xd").getFloatValue();
            y = element.getAttribute("yd").getFloatValue();
            l.setCoordsD(new Point2D.Double(x, y));
        } catch (org.jdom2.DataConversionException e) {
            log.error("failed to convert layoutturnout c coords attribute");
        } catch (java.lang.NullPointerException e) {
        //can be ignored as panel file may not support method
        }
    }
    if (element.getChild("signalAMast") != null) {
        String mast = element.getChild("signalAMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalAMast(mast);
        }
    }
    if (element.getChild("signalBMast") != null) {
        String mast = element.getChild("signalBMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalBMast(mast);
        }
    }
    if (element.getChild("signalCMast") != null) {
        String mast = element.getChild("signalCMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalCMast(mast);
        }
    }
    if (element.getChild("signalDMast") != null) {
        String mast = element.getChild("signalDMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalDMast(mast);
        }
    }
    if (element.getChild("sensorA") != null) {
        String sensor = element.getChild("sensorA").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorA(sensor);
        }
    }
    if (element.getChild("sensorB") != null) {
        String sensor = element.getChild("sensorB").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorB(sensor);
        }
    }
    if (element.getChild("sensorC") != null) {
        String sensor = element.getChild("sensorC").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorC(sensor);
        }
    }
    if (element.getChild("sensorD") != null) {
        String sensor = element.getChild("sensorD").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorD(sensor);
        }
    }
    p.turnoutList.add(l);
}
Also used : LayoutEditor(jmri.jmrit.display.layoutEditor.LayoutEditor) Attribute(org.jdom2.Attribute) LayoutTurnout(jmri.jmrit.display.layoutEditor.LayoutTurnout) Point2D(java.awt.geom.Point2D)

Example 54 with Attribute

use of org.jdom2.Attribute in project JMRI by JMRI.

the class LevelXingXml method load.

/**
     * Load, starting with the levelxing element, then all the other data
     *
     * @param element Top level Element to unpack.
     * @param o       LayoutEditor as an Object
     */
@Override
public void load(Element element, Object o) {
    // create the objects
    LayoutEditor p = (LayoutEditor) o;
    // get center point
    String name = element.getAttribute("ident").getValue();
    double x = 0.0;
    double y = 0.0;
    try {
        x = element.getAttribute("xcen").getFloatValue();
        y = element.getAttribute("ycen").getFloatValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert levelxing center  attribute");
    }
    // create the new LevelXing
    LevelXing l = new LevelXing(name, new Point2D.Double(x, y), p);
    // get remaining attributes
    Attribute a = element.getAttribute("blocknameac");
    if (a != null) {
        l.tBlockNameAC = a.getValue();
    }
    a = element.getAttribute("blocknamebd");
    if (a != null) {
        l.tBlockNameBD = a.getValue();
    }
    a = element.getAttribute("connectaname");
    if (a != null) {
        l.connectAName = a.getValue();
    }
    a = element.getAttribute("connectbname");
    if (a != null) {
        l.connectBName = a.getValue();
    }
    a = element.getAttribute("connectcname");
    if (a != null) {
        l.connectCName = a.getValue();
    }
    a = element.getAttribute("connectdname");
    if (a != null) {
        l.connectDName = a.getValue();
    }
    a = element.getAttribute("signalaname");
    if (a != null) {
        l.setSignalAName(a.getValue());
    }
    a = element.getAttribute("signalbname");
    if (a != null) {
        l.setSignalBName(a.getValue());
    }
    a = element.getAttribute("signalcname");
    if (a != null) {
        l.setSignalCName(a.getValue());
    }
    a = element.getAttribute("signaldname");
    if (a != null) {
        l.setSignalDName(a.getValue());
    }
    try {
        x = element.getAttribute("xa").getFloatValue();
        y = element.getAttribute("ya").getFloatValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert levelxing a coords attribute");
    }
    l.setCoordsA(new Point2D.Double(x, y));
    try {
        x = element.getAttribute("xb").getFloatValue();
        y = element.getAttribute("yb").getFloatValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert levelxing b coords attribute");
    }
    l.setCoordsB(new Point2D.Double(x, y));
    if (element.getChild("signalAMast") != null) {
        String mast = element.getChild("signalAMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalAMast(mast);
        }
    }
    if (element.getChild("signalBMast") != null) {
        String mast = element.getChild("signalBMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalBMast(mast);
        }
    }
    if (element.getChild("signalCMast") != null) {
        String mast = element.getChild("signalCMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalCMast(mast);
        }
    }
    if (element.getChild("signalDMast") != null) {
        String mast = element.getChild("signalDMast").getText();
        if (mast != null && !mast.equals("")) {
            l.setSignalDMast(mast);
        }
    }
    if (element.getChild("sensorA") != null) {
        String sensor = element.getChild("sensorA").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorAName(sensor);
        }
    }
    if (element.getChild("sensorB") != null) {
        String sensor = element.getChild("sensorB").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorBName(sensor);
        }
    }
    if (element.getChild("sensorC") != null) {
        String sensor = element.getChild("sensorC").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorCName(sensor);
        }
    }
    if (element.getChild("sensorD") != null) {
        String sensor = element.getChild("sensorD").getText();
        if (sensor != null && !sensor.equals("")) {
            l.setSensorDName(sensor);
        }
    }
    p.xingList.add(l);
}
Also used : LayoutEditor(jmri.jmrit.display.layoutEditor.LayoutEditor) LevelXing(jmri.jmrit.display.layoutEditor.LevelXing) Point2D(java.awt.geom.Point2D) Attribute(org.jdom2.Attribute)

Example 55 with Attribute

use of org.jdom2.Attribute in project JMRI by JMRI.

the class TrackSegmentXml method load.

/**
     * Load, starting with the tracksegment element, then all all attributes
     *
     * @param element Top level Element to unpack.
     * @param o       LayoutEditor as an Object
     */
@Override
public void load(Element element, Object o) {
    // create the objects
    LayoutEditor p = (LayoutEditor) o;
    // get attributes
    String name = element.getAttribute("ident").getValue();
    int type1 = LayoutTrack.NONE;
    int type2 = LayoutTrack.NONE;
    try {
        type1 = element.getAttribute("type1").getIntValue();
        type2 = element.getAttribute("type2").getIntValue();
    } catch (org.jdom2.DataConversionException e) {
        log.error("failed to convert tracksegment attribute");
    }
    boolean dash = true;
    if (element.getAttribute("dashed").getValue().equals("no")) {
        dash = false;
    }
    boolean main = true;
    if (element.getAttribute("mainline").getValue().equals("no")) {
        main = false;
    }
    boolean hide = true;
    if (element.getAttribute("hidden").getValue().equals("no")) {
        hide = false;
    }
    String con1Name = element.getAttribute("connect1name").getValue();
    String con2Name = element.getAttribute("connect2name").getValue();
    // create the new TrackSegment
    TrackSegment l = new TrackSegment(name, con1Name, type1, con2Name, type2, dash, main, hide, p);
    try {
        if (element.getAttribute("arc").getValue().equals("yes")) {
            l.setArc(true);
        }
    } catch (NullPointerException e) {
    }
    if (l.getArc()) {
        //int startangle = 0;
        try {
            if (element.getAttribute("flip").getValue().equals("yes")) {
                l.setFlip(true);
            }
        } catch (NullPointerException e) {
        }
        //considered normal if the attribute is not present }
        try {
            if (element.getAttribute("circle").getValue().equals("yes")) {
                l.setCircle(true);
            }
        } catch (NullPointerException e) {
        }
        if (l.getCircle()) {
            try {
                l.setAngle(element.getAttribute("angle").getDoubleValue());
            } catch (org.jdom2.DataConversionException e) {
                log.error("failed to convert tracksegment attribute");
            } catch (NullPointerException e) {
            // considered normal if the attribute not present
            }
        }
        try {
            if (element.getAttribute("hideConLines").getValue().equals("yes")) {
                l.hideConstructionLines(TrackSegment.HIDECON);
            }
        } catch (NullPointerException e) {
        }
    //considered normal if the attribute is not present }
    }
    try {
        if (element.getAttribute("bezier").getValue().equals("yes")) {
            // load control points
            Element controlpointsElement = element.getChild("controlpoints");
            if (null != controlpointsElement) {
                List<Element> elementList = controlpointsElement.getChildren("controlpoint");
                if (null != elementList) {
                    if (elementList.size() >= 2) {
                        for (int i = 0; i < elementList.size(); i++) {
                            double x = 0.0;
                            double y = 0.0;
                            int index = 0;
                            Element relem = elementList.get(i);
                            try {
                                index = (relem.getAttribute("index")).getIntValue();
                                x = (relem.getAttribute("x")).getFloatValue();
                                y = (relem.getAttribute("y")).getFloatValue();
                            } catch (org.jdom2.DataConversionException e) {
                                log.error("failed to convert controlpoint coordinates or index attributes");
                            }
                            l.setBezierControlPoint(new Point2D.Double(x, y), index);
                        }
                    } else {
                        log.error("Track segment Bezier two controlpoint elements not found. (found " + elementList.size() + ")");
                    }
                } else {
                    log.error("Track segment Bezier controlpoint elements not found.");
                }
            } else {
                log.error("Track segment Bezier controlpoints element not found.");
            }
            // NOTE: do this LAST (so reCenter won't be called yet)
            l.setBezier(true);
        }
    } catch (NullPointerException e) {
    }
    //considered normal if the attribute is not present }
    // get remaining attribute
    Attribute a = element.getAttribute("blockname");
    if (a != null) {
        l.tBlockName = a.getValue();
    }
    p.trackList.add(l);
}
Also used : LayoutEditor(jmri.jmrit.display.layoutEditor.LayoutEditor) Attribute(org.jdom2.Attribute) Element(org.jdom2.Element) TrackSegment(jmri.jmrit.display.layoutEditor.TrackSegment) Point2D(java.awt.geom.Point2D)

Aggregations

Attribute (org.jdom2.Attribute)104 Element (org.jdom2.Element)96 DataConversionException (org.jdom2.DataConversionException)17 Editor (jmri.jmrit.display.Editor)15 ArrayList (java.util.ArrayList)13 NamedIcon (jmri.jmrit.catalog.NamedIcon)13 IOException (java.io.IOException)12 LayoutEditor (jmri.jmrit.display.layoutEditor.LayoutEditor)10 File (java.io.File)8 Color (java.awt.Color)7 List (java.util.List)7 HashMap (java.util.HashMap)6 Asn1Integer (com.android.hotspot2.asn1.Asn1Integer)5 Asn1Object (com.android.hotspot2.asn1.Asn1Object)5 Asn1Oid (com.android.hotspot2.asn1.Asn1Oid)5 OidMappings (com.android.hotspot2.asn1.OidMappings)5 ASN1Encodable (com.android.org.bouncycastle.asn1.ASN1Encodable)5 ASN1EncodableVector (com.android.org.bouncycastle.asn1.ASN1EncodableVector)5 ASN1Set (com.android.org.bouncycastle.asn1.ASN1Set)5 DERBitString (com.android.org.bouncycastle.asn1.DERBitString)5