/* * Copyright (C) 2014 たんらる */ package fourthline.mabiicco.ui; import java.awt.Component; import java.awt.Graphics; import javax.swing.Icon; import fourthline.mabiicco.ui.color.ColorManager; import fourthline.mmlTools.MMLScore; public class PartButtonIcon implements Icon { protected static final int WIDTH = 12; private final static PartButtonIcon instance[][]; private final static int indexSize; private final static PartButtonIcon defaultIcon = new PartButtonIcon() { @Override public void paintIcon(Component c, Graphics g, int x, int y) { int width = WIDTH - 4; g.setColor(ColorManager.defaultColor().getUnusedFillColor()); g.fillOval(x+2, y+2, width, width); } }; static { int pattern = MMLTrackView.MMLPART_NAME.length; indexSize = MMLScore.MAX_TRACK; instance = new PartButtonIcon[pattern][indexSize]; for (int i = 0; i < pattern; i++) { for (int j = 0; j < indexSize; j++) { instance[i][j] = new PartButtonIcon(i, j); } } } public static Icon getInstance(int part, int index) { return instance[part][index%indexSize]; } public static Icon getDefautIcon() { return defaultIcon; } private PartButtonIcon() {} private int part; private int index; private PartButtonIcon(int part, int index) { this.part = part; this.index = index; } @Override public int getIconHeight() { return WIDTH; } @Override public int getIconWidth() { return WIDTH; } @Override public void paintIcon(Component c, Graphics g, int x, int y) { int width = WIDTH - 4; g.setColor(ColorManager.defaultColor().getPartFillColor(index, part)); g.fillOval(x+2, y+2, width, width); g.setColor(ColorManager.defaultColor().getActiveFillColor(index)); g.drawOval(x+2, y+2, width, width); } }