mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			283 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			283 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Java
		
	
	
	
package gnu.javax.swing.text.html;
 | 
						|
 | 
						|
 | 
						|
import java.awt.Color;
 | 
						|
import java.awt.Component;
 | 
						|
import java.awt.Graphics;
 | 
						|
import java.io.Serializable;
 | 
						|
 | 
						|
import javax.swing.Icon;
 | 
						|
import javax.swing.plaf.metal.MetalLookAndFeel;
 | 
						|
 | 
						|
/**
 | 
						|
 * Creates icons for ImageView. The icons reflect the basic ideas of the Sun's
 | 
						|
 * icons as they would be described in the text (sheet of paper with image and
 | 
						|
 * broken sheet of paper with image). They are not pixel to pixel identical and
 | 
						|
 * contain elements from the metal icon factory.
 | 
						|
 *
 | 
						|
 * @author Audrius Meskauskas (audriusa@bioinformatics.org)
 | 
						|
 */
 | 
						|
public class ImageViewIconFactory
 | 
						|
{
 | 
						|
  private static Icon noImageIcon;
 | 
						|
 | 
						|
  private static Icon loadingImageIcon;
 | 
						|
 | 
						|
  /**
 | 
						|
   * This icon reflects the general concept (broken sheet of paper with
 | 
						|
   * image), but is currently not pixel to pixel identical with the Sun's
 | 
						|
   * implementation.
 | 
						|
   */
 | 
						|
  public static class NoImageIcon implements Icon, Serializable
 | 
						|
  {
 | 
						|
    /**
 | 
						|
     * Creates a new icon.
 | 
						|
     */
 | 
						|
    public NoImageIcon()
 | 
						|
    {
 | 
						|
      // Nothing to do here.
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns the width of the icon, in pixels.
 | 
						|
     *
 | 
						|
     * @return The width of the icon.
 | 
						|
     */
 | 
						|
    public int getIconWidth()
 | 
						|
    {
 | 
						|
      return 38;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns the height of the icon, in pixels.
 | 
						|
     *
 | 
						|
     * @return The height of the icon.
 | 
						|
     */
 | 
						|
    public int getIconHeight()
 | 
						|
    {
 | 
						|
      return 38;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Paints the icon using colors from the {@link MetalLookAndFeel}.
 | 
						|
     *
 | 
						|
     * @param c
 | 
						|
     *          the component (ignored).
 | 
						|
     * @param g
 | 
						|
     *          the graphics device.
 | 
						|
     * @param x
 | 
						|
     *          the x-coordinate for the top-left of the icon.
 | 
						|
     * @param y
 | 
						|
     *          the y-coordinate for the top-left of the icon.
 | 
						|
     */
 | 
						|
    public void paintIcon(Component c, Graphics g, int x, int y)
 | 
						|
    {
 | 
						|
      // frame
 | 
						|
      Color savedColor = g.getColor();
 | 
						|
 | 
						|
      g.setColor(MetalLookAndFeel.getBlack());
 | 
						|
 | 
						|
      g.drawLine(x, y, x + 19, y);
 | 
						|
 | 
						|
      g.drawLine(x, y + 1, x, y + 5);
 | 
						|
      g.drawLine(x, y + 13, x, y + 25);
 | 
						|
 | 
						|
      g.drawLine(x, y + 25, x + 22, y + 25);
 | 
						|
 | 
						|
      g.drawLine(x + 22, y + 25, x + 22, y + 21);
 | 
						|
      g.drawLine(x + 22, y + 13, x + 22, y + 6);
 | 
						|
 | 
						|
      g.drawLine(x + 22, y + 6, x + 19, y);
 | 
						|
 | 
						|
      g.drawLine(x + 17, y + 2, x + 21, y + 6);
 | 
						|
 | 
						|
      g.drawLine(x + 18, y + 1, x + 19, y + 1);
 | 
						|
 | 
						|
      g.setColor(MetalLookAndFeel.getControlShadow());
 | 
						|
 | 
						|
      g.drawLine(x + 1, y + 1, x + 17, y + 1);
 | 
						|
 | 
						|
      g.drawLine(x + 1, y + 1, x + 1, y + 5);
 | 
						|
      g.drawLine(x + 1, y + 13, x + 1, y + 24);
 | 
						|
 | 
						|
      g.drawLine(x + 1, y + 24, x + 21, y + 24);
 | 
						|
 | 
						|
      g.drawLine(x + 21, y + 24, x + 21, y + 21);
 | 
						|
      g.drawLine(x + 21, y + 13, x + 21, y + 7);
 | 
						|
 | 
						|
      g.drawLine(x + 18, y + 2, x + 20, y + 4);
 | 
						|
 | 
						|
      // Breaking line
 | 
						|
 | 
						|
      // Shadow
 | 
						|
      g.drawLine(x + 1, y + 6, x + 20, y + 13);
 | 
						|
      g.drawLine(x + 1, y + 13, x + 20, y + 20);
 | 
						|
 | 
						|
      // Edge
 | 
						|
      g.setColor(MetalLookAndFeel.getBlack());
 | 
						|
      g.drawLine(x, y + 6, x + 21, y + 14);
 | 
						|
      g.drawLine(x, y + 12, x + 21, y + 20);
 | 
						|
 | 
						|
      // Picture
 | 
						|
 | 
						|
      y += 1;
 | 
						|
      x += 3;
 | 
						|
 | 
						|
      g.setColor(MetalLookAndFeel.getBlack());
 | 
						|
 | 
						|
      // roof
 | 
						|
      g.drawLine(x + 4, y + 5, x + 8, y + 1);
 | 
						|
      g.drawLine(x + 8, y + 1, x + 15, y + 8);
 | 
						|
 | 
						|
      // chimney
 | 
						|
      g.drawLine(x + 11, y + 2, x + 11, y + 4);
 | 
						|
      g.drawLine(x + 12, y + 2, x + 12, y + 5);
 | 
						|
 | 
						|
      g.setColor(MetalLookAndFeel.getControlDarkShadow());
 | 
						|
 | 
						|
      // roof paint
 | 
						|
      int xx = x + 8;
 | 
						|
      for (int i = 0; i < 4; i++)
 | 
						|
        g.drawLine(xx - i, y + 2 + i, xx + i, y + 2 + i);
 | 
						|
      g.fillRect(x + 4, y + 6, 9, 2);
 | 
						|
 | 
						|
      // base of house
 | 
						|
      g.drawLine(x + 3, y + 14, x + 3, y + 18);
 | 
						|
      g.drawLine(x + 3, y + 18, x + 13, y + 18);
 | 
						|
 | 
						|
      g.setColor(savedColor);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * This icon reflects the general concept (sheet of paper with image), but is
 | 
						|
   * currently not pixel to pixel identical with the Sun's implementation.
 | 
						|
   */
 | 
						|
  public static class LoadingImageIcon implements Icon, Serializable
 | 
						|
  {
 | 
						|
 | 
						|
    /**
 | 
						|
     * Creates a new icon.
 | 
						|
     */
 | 
						|
    public LoadingImageIcon()
 | 
						|
    {
 | 
						|
      // Nothing to do here.
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns the width of the icon, in pixels.
 | 
						|
     *
 | 
						|
     * @return The width of the icon.
 | 
						|
     */
 | 
						|
    public int getIconWidth()
 | 
						|
    {
 | 
						|
      return 38;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Returns the height of the icon, in pixels.
 | 
						|
     *
 | 
						|
     * @return The height of the icon.
 | 
						|
     */
 | 
						|
    public int getIconHeight()
 | 
						|
    {
 | 
						|
      return 38;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Paints the icon using colors from the {@link MetalLookAndFeel}.
 | 
						|
     *
 | 
						|
     * @param c
 | 
						|
     *          the component (ignored).
 | 
						|
     * @param g
 | 
						|
     *          the graphics device.
 | 
						|
     * @param x
 | 
						|
     *          the x-coordinate for the top-left of the icon.
 | 
						|
     * @param y
 | 
						|
     *          the y-coordinate for the top-left of the icon.
 | 
						|
     */
 | 
						|
    public void paintIcon(Component c, Graphics g, int x, int y)
 | 
						|
    {
 | 
						|
      // frame
 | 
						|
      Color savedColor = g.getColor();
 | 
						|
 | 
						|
      g.setColor(Color.black);
 | 
						|
      g.drawLine(x, y, x + 19, y);
 | 
						|
      g.drawLine(x, y + 1, x, y + 25);
 | 
						|
      g.drawLine(x, y + 25, x + 22, y + 25);
 | 
						|
      g.drawLine(x + 22, y + 25, x + 22, y + 6);
 | 
						|
      g.drawLine(x + 22, y + 6, x + 19, y);
 | 
						|
 | 
						|
      g.drawLine(x + 17, y + 2, x + 21, y + 6);
 | 
						|
      g.drawLine(x + 18, y + 1, x + 19, y + 1);
 | 
						|
 | 
						|
      g.setColor(new Color(204, 204, 255));
 | 
						|
 | 
						|
      g.drawLine(x + 1, y + 1, x + 17, y + 1);
 | 
						|
      g.drawLine(x + 1, y + 1, x + 1, y + 24);
 | 
						|
      g.drawLine(x + 1, y + 24, x + 21, y + 24);
 | 
						|
      g.drawLine(x + 21, y + 24, x + 21, y + 7);
 | 
						|
      g.drawLine(x + 18, y + 2, x + 20, y + 4);
 | 
						|
 | 
						|
      // Picture (house)
 | 
						|
 | 
						|
      y += 3;
 | 
						|
      x += 3;
 | 
						|
 | 
						|
      g.setColor(MetalLookAndFeel.getBlack());
 | 
						|
 | 
						|
      // roof
 | 
						|
      g.drawLine(x + 1, y + 8, x + 8, y + 1);
 | 
						|
      g.drawLine(x + 8, y + 1, x + 15, y + 8);
 | 
						|
 | 
						|
      // base of house
 | 
						|
      g.drawLine(x + 3, y + 6, x + 3, y + 15);
 | 
						|
      g.drawLine(x + 3, y + 15, x + 13, y + 15);
 | 
						|
      g.drawLine(x + 13, y + 6, x + 13, y + 15);
 | 
						|
 | 
						|
      // door frame
 | 
						|
      g.drawLine(x + 6, y + 9, x + 6, y + 15);
 | 
						|
      g.drawLine(x + 6, y + 9, x + 10, y + 9);
 | 
						|
      g.drawLine(x + 10, y + 9, x + 10, y + 15);
 | 
						|
 | 
						|
      // chimney
 | 
						|
      g.drawLine(x + 11, y + 2, x + 11, y + 4);
 | 
						|
      g.drawLine(x + 12, y + 2, x + 12, y + 5);
 | 
						|
 | 
						|
      g.setColor(MetalLookAndFeel.getControlDarkShadow());
 | 
						|
 | 
						|
      // roof paint
 | 
						|
      int xx = x + 8;
 | 
						|
      for (int i = 0; i < 4; i++)
 | 
						|
        g.drawLine(xx - i, y + 2 + i, xx + i, y + 2 + i);
 | 
						|
      g.fillRect(x + 4, y + 6, 9, 2);
 | 
						|
 | 
						|
      // door knob
 | 
						|
      g.drawLine(x + 9, y + 12, x + 9, y + 12);
 | 
						|
 | 
						|
      // house paint
 | 
						|
      g.setColor(MetalLookAndFeel.getPrimaryControl());
 | 
						|
      g.drawLine(x + 4, y + 8, x + 12, y + 8);
 | 
						|
      g.fillRect(x + 4, y + 9, 2, 6);
 | 
						|
      g.fillRect(x + 11, y + 9, 2, 6);
 | 
						|
 | 
						|
      g.setColor(savedColor);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  public static Icon getNoImageIcon()
 | 
						|
  {
 | 
						|
    if (noImageIcon == null)
 | 
						|
      noImageIcon = new NoImageIcon();
 | 
						|
    return noImageIcon;
 | 
						|
  }
 | 
						|
 | 
						|
  public static Icon getLoadingImageIcon()
 | 
						|
  {
 | 
						|
    if (loadingImageIcon == null)
 | 
						|
      loadingImageIcon = new LoadingImageIcon();
 | 
						|
    return loadingImageIcon;
 | 
						|
  }
 | 
						|
 | 
						|
}
 |