package interpolation;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;

import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.event.ChangeListener;

public class FontInterpolator extends GraphInterpolator {

	private static final long serialVersionUID = -2141463220530079347L;
	
	private JComboBox<String> box;
	public FontInterpolator(Font selectedFont, GetSet gs, ChangeListener... listeners) {
		super(gs, listeners);
		
		Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
		String[] fontNames = new String[fonts.length];
		for(int i = 0; i < fonts.length; i++)
			fontNames[i] = fonts[i].getFontName();
		
		box = new JComboBox<String>(fontNames) {

			private static final long serialVersionUID = 2454221612986775298L;

			@Override 
			public Dimension getPreferredSize() {
				Dimension ps = super.getPreferredSize();
				return new Dimension(Math.min(ps.width, 120), ps.height);
			}
		};
		
		box.setSelectedItem(selectedFont.getFontName());
		box.addActionListener(ae -> {
			fireChangeEvent();
		});
	}
	
	@Override
	public Dimension getGraphSize() {
		return null;
	}

	@Override
	public boolean isKeyframable() {
		return false;
	}

	@Override
	public void paintGraph(Graphics2D g, int width, int height) {
	}

	@Override
	public void paintButton(Graphics2D g, int width, int height) {
	}

	@Override
	public Object getAnimationValue(float time) {
		return null;
	}

	@Override
	public Object getStaticValue() {
		return new Font((String) box.getSelectedItem(), Font.PLAIN, 12);
	}

	@Override
	public String getInstructions() {
		return null;
	}

	@Override
	public JComponent getManualController() {
		return box;
	}

}