package org.geogebra.web.web.gui.dialog.options;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.main.Localization;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.gui.dialog.ScriptInputPanelW;
import org.geogebra.web.web.gui.properties.OptionPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.TabPanel;
/**
* Scripting editor for Web
*/
class ScriptEditPanel extends OptionPanel {
/**
*
*/
private ScriptInputPanelW clickDialog, updateDialog, globalDialog;
private TabPanel tabbedPane;
private FlowPanel clickScriptPanel, updateScriptPanel, globalScriptPanel;
private Localization loc;
/**
*
* @param model0
* model
* @param app
* application
*/
public ScriptEditPanel(ScriptEditorModel model0, final AppW app) {
this.loc = app.getLocalization();
int row = 35;
int column = 15;
setModel(model0);
model0.setListener(this);
tabbedPane = new TabPanel();
tabbedPane.setStyleName("scriptTabPanel");
clickDialog = new ScriptInputPanelW(app,
null, false, false);
updateDialog = new ScriptInputPanelW(app,
null, true, false);
globalDialog = new ScriptInputPanelW(app, null, false,
true);
// add(td.getInputPanel(), BorderLayout.NORTH);
// add(td2.getInputPanel(), BorderLayout.CENTER);
clickScriptPanel = new FlowPanel();
clickScriptPanel.add(clickDialog.getInputPanel(row, column, true));
clickScriptPanel
.add(clickDialog.getButtonPanel());
updateScriptPanel = new FlowPanel();
updateScriptPanel.add(
updateDialog.getInputPanel(row, column, true));
updateScriptPanel.add(updateDialog.getButtonPanel());
globalScriptPanel = new FlowPanel();
globalScriptPanel.add(globalDialog.getInputPanel(row, column, true));
globalScriptPanel.add(globalDialog.getButtonPanel());
setWidget(tabbedPane);
}
/**
* apply edit modifications
*/
public void applyModifications() {
clickDialog.applyModifications();
updateDialog.applyModifications();
globalDialog.applyModifications();
}
@Override
public void setLabels() {
// setBorder(BorderFactory.createTitledBorder(app.getPlain("JavaScript")));
}
@Override
public OptionPanel updatePanel(Object[] geos) {
if (geos.length != 1){
return null;
}
// remember selected tab
int idx = tabbedPane.getTabBar().getSelectedTab();
GeoElement geo = (GeoElement) geos[0];
clickDialog.setGeo(geo);
updateDialog.setGeo(geo);
globalDialog.setGlobal();
tabbedPane.clear();
if (geo.canHaveClickScript()) {
tabbedPane.add(clickScriptPanel, loc.getPlain("OnClick"));
}
if (geo.canHaveUpdateScript()) {
tabbedPane.add(updateScriptPanel, loc.getPlain("OnUpdate"));
}
tabbedPane.add(globalScriptPanel, loc.getPlain("GlobalJavaScript"));
// select tab as before
tabbedPane.selectTab(Math.max(0, idx));
return this;
}
}