package org.geogebra.web.web.gui.dialog;
import org.geogebra.common.euclidian.EuclidianController;
import org.geogebra.common.gui.InputHandler;
import org.geogebra.common.gui.dialog.handler.NumberInputHandler;
import org.geogebra.common.kernel.Construction;
import org.geogebra.common.kernel.Kernel;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.kernel.kernelND.GeoPointND;
import org.geogebra.common.main.DialogManager;
import org.geogebra.common.util.AsyncOperation;
import org.geogebra.web.html5.main.AppW;
import com.google.gwt.event.dom.client.DomEvent;
public class InputDialogDilateW extends InputDialogW {
GeoPointND[] points;
GeoElement[] selGeos;
private Kernel kernel;
private EuclidianController ec;
public InputDialogDilateW(AppW app, String title, InputHandler handler,
GeoPointND[] points, GeoElement[] selGeos, Kernel kernel, EuclidianController ec) {
super(app, app.getLocalization().getMenu("Dilate.Factor"), title, null,
false, handler, false);
setInputHandler(handler);
this.points = points;
this.selGeos = selGeos;
this.kernel = kernel;
this.ec = ec;
}
@Override
protected void actionPerformed(DomEvent e) {
Object source = e.getSource();
try {
if (source == btOK || sourceShouldHandleOK(source)) {
processInput();
} else if (source == btCancel) {
setVisible(false);
}
} catch (Exception ex) {
// do nothing on uninitializedValue
setVisible(false);
}
}
private void processInput() {
// avoid labeling of num
final Construction cons = kernel.getConstruction();
final boolean oldVal = cons.isSuppressLabelsActive();
cons.setSuppressLabelCreation(true);
getInputHandler().processInput(inputPanel.getText(), this,
new AsyncOperation<Boolean>() {
@Override
public void callback(Boolean ok) {
cons.setSuppressLabelCreation(oldVal);
if (ok) {
DialogManager
.doDilate(kernel,
((NumberInputHandler) getInputHandler())
.getNum(),
points, selGeos, ec);
}
setVisible(!ok);
}
});
/*
*
* // avoid labeling of num Construction cons =
* kernel.getConstruction(); boolean oldVal =
* cons.isSuppressLabelsActive(); cons.setSuppressLabelCreation(true);
*
* boolean success = inputHandler.processInput(inputPanel.getText());
*
* cons.setSuppressLabelCreation(oldVal);
*
* if (success) { NumberValue num =
* ((NumberInputHandler)inputHandler).getNum();
*
* if (selGeos.length > 0) { // mirror all selected geos //GeoElement []
* selGeos = getSelectedGeos(); GeoPoint2 point = points[0];
* ArrayList<GeoElement> ret = new ArrayList<GeoElement>(); for (int
* i=0; i < selGeos.length; i++) { if (selGeos[i] != point) { if
* ((selGeos[i] instanceof Transformable) || selGeos[i].isGeoList())
* ret.addAll(Arrays.asList(kernel.Dilate(null, selGeos[i], num,
* point))); } } if (!ret.isEmpty()) {
* kernel.getApplication().getActiveEuclidianView
* ().getEuclidianController().memorizeJustCreatedGeos(ret);
* app.storeUndoInfo(); } return true; } } return false;
*/
}
}