/*
*
* Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under
* one or more contributor license agreements (see COPYRIGHT for details).
* The CA licenses this file to you under the GNU Affero General Public
* License version 3, (the "License"); you may not use this file except in
* compliance with the License. This file is part of kune.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package cc.kune.colorpicker.client;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.SourcesTableEvents;
import com.google.gwt.user.client.ui.TableListener;
// TODO: Auto-generated Javadoc
/**
* A Web safe colors palette. See:
* http://en.wikipedia.org/wiki/Web_colors#Web-safe_colors
*
* @author vjrj@ourproject.org (Vicente J. Ruiz Jurado)
*/
public class ColorWebSafePalettePanel implements ColorWebSafePaletteView {
/** The palette grid. */
Grid paletteGrid;
/** The popup palette. */
private PopupPanel popupPalette;
/** The presenter. */
private final ColorWebSafePalettePresenter presenter;
/**
* Instantiates a new color web safe palette panel.
*
* @param initPresenter the init presenter
*/
public ColorWebSafePalettePanel(final ColorWebSafePalettePresenter initPresenter) {
this.presenter = initPresenter;
}
/**
* Creates the palette.
*/
private void createPalette() {
paletteGrid = new Grid(ROWS, COLS);
paletteGrid.setCellSpacing(1);
// Put color values in the grid cells
int row;
int col;
int n = 0;
for (int a = 0; a < COLORS.length; a++) {
for (int b = 0; b < COLORS.length; b++) {
for (int c = 0; c < COLORS.length; c++) {
row = n / COLS;
col = n % COLS;
final String currentColor = "#" + COLORS[c] + COLORS[a] + COLORS[b];
paletteGrid.setText(row, col, " ");
DOM.setStyleAttribute(paletteGrid.getCellFormatter().getElement(row, col), "backgroundColor",
currentColor);
n++;
}
}
}
paletteGrid.addStyleName("kune-WebSafePalette");
paletteGrid.addTableListener(new TableListener() {
@Override
public void onCellClicked(final SourcesTableEvents sender, final int row, final int col) {
presenter.onColorSelected(row, col);
}
});
}
/* (non-Javadoc)
* @see cc.kune.colorpicker.client.ColorWebSafePaletteView#hide()
*/
@Override
public void hide() {
if (popupPalette != null) {
popupPalette.hide();
}
}
/* (non-Javadoc)
* @see cc.kune.colorpicker.client.ColorWebSafePaletteView#show(int, int)
*/
@Override
public void show(final int left, final int top) {
if (paletteGrid == null) {
createPalette();
}
popupPalette = new PopupPanel(true, true);
popupPalette.setVisible(false);
popupPalette.show();
popupPalette.setPopupPosition(left, top);
popupPalette.setWidget(paletteGrid);
popupPalette.setVisible(true);
}
}