package org.geogebra.web.web.gui.dialog;
import org.geogebra.common.awt.GColor;
import org.geogebra.common.gui.SetLabels;
import org.geogebra.common.gui.dialog.handler.ColorChangeHandler;
import org.geogebra.common.main.Feature;
import org.geogebra.web.html5.awt.GDimensionW;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.gui.util.ColorChooserW;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
public class ColorChooserDialog extends DialogBoxW
implements SetLabels, ClickHandler {
private ColorChooserW colorChooserW;
private Button btnOk;
private Button btnCancel;
private Button btnReset;
private GColor selectedColor;
private AppW app;
private ColorChangeHandler handler;
private GColor originalColor;
public ColorChooserDialog(AppW app, final GColor originalColor, final ColorChangeHandler handler) {
super(false, true, null, app.getPanel());
if (app.has(Feature.DIALOGS_OVERLAP_KEYBOARD)) {
setOverlapFeature(true);
}
this.app = app;
this.handler = handler;
this.originalColor = originalColor;
final GDimensionW colorIconSizeW = new GDimensionW(20, 20);
colorChooserW = new ColorChooserW(app, 400, 210, colorIconSizeW, 4);
colorChooserW.enableOpacity(false);
colorChooserW.enableBackgroundColorPanel(false);
colorChooserW.setSelectedColor(originalColor);
setSelectedColor(originalColor);
FlowPanel mainWidget = new FlowPanel();
mainWidget.add(colorChooserW);
FlowPanel btnPanel = new FlowPanel();
btnOk = new Button();
btnCancel = new Button();
btnCancel.addStyleName("cancelBtn");
btnReset = new Button();
btnReset.addStyleName("resetBtn");
btnPanel.addStyleName("DialogButtonPanel");
btnPanel.add(btnOk);
btnPanel.add(btnCancel);
btnPanel.add(btnReset);
mainWidget.add(btnPanel);
btnOk.addClickHandler(this);
btnCancel.addClickHandler(this);
btnReset.addClickHandler(this);
setLabels();
setWidget(mainWidget);
colorChooserW.addChangeHandler(new ColorChangeHandler() {
@Override
public void onForegroundSelected() {
// TODO Auto-generated method stub
}
@Override
public void onColorChange(GColor color) {
setSelectedColor(color);
}
@Override
public void onClearBackground() {
// TODO Auto-generated method stub
}
@Override
public void onBackgroundSelected() {
// TODO Auto-generated method stub
}
@Override
public void onAlphaChange() {
// TODO Auto-generated method stub
}
@Override
public void onBarSelected() {
// TODO Auto-generated method stub
}
});
}
@Override
public void setLabels() {
this.getCaption().setText(localize("ChooseColor"));
colorChooserW.setPaletteTitles(localize("RecentColor"), localize("Other"));
colorChooserW.setPreviewTitle(localize("Preview"));
btnOk.setText(localize("OK"));
btnCancel.setText(localize("Cancel"));
btnReset.setText(localize("Reset"));
}
private String localize(final String id) {
return app.getLocalization().getMenu(id);
}
public GColor getSelectedColor() {
return selectedColor;
}
public void setSelectedColor(GColor selectedColor) {
this.selectedColor = selectedColor;
}
public ColorChangeHandler getHandler() {
return handler;
}
public void setHandler(ColorChangeHandler handler) {
this.handler = handler;
}
public void onClick(ClickEvent event) {
Object source = event.getSource();
if (source == btnOk) {
handler.onColorChange(getSelectedColor());
hide();
} else if (source == btnCancel) {
hide();
} else if (source == btnReset) {
reset();
}
}
public void setOriginalColor(GColor color) {
originalColor = color;
reset();
}
private void reset() {
setSelectedColor(originalColor);
colorChooserW.setSelectedColor(originalColor);
colorChooserW.update();
}
}