////////////////////////// // SAVING AND LOADING // ////////////////////////// public ArrayList<RenderableBlock> loadPageFrom(Node pageNode, boolean importingPage) { // note: this code is duplicated in BlockCanvas.loadSaveString(). NodeList pageChildren = pageNode.getChildNodes(); Node pageChild; ArrayList<RenderableBlock> loadedBlocks = new ArrayList<RenderableBlock>(); HashMap<Long, Long> idMapping = importingPage ? new HashMap<Long, Long>() : null; if (importingPage) { reset(); } for (int i = 0; i < pageChildren.getLength(); i++) { pageChild = pageChildren.item(i); if (pageChild.getNodeName().equals("PageBlocks")) { NodeList blocks = pageChild.getChildNodes(); Node blockNode; for (int j = 0; j < blocks.getLength(); j++) { blockNode = blocks.item(j); RenderableBlock rb = RenderableBlock.loadBlockNode(workspace, blockNode, this, idMapping); // save the loaded blocks to add later loadedBlocks.add(rb); } break; // should only have one set of page blocks } } return loadedBlocks; }