package org.geogebra.desktop.gui.dialog;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import javax.swing.JPanel;
import org.geogebra.common.euclidian.EuclidianController;
import org.geogebra.common.gui.InputHandler;
import org.geogebra.common.gui.dialog.handler.NumberInputHandler;
import org.geogebra.common.gui.view.algebra.DialogType;
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.desktop.gui.GuiManagerD;
import org.geogebra.desktop.main.AppD;
public class InputDialogDilateD extends InputDialogD {
GeoPointND[] points;
GeoElement[] selGeos;
private Kernel kernel;
private EuclidianController ec;
public InputDialogDilateD(AppD app, String title, InputHandler handler,
GeoPointND[] points, GeoElement[] selGeos, Kernel kernel,
EuclidianController ec) {
super(app.getFrame(), false, app.getLocalization());
this.app = app;
setInputHandler(handler);
this.points = points;
this.selGeos = selGeos;
this.kernel = kernel;
this.ec = ec;
createGUI(title, loc.getMenu("Dilate.Factor"), false, DEFAULT_COLUMNS,
1, true, false, false, false, DialogType.GeoGebraEditor);
JPanel centerPanel = new JPanel(new BorderLayout());
centerPanel.add(inputPanel, BorderLayout.CENTER);
wrappedDialog.getContentPane().add(centerPanel, BorderLayout.CENTER);
centerOnScreen();
}
/**
* Handles button clicks for dialog.
*/
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
try {
if (source == btOK || source == inputPanel.getTextComponent()) {
processInput();
} else if (source == btApply) {
processInput();
} else if (source == btCancel) {
setVisibleForTools(false);
}
} catch (Exception ex) {
// do nothing on uninitializedValue
setVisibleForTools(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);
}
setVisibleForTools(!ok);
}
});
}
@Override
public void windowGainedFocus(WindowEvent arg0) {
if (!wrappedDialog.isModal()) {
app.setCurrentSelectionListener(null);
}
((GuiManagerD) app.getGuiManager()).setCurrentTextfield(this, true);
}
@Override
public void handleDialogVisibilityChange(boolean isVisible) {
// nothing to do
}
}