Exemple #1
0
 /* (non-Javadoc)
  * @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
  */
 public void paint(Graphics g) {
   g.setColor(Color.BLACK);
   HTMLElementImpl rootElement = this.rootElement;
   String type = rootElement.getAttribute("type");
   int bulletType = 0;
   boolean numbered = rootElement instanceof HTMLOListElement;
   FontMetrics fm = null;
   int bulletNumber = 0;
   if (numbered) {
     HTMLOListElementImpl oList = (HTMLOListElementImpl) rootElement;
     bulletNumber = oList.getStart();
     Font f = g.getFont();
     fm = Toolkit.getDefaultToolkit().getFontMetrics(f);
   } else {
     if ("disc".equalsIgnoreCase(type)) {
       bulletType = 0;
     } else if ("circle".equalsIgnoreCase(type)) {
       bulletType = 1;
     } else if ("square".equals(type)) {
       bulletType = 2;
     } else {
       bulletType = this.nesting;
     }
   }
   Iterator i = this.blocks.iterator();
   while (i.hasNext()) {
     Object c = i.next();
     if (c instanceof RBlock) {
       RBlock hp = (RBlock) c;
       Rectangle bounds = hp.getBounds();
       Graphics newG = g.create(bounds.x, bounds.y, bounds.width, bounds.height);
       hp.paint(newG);
       int lineHeight = hp.getFirstLineHeight();
       int bulletRight = bounds.x - BULLET_SPACING;
       int bulletBottom = bounds.y + lineHeight;
       if (numbered) {
         // TODO: value attribute from LI element
         // TODO: type attribute from LI element
         String numberText = bulletNumber + ".";
         int bulletLeft = bulletRight - fm.stringWidth(numberText);
         int bulletY = bulletBottom - fm.getDescent();
         g.drawString(numberText, bulletLeft, bulletY);
       } else {
         bulletBottom -= BULLET_BOTTOM_PADDING;
         int bulletTop = bulletBottom - BULLET_HEIGHT;
         int bulletLeft = bulletRight - BULLET_WIDTH;
         if (bulletType == 0) {
           g.fillOval(bulletLeft, bulletTop, BULLET_WIDTH, BULLET_HEIGHT);
         } else if (bulletType == 1) {
           g.drawOval(bulletLeft, bulletTop, BULLET_WIDTH, BULLET_HEIGHT);
         } else {
           g.fillRect(bulletLeft, bulletTop, BULLET_WIDTH, BULLET_HEIGHT);
         }
       }
       bulletNumber++;
     }
   }
 }
 private HTMLElementImpl[] getSubFrames(HTMLElementImpl parent) {
   NodeImpl[] children = parent.getChildrenArray();
   ArrayList subFrames = new ArrayList();
   for (int i = 0; i < children.length; i++) {
     NodeImpl child = children[i];
     if (child instanceof HTMLElementImpl) {
       String nodeName = child.getNodeName();
       if ("FRAME".equalsIgnoreCase(nodeName) || "FRAMESET".equals(nodeName)) {
         subFrames.add(child);
       }
     }
   }
   return (HTMLElementImpl[]) subFrames.toArray(new HTMLElementImpl[0]);
 }
 public void setRootNode(NodeImpl node) {
   if (!(node instanceof HTMLElementImpl)) {
     throw new IllegalArgumentException("node=" + node);
   }
   HTMLElementImpl element = (HTMLElementImpl) node;
   HtmlRendererContext context = element.getHtmlRendererContext();
   this.htmlContext = context;
   if (context != null) {
     String rows = element.getAttribute("rows");
     String cols = element.getAttribute("cols");
     HtmlLength[] rowLengths = this.getLengths(rows);
     HtmlLength[] colLengths = this.getLengths(cols);
     this.rowHtmlLengths = rowLengths;
     this.colHtmlLengths = colLengths;
     HTMLElementImpl[] subframes = this.getSubFrames(element);
     Component[] frameComponents = new Component[subframes.length];
     this.frameComponents = frameComponents;
     for (int i = 0; i < subframes.length; i++) {
       HTMLElementImpl frameElement = subframes[i];
       if (frameElement != null && "FRAMESET".equalsIgnoreCase(frameElement.getTagName())) {
         FrameSetPanel fsp = new FrameSetPanel();
         fsp.setRootNode(frameElement);
         frameComponents[i] = fsp;
       } else {
         BrowserFrame frame = context.createBrowserFrame();
         if (frameElement != null) {
           String src = frameElement.getAttribute("src");
           if (src != null) {
             java.net.URL url;
             try {
               url = frameElement.getFullURL(src);
               if (url != null) {
                 frame.loadURL(url);
               }
             } catch (MalformedURLException mfu) {
               // ignore
             }
           }
         }
         frameComponents[i] = frame.getComponent();
       }
     }
   }
 }