/*
 * This file is part of NixNote/NeighborNote 
 * Copyright 2009 Randy Baumgarte
 * 
 * This file may be licensed under the terms of of the
 * GNU General Public License Version 2 (the ``GPL'').
 *
 * Software distributed under the License is distributed
 * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
 * express or implied. See the GPL for the specific language
 * governing rights and limitations.
 *
 * You should have received a copy of the GPL along with this
 * program. If not, go to http://www.gnu.org/licenses/gpl.html
 * or write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
*/

package cx.fbn.nevernote.gui;

import java.util.List;

import com.trolltech.qt.core.QSize;
import com.trolltech.qt.gui.QAction;
import com.trolltech.qt.gui.QColor;
import com.trolltech.qt.gui.QIcon;
import com.trolltech.qt.gui.QMenu;
import com.trolltech.qt.gui.QPixmap;
import com.trolltech.qt.gui.QWidget;

public class ColorMenu extends Object {
	
	private final QMenu menu;
	QWidget parent;
	QColor currentColor;
	
	public ColorMenu(QWidget b) {
		menu = new QMenu();
		parent = b;
		populateList();
		currentColor = new QColor("black");
	}
	
	public void setDefault(QColor color) {
		currentColor = color;
	}
		
	private void populateList() {
		List<String> colorNames = QColor.colorNames();
		for(int i=0; i<colorNames.size(); i++) {
			QColor color = new QColor(colorNames.get(i));
			QPixmap pix = new QPixmap(new QSize(22, 22));
			pix.fill(color);
			QAction newAction = new QAction(new QIcon(pix), "", parent);
			newAction.setToolTip(colorNames.get(i));
			newAction.setText(colorNames.get(i));
			newAction.hovered.connect(this, "itemHovered()");
			menu.addAction(newAction);
		}
	}
	
	@SuppressWarnings("unused")
	private void itemHovered() {
		if (menu.activeAction() != null && menu.activeAction().toolTip() != null)
			currentColor = new QColor(menu.activeAction().toolTip());
	}
	
	public QColor getColor() {
		return currentColor;
	}
	
	public QMenu getMenu() {
		return menu;
	}
}
