package org.geogebra.web.web.gui.dialog.image;
import org.geogebra.common.kernel.geos.GeoPoint;
import org.geogebra.common.main.Feature;
import org.geogebra.common.main.Localization;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.gui.dialog.DialogBoxW;
import org.geogebra.web.web.gui.util.VerticalSeparator;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
public abstract class UploadImageDialog extends DialogBoxW implements ClickHandler {
protected HorizontalPanel mainPanel;
protected VerticalPanel listPanel;
protected VerticalPanel imagePanel;
protected FlowPanel bottomPanel;
protected SimplePanel inputPanel;
protected UploadImagePanel uploadImagePanel;
protected AppW app;
protected Button insertBtn;
protected Button cancelBtn;
protected Label upload;
protected GeoPoint location;
int previewHeight;
int previewWidth;
public UploadImageDialog(AppW app, int previewWidth, int previewHeight) {
super(app.getPanel());
if (app.has(Feature.DIALOGS_OVERLAP_KEYBOARD)) {
setOverlapFeature(true);
}
this.app = app;
this.previewWidth = previewWidth;
this.previewHeight = previewHeight;
app.addInsertImageCallback(new Runnable() {
@Override
public void run() {
UploadImageDialog.this.hide();
}
});
initGUI();
initActions();
}
protected void initGUI() {
add(mainPanel = new HorizontalPanel());
mainPanel.add(listPanel = new VerticalPanel());
listPanel.add(upload = new Label(""));
// listPanel.add(webcam = new Label(""));
listPanel.setSpacing(10);
mainPanel.add(new VerticalSeparator(225));
mainPanel.setSpacing(5);
mainPanel.add(imagePanel = new VerticalPanel());
imagePanel.add(inputPanel = new SimplePanel());
inputPanel.setHeight("180px");
inputPanel.setWidth("240px");
uploadImagePanel = new UploadImagePanel(this, previewWidth,
previewHeight);
imagePanel.add(bottomPanel = new FlowPanel());
bottomPanel.add(insertBtn = new Button(""));
bottomPanel.add(cancelBtn = new Button(""));
insertBtn.setEnabled(false);
cancelBtn.addStyleName("cancelBtn");
bottomPanel.setStyleName("DialogButtonPanel");
addStyleName("GeoGebraPopup");
addStyleName("image");
setGlassEnabled(true);
}
protected void initActions() {
insertBtn.addClickHandler(this);
cancelBtn.addClickHandler(this);
upload.addClickHandler(this);
}
public void setLabels() {
Localization loc = app.getLocalization();
getCaption().setText(loc.getMenu("Image"));
upload.setText(loc.getMenu("File"));
insertBtn.setText(loc.getPlain("OK"));
cancelBtn.setText(loc.getMenu("Cancel"));
}
protected void uploadClicked() {
upload.addStyleDependentName("highlighted");
inputPanel.setWidget(uploadImagePanel);
}
protected void imageAvailable() {
insertBtn.setEnabled(true);
insertBtn.removeStyleName("button-up-disabled");
}
protected void imageUnavailable() {
insertBtn.setEnabled(false);
insertBtn.addStyleName("button-up-disabled");
}
/**
* @param loc {@link GeoPoint}
*/
public void setLocation(GeoPoint loc) {
this.location = loc;
}
protected boolean mayCenter = true;
@Override
public void center() {
if(mayCenter){
super.center();
setLabels();
uploadClicked();
}
}
}