예제 #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++;
     }
   }
 }