package org.incha.ui.classview; import java.awt.Graphics; import java.awt.image.BufferedImage; public abstract class AbstractMemberIcon extends AbstractJavaElementIcon { private BufferedImage privateImage; private BufferedImage defaultImage; private BufferedImage publicImage; private BufferedImage protectedImage; /** * @param COLLAPSED collapsed image. * @param expandedImage expanded image. * @param classImage class image. */ public AbstractMemberIcon() { super(); loadAccessTypeImages(); } /** * Loads an access type visualization image. */ protected void loadAccessTypeImages() { this.privateImage = getPrivateImage(); this.defaultImage = getDefaultImage(); this.publicImage = getPublicImage(); this.protectedImage = getProtectedImage(); } /** * @return */ protected abstract BufferedImage getDefaultImage(); /** * @return */ protected abstract BufferedImage getPublicImage(); /** * @return */ protected abstract BufferedImage getPrivateImage(); /** * @return */ protected abstract BufferedImage getProtectedImage(); /* (non-Javadoc) * @see javax.swing.Icon#getIconHeight() */ @Override public int getIconHeight() { return 20; } /** * @return */ @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 img; switch (getAccessType()) { case PRIVATE: img = privateImage; break; case DEFAULT: img = defaultImage; break; case PROTECTED: img = protectedImage; break; default: img = publicImage; break; } g.drawImage(img, offset, 0, null); } }