package com.teppefall.subpixel;

/**
 * @author janerik
 * 
 * ColorAction.java
 * 
 * Action sets the background color in SubpixelRenderer.
 * Uses ColorIcon to create a pretty icon. No need for bitmaps. 
 */

import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JColorChooser;
import com.teppefall.ds.console.Console;
import com.teppefall.ds.content.Content;
import com.teppefall.ds.render2d.Darkstar;
import com.teppefall.ds.util.View;

public class ColorAction extends AbstractAction {

	Darkstar ds;
	Color color;
	boolean customColor;
	
	public ColorAction(Darkstar ds) {
		this(ds, null);
	}

	public ColorAction(Darkstar ds, Color color) {
		this.ds = ds;
		this.color = color;
		if(color == null) {
			color = Color.BLACK;
			customColor = true;
			putValue(NAME, "+");
		}
		else {
			customColor = false;
			putValue(NAME, View.colorAsHex(color));
		}
		putValue(SMALL_ICON, new ColorIcon(color));
		//putValue(ACCELERATOR_KEY, );
	}
	
	public void actionPerformed(ActionEvent e) {
		if(ds.getRenderer() instanceof SubpixelRenderer) {
			SubpixelRenderer r = (SubpixelRenderer)ds.getRenderer();
			if(customColor) {
				Color newColor = JColorChooser.showDialog(ds.getRootPane(), Content.getString("color"), Color.BLACK);
				if(newColor != null) {
					color = newColor;
				}
				putValue(SMALL_ICON, new ColorIcon(color));
			}
			r.setColor(color);
			ds.repaint();
		}
		else {
			Console.warn(this, "wrong renderer");
			
		}
	}

	
}

