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}