/**
 * Copyright (c) 2001-2017 Mathew A. Nelson and Robocode contributors
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://robocode.sourceforge.net/license/epl-v10.html
 */
package net.sf.robocode.ui.editor;


import java.awt.Font;


/**
 * Font style enumeration type, which provides an abstraction over the style flags from
 * the integer flags from the {@link Font#getStyle()} method.
 * 
 * @author Flemming N. Larsen (original)
 */
public enum FontStyle {

	PLAIN(Font.PLAIN, "Plain"),
	BOLD(Font.BOLD, "Bold"),
	ITALIC(Font.ITALIC, "Italic"),
	BOLD_ITALIC(Font.BOLD + Font.ITALIC, "Bold Italic");

	private final int fontStyleFlags;
	private final String name;

	private FontStyle(int fontStyleFlags, String name) {
		this.fontStyleFlags = fontStyleFlags;
		this.name = name;
	}

	public static FontStyle fromName(String name) {
		for (FontStyle value : values()) {
			if (value.name.equalsIgnoreCase(name)) {
				return value;
			}
		}
		return null;
	}

	public static FontStyle fromStyleFlags(int flags) {
		for (FontStyle value : values()) {
			if (value.fontStyleFlags == flags) {
				return value;
			}
		}
		return null;
	}
	
	public int getFontStyleFlags() {
		return fontStyleFlags;
	}

	public String getName() {
		return name;
	}

	public boolean isBold() {
		return this == BOLD || this == BOLD_ITALIC;
	}

	public boolean isItalic() {
		return this == ITALIC || this == BOLD_ITALIC;
	}
}
