/** * Creates a new block box from the given element with the given parent. No style is assigned to * the resulting box. * * @param parent The parent box in the tree of boxes. * @param n The element that this box belongs to. * @param replaced When set to <code>true</code>, a replaced block box will be created. Otherwise, * a normal non-replaced block will be created. * @return The new block box. */ protected BlockBox createBlock(BlockBox parent, Element n, boolean replaced) { BlockBox root; if (replaced) { BlockReplacedBox rbox = new BlockReplacedBox( (Element) n, (Graphics2D) parent.getGraphics().create(), parent.getVisualContext().create()); rbox.setViewport(viewport); rbox.setContentObj( new ReplacedImage(rbox, rbox.getVisualContext(), baseurl, n.getAttribute("src"))); root = rbox; } else { root = new BlockBox( (Element) n, (Graphics2D) parent.getGraphics().create(), parent.getVisualContext().create()); root.setViewport(viewport); } root.setBase(baseurl); root.setParent(parent); root.setContainingBlock(parent); root.setClipBlock(viewport); root.setOrder(next_order++); return root; }
private void buildBlockReplacedBox(List<ElementSpec> elements, BlockReplacedBox box) { // some content org.w3c.dom.Element elem = box.getElement(); String text = ""; // add some textual info, if picture if ("img".equalsIgnoreCase(elem.getTagName())) { text = " [" + elem.getAttribute("alt") + " Location: " + elem.getAttribute("src") + "] "; } MutableAttributeSet attr = new SimpleAttributeSet(); attr.addAttribute(SwingBoxDocument.ElementNameAttribute, Constants.BLOCK_REPLACED_BOX); attr.addAttribute(Constants.ATTRIBUTE_BOX_REFERENCE, box); attr.addAttribute(Constants.ATTRIBUTE_ANCHOR_REFERENCE, new Anchor()); attr.addAttribute(Constants.ATTRIBUTE_REPLACED_CONTENT, box.getContentObj()); elements.add( new ElementSpec(attr, ElementSpec.ContentType, text.toCharArray(), 0, text.length())); }