package org.geogebra.web.web.gui.layout.panels;
import org.geogebra.common.cas.view.CASTableCellEditor;
import org.geogebra.common.cas.view.CASView;
import org.geogebra.common.main.App;
import org.geogebra.common.main.Feature;
import org.geogebra.web.html5.gui.util.MathKeyboardListener;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.cas.view.CASViewW;
import org.geogebra.web.web.gui.GuiManagerW;
import com.google.gwt.resources.client.ResourcePrototype;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
/**
* Top level GUI for the CAS view
*
*/
public class CASDockPanelW extends NavigableDockPanelW {
CASViewW casView;
public CASDockPanelW(App appl) {
super(App.VIEW_CAS, // view id
"CAS", // view title phrase
getDefaultToolbar(), // toolbar string
true, // style bar?
4, // menu order
'K' // ctrl-shift-K
);
// initWidget(toplevel = new SimpleLayoutPanel());
// ancestor = new VerticalPanelSmart();
// toplevel.add(ancestor);
app = (AppW) appl;
}
public CASViewW getCAS() {
return casView;
}
public App getApp() {
return app;
}
private static String getDefaultToolbar() {
return CASView.TOOLBAR_DEFINITION;
}
@Override
protected Widget loadStyleBar() {
return ((CASViewW) ((GuiManagerW) app.getGuiManager()).getCasView())
.getCASStyleBar();
}
@Override
public ResourcePrototype getIcon() {
return getResources().menu_icon_cas();
}
@Override
public MathKeyboardListener getKeyboardListener() {
return ((CASViewW) ((GuiManagerW) app.getGuiManager()).getCasView())
.getEditor();
}
@Override
protected ResourcePrototype getViewIcon() {
// TODO Auto-generated method stub
if (app.has(Feature.DYNAMIC_STYLEBAR)) {
return getResources().settings();
}
return getResources().styleBar_CASView();
}
@Override
protected Panel getViewPanel() {
casView = (CASViewW) app.getGuiManager().getCasView();
if (!app.supportsView(App.VIEW_CAS)) {
return new FlowPanel();
}
casView.maybeOpenKeyboard(true);
return casView.getComponent();
}
@Override
public void onResize() {
if (casView == null) {
return;
}
boolean oldFocus = ((CASTableCellEditor) casView.getEditor())
.hasFocus();
super.onResize();
if (oldFocus) {
casView.getEditor().setFocus(true, true);
}
}
}