001package polaris.sdk.ui.controls; 002import polaris.sdk.ui.*; 003 004import java.util.function.IntConsumer; 005public class Breadcrumb extends Widget { 006 private String[] parts=new String[0];private float[] starts=new float[0];private IntConsumer navigation; 007 public Breadcrumb(){h=30;w=400;focusable=true;}public Breadcrumb(String... segments){this();segments(segments);} 008 public Breadcrumb segments(String... values){parts=values.clone();starts=new float[parts.length];return this;}public Breadcrumb onNavigate(IntConsumer c){navigation=c;return this;} 009 @Override protected void paint(Painter p){float x=ax;for(int i=0;i<parts.length;i++){starts[i]=x;if(i>0){p.text("/",x,ay+7,13,theme().muted);x+=20;}p.text(parts[i],x,ay+7,13,i==parts.length-1?theme().text:theme().accent);x+=p.textWidth(parts[i],13)+18;}} 010 @Override public void event(UiEvent e){if(e.type==UiEvent.Type.UP){int i=0;for(int n=0;n<parts.length;n++)if(e.x>=starts[n])i=n;if(navigation!=null&&parts.length>0)navigation.accept(i);changed();}else super.event(e);} 011}