package com.akjava.gwt.three.client.java.ui.experiments;
import com.akjava.gwt.three.client.gwt.GWTParamUtils;
import com.akjava.gwt.three.client.gwt.renderers.WebGLRendererParameter;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
public abstract class ThreeAppEntryPointWithControler extends SimpleThreeAppEntryPoint{
protected VerticalPanel controlerRootPanel;
public VerticalPanel getControlerRootPanel() {
return controlerRootPanel;
}
protected PopupPanel popup;
protected WebGLRendererParameter createDefaultRendererParameter(){
return GWTParamUtils.WebGLRenderer();
}
protected void updateGUI(){
if(popup==null){
return;
}
popup.show();//for initial,show first before move
moveToAroundRightTop(popup);
}
@Override
public void init() {
controlerRootPanel=createRightTopPopup();
super.init();
updateGUI();
}
private void moveToAroundRightTop(PopupPanel dialog){
int clientWidth=Window.getClientWidth();
int scrollTopPos=Window.getScrollTop();
int dw=dialog.getOffsetWidth();
//LogUtils.log(clientWidth+","+scrollTopPos+","+dw);
dialog.setPopupPosition(clientWidth-dw, scrollTopPos+0);
}
protected void addResizeHandler(){
//popup.show();
//moveToAroundRightTop(popup);
resizeHandler = Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
onWindowResize();
updateGUI();
}
});
}
/*
* 320px
*/
protected VerticalPanel createRightTopPopup(){
popup=new PopupPanel();
VerticalPanel root=new VerticalPanel();
popup.add(root);
final VerticalPanel controler=new VerticalPanel();
controler.setWidth("320px");//some widget broke,like checkbox without parent size
controler.setSpacing(2);
root.add(controler);
final Button bt=new Button("Close Controls");
bt.setWidth("320px");
bt.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
controler.setVisible(!controler.isVisible());
if(controler.isVisible()){
bt.setText("Close Controls");
}else{
bt.setText("Open Controls");
}
updateGUI();
}
});
root.add(bt);
//root.setSpacing(2);
//popup.show();
//moveToAroundRightTop(popup);
popup.show();
moveToAroundRightTop(popup);
return controler;
}
}