001 package ui.renderer; 002 003 import java.util.List; 004 import java.util.ArrayList; 005 import javax.swing.Icon; 006 import javax.swing.ImageIcon; 007 008 public class LineIcon { 009 010 protected float startWavelength; 011 protected Icon absorptionIcon; 012 protected Icon emissionIcon; 013 014 private static List<LineIcon> icons = new ArrayList<LineIcon>(); // center min max band icon 015 016 static { 017 icons.add(new LineIcon(3700f, "black")); // 2000 0-3700 3700 "black" 018 icons.add(new LineIcon(4100f, "purple")); // 4000 3700-4100 400 "purple" 019 icons.add(new LineIcon(4650f, "blue")); // 4350 4100-4650 500 "blue" 020 icons.add(new LineIcon(5000f, "cyan")); // 4800 4650-5000 350 "cyan" 021 icons.add(new LineIcon(5600f, "green")); // 5250 5000-5600 600 "green" 022 icons.add(new LineIcon(5950f, "yellow")); // 5800 5600-5950 350 "yellow" 023 icons.add(new LineIcon(6300f, "orange")); // 6100 5950-6300 350 "orange" 024 icons.add(new LineIcon(7100f, "red")); // 6600 6300-7100 800 "red" 025 icons.add(new LineIcon(7500f, "brown")); // 7300 7100-7500 400 "brown" 026 icons.add(new LineIcon(9999999.0f, "black")); // 7500-inf inf "black" 027 } 028 029 public LineIcon(float aStartWavelength, String anIconName) { 030 startWavelength = aStartWavelength; 031 absorptionIcon = getImageIcon("images/absorption-" + anIconName + ".gif"); 032 emissionIcon = getImageIcon("images/emission-" + anIconName + ".gif"); 033 } 034 035 public float getStartWavelength() { 036 return startWavelength; 037 } 038 039 Icon getAbsorptionIcon() { 040 return absorptionIcon; 041 } 042 043 Icon getEmissionIcon() { 044 return emissionIcon; 045 } 046 047 public Icon getIcon(boolean emission) { 048 if (emission) 049 return getEmissionIcon(); 050 else 051 return getAbsorptionIcon(); 052 } 053 054 protected static Icon getIcon(float wavelength, boolean emission) { 055 for (LineIcon lineIcon : icons) if (wavelength < lineIcon.getStartWavelength()) return lineIcon.getIcon(emission); 056 return icons.get(0).getIcon(emission); 057 } 058 059 public static ImageIcon getImageIcon(String fileName) { 060 // TODO: handle case when images are a part of a resource such as a JAR file etc... 061 return new ImageIcon(fileName); 062 } 063 064 }