001package polaris.sdk.ui.controls; 002import polaris.sdk.ui.*; 003 004public class Dialog extends Panel { 005 public static final float HEADER_HEIGHT=52; 006 protected boolean modal;private boolean moving;private float px,py,bx,by; 007 public Dialog(){this("Dialog");}public Dialog(String title){super(title);w=460;h=280;clipChildren=true;} 008 public boolean modal(){return modal;}public void open(Ui ui){ui.show(this);}public void close(){if(ui!=null)ui.close(this);} 009 @Override protected float contentTop(){return HEADER_HEIGHT+gap;} 010 @Override protected void paint(Painter p){glassPart(p,ax,ay,w,h,theme().panelRadius,.07f,theme().surface,0,theme().blur);p.textWeight(text,ax+Spacing.INSET,ay+Spacing.INSET,17,ink(),600);p.text("×",ax+w-Spacing.INSET-16,ay+Spacing.INSET-1,20,theme().muted);p.line(ax+Spacing.INSET,ay+HEADER_HEIGHT,ax+w-Spacing.INSET,ay+HEADER_HEIGHT,1,theme().border);} 011 @Override public void event(UiEvent e){if(e.type==UiEvent.Type.DOWN&&e.y<ay+45){if(e.x>ax+w-42){close();return;}moving=true;beginPositionDrag();px=e.x;py=e.y;bx=x;by=y;}else if(e.type==UiEvent.Type.MOVE&&moving){bounds(Math.max(0,Math.min(ui.width()-w,bx+e.x-px)),Math.max(0,Math.min(ui.height()-h,by+e.y-py)),w,h);}else if(e.type==UiEvent.Type.UP||e.type==UiEvent.Type.BLUR)moving=false;} 012}