package org.incha.ui.classview;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
public class RootTypeIcon extends AbstractJavaElementIcon {
public static int ICON_WIDTH = 40;
//type of type
public static final int CLASS = 0;
public static final int INTERFACE = 1;
public static final int ENUM = 2;
//access modifier
private int type = CLASS;
private Image markImage;
/**
* @param COLLAPSED collapsed image.
* @param EXPANDED expanded image.
* @param CLASS class image.
*/
public RootTypeIcon() {
super();
}
/* (non-Javadoc)
* @see javax.swing.Icon#getIconHeight()
*/
@Override
public int getIconHeight() {
return 20;
}
/* (non-Javadoc)
* @see org.incha.ui.classview.AbstractJavaElementIcon#getWidthPrivate()
*/
@Override
protected int getWidthPrivate() {
return 14;
}
/* (non-Javadoc)
* @see org.incha.ui.classview.AbstractJavaElementIcon#paintIcon(int, java.awt.Graphics)
*/
@Override
protected void paintIcon(final int offset, final Graphics g, final int width, final int height) {
final BufferedImage typeImage = getTypeImage();
g.drawImage(typeImage, offset, 0, null);
//drow mark image
if (markImage != null) {
g.drawImage(markImage, offset, 0, null);
}
final BufferedImage accessTypeImage = getAccessTypeImage();
if (accessTypeImage != null) {
g.drawImage(accessTypeImage,
getIconWidth() - accessTypeImage.getWidth() + 6,
height - accessTypeImage.getHeight(),
null);
}
}
/**
* @return
*/
protected BufferedImage getAccessTypeImage() {
//method images
switch(getAccessType()) {
case PROTECTED:
return Images.PROTECTED_METHOD;
case DEFAULT:
return Images.DEFAULT_METHOD;
case PRIVATE:
return Images.PRIVATE_METHOD;
default:
return null;
}
}
/**
* @return
*/
protected BufferedImage getTypeImage() {
final BufferedImage typeImage;
switch (type) {
case INTERFACE:
typeImage = Images.INTERFACE;
break;
case ENUM:
typeImage = Images.ENUM;
break;
case CLASS:
typeImage = Images.CLASS;
break;
default:
typeImage = Images.CLASS;
}
return typeImage;
}
/**
* @param type the type to set
*/
public void setType(final int type) {
this.type = type;
}
/**
* @return the type
*/
public int getType() {
return type;
}
/**
* @param markImage
*/
public void setMarkImage(final Image markImage) {
this.markImage = markImage;
}
/**
* @return the markImage
*/
public Image getMarkImage() {
return markImage;
}
}