/* * Copyright (c) 2013 Patrick Meyer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.itemanalysis.jmetrik.swing; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; public class LineStyleComboBoxRenderer extends JLabel implements ListCellRenderer { private ImageIcon[] styleImageIcon = null; public LineStyleComboBoxRenderer(){ setOpaque(true); setHorizontalAlignment(CENTER); setVerticalAlignment(CENTER); createImageIcon(); } private void createImageIcon(){ styleImageIcon = new ImageIcon[9]; BufferedImage lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke1 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[0], 0.0f); g2.setStroke(stroke1); g2.drawLine(10, 10, 90, 10); styleImageIcon[0] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke2 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[1], 0.0f); g2.setStroke(stroke2); g2.drawLine(10, 10, 90, 10); styleImageIcon[1] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke3 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[2], 0.0f); g2.setStroke(stroke3); g2.drawLine(10, 10, 90, 10); styleImageIcon[2] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke4 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[3], 0.0f); g2.setStroke(stroke4); g2.drawLine(10, 10, 90, 10); styleImageIcon[3] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke5 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[4], 0.0f); g2.setStroke(stroke5); g2.drawLine(10, 10, 90, 10); styleImageIcon[4] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke6 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[5], 0.0f); g2.setStroke(stroke6); g2.drawLine(10, 10, 90, 10); styleImageIcon[5] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke7 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[6], 0.0f); g2.setStroke(stroke7); g2.drawLine(10, 10, 90, 10); styleImageIcon[6] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke8 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[7], 0.0f); g2.setStroke(stroke8); g2.drawLine(10, 10, 90, 10); styleImageIcon[7] = new ImageIcon(lineStyleImage); lineStyleImage = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB); g2 = lineStyleImage.createGraphics(); g2.setBackground(Color.WHITE); g2.fillRect(0, 0, 100, 20); g2.setColor(Color.BLACK); BasicStroke stroke9 = new BasicStroke(2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, ChartStyle.LINE_STYLE[8], 0.0f); g2.setStroke(stroke9); g2.drawLine(10, 10, 90, 10); styleImageIcon[8] = new ImageIcon(lineStyleImage); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { String selectedLine = value.toString(); // setBackground(Color.WHITE); // setForeground(Color.WHITE); if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[0])){ setIcon(styleImageIcon[0]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[1])){ setIcon(styleImageIcon[1]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[2])){ setIcon(styleImageIcon[2]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[3])){ setIcon(styleImageIcon[3]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[4])){ setIcon(styleImageIcon[4]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[5])){ setIcon(styleImageIcon[5]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[6])){ setIcon(styleImageIcon[6]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[7])){ setIcon(styleImageIcon[7]); }else if(selectedLine.equals(ChartStyle.LINE_STYLE_NAME[8])){ setIcon(styleImageIcon[8]); } // if(selectedIndex!=-1){ // setIcon(styleImageIcon[selectedIndex]); //// setText(styleName[selectedIndex]); // } return this; } }