001package polaris.sdk.ui.controls; 002import polaris.sdk.ui.*; 003 004/** The whole bar is a drag surface; capture survives leaving the bar or parent. */ 005public class DragBar extends Widget { 006 private Widget target;private float px,py,tx,ty; 007 public DragBar(){this("Drag to move");}public DragBar(String s){super(s);h=30;} 008 public DragBar target(Widget w){target=w;return this;} 009 @Override protected void paint(Painter p){glassPart(p,ax,ay,w,h,Math.min(theme().radius,h*.25f),.045f+pressAmount()*.025f,theme().accent,.08f,theme().blur);centered(p,text);} 010 @Override public void event(UiEvent e){Widget t=target!=null?target:parent; 011 if(e.type==UiEvent.Type.DOWN&&e.button==1){pressed=true;px=e.x;py=e.y;if(t!=null){t.beginPositionDrag();tx=t.x();ty=t.y();}e.handled=true;} 012 else if((e.type==UiEvent.Type.MOVE||e.type==UiEvent.Type.UP&&e.button==1)&&pressed&&t!=null){t.bounds(tx+e.x-px,ty+e.y-py,t.width(),t.height());changed();e.handled=true;} 013 if(e.type==UiEvent.Type.UP||e.type==UiEvent.Type.BLUR)pressed=false; 014 } 015}